diff --git a/README.md b/README.md
index b8cb5e19..7b5db725 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
# Buzz
-[Documentation](https://chidiwilliams.github.io/buzz/)
+[Documentation](https://chidiwilliams.github.io/buzz/) | [Buzz Captions on the App Store](https://apps.apple.com/us/app/buzz-captions/id6446018936?mt=12&itsct=apps_box_badge&itscg=30200)
Transcribe and translate audio offline on your personal computer. Powered by
OpenAI's [Whisper](https://github.com/openai/whisper).
@@ -13,23 +13,12 @@ OpenAI's [Whisper](https://github.com/openai/whisper).

[](https://GitHub.com/chidiwilliams/buzz/releases/)
-
+
+
An older version of Buzz available on the App Store. Get a Mac-native version of Buzz with a cleaner look, audio playback, drag-and-drop import, transcript editing, search, and much more.
+
+
-## Features
-- Transcribe audio and video files or Youtube links
-- Live realtime audio transcription from microphone
- - Presentation window for easy accessibility during events and presentations
-- Speech separation before transcription for better accuracy on noisy audio
-- Speaker identification in transcribed media
-- Multiple whisper backend support
- - CUDA acceleration support for Nvidia GPUs
- - Apple Silicon support for Macs
- - Vulkan acceleration support for Whisper.cpp on most GPUs, including integrated GPUs
-- Export transcripts to TXT, SRT, and VTT
-- Advanced Transcription Viewer with search, playback controls, and speed adjustment
-- Keyboard shortcuts for efficient navigation
-- Watch folder for automatic transcription of new files
-- Command-Line Interface for scripting and automation
+
## Installation
@@ -43,6 +32,12 @@ Get the installation files from the [SourceForge](https://sourceforge.net/projec
App is not signed, you will get a warning when you install it. Select `More info` -> `Run anyway`.
+**Alternatively, install with [winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)**
+
+```shell
+winget install ChidiWilliams.Buzz
+```
+
### Linux
Buzz is available as a [Flatpak](https://flathub.org/apps/io.github.chidiwilliams.Buzz) or a [Snap](https://snapcraft.io/buzz).
@@ -52,22 +47,17 @@ To install flatpak, run:
flatpak install flathub io.github.chidiwilliams.Buzz
```
-[](https://flathub.org/en/apps/io.github.chidiwilliams.Buzz)
-
To install snap, run:
```shell
sudo apt-get install libportaudio2 libcanberra-gtk-module libcanberra-gtk3-module
sudo snap install buzz
+sudo snap connect buzz:password-manager-service
```
-[](https://snapcraft.io/buzz)
-
### PyPI
Install [ffmpeg](https://www.ffmpeg.org/download.html)
-Ensure you use Python 3.12 environment.
-
Install Buzz
```shell
@@ -80,27 +70,23 @@ python -m buzz
To have GPU support for Nvidia GPUS on Windows, for PyPI installed version ensure, CUDA support for [torch](https://pytorch.org/get-started/locally/)
```
-pip3 install -U torch==2.8.0+cu129 torchaudio==2.8.0+cu129 --index-url https://download.pytorch.org/whl/cu129
-pip3 install nvidia-cublas-cu12==12.9.1.4 nvidia-cuda-cupti-cu12==12.9.79 nvidia-cuda-runtime-cu12==12.9.79 --extra-index-url https://pypi.ngc.nvidia.com
+pip3 install -U torch==2.7.1+cu128 torchaudio==2.7.1+cu128 --index-url https://download.pytorch.org/whl/cu128
+pip3 install nvidia-cublas-cu12==12.8.3.14 nvidia-cuda-cupti-cu12==12.8.57 nvidia-cuda-nvrtc-cu12==12.8.61 nvidia-cuda-runtime-cu12==12.8.57 nvidia-cudnn-cu12==9.7.1.26 nvidia-cufft-cu12==11.3.3.41 nvidia-curand-cu12==10.3.9.55 nvidia-cusolver-cu12==11.7.2.55 nvidia-cusparse-cu12==12.5.4.2 nvidia-cusparselt-cu12==0.6.3 nvidia-nvjitlink-cu12==12.8.61 nvidia-nvtx-cu12==12.8.55 --extra-index-url https://pypi.ngc.nvidia.com
```
### Latest development version
For info on how to get latest development version with latest features and bug fixes see [FAQ](https://chidiwilliams.github.io/buzz/docs/faq#9-where-can-i-get-latest-development-version).
-### Support Buzz
-
-You can help the Buzz by starring 🌟 the repo and sharing it with your friends.
-
### Screenshots
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/buzz/__version__.py b/buzz/__version__.py
index 8f8e75e9..af63e4ae 100644
--- a/buzz/__version__.py
+++ b/buzz/__version__.py
@@ -1 +1 @@
-VERSION = "1.4.4"
+VERSION = "1.4.0"
diff --git a/buzz/assets/update_FILL0_wght700_GRAD0_opsz48.svg b/buzz/assets/update_FILL0_wght700_GRAD0_opsz48.svg
deleted file mode 100644
index d01ac5a7..00000000
--- a/buzz/assets/update_FILL0_wght700_GRAD0_opsz48.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/buzz/buzz.py b/buzz/buzz.py
index 6f434353..d4a7a34b 100644
--- a/buzz/buzz.py
+++ b/buzz/buzz.py
@@ -25,11 +25,8 @@ from buzz.assets import APP_BASE_DIR
if getattr(sys, "frozen", False) is False and platform.system() != "Windows":
faulthandler.enable()
-# Sets stdout/stderr to no-op TextIO when None (run as Windows GUI with --noconsole).
-# stdout fix: torch.hub uses sys.stdout.write() for download progress and crashes if None.
-# stderr fix: Resolves https://github.com/chidiwilliams/buzz/issues/221
-if sys.stdout is None:
- sys.stdout = TextIO()
+# Sets stderr to no-op TextIO when None (run as Windows GUI).
+# Resolves https://github.com/chidiwilliams/buzz/issues/221
if sys.stderr is None:
sys.stderr = TextIO()
diff --git a/buzz/cuda_setup.py b/buzz/cuda_setup.py
index d99b402e..09ba0731 100644
--- a/buzz/cuda_setup.py
+++ b/buzz/cuda_setup.py
@@ -70,8 +70,9 @@ def _setup_windows_dll_directories():
for lib_dir in lib_dirs:
try:
os.add_dll_directory(str(lib_dir))
+ logger.debug(f"Added DLL directory: {lib_dir}")
except (OSError, AttributeError) as e:
- pass
+ logger.debug(f"Could not add DLL directory {lib_dir}: {e}")
def _preload_linux_libraries():
@@ -100,15 +101,17 @@ def _preload_linux_libraries():
# Skip problematic libraries
if any(pattern in lib_file.name for pattern in skip_patterns):
+ logger.debug(f"Skipping library: {lib_file}")
continue
try:
# Use RTLD_GLOBAL so symbols are available to other libraries
ctypes.CDLL(str(lib_file), mode=ctypes.RTLD_GLOBAL)
loaded_libs.add(lib_file.name)
+ logger.debug(f"Preloaded library: {lib_file}")
except OSError as e:
# Some libraries may have missing dependencies, that's ok
- pass
+ logger.debug(f"Could not preload {lib_file}: {e}")
def setup_cuda_libraries():
diff --git a/buzz/db/db.py b/buzz/db/db.py
index 0abd40f8..692e25c9 100644
--- a/buzz/db/db.py
+++ b/buzz/db/db.py
@@ -49,4 +49,5 @@ def close_app_db():
return
if db.isOpen():
+ logging.debug("Closing database connection: %s", db.connectionName())
db.close()
\ No newline at end of file
diff --git a/buzz/file_transcriber_queue_worker.py b/buzz/file_transcriber_queue_worker.py
index 8e5cf1a8..de059635 100644
--- a/buzz/file_transcriber_queue_worker.py
+++ b/buzz/file_transcriber_queue_worker.py
@@ -12,7 +12,6 @@ from uuid import UUID
# This must be done before importing demucs which uses torch.hub with urllib
try:
import certifi
- os.environ.setdefault('REQUESTS_CA_BUNDLE', certifi.where())
os.environ.setdefault('SSL_CERT_FILE', certifi.where())
os.environ.setdefault('SSL_CERT_DIR', os.path.dirname(certifi.where()))
# Also update the default SSL context for urllib
@@ -53,7 +52,6 @@ if sys.platform == "win32":
from demucs import api as demucsApi
-from buzz.locale import _
from buzz.model_loader import ModelType
from buzz.transcriber.file_transcriber import FileTranscriber
from buzz.transcriber.openai_whisper_api_file_transcriber import (
@@ -125,22 +123,12 @@ class FileTranscriberQueueWorker(QObject):
def separator_progress_callback(progress):
self.task_progress.emit(self.current_task, int(progress["segment_offset"] * 100) / int(progress["audio_length"] * 100))
- separator = None
- separated = None
try:
- # Force CPU if specified, otherwise use CUDA if available
- force_cpu = os.getenv("BUZZ_FORCE_CPU", "false").lower() == "true"
- if force_cpu:
- device = "cpu"
- else:
- import torch
- device = "cuda" if torch.cuda.is_available() else "cpu"
separator = demucsApi.Separator(
- device=device,
progress=True,
callback=separator_progress_callback,
)
- _origin, separated = separator.separate_audio_file(Path(self.current_task.file_path))
+ _, separated = separator.separate_audio_file(Path(self.current_task.file_path))
task_file_path = Path(self.current_task.file_path)
self.speech_path = task_file_path.with_name(f"{task_file_path.stem}_speech.mp3")
@@ -149,21 +137,6 @@ class FileTranscriberQueueWorker(QObject):
self.current_task.file_path = str(self.speech_path)
except Exception as e:
logging.error(f"Error during speech extraction: {e}", exc_info=True)
- self.task_error.emit(
- self.current_task,
- _("Speech extraction failed! Check your internet connection — a model may need to be downloaded."),
- )
- self.is_running = False
- return
- finally:
- # Release memory used by speech extractor
- del separator, separated
- try:
- import torch
- if torch.cuda.is_available():
- torch.cuda.empty_cache()
- except Exception:
- pass
logging.debug("Starting next transcription task")
self.task_progress.emit(self.current_task, 0)
diff --git a/buzz/locale/ca_ES/LC_MESSAGES/buzz.po b/buzz/locale/ca_ES/LC_MESSAGES/buzz.po
index 8d989312..27186e5c 100644
--- a/buzz/locale/ca_ES/LC_MESSAGES/buzz.po
+++ b/buzz/locale/ca_ES/LC_MESSAGES/buzz.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2025-10-17 07:59+0200\n"
"Last-Translator: Éric Duarte \n"
"Language-Team: Catalan \n"
@@ -17,211 +17,203 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.7\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "URL d'importació"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://exemple.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "D’acord"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Cancel·lar"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "URL no vàlida"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "L'URL que heu introduït no és vàlid."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Presentació de transcripció en directe"
+msgstr "Veure la traducció de transcripció"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Restableix als valors predeterminats"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Anglès"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Català"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Danès"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Holandès"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Alemany"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Castellà"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italià"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japonès"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Letó"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Polonès"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
msgstr "Portuguès (Brasil)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ucraïnès"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Xinès (simplificat)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Xinès (Tradicional)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "Cal reiniciar!"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Idioma UI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Mida de la lletra"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Prova"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "Clau de l'API d'OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "URL base d'OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "Model de l'API d'OpenAI"
+msgstr "Clau de l'API d'OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Exporta la carpeta"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Nota: La configuració d'exportació d'enregistrament en directe es mourà a la "
-"Configuració avançada a la pantalla d'enregistrament en directe en una "
-"versió futura."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "Utilitza la quantització de 8 bits per reduir l'ús de memòria"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"S'aplica als models Huggingface i Faster Whisper. Redueix l'ús de memòria de "
-"la GPU, però pot reduir lleugerament la qualitat de la transcripció."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Redueix la RAM de la GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
msgstr "Desactiva la GPU"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "Prova de clau OpenAI API"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -229,11 +221,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Clau API no vàlida"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -241,12 +233,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Selecciona la carpeta d'exportació"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -256,484 +247,411 @@ msgstr ""
"o la vostra clau. La transcripció i la traducció encara poden funcionar si "
"l'API no admet la validació de claus."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Habilita el seguiment de carpetes"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Eliminar fitxers processats"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Carpeta d'entrada"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Carpeta de sortida"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Selecciona la carpeta d'entrada"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Selecciona la carpeta de sortida"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Preferències"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "General"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Models"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Dreceres"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Vigila la carpeta"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Grup"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "ID de la cara oculta d'un model de whisper més ràpid"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Descàrrega"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Mostra la ubicació del fitxer"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Suprimeix"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Descarregat"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Disponible per descarregar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Enllaç de descàrrega a Whisper.cpp fitxer de model ggml"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Suprimeix el model"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Esteu segur que voleu suprimir el model seleccionat?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Descàrrega fallida"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Error"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Enregistra"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Atura"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Detecta l'idioma"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "p. ex., eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Introduïu un codi d'idioma ISO 639-3 (3 lletres).\n"
-"Exemples: eng (anglès), fra (francès), deu (alemany),\n"
-"spa (castellà), lav (letó)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Executa"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Model:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr ""
"L'ús per primera vegada d'un model pot trigar diversos minuts a carregar-se."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "Clau API:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Tasca:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Idioma:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Introduïu el prompt..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Configuració avançada"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Configuració del reconeixement de veu"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Separat per comes, p. ex. «0.0, 0.2, 0.4, 0.6, 0.8, 1.0»"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatura:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Pregunta inicial:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Configuració de la traducció"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Habilita la traducció de la IA"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "Model d'IA:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Si us plau, traduïu cada text que us enviï de l'anglès al castellà. La "
-"traducció s'utilitzarà en un sistema automatitzat; si us plau, no afegiu cap "
-"comentari ni nota, només la traducció."
+"Introdueix instruccions per a la IA sobre com traduir, per exemple 'Si us "
+"plau, tradueix cada text que t'hagi enviat de l'anglès al castellà'."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Instruccions per a la IA:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Configuració d'enregistrament"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Llindar de silenci:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Mode d'enregistrament en directe:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Separador de línies:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Pas de transcripció:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Amaga el no confirmat"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Activa l'exportació d'enregistrament en directe"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Carpeta d'exportació:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Nom del fitxer d'exportació:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Fitxer de text (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Tipus de fitxer d'exportació:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Limita les entrades d'exportació\n"
-"(0 = exporta tot):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Temps amb granularitat de paraula"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Extreu la veu"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Exporta:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "ID de la cara oculta d'un model"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Avançat..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Nova transcripció de fitxers"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Nova transcripció d'URL"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Obre una transcripció"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Cancel·la la transcripció"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: 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"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Actualització disponible"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "En progrés"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Completat"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Ha fallat"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Cancel·lat"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "A la cua"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Nom del fitxer / URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Model"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Tasca"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Estat"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Data de finalització"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Data d'addició"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Notes"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Restableix l'ordre de les columnes"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Reinicia la transcripció"
+msgstr "Cancel·la la transcripció"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
+#, fuzzy
msgid "Rename"
-msgstr "Canvia el nom"
+msgstr "Vietnamita"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Afegeix/Edita notes"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Canvia el nom de la transcripció"
+msgstr "Cancel·la la transcripció"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Introduïu el nou nom:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Introduïu algunes notes rellevants per a aquesta transcripció:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "No es pot reiniciar"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "Només es poden reiniciar les transcripcions fallides o cancel·lades."
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "No s'ha pogut reiniciar la transcripció: {}"
+msgstr "Cancel·la la transcripció"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"No s'ha pogut reiniciar la transcripció: el model no està disponible i no "
-"s'ha pogut descarregar."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"No s'ha pogut reiniciar la transcripció: no s'ha trobat el treballador del "
-"transcriptor."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Enregistrament en directe"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Feu clic a Enregistra per a començar..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Esperant la traducció de la IA..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Micròfon:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Mostra en una nova finestra"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Mida del text:"
+msgstr "Fitxers de text"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Tema"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Clar"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Fosc"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Personalitzat"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Color del text"
+msgstr "Fitxers de text"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Color de fons"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Pantalla completa"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Copia"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Copia la transcripció al porta-retalls"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Res per copiar!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Ha fallat la còpia"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Copiat!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Selecciona el color del text"
+msgstr "Selecciona la carpeta d'exportació"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Selecciona el color de fons"
+msgstr "Selecciona un fitxer d'àudio"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "S'ha produït un error en iniciar un enregistrament nou:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -741,168 +659,110 @@ msgstr ""
"Comproveu els vostres dispositius d'àudio o els registres de l'aplicació per "
"a més informació."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Hi ha una nova versió de Buzz disponible!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Versió actual:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Nova versió:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Notes de la versió:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Descarrega i instal·la"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "No hi ha cap URL de descàrrega disponible per a la vostra plataforma."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "S'està descarregant el fitxer {} de {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "S'està descarregant el fitxer {} de {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Descàrrega fallida"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "No s'ha pogut descarregar l'actualització: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "No s'ha pogut desar l'instal·lador: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Descàrrega completada!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "No s'ha pogut executar l'instal·lador: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Comprova si hi ha actualitzacions"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Mostra els registres"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Estàs al dia!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Volum mitjà"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Cua"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Inicia"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Finalitza"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Text"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Traducció"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Veure"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Marqua de temps"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Exporta"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Traduir"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Redimensionar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Identifica els parlants"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
msgstr "Cerca"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
msgstr "Mostra/amaga la barra de cerca (Ctrl+F)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
msgstr "Cerca:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
msgstr "Introduïu el text a cercar..."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
msgstr "Coincidència anterior (Maj+Retorn)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
+#, fuzzy
msgid "Next match (Ctrl+Enter)"
-msgstr "Coincidència següent (Ctrl+Enter)"
+msgstr "Coincidència següent (retorn)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
msgstr "Neteja"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
msgstr "Controls de reproducció:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
msgstr "Segment de bucle"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr "Activa/desactiva el bucle en fer clic als segments de transcripció"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
msgstr "Segueix l'àudio"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
@@ -910,239 +770,197 @@ msgstr ""
"Activa/desactiva seguint la posició d'àudio actual a la transcripció. Quan "
"està activada, es desplaça automàticament al text actual."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
msgstr "Desplaça't fins a l'actual"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
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
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
msgstr "1 de més de 100 coincidències"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
msgstr "1 de "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
msgstr " coincidències"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
msgstr "No s'ha trobat cap coincidència"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
msgstr " de més de 100 coincidències"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
msgstr " de "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "Clau API necessària"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Introduïu la clau API d'OpenAI a les preferències"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Amplia el temps final"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Amplia els finals fins a (segons)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Amplia els finals"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Opcions de redimensionament"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Longitud desitjada dels subtítols"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Disponible només si els temps a nivell de paraula estaven desactivats durant "
-"la transcripció"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Opcions de fusió"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Fusiona per buit"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Divideix per puntuació"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Divideix per la longitud màxima"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Fusiona"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Disponible només si els temps a nivell de paraula estaven activats durant la "
-"transcripció"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"La identificació de parlants no està disponible: no s'han pogut carregar les "
-"biblioteques necessàries."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Recollint transcripcions"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Carregant àudio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Carregant el model d'alineació"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
msgstr ""
-"3/8 Carregant el model d'alineació (tornant a intentar amb la memòria cau...)"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"No s'ha pogut carregar el model d'alineació. Comproveu la vostra connexió a "
-"Internet i torneu-ho a intentar."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Processant àudio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Preparant transcripcions"
+msgstr "Cancel·la la transcripció"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Identificant parlants"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Assignant parlants a transcripcions"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identificació completada"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Error en identificar parlants"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Pas 1: Identifica els parlants"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identifica"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Llest per identificar parlants"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Fitxer d'àudio no trobat"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Pas 2: Anomena els parlants"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Reprodueix la mostra"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Fusiona les frases del parlant"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Desa"
+msgstr "Desa el fitxer"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Cancel·lant..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Cancel·lat"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Desa el fitxer"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Fitxers de text"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Descarregant el model"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "restant"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Importa fitxer..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Importa l'URL..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importa carpeta..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Quant a"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Preferències..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Ajuda"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Fitxer"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1150,27 +968,23 @@ msgstr ""
"Esteu segur que voleu suprimir les transcripcions seleccionades? Aquesta "
"acció no es pot desfer."
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Selecciona un fitxer d'àudio"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Selecciona carpeta"
-
-#: buzz/widgets/main_window.py
+#: 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"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
"El servidor Whisper no s'ha pogut iniciar. Consulteu els registres per "
"obtenir més informació."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
@@ -1180,482 +994,463 @@ msgstr ""
"Si us plau, torneu-ho a provar amb un model més petit. Per forçar el mode "
"CPU, utilitzeu la variable d'entorn BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
msgid "Translate to English"
msgstr "Traduir a l'anglès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Transcriure"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "Xinès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Rus"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Coreà"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Francés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Portuguès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Turc"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Àrab"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Suec"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indonesi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Hindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Finès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vietnamita"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Hebreu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Grec"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Malai"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "Txec"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Romanès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Hongarès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tàmil"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Noruec"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Tailandès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdú"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Croata"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Bùlgar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Lituà"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Llatí"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malaiàlam"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Gal·lès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Eslovac"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Persa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengalí"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Serbi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Àzeri"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Eslovè"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Kannada"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Estònia"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Macedoni"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Breton"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Basc"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "Islandès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Armeni"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepalès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongol"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bosnià"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "Kazakh"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Albanès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Suahili"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Gallec"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Marathi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Panjabi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Singalès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmer"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Shona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Ioruba"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somali"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Afrikaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Occità"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Georgià"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Bielorús"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tadjik"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindhi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gujarati"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amhàric"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Yiddish"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "Lao"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Uzbek"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Feroès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Crioll d'Haití"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Paixtu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turcomans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Nynorsk"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sànscrit"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Luxemburguès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Myanmar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetà"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagàlog"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Malgaix"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Assamès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tàtar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Hawaià"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hausa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Bashkir"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Javanès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Sundanès"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Cantonès"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "S'ha produït un error de connexió"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
msgstr "Començant Whisper.cpp..."
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "Iniciant la transcripció..."
+msgstr "Cancel·la la transcripció"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Obre la finestra de registre"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Importar arxiu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Obre la finestra de preferències"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Veure el text de la transcripció"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Veure la traducció de transcripció"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Veure les marques de temps de la transcripció"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
msgid "Search Transcript"
msgstr "Cerca una transcripció"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Ves al resultat de cerca de transcripció següent"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Ves al resultat de cerca de transcripció anterior"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
msgstr "Desplaça't fins al text actual"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
msgstr "Reproduir/posar en pausa l'àudio"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
msgstr "Reprodueix el segment actual"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
msgstr "Commuta els controls de reproducció"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
msgstr "Disminuir l'hora d'inici del segment"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
msgstr "Augmenta l'hora d'inici del segment"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
msgstr "Disminueix l'hora de finalització del segment"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
msgstr "Augmenta l'hora de finalització del segment"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Afegeix a sota"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Afegeix a sobre"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Afegeix i corregeix"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Ha fallat l'extracció de veu! Comproveu la vostra connexió a Internet — pot "
-"ser que s'hagi de descarregar un model."
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Separat per comes, p. ex. «0.0, 0.2, 0.4, 0.6, 0.8, 1.0»"
-
-#~ msgid "Temperature:"
-#~ msgstr "Temperatura:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr "Si us plau, tradueix cada text que t'enviï de l'anglès al castellà."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Error de traducció, vegeu els registres!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Avís de permís d'ajust"
diff --git a/buzz/locale/da_DK/LC_MESSAGES/buzz.po b/buzz/locale/da_DK/LC_MESSAGES/buzz.po
index f7835ae7..b04893ac 100644
--- a/buzz/locale/da_DK/LC_MESSAGES/buzz.po
+++ b/buzz/locale/da_DK/LC_MESSAGES/buzz.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Ole Guldberg2 \n"
"Language-Team: \n"
@@ -14,210 +14,204 @@ msgstr ""
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
# "X-Generator: Poedit 3.4.4\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Importer fra URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://example.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "OK"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Afbryd"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "Ugyldig URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "Den URL du har angivet er ikke gyldig."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Live transkriptionspræsentation"
+msgstr "Vis transkriberede oversættelse"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Gendan standard-indstillinger"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
-msgstr "Engelsk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
-msgstr "Catalansk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
-msgstr "Dansk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
-msgstr "Nederlandsk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
-msgstr "Tysk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
-msgstr "Spansk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
-msgstr "Italiensk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
-msgstr "Japansk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
-msgstr "Lettisk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
-msgstr "Polsk"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
-msgstr "Portugisisk (Brasilien)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
+#, fuzzy
msgid "Ukrainian"
-msgstr "Ukrainsk"
+msgstr "tilbageværende"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
-msgstr "Kinesisk (forenklet)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
-msgstr "Kinesisk (traditionelt)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
-msgstr "Genstart påkrævet!"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
+#, fuzzy
msgid "Ui Language"
-msgstr "Brugerfladesprog"
+msgstr "Sprog:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Skriftypestørrelse"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Test"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "OpenAI API-nøgle"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "OpenAI base-URL"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "OpenAI API-model"
+msgstr "OpenAI API-nøgle"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Eksportmappe"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
+#, fuzzy
msgid "Live recording mode"
-msgstr "Live optagelsestilstand"
+msgstr "Live optagelsesmode"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Bemærk: Indstillinger for live optagelseseksport vil i en fremtidig version "
-"blive flyttet til Avancerede indstillinger på skærmen for live optagelse."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "Brug 8-bit kvantisering for at reducere hukommelsesforbruget"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Gælder for Huggingface og Faster Whisper modeller. Reducerer GPU "
-"hukommelsesforbrug, men kan en smule forringe transkriptionskvaliteten."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Reducer GPU RAM"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "Brug kun CPU og deaktiver GPU-acceleration"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-"Aktivér dette hvis større modeller ikke passer i GPU-hukommelsen og Buzz "
-"crasher"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "Deaktiver GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "OpenAI API Nøgle test"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -225,11 +219,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
+#, fuzzy
msgid "Invalid API key"
msgstr "Ugyldig API-nøgle"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -237,12 +232,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Vælg eksport-mappe"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -252,482 +246,409 @@ msgstr ""
"Transkription og oversættelse virker måske stadig, selvom API'et ikke "
"understøtter nøgle validering."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Aktiver mappeovervågning"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Slet behandlede filer"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Inputmappe"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Outputmappe"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Vælg inputmappe"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Vælg outputmappe"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Indstillinger"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Generelt"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modeller"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Genveje"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Mappeovervågning"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Grupper"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Huggingface ID af Faster Whisper model"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Download"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Vis fil-lokation"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Slet"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Downloadded"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Tilgængelige til download"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Download link til Whisper.cpp ggml model-fil"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Slet model"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Er du sikker på at du vil slette den valgte model?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Download mislykkedes"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Fejl"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Optag"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Stop"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Detekter sprog"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "f.eks. eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Indtast en ISO 639-3 sprogkode (3 bogstaver).\n"
-"Eksempler: eng (engelsk), fra (fransk), deu (tysk),\n"
-"spa (spansk), lav (lettisk)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Kør"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Model:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr "Først gang kan brug af en model tage flere minutter at indlæse."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "API-nøgle:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Opgave:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Sprog:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Input tekst..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Advancerede indstillinger"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Talegenkendelsesindstillinger"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Komma-separerede, fx., \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatur:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Start prompt:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Oversættelsesindstillinger"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Brug AI oversættelse"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "AI model:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Oversæt venligst hver tekst, der sendes til dig, fra engelsk til spansk. "
-"Oversættelsen vil blive brugt i et automatiseret system, så tilføj venligst "
-"ingen kommentarer eller noter, kun oversættelsen."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Instruktioner for AI:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Optagelsesindstillinger"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Tærskelværdi for stilhed:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Live optagelsestilstand:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Linjeseparator:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Transskriberingstrin:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Skjul ubekræftet"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Aktiver eksport af live optagelse"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Eksportmappe:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Eksport filnavn:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Tekstfil (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Eksport filtype:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Begræns eksportposter\n"
-"(0 = eksporter alle):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Ord tidsniveau"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Eksakt tale"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Eksporter:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "Huggingface ID til en model"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Advanceret..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
+#, fuzzy
msgid "New File Transcription"
-msgstr "Ny filtranskription"
+msgstr "Ny fil transkription"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
+#, fuzzy
msgid "New URL Transcription"
-msgstr "Ny URL-transkription"
+msgstr "Ny URL transkription"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Åben transkription"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Afbryd transkription"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Ryd historik"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Opdatering tilgængelig"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "Arbejder"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Færdig"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Mislykkedes"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Afbrudt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "Sat i kø"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Filnavn / URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Model"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Opgave"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Status"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Dato for færdiggørelse"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Dato for tilføjelse"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Noter"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Nulstil kolonnerækkefølge"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Genstart transkription"
+msgstr "Afbryd transkription"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
-msgstr "Omdøb"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Tilføj/rediger noter"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Omdøb transkription"
+msgstr "Afbryd transkription"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Indtast nyt navn:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Indtast relevante noter til denne transkription:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Kan ikke genstarte"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "Kun mislykkede eller annullerede transkriptioner kan genstartes."
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Kunne ikke genstarte transkription: {}"
+msgstr "Afbryd transkription"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"Kunne ikke genstarte transkription: modellen er ikke tilgængelig og kunne "
-"ikke downloades."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"Kunne ikke genstarte transkription: transkriptionsprocessen blev ikke fundet."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Live optagelse"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Klik Optage for at begynde..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Venter på AI oversættelse..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Mikrofon:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Vis i nyt vindue"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Tekststørrelse:"
+msgstr "Tekst filer"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Tema"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Lys"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Mørk"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Brugerdefineret"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Tekstfarve"
+msgstr "Tekst filer"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Baggrundsfarve"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Fuldskærm"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Kopiér"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Kopiér transkription til udklipsholder"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Intet at kopiere!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Kopiering mislykkedes"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Kopieret!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Vælg tekstfarve"
+msgstr "Vælg eksport-mappe"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Vælg baggrundsfarve"
+msgstr "Vælg audio-fil"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Der skete en fejl ved opstart af en ny optagelse:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -735,407 +656,305 @@ msgstr ""
"Tjek venligst dine audioenheder eller tjek applikationens logs for "
"mereinformation."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "En ny version af Buzz er tilgængelig!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Nuværende version:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Ny version:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Udgivelsesnoter:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Download og installer"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Ingen download-URL tilgængelig for din platform."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Downloader fil {} af {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Downloader fil {} af {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Download mislykkedes"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Kunne ikke downloade opdateringen: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Kunne ikke gemme installationsprogrammet: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Download fuldført!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Kunne ikke køre installationsprogrammet: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Tjek for opdateringer"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Vis logfiler"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Du er opdateret!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Gennemsnitlig lydstyrke"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Kø"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Start"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Slut"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Tekst"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Oversættelse"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Vis"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Tidsstempler"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Eksporter"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Oversæt"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Behandel størrelse"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Identificer talere"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "Find"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "Vis/skjul søgebjælke (Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "Find:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "Indtast tekst at søge efter..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "Forrige match (Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "Næste match (Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "Ryd"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "Afspilningskontroller:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "Gentag segment"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "Aktiver/deaktiver gentagelse ved klik på transkriptionssegmenter"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "Følg lyd"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-"Aktiver/deaktiver at følge den aktuelle lydposition i transkriptionen. Når "
-"aktiveret, scrolles der automatisk til den aktuelle tekst."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "Rul til aktuel"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "Rul til den tekst der tales i øjeblikket"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "1 af 100+ matches"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "1 af "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " matches"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "Ingen matches fundet"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr " af 100+ matches"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr " af "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "API-nøgle påkrævet"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Indtast venligst OpenAI API-nøgle i indstillinger"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Forlæng sluttidspunkt"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Forlæng slutninger med op til (sekunder)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Forlæng slutninger"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Størrelsesindstillinger"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Ønskede undertekst længde"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Kun tilgængeligt hvis ordniveau-tidsstempler var deaktiveret under "
-"transkription"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Sammenfletningsindstillinger"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Sammenflet ved hul"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Split ved punktum"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Split ved max længde"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Sammenflet"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Kun tilgængeligt hvis ordniveau-tidsstempler var aktiveret under "
-"transkription"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Taler-identifikation er ikke tilgængelig: kunne ikke indlæse nødvendige "
-"biblioteker."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Indsamler transkriptioner"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Indlæser lyd"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Indlæser justeringsmodel"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 Indlæser justeringsmodel (prøver igen med cache...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Kunne ikke indlæse justeringsmodel. Tjek venligst din internetforbindelse og "
-"prøv igen."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Behandler lyd"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Forbereder transkriptioner"
+msgstr "Afbryd transkription"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Identificerer talere"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Kortlægger talere til transkriptioner"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identifikation afsluttet"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Fejl ved identifikation af talere"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Trin 1: Identificer talere"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identificer"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Klar til at identificere talere"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Lydfil ikke fundet"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Trin 2: Navngiv talere"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Afspil eksempel"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Sammenflet talerens sætninger"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Gem"
+msgstr "Gem fil"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Annullerer..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Annulleret"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Gem fil"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Tekst filer"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Downloader model"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "tilbageværende"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Importer Fil..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Importer URL..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importer Mappe..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Om"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Indstillinger..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Hjælp"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Fil"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1143,503 +962,504 @@ msgstr ""
"Er du sikker på at du vil slette den valgte transkription? Denne handling "
"kan ikke fortrydes."
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Vælg audio-fil"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Vælg inputmappe"
-
-#: buzz/widgets/main_window.py
+#: 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"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
-msgstr "Whisper-serveren kunne ikke starte. Tjek logfilerne for detaljer."
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"Whisper-serveren kunne ikke starte på grund af utilstrækkelig hukommelse. "
-"Prøv igen med en mindre model. For at tvinge CPU-tilstand, brug "
-"miljøvariablen BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "Oversæt til engelsk"
+msgstr "Oversættelsesindstillinger"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Transkriber"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
-msgstr "Kinesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
-msgstr "Russisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
-msgstr "Koreansk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
-msgstr "Fransk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
-msgstr "Portugisisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
-msgstr "Tyrkisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
-msgstr "Arabisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
-msgstr "Svensk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
-msgstr "Indonesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
-msgstr "Hindi"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
-msgstr "Finsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
-msgstr "Vietnamesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
-msgstr "Hebraisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
-msgstr "Græsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
-msgstr "Malaysisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
-msgstr "Tjekkisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
-msgstr "Rumænsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
-msgstr "Ungarsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
-msgstr "Tamilsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
-msgstr "Norsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
-msgstr "Thailandsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
-msgstr "Urdu"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
-msgstr "Kroatisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
-msgstr "Bulgarsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
-msgstr "Litauisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
-msgstr "Latin"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
-msgstr "Maori"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
-msgstr "Malayalam"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
-msgstr "Walisisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
-msgstr "Slovakisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
-msgstr "Telugu"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
-msgstr "Persisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
-msgstr "Bengalsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
-msgstr "Serbisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
-msgstr "Aserbajdsjansk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
-msgstr "Slovensk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
-msgstr "Kannada"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
-msgstr "Estisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
-msgstr "Makedonsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
-msgstr "Bretonsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
-msgstr "Baskisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
-msgstr "Islandsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
-msgstr "Armensk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
-msgstr "Nepalesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
-msgstr "Mongolsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
-msgstr "Bosnisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
-msgstr "Kasakhisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
-msgstr "Albansk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
-msgstr "Swahili"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
-msgstr "Galicisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
-msgstr "Marathi"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
-msgstr "Punjabi"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
-msgstr "Singalesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
-msgstr "Khmer"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
-msgstr "Shona"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
-msgstr "Yoruba"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
-msgstr "Somalisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
-msgstr "Afrikaans"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
-msgstr "Occitansk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
-msgstr "Georgisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
-msgstr "Hviderussisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
-msgstr "Tadsjikisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
-msgstr "Sindhi"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
-msgstr "Gujarati"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
-msgstr "Amharisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
-msgstr "Jiddisch"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
-msgstr "Laotisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
-msgstr "Usbekisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
-msgstr "Færøsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
-msgstr "Haitiansk kreolsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
-msgstr "Pashto"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
-msgstr "Turkmensk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
-msgstr "Nynorsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
-msgstr "Maltesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
-msgstr "Sanskrit"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
-msgstr "Luxembourgsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
-msgstr "Burmesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
-msgstr "Tibetansk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
-msgstr "Tagalog"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
-msgstr "Malagassisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
-msgstr "Assamesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
-msgstr "Tatarisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
-msgstr "Hawaiiansk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
-msgstr "Lingala"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
-msgstr "Hausa"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
-msgstr "Basjkirsk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
-msgstr "Javanesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
-msgstr "Sundanesisk"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
-msgstr "Kantonesisk"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Der er opstået en forbindelsesfejl"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "Starter Whisper.cpp..."
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "Starter transkription..."
+msgstr "Afbryd transkription"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Åben optagevinduet"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Import fil"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Åben indstillingsvinduet"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Vis transkriberede tekst"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Vis transkriberede oversættelse"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Vis transkriptionstidstempler "
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "Søg i transskription"
+msgstr "Åben transkription"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Gå til næste søgeresultat i transskription"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Gå til forrige søgeresultat i transskription"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
-msgstr "Rul til aktuel tekst"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
-msgstr "Afspil/Pause lyd"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
-msgstr "Afspil nuværende segment igen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
-msgstr "Skift afspilningskontroller"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
-msgstr "Reducer segmentets starttidspunkt"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
-msgstr "Øg segmentets starttidspunkt"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
-msgstr "Reducer segmentets sluttidspunkt"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
-msgstr "Øg segmentets sluttidspunkt"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
-msgstr "Tilføj herunder"
+msgstr "tilføj herunder"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Tilføj herover"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Tilføj og ret"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Taleoprydning mislykkedes! Kontroller din internetforbindelse — en model "
-"skal muligvis hentes ned."
+#~ msgid "Snap permission notice"
+#~ msgstr "Snap tilladelse notifikationer"
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Komma-separerede, fx., \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+#~ msgid ""
+#~ "Detected missing permissions, please check that snap permissions have "
+#~ "been granted"
+#~ msgstr ""
+#~ "Detekterede manglene tilladelser, tjek om venligst Snap tilladelserne er "
+#~ "givne"
-#~ msgid "Temperature:"
-#~ msgstr "Temperatur:"
+#~ 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 "Please translate each text sent to you from English to Spanish."
-#~ msgstr "Oversæt venligst hver tekst du modtager fra engelsk til spansk."
+#~ msgid "Close"
+#~ msgstr "Luk"
+
+#~ msgid "Enter instructions for AI on how to translate..."
+#~ msgstr "Indtast instruktioner til AI om hvordan den skal oversætte..."
diff --git a/buzz/locale/de_DE/LC_MESSAGES/buzz.po b/buzz/locale/de_DE/LC_MESSAGES/buzz.po
index d7a796de..339f7279 100644
--- a/buzz/locale/de_DE/LC_MESSAGES/buzz.po
+++ b/buzz/locale/de_DE/LC_MESSAGES/buzz.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2025-03-05 14:41+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -16,211 +16,202 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.5\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "URL importieren"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://example.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "OK"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Abbrechen"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "Ungültige URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "Die von Ihnen eingegebene URL ist ungültig."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Live-Transkript-Präsentation"
+msgstr "Übersetzung des Transkripts anzeigen"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Auf Standardeinstellungen zurücksetzen"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Englisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Katalanisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Dänisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Niederländisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Deutsch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Spanisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italienisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japanisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Lettisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Polnisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
+#, fuzzy
msgid "Portuguese (Brazil)"
-msgstr "Portugiesisch (Brasilien)"
+msgstr "Portugiesisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ukrainisch"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Chinesisch (vereinfacht)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Chinesisch (traditionell)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "Neustart erforderlich!"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Sprache der Benutzeroberfläche"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Schriftgröße"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Test"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "OpenAI-API-Schlüssel"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "OpenAI-Basis-URL"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "OpenAI-API-Modell"
+msgstr "OpenAI-API-Schlüssel"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Exportordner"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Live-Aufnahmemodus"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Hinweis: Die Exporteinstellungen für Live-Aufnahmen werden in einer "
-"zukünftigen Version in die Erweiterten Einstellungen im Live-Aufnahme-"
-"Bildschirm verschoben."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "8-Bit-Quantisierung zur Reduzierung des Speicherverbrauchs verwenden"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Gilt für Huggingface- und Faster Whisper-Modelle. Reduziert den GPU-"
-"Speicherverbrauch, kann jedoch die Transkriptionsqualität leicht verringern."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "GPU-Arbeitsspeicher reduzieren"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "Nur CPU verwenden und GPU-Beschleunigung deaktivieren"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-"Diese Option aktivieren, wenn größere Modelle nicht in den GPU-Speicher "
-"passen und Buzz abstürzt"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "GPU deaktivieren"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "OpenAI-API-Schlüssel Test"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -228,11 +219,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Ungültiger API-Schlüssel"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -240,12 +231,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Exportordner auswählen"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -256,487 +246,410 @@ msgstr ""
"funktionieren möglicherweise weiterhin, wenn die API keine "
"Schlüsselvalidierung unterstützt."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Ordner überwachen aktivieren"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Verarbeitete Dateien löschen"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Eingabeordner"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Ausgabeordner"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Eingabeordner auswählen"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Ausgabeordner auswählen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Einstellungen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Allgemein"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modelle"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Tastenkombinationen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Ordner überwachen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Gruppe"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Huggingface-ID eines Faster Whisper-Modells"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Herunterladen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Dateispeicherort anzeigen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Löschen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Heruntergeladen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Zum Herunterladen verfügbar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Laden Sie den Link zur ggml-Modelldatei Whisper.cpp herunter"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Modell löschen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Sind Sie sicher, dass Sie das ausgewählte Modell löschen möchten?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Der Download ist fehlgeschlagen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Fehler"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Aufnehmen"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Stoppen"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Sprache erkennen"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "z.B. eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Geben Sie einen ISO 639-3-Sprachcode (3 Buchstaben) ein.\n"
-"Beispiele: eng (Englisch), fra (Französisch), deu (Deutsch),\n"
-"spa (Spanisch), lav (Lettisch)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Ausführen"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Modell:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr ""
"Bei der ersten Verwendung eines Modells kann das Laden mehrere Minuten "
"dauern."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "API-Schlüssel:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Aufgabe:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Sprache:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Anweisung eingeben..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Erweiterte Einstellungen"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Einstellungen für die Spracherkennung"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Durch Kommas getrennt, z.B. „0,0, 0,2, 0,4, 0,6, 0,8, 1,0“"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatur:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Erste Anweisung:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Übersetzungseinstellungen"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "KI-Übersetzung aktivieren"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "KI-Modell:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Bitte übersetzen Sie jeden Text, der Ihnen gesendet wird, vom Englischen ins "
-"Spanische. Die Übersetzung wird in einem automatisierten System verwendet. "
-"Bitte fügen Sie keine Kommentare oder Anmerkungen hinzu, nur die Übersetzung."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Anweisung zur KI:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Aufnahmeeinstellungen"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Stille-Schwellenwert:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Live-Aufnahmemodus:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Zeilentrenner:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Transkriptionsschritt:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Unbestätigtes ausblenden"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Export von Live-Aufnahmen aktivieren"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Exportordner:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Exportdateiname:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Textdatei (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Exportdateityp:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Exporteinträge begrenzen\n"
-"(0 = alle exportieren):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Zeitangaben auf Wortebene"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Sprache extrahieren"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Export:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "Huggingface-ID eines Models"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Erweitert..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Neue Dateitranskription"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Neue URL-Transkription"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Transkript öffnen"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Transkription abbrechen"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: 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"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Update verfügbar"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "Im Gange"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Fertiggestellt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Fehlgeschlagen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Abgebrochen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "In der Warteschlange"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Dateiname/URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Modell"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Aufgabe"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Status"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Datum abgeschlossen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Datum hinzugefügt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Notizen"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Spaltenreihenfolge zurücksetzen"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Transkription neu starten"
+msgstr "Transkription abbrechen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
+#, fuzzy
msgid "Rename"
-msgstr "Umbenennen"
+msgstr "Vietnamesisch"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Notizen hinzufügen/bearbeiten"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Transkription umbenennen"
+msgstr "Transkription abbrechen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Neuen Namen eingeben:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Relevante Notizen für diese Transkription eingeben:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Neustart nicht möglich"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
-"Nur fehlgeschlagene oder abgebrochene Transkriptionen können neu gestartet "
-"werden."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Fehler beim Neustart der Transkription: {}"
+msgstr "Transkription abbrechen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"Transkription konnte nicht neu gestartet werden: Modell nicht verfügbar und "
-"konnte nicht heruntergeladen werden."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"Transkription konnte nicht neu gestartet werden: Transkriptions-Worker nicht "
-"gefunden."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Live-Aufnahme"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
-msgstr "Auf Aufnehmen klicken um zu beginnen …"
+msgstr "Auf „Aufnehmen“ klicken um zu beginnen …"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Warten auf KI-Übersetzung..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Mikrofon:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "In neuem Fenster anzeigen"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Textgröße:"
+msgstr "Textdateien"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Design"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Hell"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Dunkel"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Benutzerdefiniert"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Textfarbe"
+msgstr "Textdateien"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Hintergrundfarbe"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Vollbild"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Kopieren"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Transkription in die Zwischenablage kopieren"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Nichts zum Kopieren vorhanden!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Kopieren fehlgeschlagen"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Kopiert!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Textfarbe auswählen"
+msgstr "Exportordner auswählen"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Hintergrundfarbe auswählen"
+msgstr "Audiodatei auswählen"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Beim Starten einer neuen Aufnahme ist ein Fehler aufgetreten:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -744,408 +657,305 @@ msgstr ""
"Bitte überprüfen Sie Ihre Audiogeräte oder prüfen Sie die "
"Anwendungsprotokolle für weitere Informationen."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Eine neue Version von Buzz ist verfügbar!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Aktuelle Version:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Neue Version:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Versionshinweise:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Herunterladen und installieren"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Kein Download-Link für Ihre Plattform verfügbar."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Datei {} von {} wird heruntergeladen..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Datei {} von {} wird heruntergeladen ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Download fehlgeschlagen"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Das Update konnte nicht heruntergeladen werden: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Installer konnte nicht gespeichert werden: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Download abgeschlossen!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Installer konnte nicht ausgeführt werden: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Nach Updates suchen"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Protokolle anzeigen"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Sie sind auf dem Laufenden!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Durchschnittliche Lautstärke"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Warteschlange"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Start"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Ende"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Text"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Übersetzung"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Anzeigen"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Zeitstempel"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Export"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Übersetzen"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Größe ändern"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Sprecher identifizieren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "Suchen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "Suchleiste ein-/ausblenden (Strg+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "Suchen:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "Suchtext eingeben..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "Vorheriges Ergebnis (Umschalt+Eingabe)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "Nächstes Ergebnis (Strg+Eingabe)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "Löschen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "Wiedergabesteuerung:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "Segment wiederholen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr ""
-"Wiederholen beim Klicken auf Transkript-Segmente aktivieren/deaktivieren"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "Audio folgen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-"Aktuelle Audioposition im Transkript verfolgen aktivieren/deaktivieren. Bei "
-"Aktivierung wird automatisch zum aktuellen Text gescrollt."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "Zur aktuellen Stelle scrollen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "Zum aktuell gesprochenen Text scrollen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "1 von 100+ Treffern"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "1 von "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " Treffer"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "Keine Treffer gefunden"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr " von 100+ Treffern"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr " von "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "API-Schlüssel erforderlich"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Bitte geben Sie den OpenAI-API-Schlüssel in den Einstellungen ein"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Endzeit verlängern"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Enden um bis zu (Sekunden) verlängern"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Enden verlängern"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Größenänderungsoptionen"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Gewünschte Untertitellänge"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Nur verfügbar, wenn Zeitangaben auf Wortebene bei der Transkription "
-"deaktiviert waren"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Zusammenführungsoptionen"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Nach Abstand zusammenführen"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Durch Satzzeichen getrennt"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Aufgeteilt nach maximaler Länge"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Vereinigen"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Nur verfügbar, wenn Zeitangaben auf Wortebene bei der Transkription "
-"aktiviert waren"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Sprecheridentifikation nicht verfügbar: Erforderliche Bibliotheken konnten "
-"nicht geladen werden."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Transkripte werden gesammelt"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Audio wird geladen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Ausrichtungsmodell wird geladen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 Ausrichtungsmodell wird geladen (Wiederholung mit Cache...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Ausrichtungsmodell konnte nicht geladen werden. Bitte überprüfen Sie Ihre "
-"Internetverbindung und versuchen Sie es erneut."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Audio wird verarbeitet"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Transkripte werden vorbereitet"
+msgstr "Transkription abbrechen"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Sprecher werden identifiziert"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Sprecher werden den Transkripten zugeordnet"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identifikation abgeschlossen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Fehler bei der Sprecheridentifikation"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Schritt 1: Sprecher identifizieren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identifizieren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Bereit zur Sprecheridentifikation"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Audiodatei nicht gefunden"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Schritt 2: Sprecher benennen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Beispiel abspielen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Sprechersätze zusammenführen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Speichern"
+msgstr "Datei speichern"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Wird abgebrochen..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Abgebrochen"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Datei speichern"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Textdateien"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Modell wird heruntergeladen"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "verbleibend"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Datei importieren..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "URL importieren..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Ordner importieren..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Über"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Einstellungen..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Hilfe"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Datei"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1153,516 +963,487 @@ 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Audiodatei auswählen"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Eingabeordner auswählen"
-
-#: buzz/widgets/main_window.py
+#: 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"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
-"Whisper-Server konnte nicht gestartet werden. Details in den Protokollen "
-"prüfen."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"Whisper-Server konnte aufgrund von unzureichendem Arbeitsspeicher nicht "
-"gestartet werden. Bitte versuchen Sie es mit einem kleineren Modell erneut. "
-"Um den CPU-Modus zu erzwingen, verwenden Sie die Umgebungsvariable "
-"BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "Ins Englische übersetzen"
+msgstr "Übersetzungseinstellungen"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Transkribieren"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "Chinesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Russisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Koreanisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Französisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Portugiesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Türkisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Arabisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Schwedisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indonesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Hindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Finnisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vietnamesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Hebräisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Griechisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Malaiisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "Tschechisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Rumänisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Ungarisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tamilisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Norwegisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Thailändisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Kroatisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Bulgarisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Litauisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Latein"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malayalam"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Walisisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Slowakisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Persisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengalisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Serbisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Aserbaidschanisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Slowenisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Kannada"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Estnisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Mazedonisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Bretonisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Baskisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "Isländisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Armenisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepali"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongolisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bosnisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "Kasachisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Albanisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Suaheli"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Galizisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Marathi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Punjabi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Singhalesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmer"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Schona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Yoruba"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somali"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Afrikanisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Okzitanisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Georgisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Belarussisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tadschikisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindhi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gujarati"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amharisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Jiddisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "Lao"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Usbekisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Färöisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Haitianisch-Kreolisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Paschtu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turkmenisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Nynorsk"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sanskrit"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Luxemburgisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Myanmar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagalog"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Madagassisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Assamisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tatar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Hawaiianisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hausa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Baschkirisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Javanisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Sundanesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Kantonesisch"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Ein Verbindungsfehler ist aufgetreten"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "Whisper.cpp wird gestartet..."
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "Transkription wird gestartet..."
+msgstr "Transkription abbrechen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Aufnahmefenster öffnen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Datei importieren"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Einstellungsfenster öffnen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Transkriptionstext anzeigen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Übersetzung des Transkripts anzeigen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Zeitstempel des Transkripts anzeigen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "Transkript durchsuchen"
+msgstr "Transkript öffnen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Zum nächsten Transkript-Suchergebnis gehen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Zum vorherigen Transkript-Suchergebnis gehen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
-msgstr "Zum aktuellen Text scrollen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
-msgstr "Audio abspielen/pausieren"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
-msgstr "Aktuelles Segment erneut abspielen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
-msgstr "Wiedergabesteuerung ein-/ausblenden"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
-msgstr "Segmentanfangszeit verringern"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
-msgstr "Segmentanfangszeit erhöhen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
-msgstr "Segmentendzeit verringern"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
-msgstr "Segmentendzeit erhöhen"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Unten anhängen"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Oben anhängen"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Anhängen und korrigieren"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Sprachextraktion fehlgeschlagen! Bitte Internetverbindung prüfen — ein "
-"Modell muss möglicherweise heruntergeladen werden."
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Durch Kommas getrennt, z.B. \"0,0, 0,2, 0,4, 0,6, 0,8, 1,0\""
-
-#~ msgid "Temperature:"
-#~ msgstr "Temperatur:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Bitte übersetzen Sie jeden an Sie gesendeten Text von Englisch nach "
-#~ "Spanisch."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Übersetzungsfehler, Protokolle prüfen!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Snap-Berechtigungsmitteilung"
diff --git a/buzz/locale/en_US/LC_MESSAGES/buzz.po b/buzz/locale/en_US/LC_MESSAGES/buzz.po
index 644ce509..803dbab9 100644
--- a/buzz/locale/en_US/LC_MESSAGES/buzz.po
+++ b/buzz/locale/en_US/LC_MESSAGES/buzz.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,1580 +17,1399 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr ""
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr ""
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr ""
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
msgid "Live Transcript Presentation"
msgstr ""
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
msgid "OpenAI API model"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
"validation."
msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr ""
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr ""
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr ""
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr ""
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr ""
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr ""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr ""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Hide unconfirmed"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr ""
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr ""
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr ""
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr ""
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr ""
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr ""
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr ""
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr ""
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr ""
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr ""
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
msgid "Restart Transcription"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
msgid "Rename Transcription"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: 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
+#: buzz/widgets/transcription_tasks_table_widget.py:705
msgid "Failed to restart transcription: {}"
msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: 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
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
msgid "Text Size:"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
msgid "Text Color"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr ""
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr ""
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr ""
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr ""
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr ""
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
msgid "Select Text Color"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
msgid "Select Background Color"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
msgstr ""
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr ""
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr ""
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr ""
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr ""
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
msgid "5/8 Preparing transcripts"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
msgid "Save"
msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr ""
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr ""
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr ""
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr ""
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr ""
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr ""
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr ""
-#: buzz/widgets/main_window.py
+#: 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr ""
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr ""
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
msgid "Translate to English"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr ""
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
msgid "Starting transcription..."
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
msgid "Search Transcript"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr ""
-
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
diff --git a/buzz/locale/es_ES/LC_MESSAGES/buzz.po b/buzz/locale/es_ES/LC_MESSAGES/buzz.po
index f940aa34..e272d88c 100644
--- a/buzz/locale/es_ES/LC_MESSAGES/buzz.po
+++ b/buzz/locale/es_ES/LC_MESSAGES/buzz.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2025-09-08 12:43+0200\n"
"Last-Translator: Éric Duarte \n"
"Language-Team: \n"
@@ -17,215 +17,206 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.7\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "URL de importación"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://ejemplo.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Ok"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Cancelar"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "URL inválido"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "La URL que has introducido no es válida."
# automatic translation
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Presentación de transcripción en vivo"
+msgstr "Ver la traducción de la transcripción"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Reestablecer los Valores por Defecto"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Inglés"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Catalán"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Danés"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Holandés"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Alemán"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Español"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italiano"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japonés"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Letón"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Polaco"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ucraniano"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Chino (simplificado)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Chino (tradicional)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "¡Es necesario reiniciar!"
# automatic translation
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Lenguaje de interfaz de usuario"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Tamaño de fuente"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Prueba"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "Clave API de OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "URL base de OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "Modelo de la API de OpenAI"
+msgstr "Clave API de OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: 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
+#: 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
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Nota: Los ajustes de exportación de grabación en vivo se trasladarán a la "
-"Configuración avanzada en la pantalla de grabación en vivo en una versión "
-"futura."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "Usar cuantización de 8 bits para reducir el uso de memoria"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Se aplica a los modelos Huggingface y Faster Whisper. Reduce el uso de "
-"memoria de la GPU, pero puede disminuir ligeramente la calidad de la "
-"transcripción."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Reducir la RAM de la GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
msgstr "Desactivar GPU"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "Prueba de la clave API de OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -233,11 +224,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Clave API no válida"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -245,12 +236,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Seleccione Exportar carpeta"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -260,514 +250,445 @@ msgstr ""
"API o su clave. Es posible que la transcripción y la traducción sigan "
"funcionando si la API no admite la validación de claves."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Habilitar la inspección de carpetas"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Eliminar archivos procesados"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Carpeta de entrada"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Carpeta de salida"
# automatic translation
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Seleccione la carpeta de entrada"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Seleccione la carpeta de salida"
# automatic translation
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Preferencias"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "General"
# automatic translation
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modelos"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Atajos"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Vigilancia de carpetas"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Grupo"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Identificación de un modelo Más rápido whisper"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Descargar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Mostrar ubicación de archivo"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Eliminar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Descargado"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Disponible para descarga"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Enlace de descarga a Whisper.cpp archivo de modelo ggml"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Eliminar modelo"
# automatic translation
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "¿Confirma que quiere eliminar el modelo seleccionado?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Descarga fallida"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Error"
# automatic translation
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Grabar"
# automatic translation
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Detener"
# automatic translation
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Detectar idioma"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "p. ej., eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Introduzca un código de idioma ISO 639-3 (3 letras).\n"
-"Ejemplos: eng (inglés), fra (francés), deu (alemán),\n"
-"spa (español), lav (letón)"
# automatic translation
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Ejecutar"
# automatic translation
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Modelo:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr ""
"El uso por primera vez de un modelo puede tardar varios minutos en cargarse."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "Clave API:"
# automatic translation
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Tarea:"
# automatic translation
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Idioma:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Introducir prompt..."
# automatic translation
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Configuración avanzada"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Configuración de reconocimiento de voz"
# automatic translation
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Separados por comas, p. ej., «0.0, 0.2, 0.4, 0.6, 0.8, 1.0»"
+
+# automatic translation
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatura:"
+
+# automatic translation
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Indicación inicial:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Ajustes de traducción"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Habilite la traducción con IA"
# automatic translation
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "Modelo de IA:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Por favor, traduce cada texto que se te envíe del inglés al español. La "
-"traducción se utilizará en un sistema automatizado, por favor no añadas "
-"comentarios ni notas, solo la traducción."
+"Introduce instrucciones para la IA sobre cómo traducir, por ejemplo, "
+"'Traduzca cada texto que se le envíe del inglés al español'."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Instrucciones para la IA:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Ajustes de grabación"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Umbral de silencio:"
-
# automatic translation
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Modo de grabación en directo:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Separador de línea:"
-
-# automatic translation
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Paso de transcripción:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Ocultar no confirmado"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Habilitar la exportación de grabación en vivo"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Carpeta de exportación:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Nombre del archivo de exportación:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Archivo de texto (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Tipo de archivo de exportación:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Limitar entradas de exportación\n"
-"(0 = exportar todo):"
-
-# automatic translation
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Tiempos a nivel de palabra"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Extraer voz"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Exportar:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "Huggingface ID de un modelo"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Avanzado..."
# automatic translation
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Nueva transcripción de archivos"
# automatic translation
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Nueva transcripción de URL"
# automatic translation
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Abrir transcripción"
# automatic translation
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Cancelar transcripción"
# automatic translation
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Vaciar historial"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Actualización disponible"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "En Progreso"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Completado"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Fallido"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Cancelado"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "En cola"
# automatic translation
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Nombre de archivo / URL"
# automatic translation
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Modelo"
# automatic translation
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Tarea"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Estado"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Fecha de finalización"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Fecha de adición"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Notas"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Restablecer orden de columnas"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+# automatic translation
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Reiniciar transcripción"
+msgstr "Cancelar transcripción"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
+#, fuzzy
msgid "Rename"
-msgstr "Renombrar"
+msgstr "Vietnamita"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Añadir/Editar notas"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+# automatic translation
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Renombrar transcripción"
+msgstr "Cancelar transcripción"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Introducir nuevo nombre:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Introduzca algunas notas relevantes para esta transcripción:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "No se puede reiniciar"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "Solo se pueden reiniciar las transcripciones fallidas o canceladas."
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+# automatic translation
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "No se pudo reiniciar la transcripción: {}"
+msgstr "Cancelar transcripción"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"No se pudo reiniciar la transcripción: modelo no disponible y no se pudo "
-"descargar."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"No se pudo reiniciar la transcripción: no se encontró el trabajador del "
-"transcriptor."
# automatic translation
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Grabación en vivo"
# automatic translation
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Pulse en Grabar para comenzar..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "A la espera de la traducción de la IA..."
# automatic translation
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Micrófono:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Mostrar en nueva ventana"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Tamaño del texto:"
+msgstr "Archivos de texto"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Tema"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Claro"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Oscuro"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Personalizado"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Color del texto"
+msgstr "Archivos de texto"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Color de fondo"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Pantalla completa"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Copiar"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Copiar transcripción al portapapeles"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "¡Nada que copiar!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Copia fallida"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "¡Copiado!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Seleccionar color del texto"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Select Background Color"
-msgstr "Seleccionar color de fondo"
+msgstr "Seleccione Exportar carpeta"
# automatic translation
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
+msgid "Select Background Color"
+msgstr "Seleccionar archivo de audio"
+
+# automatic translation
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Se produjo un error al iniciar una grabación nueva:"
# automatic translation
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -775,173 +696,115 @@ msgstr ""
"Compruebe sus dispositivos de audio o consulte los registros de la "
"aplicación para obtener más información."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "¡Hay una nueva versión de Buzz disponible!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Versión actual:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Nueva versión:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Notas de la versión:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Descargar e instalar"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "No hay URL de descarga disponible para su plataforma."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Descargando archivo {} de {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Descargando archivo {} de {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Descarga fallida"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Error al descargar la actualización: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "No se pudo guardar el instalador: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "¡Descarga completa!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "No se pudo ejecutar el instalador: {}"
-
# automatic translation
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Buscar actualizaciones"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Mostrar registros"
+msgstr ""
# automatic translation
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "¡Estás al día!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Volumen promedio"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Cola"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Inicio"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Fin"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Texto"
# automatic translation
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Traducción"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Ver"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Marcas de tiempo"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Exportar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Traducir"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Cambiar el tamaño"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Identificar hablantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
msgstr "Buscar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
msgstr "Mostrar/Ocultar barra de búsqueda (Ctrl+F)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
msgstr "Encontrar:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
msgstr "Introducir texto para encontrar..."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
msgstr "Coincidencia anterior (Mayús+Intro)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
+#, fuzzy
msgid "Next match (Ctrl+Enter)"
-msgstr "Siguiente coincidencia (Ctrl+Enter)"
+msgstr "Siguiente coincidencia (Enter)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
msgstr "Limpiar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
msgstr "Controles de reproducción:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
msgstr "Segmento de bucle"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr ""
"Activar/desactivar la reproducción en bucle al hacer clic en segmentos de la "
"transcripción"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
msgstr "Seguir audio"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
@@ -950,246 +813,206 @@ msgstr ""
"transcripción. Cuando está activado, se desplaza automáticamente al texto "
"actual."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
msgstr "Desplácese hasta Actual"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
msgstr "Desplazarse hasta el texto hablado actualmente"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
msgstr "1 de 100+ coincidencias"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
msgstr "1 de "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
msgstr " coincidencias"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
msgstr "No se encontraron coincidencias"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
msgstr " de 100+ coincidencias"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
msgstr " de "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "Clave de API requerida"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Ingrese la clave API de OpenAI en las preferencias"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Extender tiempo final"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Extender finales hasta (segundos)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Extender finales"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Opciones de cambio de tamaño"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Longitud deseada de los subtítulos"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Disponible solo si los tiempos a nivel de palabra estaban desactivados "
-"durante la transcripción"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Opciones de fusión"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Fusión por hueco"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Dividido por puntuación"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Dividido por la longitud máxima"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Fusión"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Disponible solo si los tiempos a nivel de palabra estaban activados durante "
-"la transcripción"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"La identificación de hablantes no está disponible: no se pudieron cargar las "
-"bibliotecas requeridas."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Recopilando transcripciones"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Cargando audio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Cargando modelo de alineación"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 Cargando modelo de alineación (reintentando con caché...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"No se pudo cargar el modelo de alineación. Por favor, compruebe su conexión "
-"a internet e inténtelo de nuevo."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Procesando audio"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "5/8 Preparing transcripts"
-msgstr "5/8 Preparando transcripciones"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "6/8 Identifying speakers"
-msgstr "6/8 Identificando hablantes"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Asignando hablantes a transcripciones"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "8/8 Identification done"
-msgstr "8/8 Identificación completada"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "0/0 Error identifying speakers"
-msgstr "0/0 Error al identificar hablantes"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Step 1: Identify speakers"
-msgstr "Paso 1: Identificar hablantes"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Identify"
-msgstr "Identificar"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Ready to identify speakers"
-msgstr "Listo para identificar hablantes"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Audio file not found"
-msgstr "Archivo de audio no encontrado"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Step 2: Name speakers"
-msgstr "Paso 2: Nombrar hablantes"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Play sample"
-msgstr "Reproducir muestra"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Merge speaker sentences"
-msgstr "Fusionar frases del hablante"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Save"
-msgstr "Guardar"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Cancelando..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Cancelado"
+msgstr ""
# automatic translation
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
+msgid "5/8 Preparing transcripts"
+msgstr "Cancelar transcripción"
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
+msgid "6/8 Identifying speakers"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
+msgid "7/8 Mapping speakers to transcripts"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
+msgid "8/8 Identification done"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
+msgid "0/0 Error identifying speakers"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
+msgid "Step 1: Identify speakers"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
+msgid "Identify"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
+msgid "Ready to identify speakers"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
+msgid "Audio file not found"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
+msgid "Step 2: Name speakers"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
+msgid "Play sample"
+msgstr ""
+
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
+msgid "Merge speaker sentences"
+msgstr ""
+
+# automatic translation
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
+msgid "Save"
+msgstr "Guardar archivo"
+
+# automatic translation
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Guardar archivo"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Archivos de texto"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Descargando modelo"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "restantes"
# automatic translation
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Importar archivo..."
# automatic translation
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Importar URL..."
-# automatic translation
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importar carpeta..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Acerca de"
# automatic translation
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Preferencias..."
# automatic translation
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Ayuda"
# automatic translation
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Archivo"
# automatic translation
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1198,28 +1021,23 @@ msgstr ""
"no se puede deshacer."
# automatic translation
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Seleccionar archivo de audio"
-# automatic translation
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Seleccione la carpeta de entrada"
-
-#: buzz/widgets/main_window.py
+#: 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"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
"El servidor Whisper no se pudo iniciar. Consulta los registros para obtener "
"más detalles."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
@@ -1229,492 +1047,471 @@ msgstr ""
"Vuelva a intentarlo con un modelo más pequeño. Para forzar el modo de CPU, "
"use la variable de entorno BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
msgid "Translate to English"
msgstr "Traducir al Inglés"
# automatic translation
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Transcribir"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "China"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Ruso"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Coreano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Francés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Portugués"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Turco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Árabe"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Sueco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indones"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Hindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Finlandés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vietnamita"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Hebreo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Griego"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Malayo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "República Checa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Rumano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Húngaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tamil"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Noruego"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Tailandés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Croata"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Búlgaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Lituano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Latin"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malayo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Galés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Eslovaco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Persa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengalí"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Serbian"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Azerbaiyano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Esloveno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Kannada"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Estonio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Macedonio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Breton"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Vasco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "Islandés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Ermeni"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepalí"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongol"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bosnio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "Kazako"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Arnavut"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Suahili"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Gallego"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Maratí"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Punjabi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Cingalés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmer"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Shona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Yoruba"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somalí"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Africaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Occitano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Georgiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Belorusia"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tajik"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindhi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gujarati"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amharca"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Yiddish"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "República Popular Democrática de Laos"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Uzbeko"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Faroe"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Haitian Creole"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Pastún"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turcomano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Nynorsk"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sánscrito"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Luxemburgo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Myanmar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagalog"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Madagascar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Asamés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tátaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Hawaiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hausa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Baskir"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Javanés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Sundanés"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Cantonés"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Se ha producido un error de conexión"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
msgstr "Iniciando Whisper.cpp..."
-#: buzz/transcriber/recording_transcriber.py
+# automatic translation
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "Iniciando transcripción..."
+msgstr "Cancelar transcripción"
# automatic translation
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Abrir ventana de grabación"
# automatic translation
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Importar archivo"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Abrir ventana de preferencias"
# automatic translation
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Ver el texto de la transcripción"
# automatic translation
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Ver la traducción de la transcripción"
# automatic translation
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Ver marcas de tiempo de la transcripción"
# automatic translation
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
msgid "Search Transcript"
msgstr "Buscar transcripción"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Ir al siguiente resultado de búsqueda de transcripción"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Ir al resultado de búsqueda de transcripción anterior"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
msgstr "Desplazarse al texto actual"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
-msgstr "Reproducir/Pausar audio"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
-msgstr "Reproducir segmento actual"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
msgstr "Alternar controles de reproducción"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
-msgstr "Disminuir el tiempo de inicio del segmento"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
-msgstr "Aumentar el tiempo de inicio del segmento"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
-msgstr "Disminuir el tiempo de finalización del segmento"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
-msgstr "Aumentar el tiempo de finalización del segmento"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Añadir a continuación"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Añadir arriba"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Añadir y corregir"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"¡Extracción de voz fallida! Compruebe su conexión a internet — es posible "
-"que sea necesario descargar un modelo."
-
-# automatic translation
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Separados por comas, p. ej., «0.0, 0.2, 0.4, 0.6, 0.8, 1.0»"
-
-# automatic translation
-#~ msgid "Temperature:"
-#~ msgstr "Temperatura:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Por favor, traduzca cada texto que se le envíe del inglés al español."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "¡Error de traducción, consulte los registros!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Aviso de permiso Snap"
diff --git a/buzz/locale/it_IT/LC_MESSAGES/buzz.po b/buzz/locale/it_IT/LC_MESSAGES/buzz.po
index 2c2ea56e..5c4d08ea 100644
--- a/buzz/locale/it_IT/LC_MESSAGES/buzz.po
+++ b/buzz/locale/it_IT/LC_MESSAGES/buzz.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
-"PO-Revision-Date: 2026-01-25 21:42+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
+"PO-Revision-Date: 2025-11-09 20:22+0200\n"
"Language-Team: (Italiano) Albano Battistella \n"
"Language: it_IT\n"
"MIME-Version: 1.0\n"
@@ -16,212 +16,204 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.3\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Importa URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://esempio.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Ok"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Annulla"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "URL non valido"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "L'URL inserito non è valido."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Presentazione con trascrizione in diretta"
+msgstr "Visualizza la trascrizione della traduzione"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Ripristina impostazioni predefinite"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Inglese"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Catalano"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Danese"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Olandese"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Tedesco"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Spagnolo"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italiano"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Giapponese"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Lettone"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Polacco"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
+#, fuzzy
msgid "Portuguese (Brazil)"
-msgstr "Portoghese (Brasiliano)"
+msgstr "Portoghese"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ucraino"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Cinese (semplificato)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Cinese (tradizionale)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "Riavvio richiesto!"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Lingua UI:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Dimensione del carattere"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Test"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "Chiave API OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "URL di base di OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "Modello API OpenAI"
+msgstr "Chiave API OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Esporta cartella"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Nota: le impostazioni di esportazione della registrazione live verranno "
-"spostate nelle Impostazioni avanzate nella schermata di Registrazione live "
-"in una versione futura."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
msgstr ""
-"Utilizzare la quantizzazione a 8 bit per ridurre l'utilizzo della memoria"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Si applica ai modelli Huggingface e Faster Whisper. Riduce l'utilizzo della "
-"memoria GPU ma potrebbe ridurre leggermente la qualità della trascrizione."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Ridurre la RAM della GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
msgstr "Disabilita GPU"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "Test della chiave API OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -229,11 +221,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Chiave API non valida"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -241,12 +233,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Seleziona la cartella di esportazione"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -256,483 +247,412 @@ msgstr ""
"o la tua chiave.La trascrizione e la traduzione potrebbero comunque "
"funzionare se l'API non supporta la convalida della chiave."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Abilita controllo cartelle"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Elimina file elaborati"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Cartella di input"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Cartella di output"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Seleziona cartella di input"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Seleziona cartella di output"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Preferenze"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Generale"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modelli"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Scorciatoie"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Guarda cartella"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Gruppo"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "ID Huggingface di un modello Whisper più veloce"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Download"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Mostra la posizione del file"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Elimina"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Scaricato"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Disponibile per il download"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Link per scaricare il file modello ggml Whisper.cpp"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Elimina modello"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Sei sicuro di voler eliminare il modello selezionato?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Download non riuscito"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Errore"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Registra"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Arresta"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Rileva la lingua"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "ad es., eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Inserisci un codice lingua ISO 639-3 (3 lettere).\n"
-"Esempi: eng (inglese), fra (francese), deu (tedesco),\n"
-"spa (spagnolo), lav (lettone)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Avvia"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Modello:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr ""
"Il caricamento di un modello al primo utilizzo potrebbe richiedere diversi "
"minuti."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "Chiave API:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Compito:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Lingua:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Inserisci richiesta..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Impostazion avanzate"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Impostazioni di riconoscimento vocale"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Separate da virgola, esempio: \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatura:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Domanda iniziale:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Impostazioni di traduzione"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Abilita la traduzione AI"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "Modello AI:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Si prega di tradurre ogni testo inviato dall'inglese allo spagnolo. La "
-"traduzione verrà utilizzata in un sistema automatizzato, quindi non "
-"aggiungere commenti o note, solo la traduzione."
+"Inserisci le istruzioni per l'IA su come tradurre, ad esempio 'Per favore, "
+"traduci ogni testo che ti viene inviato dall'inglese allo spagnolo.'"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Istruzioni per l'AI:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Impostazioni di registrazione"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Soglia del silenzio:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Modalità di registrazione in diretta:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Separatore di riga:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Passo di trascrizione:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Nascondi non confermato"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Abilita l'esportazione della registrazione live"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Cartella di esportazione:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Nome del file di esportazione:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "File di testo (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Tipo di file di esportazione:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Limita le voci di esportazione\n"
-"(0 = esporta tutto):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Tempistiche a livello di parola"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Estrai il parlato"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Esporta:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "ID Huggingface di un modello"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Avanzate..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Nuova trascrizione del file"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Nuova trascrizione URL"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Apri trascrizione"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Annulla trascrizione"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: 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"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Aggiornamento Disponibile"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "In corso"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Completato"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Non riuscito"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Annullato"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "In coda"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Nome file / URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Modello"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Compito"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Stato"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Data completata"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Data aggiunta"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Note"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Ripristina ordine colonne"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Riavvia trascrizione"
+msgstr "Inizio trascrizione..."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
+#, fuzzy
msgid "Rename"
-msgstr "Rinomina"
+msgstr "Vietnamita"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Aggiungi/modifica note"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Rinomina trascrizione"
+msgstr "Annulla trascrizione"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Inserisci nuovo nome:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Inserisci alcune note rilevanti per questa trascrizione:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Impossibile riavviare"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "È possibile riavviare solo le trascrizioni non riuscite o annullate."
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Impossibile riavviare la trascrizione: {}"
+msgstr "Inizio trascrizione..."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"Impossibile riavviare la trascrizione: il modello non è disponibile e non "
-"può essere scaricato."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
-msgstr "Impossibile riavviare la trascrizione: trascrittore non trovato."
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Registrazione in diretta"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Fai clic su Registra per iniziare..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "In attesa della traduzione AI..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Microfono:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Mostra in una nuova finestra"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Dimensione testo:"
+msgstr "File di testo"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Tema"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Chiaro"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Scuro"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Personalizzato"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Colore del testo"
+msgstr "File di testo"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Colore dello sfondo"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Schermo intero"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Copia"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Copia la trascrizione negli appunti"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Nessun testo da copiare!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Copia non riuscita"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Copiato!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Seleziona il colore del testo"
+msgstr "Seleziona la cartella di esportazione"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Seleziona il colore di sfondo"
+msgstr "Seleziona file audio"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Si è verificato un errore durante l'avvio della nuova registrazione:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -740,169 +660,111 @@ msgstr ""
"Controlla i tuoi dispositivi audio o i registri dell'applicazione per "
"maggiori informazioni."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "È disponibile una nuova versione di Buzz!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Versione attuale:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Nuova versione:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Note di rilascio:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Scarica e installa"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Nessun URL di download disponibile per la tua piattaforma."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Download del file {} di {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Download del file {} di {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Download fallito"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Impossibile scaricare l'aggiornamento: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Impossibile salvare il programma di installazione: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Download completato!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Impossibile eseguire il programma di installazione: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Controlla gli aggiornamenti"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Mostra log"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Il programma è aggiornato!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Volume medio"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Coda"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Inizio"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Fine"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Testo"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Traduzione"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Visualizza"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Timestamp"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Esporta"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Tradurre"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Ridimensionare"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Identificare i relatori"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
msgstr "Trova"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
msgstr "Mostra/Nascondi barra di ricerca (Ctrl+F)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
msgstr "Trova:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
msgstr "Inserisci il testo per trovare..."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
msgstr "Corrispondenza precedente (Maiusc+Invio)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
+#, fuzzy
msgid "Next match (Ctrl+Enter)"
-msgstr "Prossima corrispondenza (Ctrl+Enter)"
+msgstr "Prossima corrispondenza (Invio)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
msgstr "Elimina"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
msgstr "Controlli di riproduzione:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
msgstr "Ciclo di segmento"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr ""
"Abilita/disabilita il loop quando si fa clic sui segmenti della trascrizione"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
msgstr "Segui Audio"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
@@ -911,239 +773,197 @@ msgstr ""
"trascrizione. Quando abilitato, scorre automaticamente fino al testo "
"corrente."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
msgstr "Scorri fino al Corrente"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
msgstr "Scorrere fino al testo attualmente pronunciato"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
msgstr "1 di 100+ corrispondenze"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
msgstr "1 di"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
msgstr "corrispondenze"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
msgstr "Nessuna corrispondenza trovata"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
msgstr " di oltre 100 corrispondenze"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
msgstr " di "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "Chiave API richiesta"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Inserisci la chiave API OpenAI nelle preferenze"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Estendi l'orario di fine"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Estendi le terminazioni fino a (secondi)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Estendere i finali"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Opzioni di ridimensionamento"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Lunghezza desiderata dei sottotitoli"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Disponibile solo se i tempi a livello di parola sono stati disabilitati "
-"durante la trascrizione"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Opzioni di unione"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Unito per spazio"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Diviso per punteggiatura"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Diviso per lunghezza massima"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Unione"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Disponibile solo se i tempi a livello di parola sono stati abilitati durante "
-"la trascrizione"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"L'identificazione del parlante non è disponibile: impossibile caricare le "
-"librerie richieste."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Raccolta delle trascrizioni"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Caricamento audio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Modello di allineamento del carico"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
msgstr ""
-"3/8 Caricamento del modello di allineamento (nuovo tentativo con la cache...)"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Impossibile caricare il modello di allineamento. Controlla la tua "
-"connessione Internet e riprova."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Elaborazione audio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Preparazione delle trascrizioni"
+msgstr "Inizio trascrizione..."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Identificazione dei parlanti"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Mappatura dei parlanti sulle trascrizioni"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identificazione effettuata"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Errore nell'identificazione dei parlanti"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Fase 1: identificare i parlanti"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identificare"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Pronto a identificare i parlanti"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "File audio non trovato"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Fase 2: nomi dei parlanti"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Ascolta il campione"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Unisci le frasi del parlante"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Salva"
+msgstr "Salva file"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Annullamento in corso..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Annullato"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Salva file"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "File di testo"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Download del modello"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "rimanente"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Importa file.."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Importa URL..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importa cartella..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Informazioni"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Preferenze..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Aiuto"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "File"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1151,26 +971,22 @@ msgstr ""
"Sei certo di voler eliminare le trascrizioni selezionate? Questa azione non "
"può essere annullata."
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Seleziona file audio"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Seleziona cartella di input"
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Impossibile salvare la chiave API OpenAI nel portachiavi"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
"Impossibile avviare il server Whisper. Controllare i log per i dettagli."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
@@ -1180,484 +996,462 @@ msgstr ""
"Riprovare con un modello più piccolo. Per forzare la modalità CPU, "
"utilizzare la variabile d'ambiente BUZZ_FORCE_CPU=TRUE"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
msgid "Translate to English"
msgstr "Traduci in inglese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Trascrivere"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "Cinese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Russo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Coreano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Francese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Portoghese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Turco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Arabo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Svedese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indonesiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Hindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Finlandese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vietnamita"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Ebraico"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Greco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Malese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "Ceco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Rumeno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Ungherese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tamil"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Norvegese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Tailandese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Croato"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Bulgaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Lituano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Latino"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malayalam"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Gallese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Slovacco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Persiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengalese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Serbo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Azerbaijani"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Sloveno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Kannada"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Estone"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Macedone"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Bretone"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Basco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "Islandese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Armeno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepalese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongola"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bosniaco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "kazako"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Albanese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Swahili"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Galiziano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Marathi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Punjabi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Singalese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmer"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Shona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Yoruba"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somalo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Afrikaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Occitano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Georgiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Biellorusso"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tagiko"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindhi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gujarati"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amarico"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Yiddish"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "Lao"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Uzbeko"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Faroese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Creolo haitiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Pashtu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turkmen"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Nynorsk"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sanscrito"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Lussemburghese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Birmano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagalog"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Malgascio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Assamese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tartaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Hawaiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hausa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Baschiro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Giavanese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Sundanese"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Cantonese"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Si è verificato un errore di connessione"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
msgstr "Avvio di Whisper.cpp..."
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
msgid "Starting transcription..."
msgstr "Inizio trascrizione..."
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Apri finestra di registrazione"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Importa file"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Apri la finestra delle preferenze"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Visualizza il testo della trascrizione"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Visualizza la trascrizione della traduzione"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Visualizza i timestamp della trascrizione"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
msgid "Search Transcript"
msgstr "Cerca trascrizione"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Vai al risultato della ricerca della trascrizione successiva"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Vai al risultato della ricerca della trascrizione precedente"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
msgstr "Scorri fino al testo corrente"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
msgstr "Riproduci/Pausa audio"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
msgstr "Riproduci il segmento corrente"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
msgstr "Attiva/disattiva i controlli di riproduzione"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
msgstr "Riduci l'ora di inizio del segmento"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
msgstr "Aumenta l'ora di inizio del segmento"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
msgstr "Diminuisci l'ora di fine del segmento"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
msgstr "Aumenta l'ora di fine del segmento"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Aggiungere sotto"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Aggiungere sopra"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Aggiungere e correggere"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Estrazione del parlato non riuscita! Controlla la tua connessione Internet — "
-"potrebbe essere necessario scaricare un modello."
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Separate da virgola, esempio: \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-
-#~ msgid "Temperature:"
-#~ msgstr "Temperatura:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Per favore, traduci ogni testo che ti viene inviato dall'inglese allo "
-#~ "spagnolo."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Errore di traduzione, controlla i log!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Avviso di autorizzazione Snap"
diff --git a/buzz/locale/ja_JP/LC_MESSAGES/buzz.po b/buzz/locale/ja_JP/LC_MESSAGES/buzz.po
index 8cbc04d0..6116f6e1 100644
--- a/buzz/locale/ja_JP/LC_MESSAGES/buzz.po
+++ b/buzz/locale/ja_JP/LC_MESSAGES/buzz.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: nunawa <71294849+nunawa@users.noreply.github.com>\n"
"Language-Team: \n"
@@ -12,209 +12,204 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.5\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "URLをインポートする"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://example.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Ok"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "キャンセル"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "無効なURL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "入力されたURLは無効です。"
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "ライブ文字起こしプレゼンテーション"
+msgstr "文字起こしの翻訳を表示する"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "デフォルトに戻す"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
-msgstr "英語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
-msgstr "カタルーニャ語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
-msgstr "デンマーク語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
-msgstr "オランダ語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
-msgstr "ドイツ語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
-msgstr "スペイン語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
-msgstr "イタリア語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
-msgstr "日本語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
-msgstr "ラトビア語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
-msgstr "ポーランド語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
-msgstr "ポルトガル語(ブラジル)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
+#, fuzzy
msgid "Ukrainian"
-msgstr "ウクライナ語"
+msgstr "残り"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
-msgstr "中国語(簡体字)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
-msgstr "中国語(繁体字)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
-msgstr "再起動が必要です!"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
+#, fuzzy
msgid "Ui Language"
-msgstr "UIの言語"
+msgstr "言語:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "フォントサイズ"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "テスト"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "OpenAI APIキー"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "OpenAI ベースURL"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "OpenAI APIモデル"
+msgstr "OpenAI APIキー"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "デフォルトの出力ファイル名"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "ライブ録音書き起こしの出力を有効にする"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "出力フォルダ"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
+#, fuzzy
msgid "Live recording mode"
-msgstr "ライブ録音モード"
+msgstr "ライブ録音"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"注意:ライブ録音の出力設定は、将来のバージョンでライブ録音画面の詳細設定に移"
-"動されます。"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "メモリ使用量を削減するために8ビット量子化を使用する"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"HuggingfaceおよびFaster Whisperモデルに適用されます。GPUメモリ使用量を削減し"
-"ますが、文字起こしの品質がわずかに低下する場合があります。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "GPU RAMを削減する"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "CPUのみを使用してGPUアクセラレーションを無効にする"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-"大きなモデルがGPUメモリに収まらずBuzzがクラッシュする場合に設定してください"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "GPUを無効にする"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "OpenAI APIキー テスト"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -222,24 +217,22 @@ msgstr ""
"あなたのAPIキーは有効です。Buzzはこのキーを使ってWhisper APIの書き起こしとAI"
"翻訳を行います。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
+#, fuzzy
msgid "Invalid API key"
-msgstr "無効なAPIキー"
+msgstr "OpenAI APIキー"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
-"APIはbase64文字(A-Za-z0-9+/=_-)のみをサポートしています。APIキーにその他の"
-"文字が含まれているとエラーが発生する場合があります。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "出力フォルダを選択"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -249,481 +242,409 @@ msgstr ""
"がキーの検証をサポートしていない場合でも、文字起こしや翻訳は動作する場合があ"
"ります。"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "フォルダ監視を有効にする"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "処理済みファイルを削除"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "入力フォルダ"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "出力フォルダ"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "入力フォルダを選択"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "出力フォルダを選択"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "設定"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "一般"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "モデル"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "ショートカット"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "フォルダ監視"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "グループ"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Faster whisperモデルのHuggingface ID"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "ダウンロード"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "ファイルの場所を表示"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "削除"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "ダウンロード済み"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "ダウンロード可能"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Whisper.cpp ggmlモデルファイルのダウンロードリンク"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "モデルを削除"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "選択したモデルを本当に削除しますか?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "ダウンロード失敗"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "エラー"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "録音する"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "停止する"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "自動検出"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "例: eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"ISO 639-3言語コード(3文字)を入力してください。\n"
-"例: eng(英語)、fra(フランス語)、deu(ドイツ語)、\n"
-"spa(スペイン語)、lav(ラトビア語)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "実行"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "モデル:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
-msgstr "モデルの初回使用時は読み込みに数分かかる場合があります。"
+msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "APIキー:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "タスク:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "言語:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "プロンプトを入力..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "高度な設定"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "音声認識設定"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "コンマ区切り、例: \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "サンプリング温度:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "プロンプト:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "翻訳設定"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "AIによる翻訳を有効にする"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "AIのモデル:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"送信された各テキストを英語からスペイン語に翻訳してください。翻訳は自動化され"
-"たシステムで使用されます。コメントやメモは追加せず、翻訳のみを提供してくださ"
-"い。"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "AIへの指示:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "録音設定"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "無音閾値:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "ライブ録音モード:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "行区切り:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "トランスクリプションステップ:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "未確認を非表示"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "ライブ録音の出力を有効にする"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "出力フォルダ:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "出力ファイル名:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "テキストファイル (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "出力ファイル形式:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"出力エントリ数の制限\n"
-"(0 = すべて出力):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "単語レベルでのタイミング"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
-msgstr "音声を抽出する"
+msgstr ""
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "出力形式:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "モデルのHuggingface ID"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "高度な設定..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
+#, fuzzy
msgid "New File Transcription"
-msgstr "新しいファイルの文字起こし"
+msgstr "新しい文字起こし"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
+#, fuzzy
msgid "New URL Transcription"
-msgstr "新しいURLの文字起こし"
+msgstr "新しい文字起こし"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "文字起こしを開く"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "文字起こしをキャンセルする"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "履歴を削除する"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "アップデートあり"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "進行中"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "完了"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "失敗"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "キャンセル済み"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "キュー済み"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "ファイル名 / URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "モデル"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "タスク"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "ステータス"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "完了日"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "追加日"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "メモ"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "列の順序をリセット"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "文字起こしを再開する"
+msgstr "文字起こしをキャンセルする"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
-msgstr "名前を変更"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "メモを追加・編集"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "文字起こしの名前を変更"
+msgstr "文字起こしをキャンセルする"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "新しい名前を入力してください:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "この文字起こしに関するメモを入力してください:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "再開できません"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "再開できるのは失敗またはキャンセルされた文字起こしのみです。"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "文字起こしの再開に失敗しました: {}"
+msgstr "文字起こしをキャンセルする"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: 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
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
-msgstr "文字起こしを再開できませんでした: 文字起こしワーカーが見つかりません。"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "ライブ録音"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "クリックで録音を開始..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "AI翻訳を待っています..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "マイク:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "新しいウィンドウで表示"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "テキストサイズ:"
+msgstr "テキストファイル"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "テーマ"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "ライト"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "ダーク"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "カスタム"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "テキストの色"
+msgstr "テキストファイル"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "背景の色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "全画面表示"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "コピー"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "文字起こしをクリップボードにコピー"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "コピーするものがありません!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "コピーに失敗しました"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "コピーしました!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "テキストの色を選択"
+msgstr "出力フォルダを選択"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "背景の色を選択"
+msgstr "音声ファイルを選択"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "新規録音開始時にエラーが発生しました:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -731,909 +652,790 @@ msgstr ""
"オーディオデバイスを確認するか、詳細をアプリケーションのログで確認してくださ"
"い。"
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Buzzの新しいバージョンが利用可能です!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "現在のバージョン:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "新しいバージョン:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "リリースノート:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "ダウンロードしてインストール"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "お使いのプラットフォーム向けのダウンロードURLがありません。"
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "ファイル {} / {} をダウンロード中..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "ファイル {} / {} をダウンロード中 ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "ダウンロード失敗"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "アップデートのダウンロードに失敗しました: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "インストーラーの保存に失敗しました: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "ダウンロード完了!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "インストーラーの実行に失敗しました: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "アップデートを確認する"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "ログを表示"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "最新の状態です!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "平均音量"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "キュー"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "開始"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "終了"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "テキスト"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "翻訳"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "表示"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "タイムスタンプ"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "出力"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "翻訳"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "リサイズ"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "話者を識別する"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "検索"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "検索バーの表示・非表示 (Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "検索:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "検索するテキストを入力..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "前の一致 (Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "次の一致 (Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "クリア"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "再生コントロール:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "セグメントをループ"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "文字起こしセグメントをクリックしたときのループを有効・無効にする"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "音声に追従"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-"文字起こし内で現在の音声位置への追従を有効・無効にします。有効にすると、現在"
-"のテキストに自動的にスクロールします。"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "現在位置にスクロール"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "現在話されているテキストにスクロールする"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "100件以上中の1件目"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "1 / "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " 件一致"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "一致する項目が見つかりません"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr " / 100件以上一致"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr " / "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "APIキーが必要"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "設定画面でOpenAI APIキーを入力してください"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "終了時刻を延長"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "終了を最大(秒)まで延長"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "終了を延長"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
+#, fuzzy
msgid "Resize Options"
-msgstr "リサイズオプション"
+msgstr "リサイズ"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "希望する字幕の長さ"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr "文字起こし時に単語レベルのタイミングが無効だった場合のみ使用可能"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
-msgstr "結合オプション"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
-msgstr "間隔で結合"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
-msgstr "句読点で分割"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
-msgstr "最大文字数で分割"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
-msgstr "結合"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr "文字起こし時に単語レベルのタイミングが有効だった場合のみ使用可能"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr "話者識別は利用できません: 必要なライブラリの読み込みに失敗しました。"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 文字起こしを収集中"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 音声を読み込み中"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 アライメントモデルを読み込み中"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 アライメントモデルを読み込み中(キャッシュで再試行中...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"アライメントモデルの読み込みに失敗しました。インターネット接続を確認して再度"
-"お試しください。"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 音声を処理中"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 文字起こしを準備中"
+msgstr "文字起こしをキャンセルする"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 話者を識別中"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 話者を文字起こしにマッピング中"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 識別完了"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 話者識別中にエラーが発生しました"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "ステップ1: 話者を識別する"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "識別"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "話者を識別する準備ができました"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "音声ファイルが見つかりません"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "ステップ2: 話者に名前を付ける"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "サンプルを再生"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "話者の文を結合"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "保存"
+msgstr "ファイルを保存"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "キャンセル中..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "キャンセル済み"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "ファイルを保存"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "テキストファイル"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "モデルをダウンロード中"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "残り"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "ファイルをインポートする..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "URLをインポートする..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "フォルダをインポートする..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "About"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "設定..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "ヘルプ"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "ファイル"
-#: buzz/widgets/main_window.py
+#: 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "音声ファイルを選択"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "入力フォルダを選択"
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "OpenAI API キーをkeyringに保存できません"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
-msgstr "Whisperサーバーの起動に失敗しました。詳細はログを確認してください。"
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"メモリ不足のためWhisperサーバーの起動に失敗しました。より小さいモデルで再試行"
-"してください。CPUモードを強制するには環境変数BUZZ_FORCE_CPU=TRUEを使用してく"
-"ださい。"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "英語に翻訳"
+msgstr "翻訳設定"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "文字起こし"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
-msgstr "中国語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
-msgstr "ロシア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
-msgstr "韓国語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
-msgstr "フランス語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
-msgstr "ポルトガル語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
-msgstr "トルコ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
-msgstr "アラビア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
-msgstr "スウェーデン語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
-msgstr "インドネシア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
-msgstr "ヒンディー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
-msgstr "フィンランド語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
-msgstr "ベトナム語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
-msgstr "ヘブライ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
-msgstr "ギリシャ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
-msgstr "マレー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
-msgstr "チェコ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
-msgstr "ルーマニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
-msgstr "ハンガリー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
-msgstr "タミル語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
-msgstr "ノルウェー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
-msgstr "タイ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
-msgstr "ウルドゥー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
-msgstr "クロアチア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
-msgstr "ブルガリア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
-msgstr "リトアニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
-msgstr "ラテン語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
-msgstr "マオリ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
-msgstr "マラヤーラム語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
-msgstr "ウェールズ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
-msgstr "スロバキア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
-msgstr "テルグ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
-msgstr "ペルシャ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
-msgstr "ベンガル語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
-msgstr "セルビア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
-msgstr "アゼルバイジャン語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
-msgstr "スロベニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
-msgstr "カンナダ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
-msgstr "エストニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
-msgstr "マケドニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
-msgstr "ブルトン語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
-msgstr "バスク語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
-msgstr "アイスランド語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
-msgstr "アルメニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
-msgstr "ネパール語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
-msgstr "モンゴル語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
-msgstr "ボスニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
-msgstr "カザフ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
-msgstr "アルバニア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
-msgstr "スワヒリ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
-msgstr "ガリシア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
-msgstr "マラーティー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
-msgstr "パンジャブ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
-msgstr "シンハラ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
-msgstr "クメール語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
-msgstr "ショナ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
-msgstr "ヨルバ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
-msgstr "ソマリ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
-msgstr "アフリカーンス語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
-msgstr "オック語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
-msgstr "ジョージア語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
-msgstr "ベラルーシ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
-msgstr "タジク語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
-msgstr "シンド語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
-msgstr "グジャラート語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
-msgstr "アムハラ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
-msgstr "イディッシュ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
-msgstr "ラオス語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
-msgstr "ウズベク語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
-msgstr "フェロー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
-msgstr "ハイチ・クレオール語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
-msgstr "パシュトー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
-msgstr "トルクメン語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
-msgstr "ニーノシュク語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
-msgstr "マルタ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
-msgstr "サンスクリット語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
-msgstr "ルクセンブルク語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
-msgstr "ミャンマー語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
-msgstr "チベット語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
-msgstr "タガログ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
-msgstr "マラガシ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
-msgstr "アッサム語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
-msgstr "タタール語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
-msgstr "ハワイ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
-msgstr "リンガラ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
-msgstr "ハウサ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
-msgstr "バシキール語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
-msgstr "ジャワ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
-msgstr "スンダ語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
-msgstr "広東語"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "接続エラーが発生しました"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "Whisper.cppを起動中..."
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "文字起こしを開始中..."
+msgstr "文字起こしをキャンセルする"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "録音画面を開く"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "ファイルをインポートする"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "設定画面を開く"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "文字起こしを表示する"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "文字起こしの翻訳を表示する"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "文字起こしのタイムスタンプを表示する"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "文字起こしを検索"
+msgstr "文字起こしを開く"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "次の文字起こし検索結果へ移動"
-
-#: buzz/settings/shortcut.py
-msgid "Go to Previous Transcript Search Result"
-msgstr "前の文字起こし検索結果へ移動"
-
-#: buzz/settings/shortcut.py
-msgid "Scroll to Current Text"
-msgstr "現在のテキストにスクロール"
-
-#: buzz/settings/shortcut.py
-msgid "Play/Pause Audio"
-msgstr "音声の再生・一時停止"
-
-#: buzz/settings/shortcut.py
-msgid "Replay Current Segment"
-msgstr "現在のセグメントを再再生"
-
-#: buzz/settings/shortcut.py
-msgid "Toggle Playback Controls"
-msgstr "再生コントロールの表示切替"
-
-#: buzz/settings/shortcut.py
-msgid "Decrease Segment Start Time"
-msgstr "セグメント開始時刻を早める"
-
-#: buzz/settings/shortcut.py
-msgid "Increase Segment Start Time"
-msgstr "セグメント開始時刻を遅らせる"
-
-#: buzz/settings/shortcut.py
-msgid "Decrease Segment End Time"
-msgstr "セグメント終了時刻を早める"
-
-#: buzz/settings/shortcut.py
-msgid "Increase Segment End Time"
-msgstr "セグメント終了時刻を遅らせる"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append below"
-msgstr "下に追加"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append above"
-msgstr "上に追加"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append and correct"
-msgstr "追加して修正"
-
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
msgstr ""
-"音声抽出に失敗しました!インターネット接続を確認してください。モデルのダウン"
-"ロードが必要な場合があります。"
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "コンマ区切り、例: \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+#: buzz/settings/shortcut.py:27
+msgid "Go to Previous Transcript Search Result"
+msgstr ""
-#~ msgid "Temperature:"
-#~ msgstr "サンプリング温度:"
+#: buzz/settings/shortcut.py:28
+msgid "Scroll to Current Text"
+msgstr ""
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr "送られてくる各テキストを英語からスペイン語に翻訳してください。"
+#: buzz/settings/shortcut.py:29
+msgid "Play/Pause Audio"
+msgstr ""
-#~ msgid "Translation error, see logs!"
-#~ msgstr "翻訳エラーが発生しました。ログを確認してください!"
+#: buzz/settings/shortcut.py:30
+msgid "Replay Current Segment"
+msgstr ""
+
+#: buzz/settings/shortcut.py:31
+msgid "Toggle Playback Controls"
+msgstr ""
+
+#: buzz/settings/shortcut.py:33
+msgid "Decrease Segment Start Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:34
+msgid "Increase Segment Start Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:35
+msgid "Decrease Segment End Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:36
+msgid "Increase Segment End Time"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:5
+msgid "Append below"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:6
+msgid "Append above"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:7
+msgid "Append and correct"
+msgstr ""
#~ msgid "Snap permission notice"
#~ msgstr "Snap権限通知"
diff --git a/buzz/locale/lv_LV/LC_MESSAGES/buzz.po b/buzz/locale/lv_LV/LC_MESSAGES/buzz.po
index 66860657..83df9b2a 100644
--- a/buzz/locale/lv_LV/LC_MESSAGES/buzz.po
+++ b/buzz/locale/lv_LV/LC_MESSAGES/buzz.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
-"PO-Revision-Date: 2026-03-06 13:23+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
+"PO-Revision-Date: 2025-12-23 19:24+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: lv_LV\n"
@@ -17,180 +17,174 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.2\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Importēt URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://example.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Labi"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Atcelt"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "Adrese nav derīga"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "Jūsu ievadītā URL adrese nav derīga."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
msgid "Live Transcript Presentation"
msgstr "Dzīvais ieraksts"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Atjaunot noklusētos"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Angļu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Katalāņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Dāņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Holandiešu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Vācu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Spāņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Itāļu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japāņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Latviešu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Poļu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
msgstr "Portugāļu (Brazīlijas)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ukraiņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Ķīniešu (vienkāršotā)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Ķīniešu (tradicionālā)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "Jāpārstartē!"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Programmas valoda"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Fonta izmērs"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Pārbaudīt"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "OpenAI API atslēga"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "OpenAI adrese"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
msgid "OpenAI API model"
msgstr "OpenAI modelis"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Eksportēt mapē"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
-msgstr "Dzīvā ieraksta režīms"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
msgstr ""
-"Piezīme: Dzīvā ieraksta iestatījumi nākotnes Buzz versijās tiks pārvietoti "
-"uz Papildu iestatījumu sadaļu Dzīvā ieraksta logā."
+"Dzīvā ieraksta\n"
+"režīms"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
msgstr "Izmantot 8bitu kvantizāciju, lai samazinātu nepieciešamo atmiņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
@@ -198,29 +192,30 @@ msgstr ""
"Izmantojams Huggingface un Faster whisper modeļiem, lai samazinātu "
"nepieciešamo atmiņas daudzumu, nedaudz zaudējot atpazīšanas kvalitāti."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
msgstr "Optimizēt GPU atmiņu"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
msgstr "Deaktivēt GPU"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "OpenAI API atslēgas pārbaude"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -228,11 +223,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Nederīga API atslēga"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -240,12 +235,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Izvēlieties mapi kurā eksportēt"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -255,119 +249,118 @@ msgstr ""
"Atpazīšana un tulkošana joprojām var strādāt, ja API neatbalsta atslēgu "
"pārbaudi."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Ieslēgt mapes vērošanu"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Dzēst apstrādātos failus"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Vērojamā mape"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Rezultātu mape"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Izvēlieties vērojamo mapi"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Izvēlieties rezultātu mapi"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Iestatījumi"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Vispārīgi"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modeļi"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Īsinājumi"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Mapes vērošana"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Veids"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Faster whisper modeļa Huggingface ID"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Lejupielādēt"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Rādīt faila atrašanās vietu"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Dzēst"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Lejupielādēts"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Pieejams lejupielādei"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Whisper.cpp ggml modeļa datnes lejupielādes saite"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Dzēst modeli"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Vai tiešām dzēst izvēlēto modeli?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Lejupielāde neizdevās"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Kļūda"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Ierakstīt"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Apturēt"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Noteikt valodu"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
msgstr "piem. eng, fra, deu"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
@@ -377,360 +370,287 @@ msgstr ""
"Piemēram: eng (Angļu), fra (Franču), deu (Vācu),\n"
"spa (Spāņu), lav (Latviešu)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Apstrādāt"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Modelis:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr "Pirmā modeļa ielādes reize var aizņemt pat vairākas minūtes."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "API atslēga:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Uzdevums:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Valoda:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Ievadiet vaicājumu..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Papildu iestatījumi"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Runas atpazīšanas iestatījumi"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Atdalīti ar komatu, piemēram, \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatūra:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr ""
"Sākotnējais\n"
"vaicājums:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Tulkojuma iestatījumi"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Tulkot ar MI"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "AI modelis:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Lūdzu, iztulko katru nosūtīto tekstu no angļu valodas spāņu valodā. "
-"Tulkojums tiks izmantots automatizētā sistēmā, lūdzu, nepievieno nekādus "
-"komentārus vai piezīmes, tikai tulkojumu."
+"Ievadiet instrukcijas mākslīgajam intelektam, piemēram, 'Lūdzu, iztulko "
+"katru tev atsūtīto tekstu no angļu valodas latviski'"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Norādes MI:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Dzīvā ieraksta iestatījumi"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Klusuma slieksnis:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Dzīvā ieraksta režīms:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Rindiņu atdalītājs:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Atpazīšanas solis:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Slēpt mainīgos fragmentus"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Eksportēt dzīvā ieraksta transkriptus"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Eksportēt mapē:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Eksporta fails:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Teksta fails (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Eksporta faila tips:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Eksportēt tikai pēdējos\n"
-"(0 = eksportēt visus):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Dalīt pa vārdiem"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Atdalīt runu"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Eksportēt:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "Modeļa Huggingface ID"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Papildu iestatījumi..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Jauna faila atpazīšana"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Jauna saites atpazīšana"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Atvērt transkriptu"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Atcelt atpazīšanu"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: 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"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Pieejams atjauninājums"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "Apstrādā"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Pabeigts"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Neizdevās"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Atcelts"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "Ierindots"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Fails / URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Modelis"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Uzdevums"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Statuss"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Pabeigts"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Pievienots"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr "Piezīmes"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
msgstr "Atjaunot kolonas"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
msgid "Restart Transcription"
msgstr "Sāk atpazīšanu"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr "Pārddēvēt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr "Rediģēt piezīmes"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
msgid "Rename Transcription"
msgstr "Pārdēvēt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: 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
+#: 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
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr "Neizdodas sākt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: 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
+#: 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
+#: 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
+#: 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."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Dzīvā ierakstīšana"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Klikšķiniet Ierakstīt, lai sāktu..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Gaida MI tulkojumu..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Mikrofons:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
msgstr "Rādīt jaunā logā"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
msgid "Text Size:"
msgstr "Teksta izmērs:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
msgstr "Stils"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
msgstr "Gaišais"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
msgstr "Tumšais"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
msgstr "Pielāgots"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
msgid "Text Color"
msgstr "Teksta krāsa"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
msgstr "Fona krāsa"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
msgstr "Pilnekrāns"
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Kopēt"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Kopēt tekstu starpliktuvē"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Nav nekā ko kopēt!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Kopešana neizdevās"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Nokopēts!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
msgid "Select Text Color"
msgstr "Izvēlieties teksta krāsu"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
msgid "Select Background Color"
msgstr "Izvēlieties fona krāsu"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Sākot jaunu ierakstu notikusi kļūda:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -738,168 +658,109 @@ msgstr ""
"Lūdzu pārbaudiet savas audio ierīces vai pārbaudiet lietotnes ziņojumu "
"žurnālus, lai iegūtu papildu informāciju."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Pieejama jauna Buzz versija!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Instalētā versija:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Jaunā versija:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Jaunās versijas piezīmes:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Lejupielādēt un instalēt"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Jūsu datoram nav pieejama atjauninājum versija."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Lejupielādē {} no {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Lejupielādē {} no {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Lejupielāde neizdevās"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Neizdevās lejupielādēt atjauninājumu: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Neizdevās saglabāt atjauninājumu: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Lejupielāde pabeigta!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Neizdevās sākt atjauninājumu: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Pārbaudīt atjauninājumus"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
msgstr "Parādīt sistēmas žurnālu"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Jums ir jaunākā versija!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Vidējais skaļums"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Rinda"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Sākums"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Beigas"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Teksts"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Tulkojums"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Skats"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Laiks"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Eksportēt"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Tulkot"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Mainīt garumu"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
msgstr "Noteikt runātājus"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
msgstr "Meklēt"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
msgstr "Rādīt/Slēpt meklēšanas joslu (Ctrl+F)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
msgstr "Meklēt:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
msgstr "Ievadiet meklējamo..."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
msgstr "Iepriekšējais rezultāts (Shift+Enter)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
msgstr "Nākamais rezultāts (Ctrl+Enter)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
msgstr "Notīrīt"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
msgstr "Atskaņošana:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
msgstr "Atkārtot segmentu"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr "Nosaka vai atkārtot izvēlēto segmentu"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
msgstr "Sekot audio"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
@@ -907,118 +768,92 @@ msgstr ""
"Nosaka vai atskaņojot audio iezīmētajam segmentam vajadzētu automātiski "
"sekot tam kas tiek atskaņots."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
msgstr "Pāriet uz tekošo"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
msgstr "Pāriet uz šobrīd atskaņojamo tesktu"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
msgstr "1 no 100+ "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
msgstr "1 no "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
msgstr " "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
msgstr "Nekas nav atrasts"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
msgstr " no 100+"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
msgstr " no "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "API atslēgas kļūda"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Lūdzu ievadiet OpenAI API atslēgu iestatījumos"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Pagarināt beigu laiku"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Palielināt beigu laiku par (sekundes)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Palielināt"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Garuma maiņas iestatījumi"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Vēlamais teksta garums"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr "Pieejami tikai, ierakstiem, kas atpazīti bez dalīšanas pa vārdiem"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Apvienošanas iestatījumi"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Apvienot pēc attāluma"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Dalīt pie pieturzīmēm"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Dalīt pie maksimālā garuma"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Apvienot"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr "Pieejami tikai, ierakstiem, kas atpazīti ar dalīšanu pa vārdiem"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Runātāju noteikšana nav pieejama, neizdevās ielādēt nepieciešamās "
-"bibliotēkas."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
msgstr "1/8 Apkopo transkripcijas"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
msgstr "2/8 Ielādē audio"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
msgstr "3/8 Ielādē identifikācijas modeli"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
msgstr "3/8 Ielādē identifikācijas modeli (atkārto...)"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
@@ -1026,115 +861,104 @@ msgstr ""
"Neizdevās ielādēt modeli. Lūdzu pārbaidiet savu interneta savienojumu un "
"mēģiniet vēlreiz."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
msgstr "4/8 Apstrādā audio"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
msgid "5/8 Preparing transcripts"
msgstr "5/8 Sagatavo transkripcijas"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
msgstr "6/8 Nosaka runātājus"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
msgstr "7/8 Marķē runātāju teikumus"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
msgstr "8/8 Runātāju noteikšana pabeigta"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
msgstr "0/0 Kļūda nosakot runātājus"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
msgstr "1. solis: Runātāju noteikšana"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
msgstr "Noteikt"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
msgstr "Gatavs noteikt runātājus"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
msgstr "Audio datne nav atrasta"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
msgstr "2. solis: Runātāju identifikācija"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
msgstr "Atskaņot paraugu"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
msgstr "Apvienot secīgus runātāja teikumus"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
msgid "Save"
msgstr "Saglabāt"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Atceļ..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Atcelts"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Saglabāt failu"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Teksta faili"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Lejupielādē modeli"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Importēt failu..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Importēt URL..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importēt mapi..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Par"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Iestatījumi..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Palīdzība"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Fails"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1142,27 +966,23 @@ msgstr ""
"Vai tiešām vēlaties dzēst izvēlētos transkriptus? Šī ir neatgriezeniska "
"darbība."
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Izvēlieties audio failu"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Izvēlieties mapi"
-
-#: buzz/widgets/main_window.py
+#: 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šķī"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
"Whisper serverim neizdevās ieslēgties. Lūdzu pārbaudiet lietotnes žurnāla "
"ierakstus."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
@@ -1172,482 +992,462 @@ msgstr ""
"vēlreiz ar mazāku modeli. Lai izmantotu tikai CPU iestatiet "
"BUZZ_FORCE_CPU=TRUE vides mainīgo."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
msgid "Translate to English"
msgstr "Tulkot angliski"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Atpazīt"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "Ķīniešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Krievu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Korejiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Franču"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Portugāļu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Turku"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Arābu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Zviedru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indonēziešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Hindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Somu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vjetnamiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Ebreju"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Grieķu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Malajiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "Čehu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Rumāņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Ungāru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tamilu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Norvēģu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Taju"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Horvātu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Bulgāru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Lietuviešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Latīņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malajalu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Velsiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Slovāku"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Persiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengāļu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Serbu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Azerbaidžāņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Slovēņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Kannada"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Igauņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Maķedoniešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Bretoņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Basku"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "Islandiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Armēņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepāliešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongoļu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bosniešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "Kazahu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Albaņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Svahili"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Galisiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Maratu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Pandžabu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Singalu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmeru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Shona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Joruba"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somāliešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Afrikāņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Okitāņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Gruzīnu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Baltkrievu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tadžiku"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindhu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gudžaratu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amharu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Jidiša"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "Laosiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Uzbeku"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Fēru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Haiti kreoliešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Puštu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turkmēņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Nynorsk"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sanskrita"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Luksemburgu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Mjanmas"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagalogu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Malagasu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Asamiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tatāru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Havajiešu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingalu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hausu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Baškīru"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Japāņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Sundāņu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Kantonas"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Notika savienojuma kļūda"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
msgstr "Palaiž Whisper.cpp..."
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
msgid "Starting transcription..."
msgstr "Sāk atpazīšanu..."
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Atvērt ieraksta logu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Importēt failu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Atvērt iestatījumu logu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Aplūkot atpazīto tekstu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Aplūkot tulkojumu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Aplūkot atpazīšanas laikus"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
msgid "Search Transcript"
msgstr "Meklēt tekstā"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
msgstr "Pāriet uz nākamo meklēšanas rezultātu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
msgstr "Pāriet uz iepriekšējo meklēšanas rezultātu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
msgstr "Pāriet uz atskaņojamo tesktu"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
msgstr "Atskaņot/Apturēt audio"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
msgstr "Atskaņot segmentu no sākuma"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
msgstr "Pārslēgt atskaņošanas iespējas"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
msgstr "Samazināt segmenta sākuma laiku"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
msgstr "Palielināt segmenta sākuma laiku"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
msgstr "Samazināt segmenta beigu laiku"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
msgstr "Palielināt segmenta beigu laiku"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Jaunie teikumi apakšā"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Jaunie teikumi augšā"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Papildināt un labot esošo"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Runas atdalīšana neizdevās! Pārbaudiet interneta savienojumu, iespējams "
-"jālejupielādē modelis."
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Atdalīti ar komatu, piemēram, \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-
-#~ msgid "Temperature:"
-#~ msgstr "Temperatūra:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr "Lūdzu, iztulko katru tev atsūtīto tekstu no angļu valodas latviski."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Kļūda tulkojot, skatiet sistēmas žurnālu!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Snap atļauju piezīme"
diff --git a/buzz/locale/nl/LC_MESSAGES/buzz.po b/buzz/locale/nl/LC_MESSAGES/buzz.po
index 4d09b2c1..32ceab84 100644
--- a/buzz/locale/nl/LC_MESSAGES/buzz.po
+++ b/buzz/locale/nl/LC_MESSAGES/buzz.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2025-03-20 18:30+0100\n"
"Last-Translator: Heimen Stoffels \n"
"Language-Team: none\n"
@@ -19,211 +19,202 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.5\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Url importeren"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://voorbeeld.nl/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Oké"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Annuleren"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "Url:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "Ongeldige url"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "De ingevoerde url is ongeldig."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Live transcriptie presenteren"
+msgstr "Getranscribeerde vertaling bekijken"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Standaardwaarden"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Engels"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Catalaans"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Deens"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Nederlands"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Duits"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Spaans"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italiaans"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japans"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Lets"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Pools"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
+#, fuzzy
msgid "Portuguese (Brazil)"
-msgstr "Portugees (Brazilië)"
+msgstr "Portugees"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Oekraïens"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Chinees (Vereenvoudigd)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Chinees (Traditioneel)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "Herstart vereist!"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Programmataal"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Tekstgrootte"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Uitproberen"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "OpenAI-api-sleutel"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "OpenAI-hoofd-url"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "OpenAI-api-model"
+msgstr "OpenAI-api-sleutel"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Exportmap"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Live-opnamemodus"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Opmerking: de exportinstellingen voor live-opnames worden in een toekomstige "
-"versie verplaatst naar de geavanceerde instellingen in het scherm Live-"
-"opname."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "8-bits kwantisering gebruiken om geheugengebruik te verminderen"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Van toepassing op Huggingface- en Faster Whisper-modellen. Vermindert het "
-"GPU-geheugengebruik, maar kan de transcriptiekwaliteit licht verminderen."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "GPU-geheugen verminderen"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "Alleen CPU gebruiken en GPU-versnelling uitschakelen"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-"Gebruik dit als grotere modellen niet in het GPU-geheugen passen en Buzz "
-"crasht"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "GPU uitschakelen"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "OpenAI-api-sleuteltest"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -231,11 +222,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Ongeldige api-sleutel"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -243,12 +234,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Kies een exportmap"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -258,892 +248,714 @@ msgstr ""
"Transcriptie en vertaling werkt mogelijk nog steeds als de api niet om "
"sleutelverificatie vraagt."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Map bijhouden"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Verwerkte bestanden verwijderen"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Invoermap"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Uitvoermap"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Kies een invoermap"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Kies een uitvoermap"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Instellingen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Algemeen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modellen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Sneltoetsen"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Map bijhouden"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Groep"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Huggingface-id of een sneller Whisper-model"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Downloaden"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Bestandslocatie tonen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Verwijderen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Gedownload"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Beschikbaar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Downloadlink van Whisper.cpp ggml-modelbestand"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Model verwijderen"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Weet u zeker dat u het gekozen model wilt verwijderen?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Het downloaden is mislukt"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Foutmelding"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Opnemen"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Stoppen"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Taal herkennen"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "bijv. nld, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Voer een ISO 639-3-taalcode in (3 letters).\n"
-"Voorbeelden: nld (Nederlands), fra (Frans), deu (Duits),\n"
-"spa (Spaans), lav (Lets)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Uitvoeren"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Model:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr ""
"Let op: de eerste keer kan het enkele minuten duren voordat het model "
"geladen is."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "Api-sleutel:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Taak:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Taal:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Voer een tekst in…"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Geavanceerde instellingen"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Spraakherkenningsinstellingen"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Kommagescheiden, bijv. ‘0.0, 0.2, 0.4, 0.6, 0.8, 1.0’"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatuur:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Hoofdinvoer:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Vertaalinstellingen"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "AI-vertaling inschakelen"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "AI-model:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Vertaal elke tekst die naar u wordt gestuurd van het Engels naar het Spaans. "
-"De vertaling wordt gebruikt in een geautomatiseerd systeem. Voeg geen "
-"opmerkingen of notities toe, alleen de vertaling."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "AI-instructies:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Opname-instellingen"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Stiltedrempel:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Live-opnamemodus:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Regelscheidingsteken:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Transcriptiestap:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Verberg onbevestigd"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Live-opname exporteren inschakelen"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Exportmap:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Exportbestandsnaam:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Tekstbestand (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Exportbestandstype:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Exportitems beperken\n"
-"(0 = alles exporteren):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Woordherkenningstimings"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Spraak extraheren"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Exporteren:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "Huggingface-id van een model"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Geavanceerd…"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Nieuwe bestandstranscriptie"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Nieuwe url-transcriptie"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Transcriptie openen"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Transcriptie wissen"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Geschiedenis wissen"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Update Beschikbaar"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "In behandeling"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Afgerond"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Mislukt"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Afgebroken"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "In wachtrij"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Bestandsnaam/Url"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Model"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Taak"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Status"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Afgerond op"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Toegevoegd op"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Notities"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Kolomvolgorde herstellen"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Transcriptie opnieuw starten"
+msgstr "Transcriptie wissen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
+#, fuzzy
msgid "Rename"
-msgstr "Hernoemen"
+msgstr "Vietnamees"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Notities toevoegen/bewerken"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Transcriptie hernoemen"
+msgstr "Transcriptie wissen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Voer een nieuwe naam in:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Voer relevante notities in voor deze transcriptie:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Kan niet opnieuw starten"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
-"Alleen mislukte of afgebroken transcripties kunnen opnieuw worden gestart."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Transcriptie opnieuw starten mislukt: {}"
+msgstr "Transcriptie wissen"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"Transcriptie kon niet opnieuw worden gestart: model niet beschikbaar en kon "
-"niet worden gedownload."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"Transcriptie kon niet opnieuw worden gestart: transcriptieproces niet "
-"gevonden."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Live-opname"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Klik op de opnameknop om te beginnen…"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Bezig met wachten op AI-vertaling…"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Microfoon:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "In nieuw venster tonen"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Tekstgrootte:"
+msgstr "Tekstbestanden"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Thema"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Licht"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Donker"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Aangepast"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Tekstkleur"
+msgstr "Tekstbestanden"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Achtergrondkleur"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Volledig scherm"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Kopiëren"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Transcriptie naar klembord kopiëren"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Niets om te kopiëren!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Kopiëren mislukt"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Gekopieerd!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Kies een tekstkleur"
+msgstr "Kies een exportmap"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Kies een achtergrondkleur"
+msgstr "Kies een audiobestand"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Er is een fout opgetreden tijdens het starten van de opname:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
msgstr "Controleer uw geluidsapparatuur of het programmalogboek."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Er is een nieuwe versie van Buzz beschikbaar!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Huidige versie:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Versie:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Release-opmerkingen:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Downloaden en installeren"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Geen download-URL beschikbaar voor uw platform."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Bestand {} van {} downloaden..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Bestand {} van {} downloaden ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Download mislukt"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Het downloaden van de update is mislukt: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Kan het installatieprogramma niet opslaan: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Download voltooid!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Kan het installatieprogramma niet uitvoeren: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Controleren op updates"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Logboeken tonen"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "De software is actueel!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Gemiddeld volume"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Wachtrij"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Begin"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Einde"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Tekst"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Vertaling"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Bekijken"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Tijdstippen"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Exporteren"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Vertalen"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Grootte"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Sprekers identificeren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "Zoeken"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "Zoekbalk tonen/verbergen (Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "Zoeken:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "Voer te zoeken tekst in…"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "Vorige overeenkomst (Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "Volgende overeenkomst (Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "Wissen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "Afspeelbediening:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "Fragment herhalen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "Herhaling in- of uitschakelen bij het klikken op transcriptfragmenten"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "Audio volgen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-"De huidige audiopositie in de transcriptie in- of uitschakelen. Wanneer "
-"ingeschakeld, wordt automatisch naar de huidige tekst gescrold."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "Naar huidig fragment scrollen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "Naar de momenteel gesproken tekst scrollen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "1 van 100+ overeenkomsten"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "1 van "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " overeenkomsten"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "Geen overeenkomsten gevonden"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr " van 100+ overeenkomsten"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr " van "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "Api-sleutel vereist"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Voer de OpenAI-api-sleutel in in de instellingen"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Eindtijd verlengen"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Eindes verlengen met maximaal (seconden)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Eindes verlengen"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Grootteopties"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Voorkeurslengte van ondertiteling"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Alleen beschikbaar als timings op woordniveau zijn uitgeschakeld tijdens "
-"transcriptie"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Samenvoegopties"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Samenvoegen op basis van tussenruimte"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Splitsen op basis van leestekens"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Splitsen op basis van max. lengte"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Samenvoegen"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Alleen beschikbaar als timings op woordniveau zijn ingeschakeld tijdens "
-"transcriptie"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Sprekeridentificatie is niet beschikbaar: het laden van de vereiste "
-"bibliotheken is mislukt."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Transcripties verzamelen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Audio laden"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Uitlijningsmodel laden"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 Uitlijningsmodel laden (opnieuw proberen met cache…)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Het laden van het uitlijningsmodel is mislukt. Controleer uw "
-"internetverbinding en probeer het opnieuw."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Audio verwerken"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Transcripties voorbereiden"
+msgstr "Transcriptie wissen"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Sprekers identificeren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Sprekers koppelen aan transcripties"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identificatie voltooid"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Fout bij het identificeren van sprekers"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Stap 1: Sprekers identificeren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identificeren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Klaar om sprekers te identificeren"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Audiobestand niet gevonden"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Stap 2: Sprekers een naam geven"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Fragment afspelen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Zinnen van sprekers samenvoegen"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Opslaan"
+msgstr "Bestand opslaan"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Bezig met annuleren…"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Afgebroken"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Bestand opslaan"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Tekstbestanden"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Bezig met ophalen van model…"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "resterend"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Bestand importeren…"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Url importeren…"
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Map importeren…"
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Over"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Instellingen…"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Hulp"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Bestand"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1151,514 +963,486 @@ msgstr ""
"Weet u zeker dat u de gekozen transcriptie(s) wilt verwijderen? Deze actie "
"is onomkeerbaar."
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Kies een audiobestand"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Kies een invoermap"
-
-#: buzz/widgets/main_window.py
+#: 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"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
-"De Whisper-server kon niet worden gestart. Raadpleeg de logboeken voor meer "
-"informatie."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"De Whisper-server kon niet worden gestart wegens onvoldoende geheugen. "
-"Probeer het opnieuw met een kleiner model. Gebruik de omgevingsvariabele "
-"BUZZ_FORCE_CPU=TRUE om CPU-modus te forceren."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "Naar het Engels vertalen"
+msgstr "Vertaalinstellingen"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Transcriberen"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "Chinees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Russisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Koreaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Frans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Portugees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Turks"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Arabisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Zweeds"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indonesisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Hindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Fins"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vietnamees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Hebreeuws"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Grieks"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Maleis"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "Tsjechisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Roemeens"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Hongaars"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tamil"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Noors"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Thai"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Kroatisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Bulgaars"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Litouws"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Latijn"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malayalam"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Welsh"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Slowaaks"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Perzisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengaals"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Servisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Azerbeidzjaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Sloveens"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Kannada"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Ests"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Macedonisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Bretons"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Baskisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "IJslands"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Armeens"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepalees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongools"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bosnisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "Kazachs"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Albanees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Swahili"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Galicisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Marathi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Punjabi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Singalees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmer"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Shona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Yoruba"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somalisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Afrikaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Occitaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Georgisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Belarussisch (Wit-Russisch)"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tadzjieks"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindhi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gujarati"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amhaars"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Jiddisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "Laotiaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Oezbeeks"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Faeröers"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Haïtiaans-Creools"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Pashto"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turkmeens"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Nynorsk"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sanskriet"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Luxemburgs"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Myanmar"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagalog"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Malagassisch"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Assamees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tataars"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Hawaïaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hausa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Bashkir"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Javaans"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Soedanees"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Kantonees"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Er is een verbindingsfout opgetreden"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "Whisper.cpp wordt gestart…"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "Transcriptie wordt gestart…"
+msgstr "Transcriptie wissen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Opnamevenster openen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Bestand importeren"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Instellingenvenster openen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Transcriptie bekijken"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Getranscribeerde vertaling bekijken"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Getranscribeerde tijdstippen bekijken"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "Transcriptie doorzoeken"
+msgstr "Transcriptie openen"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Naar volgend zoekresultaat in transcriptie gaan"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Naar vorig zoekresultaat in transcriptie gaan"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
-msgstr "Naar huidige tekst scrollen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
-msgstr "Audio afspelen/pauzeren"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
-msgstr "Huidig fragment opnieuw afspelen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
-msgstr "Afspeelbediening in-/uitschakelen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
-msgstr "Begintijd van fragment verkleinen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
-msgstr "Begintijd van fragment vergroten"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
-msgstr "Eindtijd van fragment verkleinen"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
-msgstr "Eindtijd van fragment vergroten"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Onderaan toevoegen"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Bovenaan toevoegen"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Toevoegen en corrigeren"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Spraakextractie mislukt! Controleer uw internetverbinding — mogelijk moet er "
-"een model worden gedownload."
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Kommagescheiden, bijv. '0.0, 0.2, 0.4, 0.6, 0.8, 1.0'"
-
-#~ msgid "Temperature:"
-#~ msgstr "Temperatuur:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Vertaal elke tekst die naar u wordt verzonden van het Engels naar het "
-#~ "Spaans."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Vertaalfout, raadpleeg de logboeken!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Snap-rechten"
@@ -1679,3 +1463,6 @@ msgstr ""
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Voer vertaalinstructies in…"
+
+#~ msgid "Version"
+#~ msgstr "Versie"
diff --git a/buzz/locale/pl_PL/LC_MESSAGES/buzz.po b/buzz/locale/pl_PL/LC_MESSAGES/buzz.po
index 251a1264..f4e08020 100644
--- a/buzz/locale/pl_PL/LC_MESSAGES/buzz.po
+++ b/buzz/locale/pl_PL/LC_MESSAGES/buzz.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2024-03-17 20:50+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -17,722 +17,646 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.2.2\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Importuj URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://przyklad.pl/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
-msgstr "OK"
+msgstr ""
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Anuluj"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "Nieprawidłowy URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "Wprowadzony URL nie jest prawidłowy"
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Prezentacja transkrypcji na żywo"
+msgstr "Nowa transkrypcja"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
-msgstr "Przywróć ustawienia domyślne"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "English"
-msgstr "Angielski"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Catalan"
-msgstr "Kataloński"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Danish"
-msgstr "Duński"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Dutch"
-msgstr "Niderlandzki"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "German"
-msgstr "Niemiecki"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Spanish"
-msgstr "Hiszpański"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Italian"
-msgstr "Włoski"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Japanese"
-msgstr "Japoński"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Latvian"
-msgstr "Łotewski"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Polish"
-msgstr "Polski"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Portuguese (Brazil)"
-msgstr "Portugalski (Brazylia)"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
-msgid "Ukrainian"
-msgstr "Ukraiński"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Chinese (Simplified)"
-msgstr "Chiński (uproszczony)"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Chinese (Traditional)"
-msgstr "Chiński (tradycyjny)"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Restart required!"
-msgstr "Wymagane ponowne uruchomienie!"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Ui Language"
-msgstr "Język interfejsu"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Font Size"
-msgstr "Rozmiar czcionki"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Test"
-msgstr "Testuj"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "OpenAI API key"
-msgstr "Klucz API OpenAI"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "OpenAI base url"
-msgstr "Podstawowy adres URL OpenAI"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "OpenAI API model"
-msgstr "Model API OpenAI"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Default export file name"
-msgstr "Domyślna nazwa pliku eksportu"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Enable live recording transcription export"
-msgstr "Włącz eksport transkrypcji nagrania na żywo"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Browse"
-msgstr "Przeglądaj"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Export folder"
-msgstr "Folder eksportu"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid "Live recording mode"
-msgstr "Tryb nagrywania na żywo"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
msgstr ""
-"Uwaga: Ustawienia eksportu nagrywania na żywo zostaną przeniesione do "
-"Ustawień zaawansowanych ekranu nagrywania na żywo w przyszłej wersji."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
+msgid "English"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
+msgid "Catalan"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
+msgid "Danish"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
+msgid "Dutch"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
+msgid "German"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
+msgid "Spanish"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
+msgid "Italian"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
+msgid "Japanese"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
+msgid "Latvian"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
+msgid "Polish"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
+msgid "Portuguese (Brazil)"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
+msgid "Ukrainian"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
+msgid "Chinese (Traditional)"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
+msgid "Restart required!"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
+#, fuzzy
+msgid "Ui Language"
+msgstr "Język:"
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
+msgid "Font Size"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
+msgid "Test"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
+msgid "OpenAI API key"
+msgstr ""
+
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
+msgid "OpenAI base url"
+msgstr ""
+
+#: 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: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:178
+msgid "Export folder"
+msgstr ""
+
+#: 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:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "Użyj kwantyzacji 8-bitowej, aby zmniejszyć zużycie pamięci"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Dotyczy modeli Huggingface i Faster Whisper. Zmniejsza zużycie pamięci GPU, "
-"ale może nieznacznie obniżyć jakość transkrypcji."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Zmniejsz pamięć RAM GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "Używaj tylko CPU i wyłącz akcelerację GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-"Ustaw to, jeśli większe modele nie mieszczą się w pamięci GPU i Buzz się "
-"zawiesza"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "Wyłącz GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
-msgstr "Test klucza API OpenAI"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
-"Twój klucz API jest prawidłowy. Buzz użyje tego klucza do wykonywania "
-"transkrypcji przez Whisper API oraz tłumaczeń AI."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
+#, fuzzy
msgid "Invalid API key"
-msgstr "Nieprawidłowy klucz API"
+msgstr "Nieprawidłowy URL"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
-"API obsługuje tylko znaki base64 (A-Za-z0-9+/=_-). Inne znaki w kluczu API "
-"mogą powodować błędy."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
-msgstr "Wybierz folder eksportu"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
"validation."
msgstr ""
-"OpenAI API zwróciło nieprawidłową odpowiedź. Sprawdź adres URL API lub swój "
-"klucz. Transkrypcja i tłumaczenie mogą nadal działać, jeśli API nie "
-"obsługuje weryfikacji klucza."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
+#, fuzzy
msgid "Enable folder watch"
-msgstr "Włącz obserwację folderu"
+msgstr "Przeglądanie folderu"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Usuń przetworzonych pliki"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
-msgstr "Folder wejściowy"
+msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
-msgstr "Folder wyjściowy"
+msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
+#, fuzzy
msgid "Select Input Folder"
-msgstr "Wybierz folder wejściowy"
+msgstr "Wybierz plik audio"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
-msgstr "Wybierz folder wyjściowy"
+msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
+#, fuzzy
msgid "Preferences"
-msgstr "Ustawienia"
+msgstr "Ustawienia..."
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Główne"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
+#, fuzzy
msgid "Models"
-msgstr "Modele"
+msgstr "Model:"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Skróty"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Przeglądanie folderu"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
-msgstr "Grupa"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
-msgstr "ID modelu Faster Whisper z Huggingface"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
+#, fuzzy
msgid "Download"
msgstr "Pobierz"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Pokaż lokalizacje pliku"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Usuń"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
+#, fuzzy
msgid "Downloaded"
msgstr "Pobrany"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Dostępne do pobrania"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
-msgstr "Link do pobrania pliku modelu Whisper.cpp ggml"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Usuń model"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
+#, fuzzy
msgid "Are you sure you want to delete the selected model?"
-msgstr "Czy na pewno chcesz usunąć wybrany model?"
+msgstr "Czy na pewno chcesz usunąć zaznaczoną transkrypcję?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
+#, fuzzy
msgid "Download failed"
-msgstr "Pobieranie nie powiodło się"
+msgstr "Pobrany"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Błąd"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Nagraj"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Zatrzymaj"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Wykryj język"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "np. eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Wprowadź kod języka ISO 639-3 (3 litery).\n"
-"Przykłady: eng (angielski), fra (francuski), deu (niemiecki),\n"
-"spa (hiszpański), lav (łotewski)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Rozpocznij"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Model:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
-msgstr "Pierwsze użycie modelu może potrwać kilka minut podczas ładowania."
+msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
-msgstr "Klucz API:"
+msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Zadanie:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Język:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
-msgstr "Wprowadź instrukcje..."
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Ustawienia zaawansowane"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
-msgstr "Ustawienia rozpoznawania mowy"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Oddzielone przecinkiem, np. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatura:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Wstępne instrukcje:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
-msgstr "Ustawienia tłumaczenia"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
-msgstr "Włącz tłumaczenie AI"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
+#, fuzzy
msgid "AI model:"
-msgstr "Model AI:"
+msgstr "Model:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Proszę przetłumaczyć każdy przesłany tekst z języka angielskiego na "
-"hiszpański. Tłumaczenie będzie używane w systemie automatycznym, dlatego "
-"prosimy nie dodawać żadnych komentarzy ani uwag, tylko samo tłumaczenie."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
-msgstr "Instrukcje dla AI:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Ustawienia nagrywania"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Próg ciszy:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Tryb nagrywania na żywo:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Separator wierszy:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Krok transkrypcji:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Ukryj niepotwierdzone"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Włącz eksport nagrywania na żywo"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Folder eksportu:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Nazwa pliku eksportu:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Plik tekstowy (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Typ pliku eksportu:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
msgstr ""
-"Ogranicz wpisy eksportu\n"
-"(0 = eksportuj wszystkie):"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Znaczniki dla słów"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
-msgstr "Wyodrębnij mowę"
+msgstr ""
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
-msgstr "Eksportuj:"
+msgstr ""
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
-msgstr "ID modelu z Huggingface"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
-msgstr "Zaawansowane..."
+msgstr ""
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
+#, fuzzy
msgid "New File Transcription"
-msgstr "Nowa transkrypcja pliku"
+msgstr "Nowa transkrypcja"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
+#, fuzzy
msgid "New URL Transcription"
-msgstr "Nowa transkrypcja z URL"
+msgstr "Nowa transkrypcja"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Otwórz transkrypt"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Anuluj transkrypcję"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Wyczyść historię"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Dostępna aktualizacja"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
-msgstr "W toku"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Ukończono"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
-msgstr "Nie powiodło się"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Anulowano"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "Kolejka"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
+#, fuzzy
msgid "File Name / URL"
-msgstr "Nazwa pliku / URL"
+msgstr "Nazwa pliku"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
+#, fuzzy
msgid "Model"
-msgstr "Model"
+msgstr "Model:"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
+#, fuzzy
msgid "Task"
-msgstr "Zadanie"
+msgstr "Zadanie:"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Status"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
+#, fuzzy
msgid "Date Completed"
-msgstr "Data ukończenia"
+msgstr "Ukończono"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
-msgstr "Data dodania"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Notatki"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Resetuj kolejność kolumn"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Uruchom ponownie transkrypcję"
+msgstr "Anuluj transkrypcję"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
-msgstr "Zmień nazwę"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Dodaj/edytuj notatki"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Zmień nazwę transkrypcji"
+msgstr "Anuluj transkrypcję"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Wprowadź nową nazwę:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Wprowadź odpowiednie notatki do tej transkrypcji:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Nie można ponownie uruchomić"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
-"Tylko nieudane lub anulowane transkrypcje mogą być uruchomione ponownie."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Nie udało się uruchomić ponownie transkrypcji: {}"
+msgstr "Anuluj transkrypcję"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"Nie można uruchomić ponownie transkrypcji: model jest niedostępny i nie "
-"można go pobrać."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"Nie można uruchomić ponownie transkrypcji: nie znaleziono procesu "
-"transkrypcji."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Nagrywanie na żywo"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Naciśnij Nagraj, aby zacząć..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
-msgstr "Oczekiwanie na tłumaczenie AI..."
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Mikrofon:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Pokaż w nowym oknie"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Rozmiar tekstu:"
+msgstr "Pliki tekstowe"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Motyw"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Jasny"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Ciemny"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Niestandardowy"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Kolor tekstu"
+msgstr "Pliki tekstowe"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Kolor tła"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Pełny ekran"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Kopiuj"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Kopiuj transkrypcję do schowka"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Nie ma nic do skopiowania!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Kopiowanie nie powiodło się"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Skopiowano!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Wybierz kolor tekstu"
+msgstr "Wybierz plik audio"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Wybierz kolor tła"
+msgstr "Wybierz plik audio"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Wystąpił błąd podczas rozpoczęcia nowego nagrania:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -740,406 +664,310 @@ msgstr ""
"Sprawdź urządzenia audio lub przejrzyj logi aplikacji, by uzyskać więcej "
"informacji."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Dostępna jest nowa wersja Buzz!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Aktualna wersja:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Nowa wersja:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Informacje o wydaniu:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Pobierz i zainstaluj"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Brak adresu URL do pobrania dla Twojej platformy."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Pobieranie pliku {} z {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Pobieranie pliku {} z {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Pobieranie nie powiodło się"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Nie udało się pobrać aktualizacji: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Nie udało się zapisać instalatora: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Pobieranie zakończone!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Nie udało się uruchomić instalatora: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Sprawdź aktualizacje"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Pokaż logi"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Posiadasz najnowszą wersję!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Średnia głośność"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Kolejka"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Rozpocznij"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Zakończ"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Tekst"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
+#, fuzzy
msgid "Translation"
-msgstr "Tłumaczenie"
+msgstr "Nowa transkrypcja"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
-msgstr "Widok"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
-msgstr "Znaczniki czasu"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
-msgstr "Eksportuj"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
-msgstr "Tłumacz"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
-msgstr "Zmień rozmiar"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Identyfikuj mówców"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "Znajdź"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "Pokaż/ukryj pasek wyszukiwania (Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "Znajdź:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "Wprowadź tekst do wyszukania..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "Poprzedni wynik (Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "Następny wynik (Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "Wyczyść"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "Sterowanie odtwarzaniem:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "Zapętlaj fragment"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "Włącz/wyłącz zapętlanie po kliknięciu na fragmenty transkrypcji"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "Podążaj za dźwiękiem"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-"Włącz/wyłącz śledzenie bieżącej pozycji audio w transkrypcji. Gdy włączone, "
-"automatycznie przewija do bieżącego tekstu."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "Przewiń do bieżącego"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "Przewiń do aktualnie mówionego tekstu"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "1 z 100+ wyników"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "1 z "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " wyników"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "Nie znaleziono wyników"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr " z 100+ wyników"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr " z "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
-msgstr "Wymagany klucz API"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
-msgstr "Wprowadź klucz API OpenAI w ustawieniach"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Wydłuż czas końcowy"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Wydłuż zakończenia o maksymalnie (sekundy)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Wydłuż zakończenia"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
-msgstr "Opcje zmiany rozmiaru"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
-msgstr "Żądana długość napisów"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
msgstr ""
-"Dostępne tylko jeśli znaczniki dla słów były wyłączone podczas transkrypcji"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
-msgstr "Opcje scalania"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
-msgstr "Scal według przerwy"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
-msgstr "Podziel według interpunkcji"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
-msgstr "Podziel według maksymalnej długości"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
-msgstr "Scal"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
msgstr ""
-"Dostępne tylko jeśli znaczniki dla słów były włączone podczas transkrypcji"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Identyfikacja mówcy jest niedostępna: nie udało się załadować wymaganych "
-"bibliotek."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Zbieranie transkrypcji"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Ładowanie audio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Ładowanie modelu wyrównania"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
msgstr ""
-"3/8 Ładowanie modelu wyrównania (ponowna próba z pamięcią podręczną...)"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Nie udało się załadować modelu wyrównania. Sprawdź połączenie internetowe i "
-"spróbuj ponownie."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Przetwarzanie audio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Przygotowywanie transkrypcji"
+msgstr "Anuluj transkrypcję"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Identyfikowanie mówców"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Przypisywanie mówców do transkrypcji"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identyfikacja zakończona"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Błąd podczas identyfikacji mówców"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Krok 1: Identyfikuj mówców"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identyfikuj"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Gotowy do identyfikacji mówców"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Nie znaleziono pliku audio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Krok 2: Nazwij mówców"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Odtwórz próbkę"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Scal zdania mówcy"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Zapisz"
+msgstr "Zapisz plik"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Anulowanie..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Anulowano"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
+#, fuzzy
msgid "Save File"
msgstr "Zapisz plik"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Pliki tekstowe"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
+#, fuzzy
msgid "Downloading model"
-msgstr "Pobieranie modelu"
+msgstr "Pobrany"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
-msgstr "pozostało"
+msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
+#, fuzzy
msgid "Import File..."
msgstr "Importuj plik..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
+#, fuzzy
msgid "Import URL..."
msgstr "Importuj URL..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importuj folder..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
-msgstr "O programie"
+msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Ustawienia..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Pomoc"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Plik"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1147,510 +975,491 @@ msgstr ""
"Czy na pewno chcesz usunąć zaznaczone transkrypcje? Tej operacji nie można "
"cofnąć."
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Wybierz plik audio"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Wybierz folder"
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
-msgstr "Nie można zapisać klucza API OpenAI w breloku kluczy"
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
-msgstr "Serwer Whisper nie uruchomił się. Sprawdź logi, aby uzyskać szczegóły."
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"Serwer Whisper nie uruchomił się z powodu niewystarczającej pamięci. Spróbuj "
-"ponownie z mniejszym modelem. Aby wymusić tryb CPU, użyj zmiennej "
-"środowiskowej BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "Przetłumacz na angielski"
+msgstr "Nowa transkrypcja"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
+#, fuzzy
msgid "Transcribe"
-msgstr "Transkrybuj"
+msgstr "Otwórz transkrypt"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
-msgstr "Chiński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Russian"
-msgstr "Rosyjski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Korean"
-msgstr "Koreański"
-
-#: buzz/transcriber/transcriber.py
-msgid "French"
-msgstr "Francuski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Portuguese"
-msgstr "Portugalski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Turkish"
-msgstr "Turecki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Arabic"
-msgstr "Arabski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Swedish"
-msgstr "Szwedzki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Indonesian"
-msgstr "Indonezyjski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Hindi"
-msgstr "Hindi"
-
-#: buzz/transcriber/transcriber.py
-msgid "Finnish"
-msgstr "Fiński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Vietnamese"
-msgstr "Wietnamski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Hebrew"
-msgstr "Hebrajski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Greek"
-msgstr "Grecki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Malay"
-msgstr "Malajski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Czech"
-msgstr "Czeski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Romanian"
-msgstr "Rumuński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Hungarian"
-msgstr "Węgierski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Tamil"
-msgstr "Tamilski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Norwegian"
-msgstr "Norweski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Thai"
-msgstr "Tajski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Urdu"
-msgstr "Urdu"
-
-#: buzz/transcriber/transcriber.py
-msgid "Croatian"
-msgstr "Chorwacki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Bulgarian"
-msgstr "Bułgarski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Lithuanian"
-msgstr "Litewski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Latin"
-msgstr "Łacina"
-
-#: buzz/transcriber/transcriber.py
-msgid "Maori"
-msgstr "Maoryski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Malayalam"
-msgstr "Malajalam"
-
-#: buzz/transcriber/transcriber.py
-msgid "Welsh"
-msgstr "Walijski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Slovak"
-msgstr "Słowacki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Telugu"
-msgstr "Telugu"
-
-#: buzz/transcriber/transcriber.py
-msgid "Persian"
-msgstr "Perski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Serbian"
-msgstr "Serbski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Azerbaijani"
-msgstr "Azerbejdżański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Slovenian"
-msgstr "Słoweński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Kannada"
-msgstr "Kannada"
-
-#: buzz/transcriber/transcriber.py
-msgid "Estonian"
-msgstr "Estoński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Macedonian"
-msgstr "Macedoński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Breton"
-msgstr "Bretoński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Basque"
-msgstr "Baskijski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Icelandic"
-msgstr "Islandzki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Armenian"
-msgstr "Ormiański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Nepali"
-msgstr "Nepalski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Mongolian"
-msgstr "Mongolski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Bosnian"
-msgstr "Bośniacki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Kazakh"
-msgstr "Kazachski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Albanian"
-msgstr "Albański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Swahili"
-msgstr "Suahili"
-
-#: buzz/transcriber/transcriber.py
-msgid "Galician"
-msgstr "Galicyjski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Marathi"
-msgstr "Marathi"
-
-#: buzz/transcriber/transcriber.py
-msgid "Punjabi"
-msgstr "Pendżabski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Sinhala"
-msgstr "Syngaleski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Khmer"
-msgstr "Khmerski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Shona"
-msgstr "Shona"
-
-#: buzz/transcriber/transcriber.py
-msgid "Yoruba"
-msgstr "Joruba"
-
-#: buzz/transcriber/transcriber.py
-msgid "Somali"
-msgstr "Somalijski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: buzz/transcriber/transcriber.py
-msgid "Occitan"
-msgstr "Oksytański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Georgian"
-msgstr "Gruziński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Belarusian"
-msgstr "Białoruski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Tajik"
-msgstr "Tadżycki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Sindhi"
-msgstr "Sindhi"
-
-#: buzz/transcriber/transcriber.py
-msgid "Gujarati"
-msgstr "Gudżarati"
-
-#: buzz/transcriber/transcriber.py
-msgid "Amharic"
-msgstr "Amharski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Yiddish"
-msgstr "Jidysz"
-
-#: buzz/transcriber/transcriber.py
-msgid "Lao"
-msgstr "Laotański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Uzbek"
-msgstr "Uzbecki"
-
-#: buzz/transcriber/transcriber.py
-msgid "Faroese"
-msgstr "Farerski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Haitian Creole"
-msgstr "Kreolski haitański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Pashto"
-msgstr "Paszto"
-
-#: buzz/transcriber/transcriber.py
-msgid "Turkmen"
-msgstr "Turkmeński"
-
-#: buzz/transcriber/transcriber.py
-msgid "Nynorsk"
-msgstr "Nynorsk"
-
-#: buzz/transcriber/transcriber.py
-msgid "Maltese"
-msgstr "Maltański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Sanskrit"
-msgstr "Sanskryt"
-
-#: buzz/transcriber/transcriber.py
-msgid "Luxembourgish"
-msgstr "Luksemburski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Myanmar"
-msgstr "Birmański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Tibetan"
-msgstr "Tybetański"
-
-#: buzz/transcriber/transcriber.py
-msgid "Tagalog"
-msgstr "Tagalog"
-
-#: buzz/transcriber/transcriber.py
-msgid "Malagasy"
-msgstr "Malgaski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Assamese"
-msgstr "Asamski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Tatar"
-msgstr "Tatarski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Hawaiian"
-msgstr "Hawajski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Lingala"
-msgstr "Lingala"
-
-#: buzz/transcriber/transcriber.py
-msgid "Hausa"
-msgstr "Hausa"
-
-#: buzz/transcriber/transcriber.py
-msgid "Bashkir"
-msgstr "Baszkirski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Javanese"
-msgstr "Jawajski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Sundanese"
-msgstr "Sundajski"
-
-#: buzz/transcriber/transcriber.py
-msgid "Cantonese"
-msgstr "Kantoński"
-
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
-msgid "A connection error occurred"
-msgstr "Wystąpił błąd połączenia"
-
-#: buzz/transcriber/recording_transcriber.py
-msgid "Starting Whisper.cpp..."
-msgstr "Uruchamianie Whisper.cpp..."
-
-#: buzz/transcriber/recording_transcriber.py
-msgid "Starting transcription..."
-msgstr "Rozpoczynanie transkrypcji..."
-
-#: buzz/settings/shortcut.py
-msgid "Open Record Window"
-msgstr "Otwórz okno nagrywania"
-
-#: buzz/settings/shortcut.py
-msgid "Import File"
-msgstr "Importuj plik"
-
-#: buzz/settings/shortcut.py
-msgid "Open Preferences Window"
-msgstr "Otwórz okno ustawień"
-
-#: buzz/settings/shortcut.py
-msgid "View Transcript Text"
-msgstr "Wyświetl tekst transkrypcji"
-
-#: buzz/settings/shortcut.py
-msgid "View Transcript Translation"
-msgstr "Wyświetl tłumaczenie transkrypcji"
-
-#: buzz/settings/shortcut.py
-msgid "View Transcript Timestamps"
-msgstr "Wyświetl znaczniki czasu transkrypcji"
-
-#: buzz/settings/shortcut.py
-msgid "Search Transcript"
-msgstr "Wyszukaj w transkrypcji"
-
-#: buzz/settings/shortcut.py
-msgid "Go to Next Transcript Search Result"
-msgstr "Przejdź do następnego wyniku wyszukiwania"
-
-#: buzz/settings/shortcut.py
-msgid "Go to Previous Transcript Search Result"
-msgstr "Przejdź do poprzedniego wyniku wyszukiwania"
-
-#: buzz/settings/shortcut.py
-msgid "Scroll to Current Text"
-msgstr "Przewiń do bieżącego tekstu"
-
-#: buzz/settings/shortcut.py
-msgid "Play/Pause Audio"
-msgstr "Odtwórz/wstrzymaj audio"
-
-#: buzz/settings/shortcut.py
-msgid "Replay Current Segment"
-msgstr "Odtwórz ponownie bieżący fragment"
-
-#: buzz/settings/shortcut.py
-msgid "Toggle Playback Controls"
-msgstr "Przełącz sterowanie odtwarzaniem"
-
-#: buzz/settings/shortcut.py
-msgid "Decrease Segment Start Time"
-msgstr "Zmniejsz czas początku fragmentu"
-
-#: buzz/settings/shortcut.py
-msgid "Increase Segment Start Time"
-msgstr "Zwiększ czas początku fragmentu"
-
-#: buzz/settings/shortcut.py
-msgid "Decrease Segment End Time"
-msgstr "Zmniejsz czas końca fragmentu"
-
-#: buzz/settings/shortcut.py
-msgid "Increase Segment End Time"
-msgstr "Zwiększ czas końca fragmentu"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append below"
-msgstr "Dodaj poniżej"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append above"
-msgstr "Dodaj powyżej"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append and correct"
-msgstr "Dodaj i popraw"
-
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
msgstr ""
-"Wyodrębnianie mowy nie powiodło się! Sprawdź połączenie internetowe — może "
-"być konieczne pobranie modelu."
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Oddzielone przecinkiem, np. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+#: buzz/transcriber/transcriber.py:42
+msgid "Russian"
+msgstr ""
-#~ msgid "Temperature:"
-#~ msgstr "Temperatura:"
+#: buzz/transcriber/transcriber.py:43
+msgid "Korean"
+msgstr ""
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Proszę przetłumacz każdy przesłany tekst z angielskiego na hiszpański."
+#: buzz/transcriber/transcriber.py:44
+msgid "French"
+msgstr ""
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Błąd tłumaczenia, sprawdź logi!"
+#: buzz/transcriber/transcriber.py:46
+msgid "Portuguese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:47
+msgid "Turkish"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:51
+msgid "Arabic"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:52
+msgid "Swedish"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:54
+msgid "Indonesian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:55
+msgid "Hindi"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:56
+msgid "Finnish"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:57
+msgid "Vietnamese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:58
+msgid "Hebrew"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:60
+msgid "Greek"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:61
+msgid "Malay"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:62
+msgid "Czech"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:63
+msgid "Romanian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:65
+msgid "Hungarian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:66
+msgid "Tamil"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:67
+msgid "Norwegian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:68
+msgid "Thai"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:69
+msgid "Urdu"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:70
+msgid "Croatian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:71
+msgid "Bulgarian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:72
+msgid "Lithuanian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:73
+msgid "Latin"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:74
+msgid "Maori"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:75
+msgid "Malayalam"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:76
+msgid "Welsh"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:77
+msgid "Slovak"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:78
+msgid "Telugu"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:79
+msgid "Persian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:81
+msgid "Bengali"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:82
+msgid "Serbian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:83
+msgid "Azerbaijani"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:84
+msgid "Slovenian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:85
+msgid "Kannada"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:86
+msgid "Estonian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:87
+msgid "Macedonian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:88
+msgid "Breton"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:89
+msgid "Basque"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:90
+msgid "Icelandic"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:91
+msgid "Armenian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:92
+msgid "Nepali"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:93
+msgid "Mongolian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:94
+msgid "Bosnian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:95
+msgid "Kazakh"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:96
+msgid "Albanian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:97
+msgid "Swahili"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:98
+msgid "Galician"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:99
+msgid "Marathi"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:100
+msgid "Punjabi"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:101
+msgid "Sinhala"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:102
+msgid "Khmer"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:103
+msgid "Shona"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:104
+msgid "Yoruba"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:105
+msgid "Somali"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:106
+msgid "Afrikaans"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:107
+msgid "Occitan"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:108
+msgid "Georgian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:109
+msgid "Belarusian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:110
+msgid "Tajik"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:111
+msgid "Sindhi"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:112
+msgid "Gujarati"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:113
+msgid "Amharic"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:114
+msgid "Yiddish"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:115
+msgid "Lao"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:116
+msgid "Uzbek"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:117
+msgid "Faroese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:118
+msgid "Haitian Creole"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:119
+msgid "Pashto"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:120
+msgid "Turkmen"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:121
+msgid "Nynorsk"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:122
+msgid "Maltese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:123
+msgid "Sanskrit"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:124
+msgid "Luxembourgish"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:125
+msgid "Myanmar"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:126
+msgid "Tibetan"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:127
+msgid "Tagalog"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:128
+msgid "Malagasy"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:129
+msgid "Assamese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:130
+msgid "Tatar"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:131
+msgid "Hawaiian"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:132
+msgid "Lingala"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:133
+msgid "Hausa"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:134
+msgid "Bashkir"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:135
+msgid "Javanese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:136
+msgid "Sundanese"
+msgstr ""
+
+#: buzz/transcriber/transcriber.py:137
+msgid "Cantonese"
+msgstr ""
+
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
+msgid "A connection error occurred"
+msgstr ""
+
+#: buzz/transcriber/recording_transcriber.py:358
+msgid "Starting Whisper.cpp..."
+msgstr ""
+
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
+msgid "Starting transcription..."
+msgstr "Anuluj transkrypcję"
+
+#: buzz/settings/shortcut.py:17
+#, fuzzy
+msgid "Open Record Window"
+msgstr "Nagrywanie na żywo"
+
+#: buzz/settings/shortcut.py:18
+#, fuzzy
+msgid "Import File"
+msgstr "Importuj plik..."
+
+#: buzz/settings/shortcut.py:20
+msgid "Open Preferences Window"
+msgstr ""
+
+#: buzz/settings/shortcut.py:22
+#, fuzzy
+msgid "View Transcript Text"
+msgstr "Nowa transkrypcja"
+
+#: buzz/settings/shortcut.py:23
+#, fuzzy
+msgid "View Transcript Translation"
+msgstr "Nowa transkrypcja"
+
+#: buzz/settings/shortcut.py:24
+#, fuzzy
+msgid "View Transcript Timestamps"
+msgstr "Nowa transkrypcja"
+
+#: buzz/settings/shortcut.py:25
+#, fuzzy
+msgid "Search Transcript"
+msgstr "Otwórz transkrypt"
+
+#: buzz/settings/shortcut.py:26
+msgid "Go to Next Transcript Search Result"
+msgstr ""
+
+#: buzz/settings/shortcut.py:27
+msgid "Go to Previous Transcript Search Result"
+msgstr ""
+
+#: buzz/settings/shortcut.py:28
+msgid "Scroll to Current Text"
+msgstr ""
+
+#: buzz/settings/shortcut.py:29
+msgid "Play/Pause Audio"
+msgstr ""
+
+#: buzz/settings/shortcut.py:30
+msgid "Replay Current Segment"
+msgstr ""
+
+#: buzz/settings/shortcut.py:31
+msgid "Toggle Playback Controls"
+msgstr ""
+
+#: buzz/settings/shortcut.py:33
+msgid "Decrease Segment Start Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:34
+msgid "Increase Segment Start Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:35
+msgid "Decrease Segment End Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:36
+msgid "Increase Segment End Time"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:5
+msgid "Append below"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:6
+msgid "Append above"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:7
+msgid "Append and correct"
+msgstr ""
#~ msgid "ID"
#~ msgstr "ID"
diff --git a/buzz/locale/pt_BR/LC_MESSAGES/buzz.po b/buzz/locale/pt_BR/LC_MESSAGES/buzz.po
index b9760b12..e22b0210 100644
--- a/buzz/locale/pt_BR/LC_MESSAGES/buzz.po
+++ b/buzz/locale/pt_BR/LC_MESSAGES/buzz.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Buzz\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2025-11-01 17:43-0300\n"
"Last-Translator: Paulo Schopf \n"
"Language-Team: none\n"
@@ -17,209 +17,202 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.6\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Importar URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://exemplo.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Ok"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Cancelar"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "URL:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "URL inválida"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "A URL inserida é inválida."
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Apresentação de Transcrição ao Vivo"
+msgstr "Ver Tradução da Transcrição"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Redefinir para o Padrão"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
msgstr "Inglês"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
msgstr "Catalão"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
msgstr "Dinamarquês"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Holandês"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Alemão"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Espanhol"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italiano"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japonês"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Letão"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Polonês"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ucraniano"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
msgstr "Chinês (Simplificado)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
msgstr "Chinês (Tradicional)"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
msgstr "Reinicialização necessária!"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
msgid "Ui Language"
msgstr "Idioma da Interface"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Tamanho da Fonte"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Testar"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "Chave API da OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "URL base da OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "Modelo de API da OpenAI"
+msgstr "Chave API da OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: 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
+#: 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
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: 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
+#: 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
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Nota: As configurações de exportação de gravação ao vivo serão movidas para "
-"as Configurações Avançadas na tela de Gravação ao Vivo em uma versão futura."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "Usar quantização de 8 bits para reduzir o uso de memória"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Aplica-se aos modelos Huggingface e Faster Whisper. Reduz o uso de memória "
-"da GPU, mas pode diminuir ligeiramente a qualidade da transcrição."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Reduzir RAM da GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
msgstr "Desabilitar GPU"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "Teste da Chave API OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -227,11 +220,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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "Chave API inválida"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@@ -239,12 +232,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
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Selecionar Pasta de Exportação"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -254,483 +246,410 @@ msgstr ""
"chave. A transcrição e tradução ainda podem funcionar se a API não suportar "
"validação de chave."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Habilitar monitoramento de pasta"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Excluir arquivos processados"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Pasta de entrada"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Pasta de saída"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Selecionar Pasta de Entrada"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Selecionar Pasta de Saída"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Preferências"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Geral"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Modelos"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Atalhos"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Monitorar Pasta"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Grupo"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "ID Huggingface de um modelo Faster Whisper"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Baixar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Mostrar local do arquivo"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Excluir"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Baixado"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Disponível para Download"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Link para o arquivo de modelo Whisper.cpp ggml"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Excluir Modelo"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Tem certeza que deseja excluir o modelo selecionado?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Falha ao baixar"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Erro"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Gravar"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Parar"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Detectar Idioma"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "ex.: eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Insira um código de idioma ISO 639-3 (3 letras).\n"
-"Exemplos: eng (Inglês), fra (Francês), deu (Alemão),\n"
-"spa (Espanhol), lav (Letão)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Executar"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Modelo:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr "O primeiro uso de um modelo pode levar vários minutos para carregar."
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "Chave API:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Tarefa:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Idioma:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Digite um prompt..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Configurações Avançadas"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Configurações de reconhecimento de fala"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Separado por vírgulas, ex: \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Temperatura:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Prompt Inicial:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Configurações de tradução"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Habilitar tradução por IA"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "Modelo de IA:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Por favor, traduza cada texto enviado a você do inglês para o espanhol. A "
-"tradução será usada em um sistema automatizado, portanto, não adicione "
-"comentários ou notas, apenas a tradução."
+"Instrua a IA sobre como traduzir, por exemplo: \"Por favor, traduza cada "
+"texto enviado a você do Inglês para o Português\"."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Instruções para a IA:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Configurações de gravação"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Limiar de silêncio:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Modo de gravação ao vivo:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Separador de linha:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Etapa de transcrição:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Ocultar não confirmado"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Habilitar exportação de gravação ao vivo"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Pasta de exportação:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Nome do arquivo de exportação:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Arquivo de texto (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Tipo de arquivo de exportação:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Limitar entradas de exportação\n"
-"(0 = exportar tudo):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Tempos em nível de palavra"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Extrair fala"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Exportar:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "ID Huggingface de um modelo"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Avançado..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
msgid "New File Transcription"
msgstr "Nova Transcrição de Arquivo"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
msgid "New URL Transcription"
msgstr "Nova Transcrição de URL"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Abrir Transcrição"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Cancelar Transcrição"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: 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"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Atualização Disponível"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "Em Progresso"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Concluído"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Falhou"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Cancelado"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "Na fila"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Nome do Arquivo / URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Modelo"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Tarefa"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Status"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Data de Conclusão"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Data de Adição"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Notas"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Redefinir Ordem das Colunas"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Reiniciar Transcrição"
+msgstr "Iniciando transcrição..."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
+#, fuzzy
msgid "Rename"
-msgstr "Renomear"
+msgstr "Vietnamita"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Adicionar/Editar Notas"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Renomear Transcrição"
+msgstr "Cancelar Transcrição"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Digite o novo nome:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Digite algumas notas relevantes para esta transcrição:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Não é possível reiniciar"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "Somente transcrições com falha ou canceladas podem ser reiniciadas."
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Falha ao reiniciar a transcrição: {}"
+msgstr "Iniciando transcrição..."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
-"Não foi possível reiniciar a transcrição: o modelo não está disponível e não "
-"pôde ser baixado."
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"Não foi possível reiniciar a transcrição: trabalhador de transcrição não "
-"encontrado."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Gravação ao Vivo"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Clique em Gravar para começar..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Aguardando tradução da IA..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Microfone:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Mostrar em nova janela"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Tamanho do Texto:"
+msgstr "Arquivos de texto"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Tema"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Claro"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Escuro"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Personalizado"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Cor do Texto"
+msgstr "Arquivos de texto"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Cor de Fundo"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Tela Cheia"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Copiar"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Copiar transcrição para a área de transferência"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Nada para copiar!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Falha ao copiar"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Copiado!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Selecionar Cor do Texto"
+msgstr "Selecionar Pasta de Exportação"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Selecionar Cor de Fundo"
+msgstr "Selecionar arquivo de áudio"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "Ocorreu um erro ao iniciar uma nova gravação:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -738,168 +657,110 @@ msgstr ""
"Verifique seus dispositivos de áudio ou os logs do aplicativo para mais "
"informações."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Uma nova versão do Buzz está disponível!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Versão atual:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Nova versão:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Notas de Versão:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Baixar e instalar"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Nenhuma URL de download disponível para sua plataforma."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Baixando arquivo {} de {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Baixando arquivo {} de {} ({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Falha no download"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Falha ao baixar a atualização: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Falha ao salvar o instalador: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Download concluído!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Falha ao executar o instalador: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Verificar atualizações"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Mostrar logs"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "Você está atualizado!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Volume médio"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Fila"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Início"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Fim"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Texto"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Tradução"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Visualizar"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Marcações de tempo"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Exportar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Traduzir"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "Redimensionar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Identificar Falantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
msgstr "Procurar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
msgstr "Mostrar/Ocultar a Barra de Pesquisa"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
msgstr "Procurar:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
msgstr "Digite o texto a procurar..."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
msgstr "Encontro prévio (Shift+Enter)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
+#, fuzzy
msgid "Next match (Ctrl+Enter)"
-msgstr "Próximo encontro (Ctrl+Enter)"
+msgstr "Póximo encontro (Enter)"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
msgstr "Limpar"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
msgstr "Controles de Reprodução:"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
msgstr "Segmento de Loop"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
msgstr "Habilitar/desabilitar loop ao clicar em segmentos de transcrição"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
msgstr "Siga o Áudio"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
@@ -907,238 +768,197 @@ msgstr ""
"Ativar/desativar a opção de seguir a posição atual do áudio na transcrição. "
"Quando ativado, rola automaticamente para o texto atual."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
msgstr "Rolar para o Atual"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
msgstr "Role até o texto falado no momento"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
msgstr "1 de 100+ encontros"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
msgstr "1 de "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
msgstr " encontros"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
msgstr "Nada encontrado"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
msgstr " de 100+ encontros"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
msgstr " de "
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "Chave API Necessária"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Insira a chave API OpenAI nas preferências"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Estender o tempo final"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Estender finais em até (segundos)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Estender finais"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
msgstr "Opções de Redimensionamento"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "Duração desejada da legenda"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr ""
-"Disponível apenas se os tempos em nível de palavra foram desabilitados "
-"durante a transcrição"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "Opções de Mesclagem"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "Mesclar por intervalo"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "Dividir por pontuação"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "Dividir por tamanho máximo"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "Mesclar"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr ""
-"Disponível apenas se os tempos em nível de palavra foram habilitados durante "
-"a transcrição"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Identificação de falantes não está disponível: falha ao carregar as "
-"bibliotecas necessárias."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Coletando transcrições"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Carregando áudio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Carregando modelo de alinhamento"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 Carregando modelo de alinhamento (tentando novamente com cache...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Falha ao carregar o modelo de alinhamento. Verifique sua conexão com a "
-"internet e tente novamente."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Processando áudio"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Preparando transcrições"
+msgstr "Iniciando transcrição..."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Identificando falantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Mapeando falantes para transcrições"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Identificação concluída"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Erro ao identificar falantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Passo 1: Identificar falantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Identificar"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Pronto para identificar falantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Arquivo de áudio não encontrado"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Passo 2: Nomear falantes"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Reproduzir amostra"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Mesclar frases do falante"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Salvar"
+msgstr "Salvar Arquivo"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Cancelando..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Cancelado"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Salvar Arquivo"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Arquivos de texto"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Baixando modelo"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "restante"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Importar Arquivo..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Importar URL..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Importar Pasta..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Sobre"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Preferências..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Ajuda"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Arquivo"
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@@ -1146,25 +966,21 @@ 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Selecionar arquivo de áudio"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Selecionar Pasta de Entrada"
-
-#: buzz/widgets/main_window.py
+#: 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"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr "Falha ao iniciar o servidor Whisper. Verifique os logs."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
@@ -1174,483 +990,463 @@ msgstr ""
"novamente com um modelo menor. Para forçar o modo CPU, use a variável de "
"ambiente BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
msgid "Translate to English"
msgstr "Traduzir para Inglês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Transcrever"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
msgstr "Chinês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
msgstr "Russo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
msgstr "Coreano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
msgstr "Francês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
msgstr "Português"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
msgstr "Turco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Árabe"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
msgstr "Sueco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
msgstr "Indonésio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
msgstr "Híndi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
msgstr "Finlandês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
msgstr "Vietnamita"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
msgstr "Hebraico"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
msgstr "Grego"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
msgstr "Malaio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
msgstr "Tcheco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
msgstr "Romeno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
msgstr "Húngaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
msgstr "Tâmil"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
msgstr "Norueguês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
msgstr "Tailandês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
msgstr "Urdu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
msgstr "Croata"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
msgstr "Búlgaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
msgstr "Lituano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
msgstr "Latim"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
msgstr "Maori"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
msgstr "Malaiala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
msgstr "Galês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
msgstr "Eslovaco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
msgstr "Telugu"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
msgstr "Persa"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
msgstr "Bengali"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
msgstr "Sérvio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
msgstr "Azerbaijano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
msgstr "Esloveno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
msgstr "Canarês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
msgstr "Estoniano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
msgstr "Macedônio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
msgstr "Bretão"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
msgstr "Basco"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
msgstr "Islandês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
msgstr "Armênio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
msgstr "Nepalês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
msgstr "Mongol"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
msgstr "Bósnio"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
msgstr "Cazaque"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
msgstr "Albanês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
msgstr "Suaíli"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
msgstr "Galego"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
msgstr "Marathi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
msgstr "Panjabi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
msgstr "Cingalês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
msgstr "Khmer"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
msgstr "Shona"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
msgstr "Iorubá"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
msgstr "Somali"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
msgstr "Africâner"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
msgstr "Occitano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
msgstr "Georgiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
msgstr "Bielorrusso"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
msgstr "Tajique"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
msgstr "Sindi"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
msgstr "Gujarati"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
msgstr "Amárico"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
msgstr "Ídiche"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
msgstr "Laosiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
msgstr "Uzbeque"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
msgstr "Feroês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
msgstr "Crioulo Haitiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
msgstr "Afegão"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
msgstr "Turcomeno"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
msgstr "Novo Norueguês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
msgstr "Maltês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
msgstr "Sânscrito"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
msgstr "Luxemburguês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
msgstr "Birmanês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
msgstr "Tibetano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
msgstr "Tagalo"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
msgstr "Malgaxe"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
msgstr "Assamês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
msgstr "Tártaro"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
msgstr "Havaiano"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
msgstr "Lingala"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
msgstr "Hauçá"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
msgstr "Bashkir"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
msgstr "Javanês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
msgstr "Sundanês"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
msgstr "Cantonês"
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Ocorreu um erro de conexão"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
msgstr "Iniciando Whisper.cpp..."
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
msgstr "Iniciando transcrição..."
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Abrir Janela de Gravação"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Importar Arquivo"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Abrir Janela de Preferências"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Ver Texto da Transcrição"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Ver Tradução da Transcrição"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Ver Marcações de Tempo da Transcrição"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
msgid "Search Transcript"
msgstr "Pesquisar Transcrição"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Ir para o Próximo Resultado de Pesquisa na Transcrição"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "Ir para o Resultado de Pesquisa Anterior na Transcrição"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
msgstr "Role até o Texto Atual"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
msgstr "Tocar/Pausar o Áudio"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
msgstr "Repetir o Segmento Atual"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
msgstr "Alternar Controles de Reprodução"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
msgstr "Diminuir o Inicio do Segmento"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
msgstr "Aumentar o Início do Segmento"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
msgstr "Diminuir o Final do Segmento"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
msgstr "Estender o Final do Segmento"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "Acrescentar abaixo"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "Acrescentar acima"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "Acrescentar e corrigir"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr ""
-"Falha na extração de fala! Verifique sua conexão com a internet — pode ser "
-"necessário baixar um modelo."
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Separado por vírgulas, ex: \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-
-#~ msgid "Temperature:"
-#~ msgstr "Temperatura:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Por favor, traduza cada texto enviado a você do Inglês para o Espanhol."
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Erro de tradução, verifique os logs!"
-
#~ msgid "Snap permission notice"
#~ msgstr "Aviso de permissão do Snap"
@@ -1678,3 +1474,6 @@ msgstr ""
#~ msgid "Undo"
#~ msgstr "Desfazer"
+
+#~ msgid "Redo"
+#~ msgstr "Refazer"
diff --git a/buzz/locale/uk_UA/LC_MESSAGES/buzz.po b/buzz/locale/uk_UA/LC_MESSAGES/buzz.po
index 0c671bd5..6a0b21ab 100644
--- a/buzz/locale/uk_UA/LC_MESSAGES/buzz.po
+++ b/buzz/locale/uk_UA/LC_MESSAGES/buzz.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Yevhen Popok \n"
"Language-Team: \n"
@@ -14,209 +14,204 @@ msgstr ""
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Poedit 3.4.4\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "Імпортувати адресу"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://example.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Гаразд"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "Скасувати"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "Адреса:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "Недійсна адреса"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "Адреса, яку ви ввели, є недійсною"
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "Презентація транскрипції в реальному часі"
+msgstr "Переглянути переклад транскрипції"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "Типові значення"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
-msgstr "Англійська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
-msgstr "Каталонська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
-msgstr "Датська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
-msgstr "Нідерландська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
-msgstr "Німецька"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
-msgstr "Іспанська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
-msgstr "Італійська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
-msgstr "Японська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
-msgstr "Латвійська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
-msgstr "Польська"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
-msgstr "Португальська (Бразилія)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
+#, fuzzy
msgid "Ukrainian"
-msgstr "Українська"
+msgstr "залишилось"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
-msgstr "Китайська (спрощена)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
-msgstr "Китайська (традиційна)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
-msgstr "Потрібен перезапуск!"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
+#, fuzzy
msgid "Ui Language"
-msgstr "Мова інтерфейсу"
+msgstr "Мова:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "Розмір шрифту"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "Тест"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "API-ключ OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "Базова адреса OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "Модель API OpenAI"
+msgstr "API-ключ OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Типова назва файлу експорту"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Увімкнути експорт транскрипції з живого запису"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Тека для експорту"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
+#, fuzzy
msgid "Live recording mode"
-msgstr "Режим живого запису"
+msgstr "Живий запис"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr ""
-"Примітка: Параметри експорту живого запису будуть перенесені до Додаткових "
-"налаштувань на екрані живого запису в майбутній версії."
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "Використовувати 8-бітне квантування для зменшення використання пам'яті"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"Застосовується до моделей Huggingface та Faster Whisper. Зменшує "
-"використання пам'яті GPU, але може дещо знизити якість транскрипції."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "Зменшити RAM GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "Використовувати лише CPU та вимкнути прискорення GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
-"Увімкніть це, якщо великі моделі не поміщаються в пам'ять GPU і Buzz падає"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "Вимкнути GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "Тест API-ключа OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@@ -224,24 +219,22 @@ msgstr ""
"Ваш API-ключ дійсний. Buzz використає цей ключ для транскрипції з Whisper "
"API та перекладу ШІ."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
+#, fuzzy
msgid "Invalid API key"
-msgstr "Недійсний API-ключ"
+msgstr "API-ключ OpenAI"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
-"API підтримує лише символи base64 (A-Za-z0-9+/=_-). Інші символи в API-ключі "
-"можуть спричиняти помилки."
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "Виберіть теку для експорту"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -251,482 +244,409 @@ msgstr ""
"API-ключа. Транскрипція та переклад можуть продовжити працювати, якщо API не "
"підтримує перевірку ключа."
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "Увімкнути стеження за текою"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "Видалити оброблені файли"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "Тека введення"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "Тека виведення"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
msgid "Select Input Folder"
msgstr "Виберіть теку введення"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "Виберіть теку виведення"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
msgid "Preferences"
msgstr "Налаштування"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "Загальне"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
msgid "Models"
msgstr "Моделі"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "Клавіатурні скорочення"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "Нагляд за текою"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "Група"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "Huggingface ID для моделі Faster Whisper"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
msgid "Download"
msgstr "Завантажити"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "Показати розташування файлу"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "Видалити"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
msgid "Downloaded"
msgstr "Завантажене"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "Доступно для завантаження"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Посилання на завантаження файлу ggml моделі Whisper.cpp"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "Видалити модель"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
msgid "Are you sure you want to delete the selected model?"
msgstr "Ви впевнені, що хочете видалити вибрану модель?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
msgid "Download failed"
msgstr "Невдале завантаження"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "Помилка"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "Записати"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "Зупинити"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Визначити мову"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "напр., eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"Введіть код мови ISO 639-3 (3 літери).\n"
-"Приклади: eng (Англійська), fra (Французька), deu (Німецька),\n"
-"spa (Іспанська), lav (Латвійська)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "Запуск"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "Модель:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
-msgstr "Перше використання моделі може тривати кілька хвилин для завантаження."
+msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "API-ключ:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "Завдання:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "Мова:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "Введіть підказку..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "Додаткові налаштування"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "Параметри розпізнавання мовлення"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "Значення розділені комами, напр., \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "Температура:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "Початкова підказка:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "Налаштування перекладу"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "Увімкнути переклад ШІ"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
msgid "AI model:"
msgstr "Модель ШІ"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"Будь ласка, перекладайте кожен надісланий вам текст з англійської на "
-"іспанську. Переклад використовуватиметься в автоматизованій системі, тому, "
-"будь ласка, не додавайте жодних коментарів чи приміток, лише переклад."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "Інструкції для ШІ:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "Налаштування запису"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "Поріг тиші:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "Режим живого запису:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "Роздільник рядків:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "Крок транскрибування:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "Приховати непідтверджене"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "Увімкнути експорт живого запису"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "Тека для експорту:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "Назва файлу експорту:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "Текстовий файл (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "Тип файлу експорту:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"Обмежити кількість записів експорту\n"
-"(0 = експортувати всі):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Хронометраж на рівні слів"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
-msgstr "Витягти мовлення"
+msgstr ""
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Експорт:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "ID чи модель Huggingface"
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "Додатково..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
+#, fuzzy
msgid "New File Transcription"
-msgstr "Нова транскрипція файлу"
+msgstr "Нова транскрипція"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
+#, fuzzy
msgid "New URL Transcription"
-msgstr "Нова транскрипція за адресою"
+msgstr "Нова транскрипція"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "Відкрити транскрипцію"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "Скасувати транскрипцію"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Очистити історію"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "Доступне оновлення"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "В процесі"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "Завершено"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "Невдача"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "Скасовано"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "У черзі"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
msgid "File Name / URL"
msgstr "Назва файлу / посилання"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
msgid "Model"
msgstr "Модель"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
msgid "Task"
msgstr "Завдання"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "Стан"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
msgid "Date Completed"
msgstr "Дата завершення"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "Дата додавання"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "Нотатки"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "Скинути порядок стовпців"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "Перезапустити транскрипцію"
+msgstr "Скасувати транскрипцію"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
-msgstr "Перейменувати"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "Додати/редагувати нотатки"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "Перейменувати транскрипцію"
+msgstr "Скасувати транскрипцію"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "Введіть нову назву:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "Введіть відповідні нотатки для цієї транскрипції:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "Неможливо перезапустити"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "Перезапустити можна лише невдалі або скасовані транскрипції."
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "Не вдалося перезапустити транскрипцію: {}"
+msgstr "Скасувати транскрипцію"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: 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
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
-"Не вдалося перезапустити транскрипцію: обробник транскрипції не знайдено."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "Живий запис"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "Натисніть на Запис, щоб розпочати..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "Очікування перекладу від ШІ..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "Мікрофон:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "Показати у новому вікні"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "Розмір тексту:"
+msgstr "Текстові файли"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "Тема"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "Світла"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "Темна"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "Власна"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "Колір тексту"
+msgstr "Текстові файли"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "Колір фону"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "Повноекранний режим"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "Копіювати"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "Копіювати транскрипцію до буфера обміну"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "Нічого копіювати!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "Не вдалося скопіювати"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "Скопійовано!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "Виберіть колір тексту"
+msgstr "Виберіть теку для експорту"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "Виберіть колір фону"
+msgstr "Вибрати аудіофайл"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "При старті нового запису виникла помилка:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@@ -734,918 +654,790 @@ msgstr ""
"Будь ласка, перевірте свої аудіопристрої або пошукайте додаткову інформацію "
"в звітах програми."
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Доступна нова версія Buzz!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "Поточна версія:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "Нова версія:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "Примітки до випуску:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "Завантажити та встановити"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "Посилання для завантаження для вашої платформи відсутнє."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "Завантаження файлу {} з {}..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "Завантаження файлу {} з {} ({:.1f} МБ / {:.1f} МБ)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "Помилка завантаження"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "Не вдалося завантажити оновлення: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "Не вдалося зберегти інсталятор: {}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "Завантаження завершено!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "Не вдалося запустити інсталятор: {}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "Перевірити оновлення"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "Показати журнали"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "У вас актуальна версія!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "Середній рівень гучності"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "Черга"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "Початок"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "Кінець"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "Текст"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
msgid "Translation"
msgstr "Переклад"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "Вигляд"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "Позначки часу"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "Експорт"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "Перекласти"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
-msgstr "Змінити розмір"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "Визначити мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "Знайти"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "Показати/сховати панель пошуку (Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "Знайти:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "Введіть текст для пошуку..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "Попередній збіг (Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "Наступний збіг (Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "Очистити"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "Керування відтворенням:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "Повторювати фрагмент"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "Увімкнути/вимкнути повторення при натисканні на фрагменти транскрипції"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "Стежити за аудіо"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
msgstr ""
-"Увімкнути/вимкнути відстеження поточної позиції аудіо в транскрипції. Коли "
-"увімкнено, автоматично прокручує до поточного тексту."
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "Прокрутити до поточного"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "Прокрутити до тексту, що зараз вимовляється"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "1 з 100+ збігів"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "1 з "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " збігів"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "Збігів не знайдено"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr " з 100+ збігів"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr " з "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "Потрібен API-ключ"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "Будь ласка, введіть API-ключ OpenAI в налаштуваннях"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "Продовжити час завершення"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "Продовжити закінчення до (секунд)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "Продовжити закінчення"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
-msgstr "Параметри зміни розміру"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
-msgstr "Бажана довжина субтитрів"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
msgstr ""
-"Доступно лише якщо хронометраж на рівні слів був вимкнений під час "
-"транскрипції"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
-msgstr "Параметри об'єднання"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
-msgstr "Об'єднати за паузою"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
-msgstr "Розділити за пунктуацією"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
-msgstr "Розділити за максимальною довжиною"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
-msgstr "Об'єднати"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
msgstr ""
-"Доступно лише якщо хронометраж на рівні слів був увімкнений під час "
-"транскрипції"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr ""
-"Визначення мовців недоступне: не вдалося завантажити необхідні бібліотеки."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 Збирання транскрипцій"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 Завантаження аудіо"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 Завантаження моделі вирівнювання"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 Завантаження моделі вирівнювання (повторна спроба з кешем...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
msgstr ""
-"Не вдалося завантажити модель вирівнювання. Будь ласка, перевірте "
-"підключення до інтернету та спробуйте ще раз."
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 Обробка аудіо"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 Підготовка транскрипцій"
+msgstr "Скасувати транскрипцію"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 Визначення мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 Зіставлення мовців із транскрипціями"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 Визначення завершено"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 Помилка при визначенні мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "Крок 1: Визначити мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "Визначити"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "Готово до визначення мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "Аудіофайл не знайдено"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "Крок 2: Назвати мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "Відтворити зразок"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "Об'єднати речення мовців"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "Зберегти"
+msgstr "Зберегти файл"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "Скасування..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "Скасовано"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
msgid "Save File"
msgstr "Зберегти файл"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "Текстові файли"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Завантаження моделі"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "залишилось"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
msgid "Import File..."
msgstr "Імпортувати файл..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
msgid "Import URL..."
msgstr "Імпортувати адресу..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "Імпортувати теку..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "Про застосунок"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "Налаштування..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "Допомога"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "Файл"
-#: buzz/widgets/main_window.py
+#: 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Вибрати аудіофайл"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "Виберіть теку введення"
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Не вдається додати до звʼязки ключів API-ключ OpenAI"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
msgstr ""
-"Не вдалося запустити сервер Whisper. Перевірте журнали для отримання деталей."
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"Не вдалося запустити сервер Whisper через недостатній обсяг пам'яті. Будь "
-"ласка, спробуйте ще раз із меншою моделлю. Для примусового режиму CPU "
-"використовуйте змінну середовища BUZZ_FORCE_CPU=TRUE."
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "Перекласти на англійську"
+msgstr "Налаштування перекладу"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
msgid "Transcribe"
msgstr "Розпізнати"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
-msgstr "Китайська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
-msgstr "Російська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
-msgstr "Корейська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
-msgstr "Французька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
-msgstr "Португальська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
-msgstr "Турецька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
-msgstr "Арабська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
-msgstr "Шведська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
-msgstr "Індонезійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
-msgstr "Гінді"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
-msgstr "Фінська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
-msgstr "В'єтнамська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
-msgstr "Іврит"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
-msgstr "Грецька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
-msgstr "Малайська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
-msgstr "Чеська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
-msgstr "Румунська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
-msgstr "Угорська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
-msgstr "Тамільська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
-msgstr "Норвезька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
-msgstr "Тайська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
-msgstr "Урду"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
-msgstr "Хорватська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
-msgstr "Болгарська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
-msgstr "Литовська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
-msgstr "Латинська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
-msgstr "Маорі"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
-msgstr "Малаялам"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
-msgstr "Валлійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
-msgstr "Словацька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
-msgstr "Телугу"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
-msgstr "Перська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
-msgstr "Бенгальська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
-msgstr "Сербська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
-msgstr "Азербайджанська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
-msgstr "Словенська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
-msgstr "Каннада"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
-msgstr "Естонська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
-msgstr "Македонська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
-msgstr "Бретонська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
-msgstr "Баскська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
-msgstr "Ісландська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
-msgstr "Вірменська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
-msgstr "Непальська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
-msgstr "Монгольська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
-msgstr "Боснійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
-msgstr "Казахська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
-msgstr "Албанська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
-msgstr "Суахілі"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
-msgstr "Галісійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
-msgstr "Маратхі"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
-msgstr "Панджабі"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
-msgstr "Сингальська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
-msgstr "Кхмерська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
-msgstr "Шона"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
-msgstr "Йоруба"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
-msgstr "Сомалійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
-msgstr "Африкаанс"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
-msgstr "Окситанська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
-msgstr "Грузинська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
-msgstr "Білоруська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
-msgstr "Таджицька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
-msgstr "Сіндхі"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
-msgstr "Гуджараті"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
-msgstr "Амхарська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
-msgstr "Їдиш"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
-msgstr "Лаоська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
-msgstr "Узбецька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
-msgstr "Фарерська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
-msgstr "Гаїтянська креольська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
-msgstr "Пушту"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
-msgstr "Туркменська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
-msgstr "Нюношк"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
-msgstr "Мальтійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
-msgstr "Санскрит"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
-msgstr "Люксембурзька"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
-msgstr "М'янма"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
-msgstr "Тибетська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
-msgstr "Тагальська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
-msgstr "Малагасійська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
-msgstr "Ассамська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
-msgstr "Татарська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
-msgstr "Гавайська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
-msgstr "Лінгала"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
-msgstr "Хауса"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
-msgstr "Башкирська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
-msgstr "Яванська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
-msgstr "Сунданська"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
-msgstr "Кантонська"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "Виникла помилка зʼєднання"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "Запуск Whisper.cpp..."
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "Запуск транскрипції..."
+msgstr "Скасувати транскрипцію"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
msgid "Open Record Window"
msgstr "Відкрити вікно запису"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
msgid "Import File"
msgstr "Імпортувати файл"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "Відкрити вікно налаштувань"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
msgid "View Transcript Text"
msgstr "Переглянути текст транскрипції"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
msgid "View Transcript Translation"
msgstr "Переглянути переклад транскрипції"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
msgid "View Transcript Timestamps"
msgstr "Переглянути позначки часу в транскрипції"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "Пошук у транскрипції"
+msgstr "Відкрити транскрипцію"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "Перейти до наступного результату пошуку в транскрипції"
-
-#: buzz/settings/shortcut.py
-msgid "Go to Previous Transcript Search Result"
-msgstr "Перейти до попереднього результату пошуку в транскрипції"
-
-#: buzz/settings/shortcut.py
-msgid "Scroll to Current Text"
-msgstr "Прокрутити до поточного тексту"
-
-#: buzz/settings/shortcut.py
-msgid "Play/Pause Audio"
-msgstr "Відтворити/призупинити аудіо"
-
-#: buzz/settings/shortcut.py
-msgid "Replay Current Segment"
-msgstr "Повторити поточний фрагмент"
-
-#: buzz/settings/shortcut.py
-msgid "Toggle Playback Controls"
-msgstr "Перемкнути елементи керування відтворенням"
-
-#: buzz/settings/shortcut.py
-msgid "Decrease Segment Start Time"
-msgstr "Зменшити час початку фрагмента"
-
-#: buzz/settings/shortcut.py
-msgid "Increase Segment Start Time"
-msgstr "Збільшити час початку фрагмента"
-
-#: buzz/settings/shortcut.py
-msgid "Decrease Segment End Time"
-msgstr "Зменшити час завершення фрагмента"
-
-#: buzz/settings/shortcut.py
-msgid "Increase Segment End Time"
-msgstr "Збільшити час завершення фрагмента"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append below"
-msgstr "Додати знизу"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append above"
-msgstr "Додати зверху"
-
-#: buzz/settings/recording_transcriber_mode.py
-msgid "Append and correct"
-msgstr "Додати та виправити"
-
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
msgstr ""
-"Не вдалося витягти мовлення! Перевірте підключення до інтернету — можливо, "
-"потрібно завантажити модель."
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "Значення розділені комами, напр., \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+#: buzz/settings/shortcut.py:27
+msgid "Go to Previous Transcript Search Result"
+msgstr ""
-#~ msgid "Temperature:"
-#~ msgstr "Температура:"
+#: buzz/settings/shortcut.py:28
+msgid "Scroll to Current Text"
+msgstr ""
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr ""
-#~ "Будь ласка, перекладайте кожен текст, надісланий вам, з англійської на "
-#~ "іспанську."
+#: buzz/settings/shortcut.py:29
+msgid "Play/Pause Audio"
+msgstr ""
-#~ msgid "Translation error, see logs!"
-#~ msgstr "Помилка перекладу, перегляньте журнали!"
+#: buzz/settings/shortcut.py:30
+msgid "Replay Current Segment"
+msgstr ""
+
+#: buzz/settings/shortcut.py:31
+msgid "Toggle Playback Controls"
+msgstr ""
+
+#: buzz/settings/shortcut.py:33
+msgid "Decrease Segment Start Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:34
+msgid "Increase Segment Start Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:35
+msgid "Decrease Segment End Time"
+msgstr ""
+
+#: buzz/settings/shortcut.py:36
+msgid "Increase Segment End Time"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:5
+msgid "Append below"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:6
+msgid "Append above"
+msgstr ""
+
+#: buzz/settings/recording_transcriber_mode.py:7
+msgid "Append and correct"
+msgstr ""
#~ msgid "Snap permission notice"
#~ msgstr "Попередження щодо дозволів Snap"
diff --git a/buzz/locale/zh_CN/LC_MESSAGES/buzz.po b/buzz/locale/zh_CN/LC_MESSAGES/buzz.po
index 35b76c69..352cec0b 100644
--- a/buzz/locale/zh_CN/LC_MESSAGES/buzz.po
+++ b/buzz/locale/zh_CN/LC_MESSAGES/buzz.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: lamb \n"
@@ -17,228 +17,226 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.2.2\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
msgstr "导入URL"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
msgstr "https://example.com/audio.mp3"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
msgstr "Ok"
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "取消"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
msgstr "网址:"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
msgstr "无效的网址"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
msgstr "输入的网址无效"
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "实时识别展示"
+msgstr "查看识别的翻译"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
msgstr "恢复默认"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
-msgstr "英语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
-msgstr "加泰罗尼亚语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
-msgstr "丹麦语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
-msgstr "荷兰语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
-msgstr "德语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
-msgstr "西班牙语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
-msgstr "意大利语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
-msgstr "日语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
-msgstr "拉脱维亚语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
-msgstr "波兰语"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
-msgstr "葡萄牙语(巴西)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
+#, fuzzy
msgid "Ukrainian"
-msgstr "乌克兰语"
+msgstr "剩余"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
-msgstr "中文(简体)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
-msgstr "中文(繁体)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
-msgstr "需要重启!"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
+#, fuzzy
msgid "Ui Language"
-msgstr "界面语言"
+msgstr "语言:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
msgstr "字体大小"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
msgstr "测试"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
msgstr "OpenAI API key"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
msgstr "OpenAI 基于 url"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "OpenAI API 模型"
+msgstr "OpenAI API key"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "默认输出文件名"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "启用实时录制转录导出"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "导出文件夹"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
+#, fuzzy
msgid "Live recording mode"
-msgstr "实时录制模式"
+msgstr "现场录制模式"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr "注意:实时录制导出设置将在未来版本中移至实时录制界面的高级设置中。"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "使用8位量化以减少内存占用"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"适用于 Huggingface 和 Faster Whisper 模型。可减少 GPU 内存占用,但可能略微降"
-"低转录质量。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "减少 GPU 内存"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "仅使用 CPU 并禁用 GPU 加速"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
-msgstr "如果较大的模型无法适配您的 GPU 内存且 Buzz 崩溃,请启用此选项"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "禁用 GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
msgstr "测试OpenAI API Key"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
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
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
msgstr "无效的API key"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
+#, fuzzy
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
-"API只支持 base64字符(A-Za-z0-9+/=_-)。其他字符在API密钥中可能导致错误。"
+"API只支持 base64字符(A-Za-z0-9+/=)。其他字符在API密钥中可能导致错误。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
msgstr "选择输出文件夹"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
@@ -247,1380 +245,1222 @@ msgstr ""
"OpenAI API返回无效响应。请检查API网址或您的密钥。如果API不支持密钥验证,转录"
"和翻译可能仍然有效翻"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
msgstr "开启文件夹监控"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "删除已处理的文件"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
msgstr "输入文件夹"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
msgstr "输出文件夹"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
+#, fuzzy
msgid "Select Input Folder"
msgstr "选择输入文件夹"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
msgstr "选择输出文件夹"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
+#, fuzzy
msgid "Preferences"
msgstr "偏好设置"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
msgstr "通用"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
+#, fuzzy
msgid "Models"
msgstr "模型"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
msgstr "快捷键"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
msgstr "文件夹查看"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
msgstr "组"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
msgstr "较快的Whisper模型的Huggingface ID"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
+#, fuzzy
msgid "Download"
msgstr "下载"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
msgstr "查看文件位置"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
msgstr "删除"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
+#, fuzzy
msgid "Downloaded"
-msgstr "已下载"
+msgstr "已下载的"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
msgstr "可用的下载"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
msgstr "Whisper.cpp ggml 模型文件的下载链接"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
msgstr "删除模型"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
+#, fuzzy
msgid "Are you sure you want to delete the selected model?"
-msgstr "您确定要删除所选模型吗?"
+msgstr "您确定要删除所选录制吗?"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
+#, fuzzy
msgid "Download failed"
-msgstr "下载失败"
+msgstr "下载模型失败"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
msgstr "错误"
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "录制"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "停止"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "检测语言"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "例如:eng, fra, deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"输入 ISO 639-3 语言代码(3个字母)。\n"
-"示例:eng(英语), fra(法语), deu(德语),\n"
-"spa(西班牙语), lav(拉脱维亚语)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "开始执行"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "模型:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
msgstr "首次使用模型可能需要几分钟的时间才能加载"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
msgstr "Api Key:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "任务:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "语言:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
msgstr "请输入文本..."
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "高级设置"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
msgstr "语音识别设置"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "逗号分隔,例如\"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "间隔"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "初始提示:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
msgstr "翻译设置"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
msgstr "启用AI翻译"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
+#, fuzzy
msgid "AI model:"
msgstr "AI 模型:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"请将发送给您的每段文本从英语翻译成西班牙语。翻译将用于自动化系统,请不要添加"
-"任何评论或备注,只需提供翻译即可。"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
msgstr "AI说明:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "录制设置"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "静音阈值:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "实时录制模式:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "行分隔符:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "转录步长:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "隐藏未确认内容"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "启用实时录制导出"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "导出文件夹:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "导出文件名:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "文本文件 (.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV (.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "导出文件类型:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
-msgstr ""
-"限制导出条目数\n"
-"(0 = 全部导出):"
-
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "逐词识别"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "提取语音"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "导出:"
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
msgstr "模型的Huggingface ID "
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
msgstr "高级..."
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
+#, fuzzy
msgid "New File Transcription"
msgstr "新增文件识别"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
+#, fuzzy
msgid "New URL Transcription"
msgstr "新增URL识别"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "打开识别结果"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "取消识别"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "清除历史纪录"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "有可用更新"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
msgstr "运行中"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "完成"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
msgstr "失败"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "取消"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
msgstr "队列中"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
+#, fuzzy
msgid "File Name / URL"
msgstr "文件名称/URL"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
+#, fuzzy
msgid "Model"
msgstr "模型"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
+#, fuzzy
msgid "Task"
msgstr "任务"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "状态"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
+#, fuzzy
msgid "Date Completed"
msgstr "完成时间"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
msgstr "添加日期"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "备注"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "重置列顺序"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "重新开始识别"
+msgstr "取消识别"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
-msgstr "重命名"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "添加/编辑备注"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "重命名识别"
+msgstr "取消识别"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "输入新名称:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "为此识别输入相关备注:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "无法重新开始"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "只有失败或已取消的识别才能重新开始。"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "重新开始识别失败:{}"
+msgstr "取消识别"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
-msgstr "无法重新开始识别:模型不可用且无法下载。"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
-msgstr "无法重新开始识别:未找到识别工作进程。"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "实时录制"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "点击开始录制"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
msgstr "等待AI翻译..."
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "麦克风:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "在新窗口中显示"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
+#, fuzzy
msgid "Text Size:"
-msgstr "文字大小:"
+msgstr "文本文件"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "主题"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "浅色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "深色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "自定义"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
+#, fuzzy
msgid "Text Color"
-msgstr "文字颜色"
+msgstr "文本文件"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "背景颜色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "全屏"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "复制"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "复制识别内容到剪贴板"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "没有可复制的内容!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "复制失败"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "已复制!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "选择文字颜色"
+msgstr "选择输出文件夹"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "选择背景颜色"
+msgstr "选择音频文件"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "开始新录制时出错"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
msgstr "请检查您的音频设备或检查应用程序日志以获取更多信息。"
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Buzz 有新版本可用!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "当前版本:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "新版本:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "发行说明:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "下载并安装"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "您的平台没有可用的下载链接。"
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "正在下载第 {} 个文件,共 {} 个..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "正在下载第 {} 个文件,共 {} 个({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "下载失败"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "下载更新失败:{}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "无法保存安装程序:{}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "下载完成!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "无法运行安装程序:{}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "检查更新"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "显示日志"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "已经是最新版本"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "平均音量"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "队列"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
msgstr "开始"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
msgstr "结束"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
msgstr "文本"
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
+#, fuzzy
msgid "Translation"
msgstr "翻译"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
msgstr "查看"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
msgstr "时间戳"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
msgstr "导出"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
msgstr "翻译"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
msgstr "调整大小"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "识别说话人"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "查找"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "显示/隐藏搜索栏(Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "查找:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "输入要查找的文本..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "上一个匹配项(Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "下一个匹配项(Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "清除"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "播放控制:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "循环片段"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "点击识别片段时启用/禁用循环播放"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "跟随音频"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
-msgstr "在识别文本中启用/禁用跟随当前音频位置。启用后,自动滚动到当前文本。"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "滚动到当前位置"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "滚动到当前正在播放的文本"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "第1项,共100+个匹配项"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "第1项,共"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr "个匹配项"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "未找到匹配项"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr "项,共100+个匹配项"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr "项,共"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
msgstr "需要API Key"
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
msgstr "请在偏好设置中输入OpenAI API Key"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "延长结束时间"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "最多延长结束时间(秒)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "延长结尾"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
+#, fuzzy
msgid "Resize Options"
-msgstr "调整大小选项"
+msgstr "调整大小"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
msgstr "所需字幕长度"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr "仅在转录时禁用逐词时间戳时可用"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
msgstr "合并选项"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
msgstr "按间隔合并"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
msgstr "按标点符号拆分"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
msgstr "按最大长度拆分"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
msgstr "合并"
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr "仅在转录时启用逐词时间戳时可用"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr "说话人识别不可用:加载所需库失败。"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 收集识别文本"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 加载音频"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 加载对齐模型"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 加载对齐模型(正在使用缓存重试...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
-msgstr "加载对齐模型失败。请检查您的网络连接后重试。"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 处理音频"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 准备识别文本"
+msgstr "取消识别"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 识别说话人"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 将说话人映射到识别文本"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 识别完成"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 识别说话人时出错"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "第1步:识别说话人"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "识别"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "准备好识别说话人"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "未找到音频文件"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "第2步:命名说话人"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "播放样本"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "合并说话人句子"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "保存"
+msgstr "保存文件"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "正在取消..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "已取消"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
+#, fuzzy
msgid "Save File"
msgstr "保存文件"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
msgstr "文本文件"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
+#, fuzzy
msgid "Downloading model"
msgstr "模型下载中"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
msgstr "剩余"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
+#, fuzzy
msgid "Import File..."
-msgstr "导入文件..."
+msgstr "导入媒体文件..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
+#, fuzzy
msgid "Import URL..."
-msgstr "导入URL..."
+msgstr "导入媒体文件..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "导入文件夹..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
msgstr "关于"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "偏好设置..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "帮助"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "文件"
-#: buzz/widgets/main_window.py
+#: 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "选择音频文件"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "选择输入文件夹"
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "无法将OpenAI API密钥保存到密钥串"
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
-msgstr "Whisper 服务器启动失败。请查看日志以获取详情。"
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"Whisper 服务器因内存不足而启动失败。请尝试使用较小的模型。如需强制使用 CPU 模"
-"式,请设置环境变量 BUZZ_FORCE_CPU=TRUE。"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "翻译成英语"
+msgstr "翻译设置"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
+#, fuzzy
msgid "Transcribe"
msgstr "识别"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
-msgstr "中文"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
-msgstr "俄语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
-msgstr "韩语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
-msgstr "法语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
-msgstr "葡萄牙语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
-msgstr "土耳其语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
-msgstr "阿拉伯语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
-msgstr "瑞典语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
-msgstr "印度尼西亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
-msgstr "印地语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
-msgstr "芬兰语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
-msgstr "越南语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
-msgstr "希伯来语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
-msgstr "希腊语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
-msgstr "马来语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
-msgstr "捷克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
-msgstr "罗马尼亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
-msgstr "匈牙利语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
-msgstr "泰米尔语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
-msgstr "挪威语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
-msgstr "泰语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
-msgstr "乌尔都语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
-msgstr "克罗地亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
-msgstr "保加利亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
-msgstr "立陶宛语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
-msgstr "拉丁语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
-msgstr "毛利语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
-msgstr "马拉雅拉姆语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
-msgstr "威尔士语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
-msgstr "斯洛伐克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
-msgstr "泰卢固语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
-msgstr "波斯语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
-msgstr "孟加拉语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
-msgstr "塞尔维亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
-msgstr "阿塞拜疆语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
-msgstr "斯洛文尼亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
-msgstr "卡纳达语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
-msgstr "爱沙尼亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
-msgstr "马其顿语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
-msgstr "布列塔尼语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
-msgstr "巴斯克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
-msgstr "冰岛语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
-msgstr "亚美尼亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
-msgstr "尼泊尔语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
-msgstr "蒙古语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
-msgstr "波斯尼亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
-msgstr "哈萨克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
-msgstr "阿尔巴尼亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
-msgstr "斯瓦希里语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
-msgstr "加利西亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
-msgstr "马拉地语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
-msgstr "旁遮普语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
-msgstr "僧伽罗语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
-msgstr "高棉语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
-msgstr "绍纳语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
-msgstr "约鲁巴语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
-msgstr "索马里语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
-msgstr "南非荷兰语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
-msgstr "奥克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
-msgstr "格鲁吉亚语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
-msgstr "白俄罗斯语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
-msgstr "塔吉克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
-msgstr "信德语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
-msgstr "古吉拉特语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
-msgstr "阿姆哈拉语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
-msgstr "意第绪语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
-msgstr "老挝语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
-msgstr "乌兹别克语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
-msgstr "法罗语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
-msgstr "海地克里奥尔语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
-msgstr "普什图语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
-msgstr "土库曼语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
-msgstr "新挪威语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
-msgstr "马耳他语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
-msgstr "梵语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
-msgstr "卢森堡语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
-msgstr "缅甸语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
-msgstr "藏语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
-msgstr "他加禄语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
-msgstr "马达加斯加语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
-msgstr "阿萨姆语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
-msgstr "鞑靼语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
-msgstr "夏威夷语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
-msgstr "林加拉语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
-msgstr "豪萨语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
-msgstr "巴什基尔语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
-msgstr "爪哇语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
-msgstr "巽他语"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
-msgstr "粤语"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
msgstr "连接发生错误"
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "正在启动 Whisper.cpp..."
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "正在开始识别..."
+msgstr "取消识别"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
+#, fuzzy
msgid "Open Record Window"
msgstr "打开录制窗口"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
+#, fuzzy
msgid "Import File"
msgstr "导入文件"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
msgstr "打开偏好设置窗口"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
+#, fuzzy
msgid "View Transcript Text"
msgstr "查看识别的文本"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
+#, fuzzy
msgid "View Transcript Translation"
msgstr "查看识别的翻译"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
+#, fuzzy
msgid "View Transcript Timestamps"
-msgstr "查看识别时间戳"
+msgstr "查看转录时间戳"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "搜索识别内容"
+msgstr "打开识别结果"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "转到下一个识别搜索结果"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "转到上一个识别搜索结果"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
-msgstr "滚动到当前文本"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
-msgstr "播放/暂停音频"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
-msgstr "重播当前片段"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
-msgstr "切换播放控制"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
-msgstr "减少片段开始时间"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
-msgstr "增加片段开始时间"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
-msgstr "减少片段结束时间"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
-msgstr "增加片段结束时间"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
msgstr "增加下方"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
msgstr "增加上方"
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
msgstr "增加并纠正"
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr "语音提取失败!请检查您的网络连接——可能需要下载模型。"
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "逗号分隔,例如\"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-
-#~ msgid "Temperature:"
-#~ msgstr "温度:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr "请将发送给您的每段文本从英语翻译成西班牙语。"
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "翻译出错,请查看日志!"
-
#~ msgid "Snap permission notice"
#~ msgstr "快照权限通知"
diff --git a/buzz/locale/zh_TW/LC_MESSAGES/buzz.po b/buzz/locale/zh_TW/LC_MESSAGES/buzz.po
index 93d4afcf..f8db1a27 100644
--- a/buzz/locale/zh_TW/LC_MESSAGES/buzz.po
+++ b/buzz/locale/zh_TW/LC_MESSAGES/buzz.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-07 20:20+0200\n"
+"POT-Creation-Date: 2025-12-23 19:21+0200\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: Lamb\n"
@@ -17,1610 +17,1441 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.2.2\n"
-#: buzz/widgets/import_url_dialog.py buzz/settings/shortcut.py
+#: buzz/widgets/import_url_dialog.py:19 buzz/settings/shortcut.py:19
msgid "Import URL"
-msgstr "匯入網址"
+msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:22
msgid "https://example.com/audio.mp3"
-msgstr "https://example.com/audio.mp3"
+msgstr ""
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-#: buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:28
+#: 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:226
msgid "Ok"
-msgstr "確定"
+msgstr ""
-#: buzz/widgets/import_url_dialog.py
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-#: buzz/widgets/model_download_progress_dialog.py buzz/widgets/main_window.py
+#: buzz/widgets/import_url_dialog.py:29
+#: 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:227
msgid "Cancel"
msgstr "取消"
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:34
msgid "URL:"
-msgstr "網址:"
+msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "Invalid URL"
-msgstr "無效的網址"
+msgstr ""
-#: buzz/widgets/import_url_dialog.py
+#: buzz/widgets/import_url_dialog.py:44
msgid "The URL you entered is invalid."
-msgstr "您輸入的網址無效。"
+msgstr ""
-#: buzz/widgets/presentation_window.py
+#: buzz/widgets/presentation_window.py:23
+#, fuzzy
msgid "Live Transcript Presentation"
-msgstr "即時轉錄簡報"
+msgstr "新錄製"
-#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+#: buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py:29
msgid "Reset to Defaults"
-msgstr "重設為預設值"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:35
+#: buzz/transcriber/transcriber.py:38
msgid "English"
-msgstr "英語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:36
+#: buzz/transcriber/transcriber.py:49
msgid "Catalan"
-msgstr "加泰隆尼亞語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:37
+#: buzz/transcriber/transcriber.py:64
msgid "Danish"
-msgstr "丹麥語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
+#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
-msgstr "荷蘭語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
+#: buzz/transcriber/transcriber.py:40
msgid "German"
-msgstr "德語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
+#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
-msgstr "西班牙語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
+#: buzz/transcriber/transcriber.py:53
msgid "Italian"
-msgstr "義大利語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
+#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
-msgstr "日語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
+#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
-msgstr "拉脫維亞語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
+#: buzz/transcriber/transcriber.py:48
msgid "Polish"
-msgstr "波蘭語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
msgid "Portuguese (Brazil)"
-msgstr "葡萄牙語(巴西)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
+#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
-msgstr "烏克蘭語"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Simplified)"
-msgstr "中文(簡體)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
msgid "Chinese (Traditional)"
-msgstr "中文(繁體)"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:86
msgid "Restart required!"
-msgstr "需要重新啟動!"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:90
+#, fuzzy
msgid "Ui Language"
-msgstr "介面語言"
+msgstr "語言:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:98
msgid "Font Size"
-msgstr "字體大小"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:107
msgid "Test"
-msgstr "測試"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:113
msgid "OpenAI API key"
-msgstr "OpenAI API 金鑰"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:126
msgid "OpenAI base url"
-msgstr "OpenAI 基礎網址"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
+#, fuzzy
msgid "OpenAI API model"
-msgstr "OpenAI API 模型"
+msgstr "模型:"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
-msgstr "預設匯出檔案名稱"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
-msgstr "啟用即時錄製轉錄匯出"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: 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 "瀏覽"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
-msgstr "匯出資料夾"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
+#, fuzzy
msgid "Live recording mode"
-msgstr "即時錄製模式"
+msgstr "現場錄製"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-msgid ""
-"Note: Live recording export settings will be moved to the Advanced Settings "
-"in the Live Recording screen in a future version."
-msgstr "注意:即時錄製匯出設定將在未來版本中移至即時錄製畫面的進階設定中。"
-
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use 8-bit quantization to reduce memory usage"
-msgstr "使用 8 位元量化以降低記憶體使用量"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
msgid ""
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
"but may slightly decrease transcription quality."
msgstr ""
-"適用於 Huggingface 和 Faster Whisper 模型。可降低 GPU 記憶體使用量,但可能略"
-"微降低轉錄品質。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
msgid "Reduce GPU RAM"
-msgstr "降低 GPU 記憶體"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
msgid "Use only CPU and disable GPU acceleration"
-msgstr "僅使用 CPU 並停用 GPU 加速"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
-msgstr "若較大的模型無法放入 GPU 記憶體且 Buzz 當機,請啟用此選項"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
msgid "Disable GPU"
-msgstr "停用 GPU"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
msgid "OpenAI API Key Test"
-msgstr "OpenAI API 金鑰測試"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
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 翻譯。"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
msgid "Invalid API key"
-msgstr "無效的 API 金鑰"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
-"API 僅支援 base64 字元(A-Za-z0-9+/=_-)。API 金鑰中的其他字元可能會導致錯"
-"誤。"
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
msgid "Select Export Folder"
-msgstr "選擇匯出資料夾"
+msgstr ""
-#: buzz/widgets/preferences_dialog/general_preferences_widget.py
+#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
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 "
"validation."
msgstr ""
-"OpenAI API 傳回無效回應。請檢查 API 網址或您的金鑰。若 API 不支援金鑰驗證,轉"
-"錄和翻譯仍可能正常運作。"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:42
msgid "Enable folder watch"
-msgstr "啟用資料夾監視"
+msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
-msgid "Delete processed files"
-msgstr "刪除已處理的檔案"
-
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:94
msgid "Input folder"
-msgstr "輸入資料夾"
+msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:95
msgid "Output folder"
-msgstr "輸出資料夾"
+msgstr ""
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:105
+#, fuzzy
msgid "Select Input Folder"
-msgstr "選擇輸入資料夾"
+msgstr "選擇聲音檔案"
-#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:114
msgid "Select Output Folder"
-msgstr "選擇輸出資料夾"
+msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:43
+#, fuzzy
msgid "Preferences"
-msgstr "偏好設定"
+msgstr "偏好設定..."
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:50
msgid "General"
-msgstr "一般"
+msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:53
+#, fuzzy
msgid "Models"
-msgstr "模型"
+msgstr "模型:"
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:57
msgid "Shortcuts"
-msgstr "快捷鍵"
+msgstr ""
-#: buzz/widgets/preferences_dialog/preferences_dialog.py
+#: buzz/widgets/preferences_dialog/preferences_dialog.py:63
msgid "Folder Watch"
-msgstr "資料夾監視"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:71
msgid "Group"
-msgstr "群組"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
msgid "Huggingface ID of a Faster whisper model"
-msgstr "Faster Whisper 模型的 Huggingface ID"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
+#, fuzzy
msgid "Download"
-msgstr "下載"
+msgstr "下載模型"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:100
msgid "Show file location"
-msgstr "顯示檔案位置"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:108
msgid "Delete"
-msgstr "刪除"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:139
+#, fuzzy
msgid "Downloaded"
-msgstr "已下載"
+msgstr "下載模型"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:144
msgid "Available for Download"
-msgstr "可供下載"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:165
msgid "Download link to Whisper.cpp ggml model file"
-msgstr "Whisper.cpp ggml 模型檔案的下載連結"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
msgid "Delete Model"
-msgstr "刪除模型"
+msgstr ""
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
+#, fuzzy
msgid "Are you sure you want to delete the selected model?"
-msgstr "您確定要刪除所選模型嗎?"
+msgstr "您確定要刪除所選錄製嗎?此操作無法撤消。"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:274
+#, fuzzy
msgid "Download failed"
-msgstr "下載失敗"
+msgstr "下載模型"
-#: buzz/widgets/preferences_dialog/models_preferences_widget.py
-#: buzz/widgets/transcription_tasks_table_widget.py
-#: buzz/widgets/update_dialog.py buzz/widgets/main_window.py
-#: buzz/model_loader.py
+#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
+#: 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:727
+#: buzz/model_loader.py:741
msgid "Error"
-msgstr "錯誤"
+msgstr ""
-#: buzz/widgets/record_button.py buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/record_button.py:10 buzz/widgets/record_button.py:17
+#: buzz/widgets/main_window_toolbar.py:37
msgid "Record"
msgstr "錄製"
-#: buzz/widgets/record_button.py
+#: buzz/widgets/record_button.py:21
msgid "Stop"
msgstr "停止"
-#: buzz/widgets/transcriber/languages_combo_box.py
-#: buzz/transcriber/transcriber.py
+#: buzz/widgets/transcriber/languages_combo_box.py:35
+#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "檢測語言"
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:26
msgid "e.g., eng, fra, deu"
-msgstr "例如:eng、fra、deu"
+msgstr ""
-#: buzz/widgets/transcriber/mms_language_line_edit.py
+#: buzz/widgets/transcriber/mms_language_line_edit.py:28
msgid ""
"Enter an ISO 639-3 language code (3 letters).\n"
"Examples: eng (English), fra (French), deu (German),\n"
"spa (Spanish), lav (Latvian)"
msgstr ""
-"請輸入 ISO 639-3 語言代碼(3 個字母)。\n"
-"範例:eng(英語)、fra(法語)、deu(德語)、\n"
-"spa(西班牙語)、lav(拉脫維亞語)"
-#: buzz/widgets/transcriber/file_transcriber_widget.py
+#: buzz/widgets/transcriber/file_transcriber_widget.py:84
msgid "Run"
msgstr "開始執行"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:101
msgid "Model:"
msgstr "模型:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:113
msgid "First time use of a model may take up to several minutest to load."
-msgstr "首次使用模型最多可能需要數分鐘載入。"
+msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:123
msgid "Api Key:"
-msgstr "API 金鑰:"
+msgstr ""
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:124
msgid "Task:"
msgstr "任務:"
-#: buzz/widgets/transcriber/transcription_options_group_box.py
+#: buzz/widgets/transcriber/transcription_options_group_box.py:125
+#: buzz/widgets/transcriber/transcription_options_group_box.py:126
msgid "Language:"
msgstr "語言:"
-#: buzz/widgets/transcriber/initial_prompt_text_edit.py
+#: buzz/widgets/transcriber/initial_prompt_text_edit.py:10
msgid "Enter prompt..."
-msgstr "輸入提示..."
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:33
msgid "Advanced Settings"
msgstr "進階設定"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:37
msgid "Speech recognition settings"
-msgstr "語音識別設定"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:46
+msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+msgstr "逗號分隔,例如\"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:55
+msgid "Temperature:"
+msgstr "溫度:"
+
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:66
msgid "Initial Prompt:"
msgstr "初始提示:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:68
msgid "Translation settings"
-msgstr "翻譯設定"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:72
msgid "Enable AI translation"
-msgstr "啟用 AI 翻譯"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:84
+#, fuzzy
msgid "AI model:"
-msgstr "AI 模型:"
+msgstr "模型:"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:88
msgid ""
-"Please translate each text sent to you from English to Spanish. Translation "
-"will be used in an automated system, please do not add any comments or "
-"notes, just the translation."
+"Enter instructions for AI on how to translate, for example 'Please translate "
+"each text sent to you from English to Spanish.'"
msgstr ""
-"請將傳送給您的每段文字從英文翻譯成西班牙文。翻譯將用於自動化系統,請勿添加任"
-"何評論或備註,僅提供翻譯即可。"
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
+#: buzz/widgets/transcriber/advanced_settings_dialog.py:92
msgid "Instructions for AI:"
-msgstr "AI 指令:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Recording settings"
-msgstr "錄製設定"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Silence threshold:"
-msgstr "靜音閾值:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Live recording mode:"
-msgstr "即時錄製模式:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Line separator:"
-msgstr "行分隔符號:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Transcription step:"
-msgstr "轉錄步長:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Hide unconfirmed"
-msgstr "隱藏未確認內容"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Enable live recording export"
-msgstr "啟用即時錄製匯出"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export folder:"
-msgstr "匯出資料夾:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file name:"
-msgstr "匯出檔案名稱:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Text file (.txt)"
-msgstr "文字檔案(.txt)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "CSV (.csv)"
-msgstr "CSV(.csv)"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid "Export file type:"
-msgstr "匯出檔案類型:"
-
-#: buzz/widgets/transcriber/advanced_settings_dialog.py
-msgid ""
-"Limit export entries\n"
-"(0 = export all):"
msgstr ""
-"限制匯出筆數\n"
-"(0 = 全部匯出):"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "單字級別的時間表達"
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
-msgstr "提取語音"
+msgstr ""
-#: buzz/widgets/transcriber/file_transcription_form_widget.py
+#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
-msgstr "匯出:"
+msgstr ""
-#: buzz/widgets/transcriber/hugging_face_search_line_edit.py
+#: buzz/widgets/transcriber/hugging_face_search_line_edit.py:37
msgid "Huggingface ID of a model"
-msgstr "模型的 Huggingface ID"
+msgstr ""
-#: buzz/widgets/transcriber/advanced_settings_button.py
+#: buzz/widgets/transcriber/advanced_settings_button.py:9
msgid "Advanced..."
-msgstr "進階..."
+msgstr ""
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:43
+#, fuzzy
msgid "New File Transcription"
-msgstr "新增檔案轉錄"
+msgstr "新錄製"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:50
+#, fuzzy
msgid "New URL Transcription"
-msgstr "新增網址轉錄"
+msgstr "新錄製"
-#: buzz/widgets/main_window_toolbar.py
+#: buzz/widgets/main_window_toolbar.py:57
msgid "Open Transcript"
msgstr "打開轉換結果"
-#: buzz/widgets/main_window_toolbar.py buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:63 buzz/settings/shortcut.py:39
msgid "Cancel Transcription"
msgstr "取消錄製"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/main_window.py
-#: buzz/settings/shortcut.py
+#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
+#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "清除歷史紀錄"
-#: buzz/widgets/main_window_toolbar.py buzz/widgets/update_dialog.py
-msgid "Update Available"
-msgstr "有可用更新"
-
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:71
msgid "In Progress"
-msgstr "進行中"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:74
msgid "Completed"
msgstr "完成"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:81
msgid "Failed"
-msgstr "失敗"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:84
msgid "Canceled"
msgstr "取消"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:86
msgid "Queued"
-msgstr "排隊中"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:93
+#, fuzzy
msgid "File Name / URL"
-msgstr "檔案名稱 / 網址"
+msgstr "檔案名稱"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:106
+#, fuzzy
msgid "Model"
-msgstr "模型"
+msgstr "模型:"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:115
+#, fuzzy
msgid "Task"
-msgstr "任務"
+msgstr "任務:"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:124
msgid "Status"
msgstr "狀態"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:133
+#, fuzzy
msgid "Date Completed"
-msgstr "完成日期"
+msgstr "完成"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:145
msgid "Date Added"
-msgstr "新增日期"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:156
+#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
-msgstr "備註"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:174
msgid "Reset Column Order"
-msgstr "重設欄位順序"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:304
+#, fuzzy
msgid "Restart Transcription"
-msgstr "重新開始轉錄"
+msgstr "取消錄製"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
-msgstr "重新命名"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
-msgstr "新增/編輯備註"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:636
+#, fuzzy
msgid "Rename Transcription"
-msgstr "重新命名轉錄"
+msgstr "取消錄製"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
-msgstr "輸入新名稱:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
-msgstr "為此轉錄輸入相關備註:"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
-msgstr "無法重新開始"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
-msgstr "只有失敗或已取消的轉錄才能重新開始。"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:705
+#, fuzzy
msgid "Failed to restart transcription: {}"
-msgstr "重新開始轉錄失敗:{}"
+msgstr "取消錄製"
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
-msgstr "無法重新開始轉錄:模型不可用且無法下載。"
+msgstr ""
-#: buzz/widgets/transcription_tasks_table_widget.py
+#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
-msgstr "無法重新開始轉錄:找不到轉錄工作器。"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:97
msgid "Live Recording"
msgstr "現場錄製"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:163
msgid "Click Record to begin..."
msgstr "點擊開始錄製"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:166
msgid "Waiting for AI translation..."
-msgstr "等待 AI 翻譯..."
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:178
msgid "Microphone:"
msgstr "麥克風:"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:225
msgid "Show in new window"
-msgstr "在新視窗中顯示"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:231
msgid "Text Size:"
-msgstr "文字大小:"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:247
msgid "Theme"
-msgstr "主題"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Light"
-msgstr "淺色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Dark"
-msgstr "深色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:251
msgid "Custom"
-msgstr "自訂"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:265
msgid "Text Color"
-msgstr "文字顏色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:275
msgid "Background Color"
-msgstr "背景顏色"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:284
msgid "Fullscreen"
-msgstr "全螢幕"
+msgstr ""
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy"
-msgstr "複製"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy transcription to clipboard"
-msgstr "複製轉錄內容到剪貼簿"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Nothing to copy!"
-msgstr "沒有可複製的內容!"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copy failed"
-msgstr "複製失敗"
-
-#: buzz/widgets/recording_transcriber_widget.py
-msgid "Copied!"
-msgstr "已複製!"
-
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:355
+#, fuzzy
msgid "Select Text Color"
-msgstr "選擇文字顏色"
+msgstr "選擇聲音檔案"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:373
+#, fuzzy
msgid "Select Background Color"
-msgstr "選擇背景顏色"
+msgstr "選擇聲音檔案"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:788
msgid "An error occurred while starting a new recording:"
msgstr "開始新錄製出錯"
-#: buzz/widgets/recording_transcriber_widget.py
+#: buzz/widgets/recording_transcriber_widget.py:792
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
msgstr "請檢查您的音頻設備或檢查應用程序日誌以獲取更多信息。"
-#: buzz/widgets/update_dialog.py
-msgid "A new version of Buzz is available!"
-msgstr "Buzz 有新版本可用!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Current version:"
-msgstr "目前版本:"
-
-#: buzz/widgets/update_dialog.py
-msgid "New version:"
-msgstr "新版本:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Release Notes:"
-msgstr "版本說明:"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download and Install"
-msgstr "下載並安裝"
-
-#: buzz/widgets/update_dialog.py
-msgid "No download URL available for your platform."
-msgstr "您的平台沒有可用的下載連結。"
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {}..."
-msgstr "正在下載第 {} 個檔案,共 {} 個..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Downloading file {} of {} ({:.1f} MB / {:.1f} MB)..."
-msgstr "正在下載第 {} 個檔案,共 {} 個({:.1f} MB / {:.1f} MB)..."
-
-#: buzz/widgets/update_dialog.py
-msgid "Download Failed"
-msgstr "下載失敗"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to download the update: {}"
-msgstr "下載更新失敗:{}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to save the installer: {}"
-msgstr "無法儲存安裝程式:{}"
-
-#: buzz/widgets/update_dialog.py
-msgid "Download complete!"
-msgstr "下載完成!"
-
-#: buzz/widgets/update_dialog.py
-msgid "Failed to run the installer: {}"
-msgstr "無法執行安裝程式:{}"
-
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:81
msgid "Check for updates"
msgstr "檢查更新"
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:84
msgid "Show logs"
-msgstr "顯示日誌"
+msgstr ""
-#: buzz/widgets/about_dialog.py
+#: buzz/widgets/about_dialog.py:119
msgid "You're up to date!"
msgstr "你是最新的!"
-#: buzz/widgets/audio_meter_widget.py
-msgid "Average volume"
-msgstr "平均音量"
-
-#: buzz/widgets/audio_meter_widget.py
-msgid "Queue"
-msgstr "佇列"
-
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:276
msgid "Start"
-msgstr "開始"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:277
msgid "End"
-msgstr "結束"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
msgid "Text"
-msgstr "文字"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
+#, fuzzy
msgid "Translation"
-msgstr "翻譯"
+msgstr "新錄製"
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:33
msgid "View"
-msgstr "檢視"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py
+#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
msgid "Timestamps"
-msgstr "時間戳記"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:265
msgid "Export"
-msgstr "匯出"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "Translate"
-msgstr "翻譯"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
msgid "Resize"
-msgstr "調整大小"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
msgid "Identify Speakers"
-msgstr "識別說話者"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
msgid "Find"
-msgstr "尋找"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
msgid "Show/Hide Search Bar (Ctrl+F)"
-msgstr "顯示/隱藏搜尋列(Ctrl+F)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
msgid "Find:"
-msgstr "尋找:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
msgid "Enter text to find..."
-msgstr "輸入要尋找的文字..."
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
msgid "Previous match (Shift+Enter)"
-msgstr "上一個符合項目(Shift+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
msgid "Next match (Ctrl+Enter)"
-msgstr "下一個符合項目(Ctrl+Enter)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
msgid "Clear"
-msgstr "清除"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
msgid "Playback Controls:"
-msgstr "播放控制:"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
msgid "Loop Segment"
-msgstr "循環片段"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
msgid "Enable/disable looping when clicking on transcript segments"
-msgstr "點擊轉錄片段時啟用/停用循環播放"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
msgid "Follow Audio"
-msgstr "跟隨音訊"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
msgid ""
"Enable/disable following the current audio position in the transcript. When "
"enabled, automatically scrolls to current text."
-msgstr "啟用/停用在轉錄稿中跟隨目前音訊位置。啟用後,自動捲動至目前文字。"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
msgid "Scroll to Current"
-msgstr "捲動至目前位置"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
msgid "Scroll to the currently spoken text"
-msgstr "捲動至目前正在說話的文字"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
msgid "1 of 100+ matches"
-msgstr "100 個以上符合項目中的第 1 個"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
msgid "1 of "
-msgstr "第 1 個,共 "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " matches"
-msgstr " 個符合項目"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
msgid "No matches found"
-msgstr "找不到符合項目"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
msgid " of 100+ matches"
-msgstr ",共 100 個以上符合項目"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
msgid " of "
-msgstr ",共 "
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
msgid "API Key Required"
-msgstr "需要 API 金鑰"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
msgid "Please enter OpenAI API Key in preferences"
-msgstr "請在偏好設定中輸入 OpenAI API 金鑰"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend end time"
-msgstr "延長結束時間"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings by up to (seconds)"
-msgstr "最多延長結束時間(秒)"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Extend endings"
-msgstr "延長結尾"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:157
msgid "Resize Options"
-msgstr "調整大小選項"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Desired subtitle length"
-msgstr "理想字幕長度"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were disabled during transcription"
-msgstr "僅在轉錄時停用單字級別時間戳記時可用"
-
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:193
msgid "Merge Options"
-msgstr "合併選項"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:204
msgid "Merge by gap"
-msgstr "依間隔合併"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:212
msgid "Split by punctuation"
-msgstr "依標點符號分割"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:220
msgid "Split by max length"
-msgstr "依最大長度分割"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:232
msgid "Merge"
-msgstr "合併"
+msgstr ""
-#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py
-msgid "Available only if word level timings were enabled during transcription"
-msgstr "僅在轉錄時啟用單字級別時間戳記時可用"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid ""
-"Speaker identification is not available: failed to load required libraries."
-msgstr "說話者識別不可用:無法載入所需程式庫。"
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:104
msgid "1/8 Collecting transcripts"
-msgstr "1/8 收集轉錄稿"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:126
msgid "2/8 Loading audio"
-msgstr "2/8 載入音訊"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:141
msgid "3/8 Loading alignment model"
-msgstr "3/8 載入對齊模型"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:167
msgid "3/8 Loading alignment model (retrying with cache...)"
-msgstr "3/8 載入對齊模型(正在使用快取重試...)"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:172
msgid ""
"Failed to load alignment model. Please check your internet connection and "
"try again."
-msgstr "無法載入對齊模型。請檢查您的網路連線並重試。"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:180
msgid "4/8 Processing audio"
-msgstr "4/8 處理音訊"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:198
+#, fuzzy
msgid "5/8 Preparing transcripts"
-msgstr "5/8 準備轉錄稿"
+msgstr "取消錄製"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:220
msgid "6/8 Identifying speakers"
-msgstr "6/8 識別說話者"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:247
msgid "7/8 Mapping speakers to transcripts"
-msgstr "7/8 將說話者對應到轉錄稿"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:287
msgid "8/8 Identification done"
-msgstr "8/8 識別完成"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:292
msgid "0/0 Error identifying speakers"
-msgstr "0/0 識別說話者時發生錯誤"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:352
msgid "Step 1: Identify speakers"
-msgstr "步驟 1:識別說話者"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:364
msgid "Identify"
-msgstr "識別"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:373
msgid "Ready to identify speakers"
-msgstr "準備識別說話者"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:375
msgid "Audio file not found"
-msgstr "找不到音訊檔案"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:399
msgid "Step 2: Name speakers"
-msgstr "步驟 2:為說話者命名"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:414
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:529
msgid "Play sample"
-msgstr "播放範例"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:429
msgid "Merge speaker sentences"
-msgstr "合併說話者句子"
+msgstr ""
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
+#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:434
+#, fuzzy
msgid "Save"
-msgstr "儲存"
+msgstr "檔案"
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelling..."
-msgstr "取消中..."
-
-#: buzz/widgets/transcription_viewer/speaker_identification_widget.py
-msgid "Cancelled"
-msgstr "已取消"
-
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:82
+#, fuzzy
msgid "Save File"
-msgstr "儲存檔案"
+msgstr "檔案"
-#: buzz/widgets/transcription_viewer/export_transcription_menu.py
+#: buzz/widgets/transcription_viewer/export_transcription_menu.py:84
msgid "Text files"
-msgstr "文字檔案"
+msgstr ""
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:37
+#, fuzzy
msgid "Downloading model"
-msgstr "正在下載模型"
+msgstr "下載模型"
-#: buzz/widgets/model_download_progress_dialog.py
+#: buzz/widgets/model_download_progress_dialog.py:38
msgid "remaining"
-msgstr "剩餘"
+msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:38
+#, fuzzy
msgid "Import File..."
-msgstr "匯入檔案..."
+msgstr "導入媒體檔案..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:41
+#, fuzzy
msgid "Import URL..."
-msgstr "匯入網址..."
+msgstr "導入媒體檔案..."
-#: buzz/widgets/menu_bar.py
-msgid "Import Folder..."
-msgstr "導入資料夾..."
-
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:44
msgid "About"
-msgstr "關於"
+msgstr ""
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:48
msgid "Preferences..."
msgstr "偏好設定..."
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:51 buzz/widgets/menu_bar.py:61
msgid "Help"
msgstr "幫助"
-#: buzz/widgets/menu_bar.py
+#: buzz/widgets/menu_bar.py:57
msgid "File"
msgstr "檔案"
-#: buzz/widgets/main_window.py
+#: 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
+#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "選擇聲音檔案"
-#: buzz/widgets/main_window.py
-msgid "Select folder"
-msgstr "選擇資料夾"
-
-#: buzz/widgets/main_window.py
+#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
-msgstr "無法將 OpenAI API 金鑰儲存至鑰匙圈"
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
+#: buzz/transcriber/recording_transcriber.py:427
msgid "Whisper server failed to start. Check logs for details."
-msgstr "Whisper 伺服器啟動失敗。請查看日誌以了解詳情。"
+msgstr ""
-#: buzz/transcriber/local_whisper_cpp_server_transcriber.py
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
+#: buzz/transcriber/recording_transcriber.py:431
msgid ""
"Whisper server failed to start due to insufficient memory. Please try again "
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
"variable."
msgstr ""
-"Whisper 伺服器因記憶體不足而啟動失敗。請改用較小的模型重試。若要強制使用 CPU "
-"模式,請設定環境變數 BUZZ_FORCE_CPU=TRUE。"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:24
+#, fuzzy
msgid "Translate to English"
-msgstr "翻譯為英語"
+msgstr "新錄製"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:25
+#, fuzzy
msgid "Transcribe"
-msgstr "轉錄"
+msgstr "打開轉換結果"
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:39
msgid "Chinese"
-msgstr "中文"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:42
msgid "Russian"
-msgstr "俄語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:43
msgid "Korean"
-msgstr "韓語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:44
msgid "French"
-msgstr "法語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:46
msgid "Portuguese"
-msgstr "葡萄牙語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:47
msgid "Turkish"
-msgstr "土耳其語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
-msgstr "阿拉伯語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:52
msgid "Swedish"
-msgstr "瑞典語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:54
msgid "Indonesian"
-msgstr "印尼語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:55
msgid "Hindi"
-msgstr "印地語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:56
msgid "Finnish"
-msgstr "芬蘭語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:57
msgid "Vietnamese"
-msgstr "越南語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:58
msgid "Hebrew"
-msgstr "希伯來語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:60
msgid "Greek"
-msgstr "希臘語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:61
msgid "Malay"
-msgstr "馬來語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:62
msgid "Czech"
-msgstr "捷克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:63
msgid "Romanian"
-msgstr "羅馬尼亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:65
msgid "Hungarian"
-msgstr "匈牙利語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:66
msgid "Tamil"
-msgstr "泰米爾語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:67
msgid "Norwegian"
-msgstr "挪威語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:68
msgid "Thai"
-msgstr "泰語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:69
msgid "Urdu"
-msgstr "烏爾都語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:70
msgid "Croatian"
-msgstr "克羅埃西亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:71
msgid "Bulgarian"
-msgstr "保加利亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:72
msgid "Lithuanian"
-msgstr "立陶宛語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:73
msgid "Latin"
-msgstr "拉丁語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:74
msgid "Maori"
-msgstr "毛利語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:75
msgid "Malayalam"
-msgstr "馬拉雅拉姆語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:76
msgid "Welsh"
-msgstr "威爾斯語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:77
msgid "Slovak"
-msgstr "斯洛伐克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:78
msgid "Telugu"
-msgstr "泰盧固語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:79
msgid "Persian"
-msgstr "波斯語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:81
msgid "Bengali"
-msgstr "孟加拉語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:82
msgid "Serbian"
-msgstr "塞爾維亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:83
msgid "Azerbaijani"
-msgstr "亞塞拜然語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:84
msgid "Slovenian"
-msgstr "斯洛維尼亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:85
msgid "Kannada"
-msgstr "卡納達語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:86
msgid "Estonian"
-msgstr "愛沙尼亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:87
msgid "Macedonian"
-msgstr "馬其頓語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:88
msgid "Breton"
-msgstr "布列塔尼語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:89
msgid "Basque"
-msgstr "巴斯克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:90
msgid "Icelandic"
-msgstr "冰島語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:91
msgid "Armenian"
-msgstr "亞美尼亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:92
msgid "Nepali"
-msgstr "尼泊爾語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:93
msgid "Mongolian"
-msgstr "蒙古語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:94
msgid "Bosnian"
-msgstr "波士尼亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:95
msgid "Kazakh"
-msgstr "哈薩克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:96
msgid "Albanian"
-msgstr "阿爾巴尼亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:97
msgid "Swahili"
-msgstr "斯瓦希里語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:98
msgid "Galician"
-msgstr "加利西亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:99
msgid "Marathi"
-msgstr "馬拉地語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:100
msgid "Punjabi"
-msgstr "旁遮普語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:101
msgid "Sinhala"
-msgstr "僧伽羅語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:102
msgid "Khmer"
-msgstr "高棉語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:103
msgid "Shona"
-msgstr "紹納語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:104
msgid "Yoruba"
-msgstr "約魯巴語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:105
msgid "Somali"
-msgstr "索馬利語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:106
msgid "Afrikaans"
-msgstr "南非荷蘭語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:107
msgid "Occitan"
-msgstr "奧克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:108
msgid "Georgian"
-msgstr "喬治亞語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:109
msgid "Belarusian"
-msgstr "白俄羅斯語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:110
msgid "Tajik"
-msgstr "塔吉克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:111
msgid "Sindhi"
-msgstr "信德語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:112
msgid "Gujarati"
-msgstr "古吉拉特語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:113
msgid "Amharic"
-msgstr "阿姆哈拉語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:114
msgid "Yiddish"
-msgstr "意第緒語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:115
msgid "Lao"
-msgstr "寮語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:116
msgid "Uzbek"
-msgstr "烏茲別克語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:117
msgid "Faroese"
-msgstr "法羅語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:118
msgid "Haitian Creole"
-msgstr "海地克里奧爾語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:119
msgid "Pashto"
-msgstr "普什圖語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:120
msgid "Turkmen"
-msgstr "土庫曼語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:121
msgid "Nynorsk"
-msgstr "新挪威語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:122
msgid "Maltese"
-msgstr "馬爾他語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:123
msgid "Sanskrit"
-msgstr "梵語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:124
msgid "Luxembourgish"
-msgstr "盧森堡語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:125
msgid "Myanmar"
-msgstr "緬甸語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:126
msgid "Tibetan"
-msgstr "藏語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:127
msgid "Tagalog"
-msgstr "他加祿語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:128
msgid "Malagasy"
-msgstr "馬拉加斯語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:129
msgid "Assamese"
-msgstr "阿薩姆語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:130
msgid "Tatar"
-msgstr "韃靼語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:131
msgid "Hawaiian"
-msgstr "夏威夷語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:132
msgid "Lingala"
-msgstr "林加拉語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:133
msgid "Hausa"
-msgstr "豪薩語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:134
msgid "Bashkir"
-msgstr "巴什基爾語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:135
msgid "Javanese"
-msgstr "爪哇語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:136
msgid "Sundanese"
-msgstr "巽他語"
+msgstr ""
-#: buzz/transcriber/transcriber.py
+#: buzz/transcriber/transcriber.py:137
msgid "Cantonese"
-msgstr "粵語"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py buzz/model_loader.py
+#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:760
msgid "A connection error occurred"
-msgstr "發生連線錯誤"
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:358
msgid "Starting Whisper.cpp..."
-msgstr "正在啟動 Whisper.cpp..."
+msgstr ""
-#: buzz/transcriber/recording_transcriber.py
+#: buzz/transcriber/recording_transcriber.py:418
+#, fuzzy
msgid "Starting transcription..."
-msgstr "正在開始轉錄..."
+msgstr "取消錄製"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:17
+#, fuzzy
msgid "Open Record Window"
-msgstr "開啟錄製視窗"
+msgstr "現場錄製"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:18
+#, fuzzy
msgid "Import File"
-msgstr "匯入檔案"
+msgstr "導入媒體檔案..."
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:20
msgid "Open Preferences Window"
-msgstr "開啟偏好設定視窗"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:22
+#, fuzzy
msgid "View Transcript Text"
-msgstr "檢視轉錄文字"
+msgstr "新錄製"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:23
+#, fuzzy
msgid "View Transcript Translation"
-msgstr "檢視轉錄翻譯"
+msgstr "新錄製"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:24
+#, fuzzy
msgid "View Transcript Timestamps"
-msgstr "檢視轉錄時間戳記"
+msgstr "新錄製"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:25
+#, fuzzy
msgid "Search Transcript"
-msgstr "搜尋轉錄稿"
+msgstr "打開轉換結果"
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:26
msgid "Go to Next Transcript Search Result"
-msgstr "移至下一個轉錄搜尋結果"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:27
msgid "Go to Previous Transcript Search Result"
-msgstr "移至上一個轉錄搜尋結果"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:28
msgid "Scroll to Current Text"
-msgstr "捲動至目前文字"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:29
msgid "Play/Pause Audio"
-msgstr "播放/暫停音訊"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:30
msgid "Replay Current Segment"
-msgstr "重播目前片段"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:31
msgid "Toggle Playback Controls"
-msgstr "切換播放控制項"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:33
msgid "Decrease Segment Start Time"
-msgstr "縮短片段開始時間"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:34
msgid "Increase Segment Start Time"
-msgstr "延長片段開始時間"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:35
msgid "Decrease Segment End Time"
-msgstr "縮短片段結束時間"
+msgstr ""
-#: buzz/settings/shortcut.py
+#: buzz/settings/shortcut.py:36
msgid "Increase Segment End Time"
-msgstr "延長片段結束時間"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:5
msgid "Append below"
-msgstr "附加至下方"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:6
msgid "Append above"
-msgstr "附加至上方"
+msgstr ""
-#: buzz/settings/recording_transcriber_mode.py
+#: buzz/settings/recording_transcriber_mode.py:7
msgid "Append and correct"
-msgstr "附加並校正"
-
-#: buzz/file_transcriber_queue_worker.py
-msgid ""
-"Speech extraction failed! Check your internet connection — a model may need "
-"to be downloaded."
-msgstr "語音提取失敗!請檢查您的網路連線——可能需要下載模型。"
-
-#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-#~ msgstr "逗號分隔,例如\"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\""
-
-#~ msgid "Temperature:"
-#~ msgstr "溫度:"
-
-#~ msgid "Please translate each text sent to you from English to Spanish."
-#~ msgstr "請將傳送給您的每段文字從英語翻譯為西班牙語。"
-
-#~ msgid "Translation error, see logs!"
-#~ msgstr "翻譯錯誤,請查看日誌!"
+msgstr ""
#~ msgid "ID"
#~ msgstr "ID"
diff --git a/buzz/model_loader.py b/buzz/model_loader.py
index 224bd6d3..4cf4d0d0 100644
--- a/buzz/model_loader.py
+++ b/buzz/model_loader.py
@@ -7,23 +7,8 @@ import threading
import shutil
import subprocess
import sys
-import ssl
import warnings
import platform
-
-# Fix SSL certificate verification for bundled applications (macOS, Windows).
-# This must be done before importing libraries that make HTTPS requests.
-try:
- import certifi
- _certifi_ca_bundle = certifi.where()
- os.environ.setdefault("REQUESTS_CA_BUNDLE", _certifi_ca_bundle)
- os.environ.setdefault("SSL_CERT_FILE", _certifi_ca_bundle)
- os.environ.setdefault("SSL_CERT_DIR", os.path.dirname(_certifi_ca_bundle))
- # Also update the default SSL context for urllib
- ssl._create_default_https_context = lambda: ssl.create_default_context(cafile=_certifi_ca_bundle)
-except ImportError:
- _certifi_ca_bundle = None
-
import requests
import whisper
import huggingface_hub
@@ -37,24 +22,6 @@ from huggingface_hub.errors import LocalEntryNotFoundError
from buzz.locale import _
-# Configure huggingface_hub to use certifi certificates directly.
-# This is more reliable than environment variables for frozen apps.
-if _certifi_ca_bundle is not None:
- try:
- from huggingface_hub import configure_http_backend
-
- def _hf_session_factory() -> requests.Session:
- session = requests.Session()
- session.verify = _certifi_ca_bundle
- return session
-
- configure_http_backend(backend_factory=_hf_session_factory)
- except ImportError:
- # configure_http_backend not available in older huggingface_hub versions
- pass
- except Exception as e:
- logging.debug(f"Failed to configure huggingface_hub HTTP backend: {e}")
-
# On Windows, creating symlinks requires special privileges (Developer Mode or
# SeCreateSymbolicLinkPrivilege). Monkey-patch huggingface_hub to use file
# copying instead of symlinks to avoid [WinError 1314] errors.
diff --git a/buzz/recording.py b/buzz/recording.py
index 158f6e5c..598fc561 100644
--- a/buzz/recording.py
+++ b/buzz/recording.py
@@ -9,9 +9,6 @@ from PyQt6.QtCore import QObject, pyqtSignal
class RecordingAmplitudeListener(QObject):
stream: Optional[sounddevice.InputStream] = None
amplitude_changed = pyqtSignal(float)
- average_amplitude_changed = pyqtSignal(float)
-
- ACCUMULATION_SECONDS = 1
def __init__(
self,
@@ -20,9 +17,6 @@ class RecordingAmplitudeListener(QObject):
):
super().__init__(parent)
self.input_device_index = input_device_index
- self.buffer = np.ndarray([], dtype=np.float32)
- self.accumulation_size = 0
- self._active = True
def start_recording(self):
try:
@@ -33,24 +27,16 @@ class RecordingAmplitudeListener(QObject):
callback=self.stream_callback,
)
self.stream.start()
- self.accumulation_size = int(self.stream.samplerate * self.ACCUMULATION_SECONDS)
- except Exception as e:
+ except sounddevice.PortAudioError:
self.stop_recording()
- logging.exception("Failed to start audio stream on device %s: %s", self.input_device_index, e)
+ logging.exception("")
def stop_recording(self):
- self._active = False
if self.stream is not None:
self.stream.stop()
self.stream.close()
def stream_callback(self, in_data: np.ndarray, frame_count, time_info, status):
- if not self._active:
- return
chunk = in_data.ravel()
- self.amplitude_changed.emit(float(np.sqrt(np.mean(chunk**2))))
-
- self.buffer = np.append(self.buffer, chunk)
- if self.buffer.size >= self.accumulation_size:
- self.average_amplitude_changed.emit(float(np.sqrt(np.mean(self.buffer**2))))
- self.buffer = np.ndarray([], dtype=np.float32)
+ amplitude = np.sqrt(np.mean(chunk**2)) # root-mean-square
+ self.amplitude_changed.emit(amplitude)
diff --git a/buzz/settings/settings.py b/buzz/settings/settings.py
index 0f9242a4..7ec768fd 100644
--- a/buzz/settings/settings.py
+++ b/buzz/settings/settings.py
@@ -17,6 +17,7 @@ class Settings:
RECORDING_TRANSCRIBER_TASK = "recording-transcriber/task"
RECORDING_TRANSCRIBER_MODEL = "recording-transcriber/model"
RECORDING_TRANSCRIBER_LANGUAGE = "recording-transcriber/language"
+ RECORDING_TRANSCRIBER_TEMPERATURE = "recording-transcriber/temperature"
RECORDING_TRANSCRIBER_INITIAL_PROMPT = "recording-transcriber/initial-prompt"
RECORDING_TRANSCRIBER_ENABLE_LLM_TRANSLATION = "recording-transcriber/enable-llm-translation"
RECORDING_TRANSCRIBER_LLM_MODEL = "recording-transcriber/llm-model"
@@ -24,13 +25,6 @@ class Settings:
RECORDING_TRANSCRIBER_EXPORT_ENABLED = "recording-transcriber/export-enabled"
RECORDING_TRANSCRIBER_EXPORT_FOLDER = "recording-transcriber/export-folder"
RECORDING_TRANSCRIBER_MODE = "recording-transcriber/mode"
- RECORDING_TRANSCRIBER_SILENCE_THRESHOLD = "recording-transcriber/silence-threshold"
- RECORDING_TRANSCRIBER_LINE_SEPARATOR = "recording-transcriber/line-separator"
- RECORDING_TRANSCRIBER_TRANSCRIPTION_STEP = "recording-transcriber/transcription-step"
- RECORDING_TRANSCRIBER_EXPORT_FILE_TYPE = "recording-transcriber/export-file-type"
- RECORDING_TRANSCRIBER_EXPORT_MAX_ENTRIES = "recording-transcriber/export-max-entries"
- RECORDING_TRANSCRIBER_EXPORT_FILE_NAME = "recording-transcriber/export-file-name"
- RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED = "recording-transcriber/hide-unconfirmed"
PRESENTATION_WINDOW_TEXT_COLOR = "presentation-window/text-color"
PRESENTATION_WINDOW_BACKGROUND_COLOR = "presentation-window/background-color"
@@ -40,6 +34,7 @@ class Settings:
FILE_TRANSCRIBER_TASK = "file-transcriber/task"
FILE_TRANSCRIBER_MODEL = "file-transcriber/model"
FILE_TRANSCRIBER_LANGUAGE = "file-transcriber/language"
+ FILE_TRANSCRIBER_TEMPERATURE = "file-transcriber/temperature"
FILE_TRANSCRIBER_INITIAL_PROMPT = "file-transcriber/initial-prompt"
FILE_TRANSCRIBER_ENABLE_LLM_TRANSLATION = "file-transcriber/enable-llm-translation"
FILE_TRANSCRIBER_LLM_MODEL = "file-transcriber/llm-model"
@@ -82,9 +77,6 @@ class Settings:
FORCE_CPU = "force-cpu"
REDUCE_GPU_MEMORY = "reduce-gpu-memory"
- LAST_UPDATE_CHECK = "update/last-check"
- UPDATE_AVAILABLE_VERSION = "update/available-version"
-
def get_user_identifier(self) -> str:
user_id = self.value(self.Key.USER_IDENTIFIER, "")
if not user_id:
diff --git a/buzz/transcriber/file_transcriber.py b/buzz/transcriber/file_transcriber.py
index 822e7107..250c27b6 100755
--- a/buzz/transcriber/file_transcriber.py
+++ b/buzz/transcriber/file_transcriber.py
@@ -149,22 +149,13 @@ class FileTranscriber(QObject):
)
if self.transcription_task.source == FileTranscriptionTask.Source.FOLDER_WATCH:
- # Use original_file_path if available (before speech extraction changed file_path)
- source_path = (
- self.transcription_task.original_file_path
- or self.transcription_task.file_path
+ shutil.move(
+ self.transcription_task.file_path,
+ os.path.join(
+ self.transcription_task.output_directory,
+ os.path.basename(self.transcription_task.file_path),
+ ),
)
- if source_path and os.path.exists(source_path):
- if self.transcription_task.delete_source_file:
- os.remove(source_path)
- else:
- shutil.move(
- source_path,
- os.path.join(
- self.transcription_task.output_directory,
- os.path.basename(source_path),
- ),
- )
def on_download_progress(self, data: dict):
if data["status"] == "downloading":
@@ -179,6 +170,7 @@ class FileTranscriber(QObject):
...
+# TODO: Move to transcription service
def write_output(
path: str,
segments: List[Segment],
diff --git a/buzz/transcriber/openai_whisper_api_file_transcriber.py b/buzz/transcriber/openai_whisper_api_file_transcriber.py
index b86b51ba..0413f7e4 100644
--- a/buzz/transcriber/openai_whisper_api_file_transcriber.py
+++ b/buzz/transcriber/openai_whisper_api_file_transcriber.py
@@ -183,22 +183,17 @@ class OpenAIWhisperAPIFileTranscriber(FileTranscriber):
return segments
@staticmethod
- def get_value(segment, key, default=None):
+ def get_value(segment, key):
if hasattr(segment, key):
return getattr(segment, key)
- if isinstance(segment, dict):
- return segment.get(key, default)
- return default
+ return segment[key]
def get_segments_for_file(self, file: str, offset_ms: int = 0):
with open(file, "rb") as file:
- # gpt-4o models don't support verbose_json format
- response_format = "json" if self.whisper_api_model.startswith("gpt-4o") else "verbose_json"
-
options = {
"model": self.whisper_api_model,
"file": file,
- "response_format": response_format,
+ "response_format": "verbose_json",
"prompt": self.transcription_task.transcription_options.initial_prompt,
}
@@ -224,8 +219,7 @@ class OpenAIWhisperAPIFileTranscriber(FileTranscriber):
if "segments" in transcript.model_extra:
segments = transcript.model_extra["segments"]
else:
- # gpt-4o models return only text without segments/timestamps
- segments = [{"text": transcript.text, "start": 0, "end": 0, "words": words}]
+ segments = [{"words": words}]
result_segments = []
if self.word_level_timings:
@@ -280,9 +274,9 @@ class OpenAIWhisperAPIFileTranscriber(FileTranscriber):
else:
result_segments = [
Segment(
- int(self.get_value(segment, "start", 0) * 1000 + offset_ms),
- int(self.get_value(segment, "end", 0) * 1000 + offset_ms),
- self.get_value(segment, "text", ""),
+ int(self.get_value(segment, "start") * 1000 + offset_ms),
+ int(self.get_value(segment,"end") * 1000 + offset_ms),
+ self.get_value(segment,"text"),
)
for segment in segments
]
diff --git a/buzz/transcriber/recording_transcriber.py b/buzz/transcriber/recording_transcriber.py
index 3d0105ba..e4f5a850 100644
--- a/buzz/transcriber/recording_transcriber.py
+++ b/buzz/transcriber/recording_transcriber.py
@@ -11,9 +11,6 @@ import subprocess
from typing import Optional
from platformdirs import user_cache_dir
-# Preload CUDA libraries before importing torch
-from buzz import cuda_setup # noqa: F401
-
import torch
import numpy as np
import sounddevice
@@ -26,7 +23,7 @@ from buzz.locale import _
from buzz.assets import APP_BASE_DIR
from buzz.model_loader import ModelType, map_language_to_mms
from buzz.settings.settings import Settings
-from buzz.transcriber.transcriber import TranscriptionOptions, Task, DEFAULT_WHISPER_TEMPERATURE
+from buzz.transcriber.transcriber import TranscriptionOptions, Task
from buzz.transformers_whisper import TransformersTranscriber
from buzz.settings.recording_transcriber_mode import RecordingTranscriberMode
@@ -38,9 +35,6 @@ class RecordingTranscriber(QObject):
transcription = pyqtSignal(str)
finished = pyqtSignal()
error = pyqtSignal(str)
- amplitude_changed = pyqtSignal(float)
- average_amplitude_changed = pyqtSignal(float)
- queue_size_changed = pyqtSignal(int)
is_running = False
SAMPLE_RATE = whisper_audio.SAMPLE_RATE
@@ -62,10 +56,10 @@ class RecordingTranscriber(QObject):
self.input_device_index = input_device_index
self.sample_rate = sample_rate if sample_rate is not None else whisper_audio.SAMPLE_RATE
self.model_path = model_path
- self.n_batch_samples = int(5 * self.sample_rate) # 5 seconds
+ self.n_batch_samples = 5 * self.sample_rate # 5 seconds
self.keep_sample_seconds = 0.15
if self.transcriber_mode == RecordingTranscriberMode.APPEND_AND_CORRECT:
- self.n_batch_samples = int(transcription_options.transcription_step * self.sample_rate)
+ self.n_batch_samples = 3 * self.sample_rate # 3 seconds
self.keep_sample_seconds = 1.5
# pause queueing if more than 3 batches behind
self.max_queue_size = 3 * self.n_batch_samples
@@ -77,10 +71,8 @@ class RecordingTranscriber(QObject):
key=Settings.Key.OPENAI_API_MODEL, default_value="whisper-1"
)
self.process = None
- self._stderr_lines: list[bytes] = []
def start(self):
- self.is_running = True
model = None
model_path = self.model_path
keep_samples = int(self.keep_sample_seconds * self.sample_rate)
@@ -96,12 +88,6 @@ class RecordingTranscriber(QObject):
model = whisper.load_model(model_path, device=device)
elif self.transcription_options.model.model_type == ModelType.WHISPER_CPP:
self.start_local_whisper_server()
- if self.openai_client is None:
- if not self.is_running:
- self.finished.emit()
- else:
- self.error.emit(_("Whisper server failed to start. Check logs for details."))
- return
elif self.transcription_options.model.model_type == ModelType.FASTER_WHISPER:
model_root_dir = user_cache_dir("Buzz")
model_root_dir = os.path.join(model_root_dir, "models")
@@ -134,6 +120,14 @@ class RecordingTranscriber(QObject):
cpu_threads=(os.cpu_count() or 8)//2,
)
+ # This was commented out as it was causing issues. On the other hand some users are reporting errors without
+ # this. It is possible issues were present in older model versions without some config files and now are fixed
+ #
+ # Fix for large-v3 https://github.com/guillaumekln/faster-whisper/issues/547#issuecomment-1797962599
+ # if self.transcription_options.model.whisper_model_size in {WhisperModelSize.LARGEV3, WhisperModelSize.LARGEV3TURBO}:
+ # model.feature_extractor.mel_filters = model.feature_extractor.get_mel_filters(
+ # model.feature_extractor.sampling_rate, model.feature_extractor.n_fft, n_mels=128
+ # )
elif self.transcription_options.model.model_type == ModelType.OPEN_AI_WHISPER_API:
custom_openai_base_url = self.settings.value(
key=Settings.Key.CUSTOM_OPENAI_BASE_URL, default_value=""
@@ -158,6 +152,7 @@ class RecordingTranscriber(QObject):
self.input_device_index,
)
+ self.is_running = True
try:
with self.sounddevice.InputStream(
samplerate=self.sample_rate,
@@ -169,19 +164,11 @@ class RecordingTranscriber(QObject):
while self.is_running:
if self.queue.size >= self.n_batch_samples:
self.mutex.acquire()
- cut = self.find_silence_cut_point(
- self.queue[:self.n_batch_samples], self.sample_rate
- )
- samples = self.queue[:cut]
- if self.transcriber_mode == RecordingTranscriberMode.APPEND_AND_CORRECT:
- self.queue = self.queue[cut - keep_samples:]
- else:
- self.queue = self.queue[cut:]
+ samples = self.queue[: self.n_batch_samples]
+ self.queue = self.queue[self.n_batch_samples - keep_samples:]
self.mutex.release()
amplitude = self.amplitude(samples)
- self.average_amplitude_changed.emit(amplitude)
- self.queue_size_changed.emit(self.queue.size)
logging.debug(
"Processing next frame, sample size = %s, queue size = %s, amplitude = %s",
@@ -190,7 +177,7 @@ class RecordingTranscriber(QObject):
amplitude,
)
- if amplitude < self.transcription_options.silence_threshold:
+ if amplitude < 0.025:
time.sleep(0.5)
continue
@@ -206,9 +193,8 @@ class RecordingTranscriber(QObject):
language=self.transcription_options.language,
task=self.transcription_options.task.value,
initial_prompt=initial_prompt,
- temperature=DEFAULT_WHISPER_TEMPERATURE,
- no_speech_threshold=0.4,
- fp16=False,
+ temperature=self.transcription_options.temperature,
+ no_speech_threshold=0.4
)
elif (
self.transcription_options.model.model_type
@@ -222,7 +208,7 @@ class RecordingTranscriber(QObject):
else None,
task=self.transcription_options.task.value,
# Prevent crash on Windows https://github.com/SYSTRAN/faster-whisper/issues/71#issuecomment-1526263764
- temperature=0 if platform.system() == "Windows" else DEFAULT_WHISPER_TEMPERATURE,
+ temperature=0 if platform.system() == "Windows" else self.transcription_options.temperature,
initial_prompt=self.transcription_options.initial_prompt,
word_timestamps=False,
without_timestamps=True,
@@ -255,7 +241,8 @@ class RecordingTranscriber(QObject):
)
else: # OPEN_AI_WHISPER_API, also used for WHISPER_CPP
if self.openai_client is None:
- self.error.emit(_("A connection error occurred"))
+ self.transcription.emit(_("A connection error occurred"))
+ self.stop_recording()
return
# scale samples to 16-bit PCM
@@ -305,7 +292,7 @@ class RecordingTranscriber(QObject):
next_text: str = result.get("text")
# Update initial prompt between successive recording chunks
- initial_prompt = next_text
+ initial_prompt += next_text
logging.debug(
"Received next result, length = %s, time taken = %s",
@@ -318,22 +305,17 @@ class RecordingTranscriber(QObject):
except PortAudioError as exc:
self.error.emit(str(exc))
- logging.exception("PortAudio error during recording")
- return
- except Exception as exc:
- logging.exception("Unexpected error during recording")
- self.error.emit(str(exc))
+ logging.exception("")
return
- # Cleanup before emitting finished to avoid destroying QThread
- # while this function is still on the call stack
+ self.finished.emit()
+
+ # Cleanup
if model:
del model
if torch.cuda.is_available():
torch.cuda.empty_cache()
- self.finished.emit()
-
@staticmethod
def get_device_sample_rate(device_id: Optional[int]) -> int:
"""Returns the sample rate to be used for recording. It uses the default sample rate
@@ -353,64 +335,19 @@ class RecordingTranscriber(QObject):
def stream_callback(self, in_data: np.ndarray, frame_count, time_info, status):
# Try to enqueue the next block. If the queue is already full, drop the block.
chunk: np.ndarray = in_data.ravel()
-
- amplitude = self.amplitude(chunk)
- self.amplitude_changed.emit(amplitude)
-
with self.mutex:
if self.queue.size < self.max_queue_size:
self.queue = np.append(self.queue, chunk)
- @staticmethod
- def find_silence_cut_point(samples: np.ndarray, sample_rate: int,
- search_seconds: float = 1.5,
- window_seconds: float = 0.02,
- silence_ratio: float = 0.5) -> int:
- """Return index of the last quiet point in the final search_seconds of samples.
-
- Scans backwards through short windows; returns the midpoint of the rightmost
- window whose RMS is below silence_ratio * mean_rms of the search region.
- Falls back to len(samples) if no quiet window is found.
- """
- window = int(window_seconds * sample_rate)
- search_start = max(0, len(samples) - int(search_seconds * sample_rate))
- region = samples[search_start:]
- n_windows = (len(region) - window) // window
- if n_windows < 1:
- return len(samples)
-
- energies = np.array([
- np.sqrt(np.mean(region[i * window:(i + 1) * window] ** 2))
- for i in range(n_windows)
- ])
- mean_energy = energies.mean()
- threshold = silence_ratio * mean_energy
-
- for i in range(n_windows - 1, -1, -1):
- if energies[i] < threshold:
- cut = search_start + i * window + window // 2
- return cut
-
- return len(samples)
-
@staticmethod
def amplitude(arr: np.ndarray):
- return float(np.sqrt(np.mean(arr**2)))
-
- def _drain_stderr(self):
- if self.process and self.process.stderr:
- for line in self.process.stderr:
- self._stderr_lines.append(line)
+ return (abs(max(arr)) + abs(min(arr))) / 2
def stop_recording(self):
self.is_running = False
if self.process and self.process.poll() is None:
self.process.terminate()
- try:
- self.process.wait(timeout=5)
- except subprocess.TimeoutExpired:
- self.process.kill()
- logging.warning("Whisper server process had to be killed after timeout")
+ self.process.wait(5000)
def start_local_whisper_server(self):
# Reduce verbose HTTP client logging from OpenAI/httpx
@@ -420,9 +357,6 @@ class RecordingTranscriber(QObject):
self.transcription.emit(_("Starting Whisper.cpp..."))
- if platform.system() == "Darwin" and platform.machine() == "arm64":
- self.transcription.emit(_("First time use of a model may take up to several minutest to load."))
-
self.process = None
server_executable = "whisper-server.exe" if sys.platform == "win32" else "whisper-server"
@@ -439,6 +373,8 @@ class RecordingTranscriber(QObject):
"--threads", str(os.getenv("BUZZ_WHISPERCPP_N_THREADS", (os.cpu_count() or 8) // 2)),
"--model", self.model_path,
"--no-timestamps",
+ # on Windows context causes duplications of last message
+ "--no-context",
# Protections against hallucinated repetition. Seems to be problem on macOS
# https://github.com/ggml-org/whisper.cpp/issues/1507
"--max-context", "64",
@@ -472,27 +408,20 @@ class RecordingTranscriber(QObject):
except Exception as e:
error_msg = f"Failed to start whisper-server subprocess: {str(e)}"
logging.error(error_msg)
+ self.error.emit(error_msg)
return
- # Drain stderr in a background thread to prevent pipe buffer from filling
- # up and blocking the subprocess (especially on Windows with compiled exe).
- self._stderr_lines = []
- stderr_thread = threading.Thread(target=self._drain_stderr, daemon=True)
- stderr_thread.start()
-
- # Wait for server to start and load model, checking periodically
- for i in range(100): # 10 seconds total, in 0.1s increments
- if not self.is_running or self.process.poll() is not None:
- break
- time.sleep(0.1)
+ # Wait for server to start and load model
+ time.sleep(10)
if self.process is not None and self.process.poll() is None:
self.transcription.emit(_("Starting transcription..."))
logging.debug(f"Whisper server started successfully.")
logging.debug(f"Model: {self.model_path}")
else:
- stderr_thread.join(timeout=2)
- stderr_output = b"".join(self._stderr_lines).decode(errors="replace")
+ stderr_output = ""
+ if self.process.stderr is not None:
+ stderr_output = self.process.stderr.read().decode()
logging.error(f"Whisper server failed to start. Error: {stderr_output}")
self.transcription.emit(_("Whisper server failed to start. Check logs for details."))
@@ -518,7 +447,4 @@ class RecordingTranscriber(QObject):
def __del__(self):
if self.process and self.process.poll() is None:
self.process.terminate()
- try:
- self.process.wait(timeout=5)
- except subprocess.TimeoutExpired:
- self.process.kill()
\ No newline at end of file
+ self.process.wait(5000)
\ No newline at end of file
diff --git a/buzz/transcriber/transcriber.py b/buzz/transcriber/transcriber.py
index 7e803e80..5a3518a5 100644
--- a/buzz/transcriber/transcriber.py
+++ b/buzz/transcriber/transcriber.py
@@ -153,9 +153,6 @@ class TranscriptionOptions:
enable_llm_translation: bool = False
llm_prompt: str = ""
llm_model: str = ""
- silence_threshold: float = 0.0025
- line_separator: str = "\n\n"
- transcription_step: float = 3.5
def humanize_language(language: str) -> str:
@@ -202,8 +199,6 @@ class FileTranscriptionTask:
output_directory: Optional[str] = None
source: Source = Source.FILE_IMPORT
file_path: Optional[str] = None
- original_file_path: Optional[str] = None # Original path before speech extraction
- delete_source_file: bool = False
url: Optional[str] = None
fraction_downloaded: float = 0.0
@@ -234,9 +229,6 @@ def get_output_file_path(
export_file_name_template: str | None = None,
):
input_file_name = os.path.splitext(os.path.basename(file_path))[0]
- # Remove "_speech" suffix from extracted speech files
- if input_file_name.endswith("_speech"):
- input_file_name = input_file_name[:-7]
date_time_now = datetime.datetime.now().strftime("%d-%b-%Y %H-%M-%S")
export_file_name_template = (
diff --git a/buzz/transcriber/whisper_cpp.py b/buzz/transcriber/whisper_cpp.py
index db4aff84..3b609e6d 100644
--- a/buzz/transcriber/whisper_cpp.py
+++ b/buzz/transcriber/whisper_cpp.py
@@ -109,11 +109,6 @@ class WhisperCpp:
"-f", file_to_process,
]
- # Add VAD if the model is available
- vad_model_path = os.path.join(os.path.dirname(whisper_cli_path), "ggml-silero-v6.2.0.bin")
- if os.path.exists(vad_model_path):
- cmd.extend(["--vad", "--vad-model", vad_model_path])
-
# Add translate flag if needed
if task.transcription_options.task == Task.TRANSLATE:
cmd.extend(["--translate"])
@@ -185,165 +180,79 @@ class WhisperCpp:
# Extract word-level timestamps from tokens array
# Combine tokens into words using similar logic as whisper_cpp.py
transcription = result.get("transcription", [])
-
- # Languages that don't use spaces between words
- # For these, each token is treated as a separate word
- non_space_languages = {"zh", "ja", "th", "lo", "km", "my"}
- is_non_space_language = language in non_space_languages
-
for segment_data in transcription:
tokens = segment_data.get("tokens", [])
-
- if is_non_space_language:
- # For languages without spaces (Chinese, Japanese, etc.),
- # each complete UTF-8 character is treated as a separate word.
- # Some characters may be split across multiple tokens as raw bytes.
- char_buffer = b""
- char_start = 0
- char_end = 0
-
- def flush_complete_chars(buffer: bytes, start: int, end: int):
- """Extract and output all complete UTF-8 characters from buffer.
- Returns any remaining incomplete bytes."""
- nonlocal segments
- remaining = buffer
- pos = 0
-
- while pos < len(remaining):
- # Try to decode one character at a time
- for char_len in range(1, min(5, len(remaining) - pos + 1)):
- try:
- char = remaining[pos:pos + char_len].decode("utf-8")
- # Successfully decoded a character
- if char.strip():
- segments.append(
- Segment(
- start=start,
- end=end,
- text=char,
- translation=""
- )
- )
- pos += char_len
- break
- except UnicodeDecodeError:
- if char_len == 4 or pos + char_len >= len(remaining):
- # Incomplete character at end - return as remaining
- return remaining[pos:]
- else:
- # Couldn't decode, might be incomplete at end
- return remaining[pos:]
-
- return b""
-
- for token_data in tokens:
- token_text = token_data.get("text", "")
-
- # Skip special tokens like [_TT_], [_BEG_]
- if token_text.startswith("[_"):
- continue
-
- if not token_text:
- continue
-
- token_start = int(token_data.get("offsets", {}).get("from", 0))
- token_end = int(token_data.get("offsets", {}).get("to", 0))
-
- # Convert latin-1 string back to original bytes
- token_bytes = token_text.encode("latin-1")
-
- if not char_buffer:
- char_start = token_start
-
- char_buffer += token_bytes
- char_end = token_end
-
- # Try to flush complete characters
- char_buffer = flush_complete_chars(char_buffer, char_start, char_end)
-
- # If buffer was fully flushed, reset start time for next char
- if not char_buffer:
- char_start = token_end
-
- # Flush any remaining buffer at end of segment
- if char_buffer:
- flush_complete_chars(char_buffer, char_start, char_end)
- else:
- # For space-separated languages, accumulate tokens into words
- word_buffer = b""
- word_start = 0
- word_end = 0
-
- def append_word(buffer: bytes, start: int, end: int):
- """Try to decode and append a word segment, handling multi-byte UTF-8"""
- if not buffer:
- return True
-
- # Try to decode as UTF-8
- # https://github.com/ggerganov/whisper.cpp/issues/1798
- try:
- text = buffer.decode("utf-8").strip()
- if text:
- segments.append(
- Segment(
- start=start,
- end=end,
- text=text,
- translation=""
- )
+
+ # Accumulate tokens into words
+ word_buffer = b""
+ word_start = 0
+ word_end = 0
+
+ def append_word(buffer: bytes, start: int, end: int):
+ """Try to decode and append a word segment, handling multi-byte UTF-8"""
+ if not buffer:
+ return True
+
+ # Try to decode as UTF-8
+ # https://github.com/ggerganov/whisper.cpp/issues/1798
+ try:
+ text = buffer.decode("utf-8").strip()
+ if text:
+ segments.append(
+ Segment(
+ start=start,
+ end=end,
+ text=text,
+ translation=""
)
- return True
- except UnicodeDecodeError:
- # Multi-byte character is split, continue accumulating
- return False
-
- for token_data in tokens:
- # Token text is read as latin-1, need to convert to bytes to get original data
- token_text = token_data.get("text", "")
-
- # Skip special tokens like [_TT_], [_BEG_]
- if token_text.startswith("[_"):
- continue
-
- if not token_text:
- continue
-
- # Skip low probability tokens
- token_p = token_data.get("p", 1.0)
- if token_p < 0.01:
- continue
-
- token_start = int(token_data.get("offsets", {}).get("from", 0))
- token_end = int(token_data.get("offsets", {}).get("to", 0))
-
- # Convert latin-1 string back to original bytes
- # (latin-1 preserves byte values as code points)
- token_bytes = token_text.encode("latin-1")
-
- # Check if token starts with space - indicates new word
- if token_bytes.startswith(b" ") and word_buffer:
- # Save previous word
- append_word(word_buffer, word_start, word_end)
- # Start new word
- word_buffer = token_bytes
+ )
+ return True
+ except UnicodeDecodeError:
+ # Multi-byte character is split, continue accumulating
+ return False
+
+ for token_data in tokens:
+ # Token text is read as latin-1, need to convert to bytes to get original data
+ token_text = token_data.get("text", "")
+
+ # Skip special tokens like [_TT_], [_BEG_]
+ if token_text.startswith("[_"):
+ continue
+
+ if not token_text:
+ continue
+
+ token_start = int(token_data.get("offsets", {}).get("from", 0))
+ token_end = int(token_data.get("offsets", {}).get("to", 0))
+
+ # Convert latin-1 string back to original bytes
+ # (latin-1 preserves byte values as code points)
+ token_bytes = token_text.encode("latin-1")
+
+ # Check if token starts with space - indicates new word
+ if token_bytes.startswith(b" ") and word_buffer:
+ # Save previous word
+ append_word(word_buffer, word_start, word_end)
+ # Start new word
+ word_buffer = token_bytes
+ word_start = token_start
+ word_end = token_end
+ elif token_bytes.startswith(b", "):
+ # Handle comma - save word with comma, then start new word
+ word_buffer += b","
+ append_word(word_buffer, word_start, word_end)
+ word_buffer = token_bytes.lstrip(b",")
+ word_start = token_start
+ word_end = token_end
+ else:
+ # Accumulate token into current word
+ if not word_buffer:
word_start = token_start
- word_end = token_end
- elif token_bytes.startswith(b", "):
- # Handle comma - save word with comma, then start new word
- word_buffer += b","
- append_word(word_buffer, word_start, word_end)
- word_buffer = token_bytes.lstrip(b",")
- word_start = token_start
- word_end = token_end
- else:
- # Accumulate token into current word
- if not word_buffer:
- word_start = token_start
- word_buffer += token_bytes
- word_end = token_end
-
- # Add the last word
- append_word(word_buffer, word_start, word_end)
+ word_buffer += token_bytes
+ word_end = token_end
+
+ # Add the last word
+ append_word(word_buffer, word_start, word_end)
else:
# Use segment-level timestamps
transcription = result.get("transcription", [])
diff --git a/buzz/transcriber/whisper_file_transcriber.py b/buzz/transcriber/whisper_file_transcriber.py
index 8633043c..a0882a7d 100644
--- a/buzz/transcriber/whisper_file_transcriber.py
+++ b/buzz/transcriber/whisper_file_transcriber.py
@@ -5,10 +5,6 @@ import multiprocessing
import re
import os
import sys
-
-# Preload CUDA libraries before importing torch - required for subprocess contexts
-from buzz import cuda_setup # noqa: F401
-
import torch
import platform
import subprocess
@@ -25,10 +21,9 @@ from buzz.conn import pipe_stderr
from buzz.model_loader import ModelType, WhisperModelSize, map_language_to_mms
from buzz.transformers_whisper import TransformersTranscriber
from buzz.transcriber.file_transcriber import FileTranscriber
-from buzz.transcriber.transcriber import FileTranscriptionTask, Segment, Task, DEFAULT_WHISPER_TEMPERATURE
+from buzz.transcriber.transcriber import FileTranscriptionTask, Segment, Task
from buzz.transcriber.whisper_cpp import WhisperCpp
-import av
import faster_whisper
import whisper
import stable_whisper
@@ -37,22 +32,6 @@ from stable_whisper import WhisperResult
PROGRESS_REGEX = re.compile(r"\d+(\.\d+)?%")
-def check_file_has_audio_stream(file_path: str) -> None:
- """Check if a media file has at least one audio stream.
-
- Raises:
- ValueError: If the file has no audio streams.
- """
- try:
- with av.open(file_path) as container:
- if len(container.streams.audio) == 0:
- raise ValueError("No audio streams found")
- except av.error.InvalidDataError as e:
- raise ValueError(f"Invalid media file: {e}")
- except av.error.FileNotFoundError:
- raise ValueError("File not found")
-
-
class WhisperFileTranscriber(FileTranscriber):
"""WhisperFileTranscriber transcribes an audio file to text, writes the text to a file, and then opens the file
using the default program for opening txt files."""
@@ -71,7 +50,6 @@ class WhisperFileTranscriber(FileTranscriber):
self.stopped = False
self.recv_pipe = None
self.send_pipe = None
- self.error_message = None
def transcribe(self) -> List[Segment]:
time_started = datetime.datetime.now()
@@ -137,7 +115,7 @@ class WhisperFileTranscriber(FileTranscriber):
logging.debug("Whisper process was terminated (exit code: %s), treating as cancellation", self.current_process.exitcode)
raise Exception("Transcription was canceled")
else:
- raise Exception(self.error_message or "Unknown error")
+ raise Exception("Unknown error")
return self.segments
@@ -145,6 +123,10 @@ class WhisperFileTranscriber(FileTranscriber):
def transcribe_whisper(
cls, stderr_conn: Connection, task: FileTranscriptionTask
) -> None:
+ # Preload CUDA libraries in the subprocess - must be done before importing torch
+ # This is needed because multiprocessing creates a fresh process without the main process's preloaded libraries
+ from buzz import cuda_setup # noqa: F401
+
# Patch subprocess on Windows to prevent console window flash
# This is needed because multiprocessing spawns a new process without the main process patches
if sys.platform == "win32":
@@ -176,36 +158,27 @@ class WhisperFileTranscriber(FileTranscriber):
subprocess.run = _patched_run
subprocess.Popen = _PatchedPopen
- try:
- # Check if the file has audio streams before processing
- check_file_has_audio_stream(task.file_path)
+ with pipe_stderr(stderr_conn):
+ if task.transcription_options.model.model_type == ModelType.WHISPER_CPP:
+ segments = cls.transcribe_whisper_cpp(task)
+ elif task.transcription_options.model.model_type == ModelType.HUGGING_FACE:
+ sys.stderr.write("0%\n")
+ segments = cls.transcribe_hugging_face(task)
+ sys.stderr.write("100%\n")
+ elif (
+ task.transcription_options.model.model_type == ModelType.FASTER_WHISPER
+ ):
+ segments = cls.transcribe_faster_whisper(task)
+ elif task.transcription_options.model.model_type == ModelType.WHISPER:
+ segments = cls.transcribe_openai_whisper(task)
+ else:
+ raise Exception(
+ f"Invalid model type: {task.transcription_options.model.model_type}"
+ )
- with pipe_stderr(stderr_conn):
- if task.transcription_options.model.model_type == ModelType.WHISPER_CPP:
- segments = cls.transcribe_whisper_cpp(task)
- elif task.transcription_options.model.model_type == ModelType.HUGGING_FACE:
- sys.stderr.write("0%\n")
- segments = cls.transcribe_hugging_face(task)
- sys.stderr.write("100%\n")
- elif (
- task.transcription_options.model.model_type == ModelType.FASTER_WHISPER
- ):
- segments = cls.transcribe_faster_whisper(task)
- elif task.transcription_options.model.model_type == ModelType.WHISPER:
- segments = cls.transcribe_openai_whisper(task)
- else:
- raise Exception(
- f"Invalid model type: {task.transcription_options.model.model_type}"
- )
-
- segments_json = json.dumps(segments, ensure_ascii=True, default=vars)
- sys.stderr.write(f"segments = {segments_json}\n")
- sys.stderr.write(WhisperFileTranscriber.READ_LINE_THREAD_STOP_TOKEN + "\n")
- except Exception as e:
- # Send error message back to the parent process
- stderr_conn.send(f"error = {str(e)}\n")
- stderr_conn.send(WhisperFileTranscriber.READ_LINE_THREAD_STOP_TOKEN + "\n")
- raise
+ segments_json = json.dumps(segments, ensure_ascii=True, default=vars)
+ sys.stderr.write(f"segments = {segments_json}\n")
+ sys.stderr.write(WhisperFileTranscriber.READ_LINE_THREAD_STOP_TOKEN + "\n")
@classmethod
def transcribe_whisper_cpp(cls, task: FileTranscriptionTask) -> List[Segment]:
@@ -292,7 +265,7 @@ class WhisperFileTranscriber(FileTranscriber):
language=task.transcription_options.language,
task=task.transcription_options.task.value,
# Prevent crash on Windows https://github.com/SYSTRAN/faster-whisper/issues/71#issuecomment-1526263764
- temperature = 0 if platform.system() == "Windows" else DEFAULT_WHISPER_TEMPERATURE,
+ temperature = 0 if platform.system() == "Windows" else task.transcription_options.temperature,
initial_prompt=task.transcription_options.initial_prompt,
word_timestamps=task.transcription_options.word_level_timings,
no_speech_threshold=0.4,
@@ -349,10 +322,9 @@ class WhisperFileTranscriber(FileTranscriber):
audio=whisper_audio.load_audio(task.file_path),
language=task.transcription_options.language,
task=task.transcription_options.task.value,
- temperature=DEFAULT_WHISPER_TEMPERATURE,
+ temperature=task.transcription_options.temperature,
initial_prompt=task.transcription_options.initial_prompt,
no_speech_threshold=0.4,
- fp16=False,
)
return [
Segment(
@@ -372,7 +344,6 @@ class WhisperFileTranscriber(FileTranscriber):
temperature=task.transcription_options.temperature,
initial_prompt=task.transcription_options.initial_prompt,
verbose=False,
- fp16=False,
)
segments = result.get("segments")
return [
@@ -444,8 +415,6 @@ class WhisperFileTranscriber(FileTranscriber):
for segment in segments_dict
]
self.segments = segments
- elif line.startswith("error = "):
- self.error_message = line[8:]
else:
try:
match = PROGRESS_REGEX.search(line)
diff --git a/buzz/transformers_whisper.py b/buzz/transformers_whisper.py
index d9995d5a..96ee0f47 100644
--- a/buzz/transformers_whisper.py
+++ b/buzz/transformers_whisper.py
@@ -3,10 +3,6 @@ import sys
import logging
import platform
import numpy as np
-
-# Preload CUDA libraries before importing torch
-from buzz import cuda_setup # noqa: F401
-
import torch
import requests
from typing import Union
@@ -229,7 +225,7 @@ class TransformersTranscriber:
model, processor, use_8bit = self._load_peft_model(device, torch_dtype)
else:
use_safetensors = True
- if os.path.isdir(self.model_id):
+ if os.path.exists(self.model_id):
safetensors_files = [f for f in os.listdir(self.model_id) if f.endswith(".safetensors")]
use_safetensors = len(safetensors_files) > 0
diff --git a/buzz/translator.py b/buzz/translator.py
index dfb0b948..ffeecf7b 100644
--- a/buzz/translator.py
+++ b/buzz/translator.py
@@ -1,22 +1,17 @@
import os
-import re
import logging
import queue
-from typing import Optional, List, Tuple
+from typing import Optional
from openai import OpenAI, max_retries
from PyQt6.QtCore import QObject, pyqtSignal
-from buzz.locale import _
from buzz.settings.settings import Settings
from buzz.store.keyring_store import get_password, Key
from buzz.transcriber.transcriber import TranscriptionOptions
from buzz.widgets.transcriber.advanced_settings_dialog import AdvancedSettingsDialog
-BATCH_SIZE = 10
-
-
class Translator(QObject):
translation = pyqtSignal(str, int)
finished = pyqtSignal()
@@ -56,94 +51,6 @@ class Translator(QObject):
max_retries=0
)
- def _translate_single(self, transcript: str, transcript_id: int) -> Tuple[str, int]:
- """Translate a single transcript via the API. Returns (translation, transcript_id)."""
- try:
- completion = self.openai_client.chat.completions.create(
- model=self.transcription_options.llm_model,
- messages=[
- {"role": "system", "content": self.transcription_options.llm_prompt},
- {"role": "user", "content": transcript}
- ],
- timeout=60.0,
- )
- except Exception as e:
- completion = None
- logging.error(f"Translation error! Server response: {e}")
-
- if completion and completion.choices and completion.choices[0].message:
- logging.debug(f"Received translation response: {completion}")
- return completion.choices[0].message.content, transcript_id
- else:
- logging.error(f"Translation error! Server response: {completion}")
- # Translation error
- return "", transcript_id
-
- def _translate_batch(self, items: List[Tuple[str, int]]) -> List[Tuple[str, int]]:
- """Translate multiple transcripts in a single API call.
- Returns list of (translation, transcript_id) in the same order as input."""
- numbered_parts = []
- for i, (transcript, _) in enumerate(items, 1):
- numbered_parts.append(f"[{i}] {transcript}")
- combined = "\n".join(numbered_parts)
-
- batch_prompt = (
- f"{self.transcription_options.llm_prompt}\n\n"
- f"You will receive {len(items)} numbered texts. "
- f"Process each one separately according to the instruction above "
- f"and return them in the exact same numbered format, e.g.:\n"
- f"[1] processed text\n[2] processed text"
- )
-
- try:
- completion = self.openai_client.chat.completions.create(
- model=self.transcription_options.llm_model,
- messages=[
- {"role": "system", "content": batch_prompt},
- {"role": "user", "content": combined}
- ],
- timeout=60.0,
- )
- except Exception as e:
- completion = None
- logging.error(f"Batch translation error! Server response: {e}")
-
- if not (completion and completion.choices and completion.choices[0].message):
- logging.error(f"Batch translation error! Server response: {completion}")
- # Translation error
- return [("", tid) for _, tid in items]
-
- response_text = completion.choices[0].message.content
- logging.debug(f"Received batch translation response: {response_text}")
-
- translations = self._parse_batch_response(response_text, len(items))
-
- results = []
- for i, (_, transcript_id) in enumerate(items):
- if i < len(translations):
- results.append((translations[i], transcript_id))
- else:
- # Translation error
- results.append(("", transcript_id))
- return results
-
- @staticmethod
- def _parse_batch_response(response: str, expected_count: int) -> List[str]:
- """Parse a numbered batch response like '[1] text\\n[2] text' into a list of strings."""
- # Split on [N] markers — re.split with a group returns: [before, group1, after1, group2, after2, ...]
- parts = re.split(r'\[(\d+)\]\s*', response)
-
- translations = {}
- for i in range(1, len(parts) - 1, 2):
- num = int(parts[i])
- text = parts[i + 1].strip()
- translations[num] = text
-
- return [
- translations.get(i, "")
- for i in range(1, expected_count + 1)
- ]
-
def start(self):
logging.debug("Starting translation queue")
@@ -155,32 +62,30 @@ class Translator(QObject):
logging.debug("Translation queue received stop signal")
break
- # Collect a batch: start with the first item, then drain more
- batch = [item]
- stop_after_batch = False
- while len(batch) < BATCH_SIZE:
- try:
- next_item = self.queue.get_nowait()
- if next_item is None:
- stop_after_batch = True
- break
- batch.append(next_item)
- except queue.Empty:
- break
+ transcript, transcript_id = item
- if len(batch) == 1:
- transcript, transcript_id = batch[0]
- translation, tid = self._translate_single(transcript, transcript_id)
- self.translation.emit(translation, tid)
+ try:
+ completion = self.openai_client.chat.completions.create(
+ model=self.transcription_options.llm_model,
+ messages=[
+ {"role": "system", "content": self.transcription_options.llm_prompt},
+ {"role": "user", "content": transcript}
+ ],
+ timeout=30.0,
+
+ )
+ except Exception as e:
+ completion = None
+ logging.error(f"Translation error! Server response: {e}")
+
+ if completion and completion.choices and completion.choices[0].message:
+ logging.debug(f"Received translation response: {completion}")
+ next_translation = completion.choices[0].message.content
else:
- logging.debug(f"Translating batch of {len(batch)} in single request")
- results = self._translate_batch(batch)
- for translation, tid in results:
- self.translation.emit(translation, tid)
+ logging.error(f"Translation error! Server response: {completion}")
+ next_translation = "Translation error, see logs!"
- if stop_after_batch:
- logging.debug("Translation queue received stop signal")
- break
+ self.translation.emit(next_translation, transcript_id)
logging.debug("Translation queue stopped")
self.finished.emit()
diff --git a/buzz/update_checker.py b/buzz/update_checker.py
deleted file mode 100644
index ff052af4..00000000
--- a/buzz/update_checker.py
+++ /dev/null
@@ -1,163 +0,0 @@
-import json
-import logging
-import platform
-from datetime import datetime
-from typing import Optional
-from dataclasses import dataclass
-
-from PyQt6.QtCore import QObject, pyqtSignal, QUrl
-from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
-from buzz.__version__ import VERSION
-from buzz.settings.settings import Settings
-
-
-@dataclass
-class UpdateInfo:
- version: str
- release_notes: str
- download_urls: list
-
-class UpdateChecker(QObject):
- update_available = pyqtSignal(object)
-
- VERSION_JSON_URL = "https://github.com/chidiwilliams/buzz/releases/latest/download/version_info.json"
-
- CHECK_INTERVAL_DAYS = 7
-
- def __init__(
- self,
- settings: Settings,
- network_manager: Optional[QNetworkAccessManager] = None,
- parent: Optional[QObject] = None
- ):
- super().__init__(parent)
-
- self.settings = settings
-
- if network_manager is None:
- network_manager = QNetworkAccessManager(self)
- self.network_manager = network_manager
- self.network_manager.finished.connect(self._on_reply_finished)
-
- def should_check_for_updates(self) -> bool:
- """Check if we are on Windows/macOS and if 7 days passed"""
- system = platform.system()
- if system not in ("Windows", "Darwin"):
- logging.debug("Skipping update check on linux")
- return False
-
- last_check = self.settings.value(
- Settings.Key.LAST_UPDATE_CHECK,
- "",
- )
-
- if last_check:
- try:
- last_check_date = datetime.fromisoformat(last_check)
- days_since_check = (datetime.now() - last_check_date).days
- if days_since_check < self.CHECK_INTERVAL_DAYS:
- logging.debug(
- f"Skipping update check, last checked {days_since_check} days ago"
- )
- return False
- except ValueError:
- #Invalid date format
- pass
-
- return True
-
- def check_for_updates(self) -> None:
- """Start the network request"""
- if not self.should_check_for_updates():
- return
-
- logging.info("Checking for updates...")
-
- url = QUrl(self.VERSION_JSON_URL)
- request = QNetworkRequest(url)
- self.network_manager.get(request)
-
- def _on_reply_finished(self, reply: QNetworkReply) -> None:
- """Handles the network reply for version.json fetch"""
- self.settings.set_value(
- Settings.Key.LAST_UPDATE_CHECK,
- datetime.now().isoformat()
- )
-
- if reply.error() != QNetworkReply.NetworkError.NoError:
- error_msg = f"Failed to check for updates: {reply.errorString()}"
- logging.error(error_msg)
- reply.deleteLater()
- return
-
- try:
- data = json.loads(reply.readAll().data().decode("utf-8"))
- reply.deleteLater()
-
- remote_version = data.get("version", "")
- release_notes = data.get("release_notes", "")
- download_urls = data.get("download_urls", {})
-
- #Get the download url for current platform
- download_url = self._get_download_url(download_urls)
-
- if self._is_newer_version(remote_version):
- logging.info(f"Update available: {remote_version}")
-
- #Store the available version
- self.settings.set_value(
- Settings.Key.UPDATE_AVAILABLE_VERSION,
- remote_version
- )
-
- update_info = UpdateInfo(
- version=remote_version,
- release_notes=release_notes,
- download_urls=download_url
- )
- self.update_available.emit(update_info)
-
- else:
- logging.info("No update available")
- self.settings.set_value(
- Settings.Key.UPDATE_AVAILABLE_VERSION,
- ""
- )
-
- except (json.JSONDecodeError, KeyError) as e:
- error_msg = f"Failed to parse version info: {e}"
- logging.error(error_msg)
-
- def _get_download_url(self, download_urls: dict) -> list:
- system = platform.system()
- machine = platform.machine().lower()
-
- if system == "Windows":
- urls = download_urls.get("windows_x64", [])
- elif system == "Darwin":
- if machine in ("arm64", "aarch64"):
- urls = download_urls.get("macos_arm", [])
- else:
- urls = download_urls.get("macos_x86", [])
- else:
- urls = []
-
- return urls if isinstance(urls, list) else [urls]
-
- def _is_newer_version(self, remote_version: str) -> bool:
- """Compare remote version with current version"""
- try:
- current_parts = [int(x) for x in VERSION.split(".")]
- remote_parts = [int(x) for x in remote_version.split(".")]
-
- #pad with zeros if needed
- while len(current_parts) < len(remote_parts):
- current_parts.append(0)
- while len(remote_parts) < len(current_parts):
- remote_parts.append(0)
-
- return remote_parts > current_parts
-
- except ValueError:
- logging.error(f"Invalid version format: {VERSION} or {remote_version}")
- return False
\ No newline at end of file
diff --git a/buzz/widgets/application.py b/buzz/widgets/application.py
index 8fad584b..0448298c 100755
--- a/buzz/widgets/application.py
+++ b/buzz/widgets/application.py
@@ -34,7 +34,6 @@ class Application(QApplication):
if darkdetect.isDark():
self.styleHints().setColorScheme(Qt.ColorScheme.Dark)
- self.setStyleSheet("QCheckBox::indicator:unchecked { border: 1px solid white; }")
if sys.platform.startswith("win"):
self.setStyle(QStyleFactory.create("Fusion"))
diff --git a/buzz/widgets/audio_meter_widget.py b/buzz/widgets/audio_meter_widget.py
index e9664740..11afa5f6 100644
--- a/buzz/widgets/audio_meter_widget.py
+++ b/buzz/widgets/audio_meter_widget.py
@@ -1,12 +1,10 @@
from typing import Optional
from PyQt6 import QtGui
-from PyQt6.QtCore import Qt, QRect
+from PyQt6.QtCore import Qt
from PyQt6.QtGui import QColor, QPainter
from PyQt6.QtWidgets import QWidget
-from buzz.locale import _
-
class AudioMeterWidget(QWidget):
current_amplitude: float
@@ -22,17 +20,13 @@ class AudioMeterWidget(QWidget):
def __init__(self, parent: Optional[QWidget] = None):
super().__init__(parent)
self.setMinimumWidth(10)
- self.setFixedHeight(56)
+ self.setFixedHeight(16)
- self.BARS_HEIGHT = 28
# Extra padding to fix layout
- self.PADDING_TOP = 14
+ self.PADDING_TOP = 3
self.current_amplitude = 0.0
- self.average_amplitude = 0.0
- self.queue_size = 0
-
self.MINIMUM_AMPLITUDE = 0.00005 # minimum amplitude to show the first bar
self.AMPLITUDE_SCALE_FACTOR = 10 # scale the amplitudes such that 1/AMPLITUDE_SCALE_FACTOR will show all bars
@@ -64,39 +58,18 @@ class AudioMeterWidget(QWidget):
center_x - ((i + 1) * (self.BAR_MARGIN + self.BAR_WIDTH)),
rect.top() + self.PADDING_TOP,
self.BAR_WIDTH,
- self.BARS_HEIGHT - self.PADDING_TOP,
+ rect.height() - self.PADDING_TOP,
)
# draw to right
painter.drawRect(
center_x + (self.BAR_MARGIN + (i * (self.BAR_MARGIN + self.BAR_WIDTH))),
rect.top() + self.PADDING_TOP,
self.BAR_WIDTH,
- self.BARS_HEIGHT - self.PADDING_TOP,
+ rect.height() - self.PADDING_TOP,
)
- text_rect = QRect(rect.left(), self.BARS_HEIGHT, rect.width(), rect.height() - self.BARS_HEIGHT)
- painter.setPen(self.BAR_ACTIVE_COLOR)
- average_volume_label = _("Average volume")
- queue_label = _("Queue")
- painter.drawText(text_rect, Qt.AlignmentFlag.AlignCenter,
- f"{average_volume_label}: {self.average_amplitude:.4f} {queue_label}: {self.queue_size}")
-
- def reset_amplitude(self):
- self.current_amplitude = 0.0
- self.average_amplitude = 0.0
- self.queue_size = 0
- self.repaint()
-
def update_amplitude(self, amplitude: float):
self.current_amplitude = max(
amplitude, self.current_amplitude * self.SMOOTHING_FACTOR
)
- self.update()
-
- def update_average_amplitude(self, amplitude: float):
- self.average_amplitude = amplitude
- self.update()
-
- def update_queue_size(self, size: int):
- self.queue_size = size
- self.update()
+ self.repaint()
diff --git a/buzz/widgets/icon.py b/buzz/widgets/icon.py
index 12718725..298232a1 100644
--- a/buzz/widgets/icon.py
+++ b/buzz/widgets/icon.py
@@ -129,4 +129,3 @@ ADD_ICON_PATH = get_path("assets/add_FILL0_wght700_GRAD0_opsz48.svg")
URL_ICON_PATH = get_path("assets/url.svg")
TRASH_ICON_PATH = get_path("assets/delete_FILL0_wght700_GRAD0_opsz48.svg")
CANCEL_ICON_PATH = get_path("assets/cancel_FILL0_wght700_GRAD0_opsz48.svg")
-UPDATE_ICON_PATH = get_path("assets/update_FILL0_wght700_GRAD0_opsz48.svg")
\ No newline at end of file
diff --git a/buzz/widgets/main_window.py b/buzz/widgets/main_window.py
index f877321a..de790267 100644
--- a/buzz/widgets/main_window.py
+++ b/buzz/widgets/main_window.py
@@ -1,5 +1,6 @@
import os
import logging
+import keyring
from typing import Tuple, List, Optional
from uuid import UUID
@@ -24,8 +25,6 @@ from buzz.db.service.transcription_service import TranscriptionService
from buzz.file_transcriber_queue_worker import FileTranscriberQueueWorker
from buzz.locale import _
from buzz.settings.settings import APP_NAME, Settings
-from buzz.update_checker import UpdateChecker, UpdateInfo
-from buzz.widgets.update_dialog import UpdateDialog
from buzz.settings.shortcuts import Shortcuts
from buzz.store.keyring_store import set_password, Key
from buzz.transcriber.transcriber import (
@@ -43,7 +42,6 @@ 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 (
TranscriptionTaskFolderWatcher,
- SUPPORTED_EXTENSIONS,
)
from buzz.widgets.transcription_tasks_table_widget import (
TranscriptionTasksTableWidget,
@@ -72,9 +70,6 @@ class MainWindow(QMainWindow):
self.quit_on_complete = False
self.transcription_service = transcription_service
- #update checker
- self._update_info: Optional[UpdateInfo] = None
-
self.toolbar = MainWindowToolbar(shortcuts=self.shortcuts, parent=self)
self.toolbar.new_transcription_action_triggered.connect(
self.on_new_transcription_action_triggered
@@ -92,7 +87,6 @@ class MainWindow(QMainWindow):
self.on_stop_transcription_action_triggered
)
self.addToolBar(self.toolbar)
- self.toolbar.update_action_triggered.connect(self.on_update_action_triggered)
self.setUnifiedTitleAndToolBarOnMac(True)
self.preferences = self.load_preferences(settings=self.settings)
@@ -107,9 +101,6 @@ class MainWindow(QMainWindow):
self.menu_bar.import_url_action_triggered.connect(
self.on_new_url_transcription_action_triggered
)
- self.menu_bar.import_folder_action_triggered.connect(
- self.on_import_folder_action_triggered
- )
self.menu_bar.shortcuts_changed.connect(self.on_shortcuts_changed)
self.menu_bar.openai_api_key_changed.connect(
self.on_openai_access_token_changed
@@ -162,9 +153,6 @@ class MainWindow(QMainWindow):
self.transcription_viewer_widget = None
- #Initialize and run update checker
- self._init_update_checker()
-
def on_preferences_changed(self, preferences: Preferences):
self.preferences = preferences
self.save_preferences(preferences)
@@ -268,20 +256,6 @@ class MainWindow(QMainWindow):
if url is not None:
self.open_file_transcriber_widget(url=url)
- def on_import_folder_action_triggered(self):
- folder = QFileDialog.getExistingDirectory(self, _("Select folder"))
- if not folder:
- return
- file_paths = []
- for dirpath, _dirs, filenames in os.walk(folder):
- for filename in filenames:
- ext = os.path.splitext(filename)[1].lower()
- if ext in SUPPORTED_EXTENSIONS:
- file_paths.append(os.path.join(dirpath, filename))
- if not file_paths:
- return
- self.open_file_transcriber_widget(file_paths)
-
def open_file_transcriber_widget(
self, file_paths: Optional[List[str]] = None, url: Optional[str] = None
):
@@ -418,7 +392,6 @@ class MainWindow(QMainWindow):
basename = os.path.basename(task.file_path)
name = os.path.splitext(basename)[0] # Remove .wav extension
self.transcription_service.update_transcription_file_and_name(task.uid, task.file_path, name)
-
self.transcription_service.update_transcription_as_completed(task.uid, segments)
self.table_widget.refresh_row(task.uid)
@@ -443,6 +416,8 @@ class MainWindow(QMainWindow):
self.save_geometry()
def closeEvent(self, event: QtGui.QCloseEvent) -> None:
+ logging.debug("Starting MainWindow closeEvent")
+
self.save_geometry()
self.settings.settings.sync()
@@ -502,27 +477,3 @@ class MainWindow(QMainWindow):
self.setBaseSize(1240, 600)
self.resize(1240, 600)
self.settings.end_group()
-
- def _init_update_checker(self):
- """Initializes and runs the update checker."""
- self.update_checker = UpdateChecker(settings=self.settings, parent=self)
- self.update_checker.update_available.connect(self._on_update_available)
-
- # Check for updates on startup
- self.update_checker.check_for_updates()
-
- def _on_update_available(self, update_info: UpdateInfo):
- """Called when an update is available."""
- self._update_info = update_info
- self.toolbar.set_update_available(True)
-
- def on_update_action_triggered(self):
- """Called when user clicks the update action in toolbar."""
- if self._update_info is None:
- return
-
- dialog = UpdateDialog(
- update_info=self._update_info,
- parent=self
- )
- dialog.exec()
\ No newline at end of file
diff --git a/buzz/widgets/main_window_toolbar.py b/buzz/widgets/main_window_toolbar.py
index fdbc8a2e..7f9cba3f 100644
--- a/buzz/widgets/main_window_toolbar.py
+++ b/buzz/widgets/main_window_toolbar.py
@@ -16,7 +16,6 @@ from buzz.widgets.icon import (
EXPAND_ICON_PATH,
CANCEL_ICON_PATH,
TRASH_ICON_PATH,
- UPDATE_ICON_PATH,
)
from buzz.widgets.recording_transcriber_widget import RecordingTranscriberWidget
from buzz.widgets.toolbar import ToolBar
@@ -27,7 +26,6 @@ class MainWindowToolbar(ToolBar):
new_url_transcription_action_triggered: pyqtSignal
open_transcript_action_triggered: pyqtSignal
clear_history_action_triggered: pyqtSignal
- update_action_triggered: pyqtSignal
ICON_LIGHT_THEME_BACKGROUND = "#555"
ICON_DARK_THEME_BACKGROUND = "#AAA"
@@ -72,13 +70,6 @@ class MainWindowToolbar(ToolBar):
self.clear_history_action = Action(
Icon(TRASH_ICON_PATH, self), _("Clear History"), self
)
-
- self.update_action = Action(
- Icon(UPDATE_ICON_PATH, self), _("Update Available"), self
- )
- self.update_action_triggered = self.update_action.triggered
- self.update_action.setVisible(False)
-
self.clear_history_action_triggered = self.clear_history_action.triggered
self.clear_history_action.setDisabled(True)
@@ -95,10 +86,6 @@ class MainWindowToolbar(ToolBar):
self.clear_history_action,
]
)
-
- self.addSeparator()
- self.addAction(self.update_action)
-
self.setMovable(False)
self.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
@@ -106,6 +93,12 @@ class MainWindowToolbar(ToolBar):
self.record_action.setShortcut(
QKeySequence.fromString(self.shortcuts.get(Shortcut.OPEN_RECORD_WINDOW))
)
+ self.new_transcription_action.setShortcut(
+ QKeySequence.fromString(self.shortcuts.get(Shortcut.OPEN_IMPORT_WINDOW))
+ )
+ self.new_url_transcription_action.setShortcut(
+ QKeySequence.fromString(self.shortcuts.get(Shortcut.OPEN_IMPORT_URL_WINDOW))
+ )
self.stop_transcription_action.setShortcut(
QKeySequence.fromString(self.shortcuts.get(Shortcut.STOP_TRANSCRIPTION))
)
@@ -127,7 +120,3 @@ class MainWindowToolbar(ToolBar):
def set_clear_history_action_enabled(self, enabled: bool):
self.clear_history_action.setEnabled(enabled)
-
- def set_update_available(self, available: bool):
- """Shows or hides the update action in the toolbar."""
- self.update_action.setVisible(available)
diff --git a/buzz/widgets/menu_bar.py b/buzz/widgets/menu_bar.py
index f30857c0..fb757c5c 100644
--- a/buzz/widgets/menu_bar.py
+++ b/buzz/widgets/menu_bar.py
@@ -1,4 +1,3 @@
-import platform
import webbrowser
from typing import Optional
@@ -20,7 +19,6 @@ from buzz.widgets.preferences_dialog.preferences_dialog import (
class MenuBar(QMenuBar):
import_action_triggered = pyqtSignal()
import_url_action_triggered = pyqtSignal()
- import_folder_action_triggered = pyqtSignal()
shortcuts_changed = pyqtSignal()
openai_api_key_changed = pyqtSignal(str)
preferences_changed = pyqtSignal(Preferences)
@@ -43,17 +41,12 @@ class MenuBar(QMenuBar):
self.import_url_action = QAction(_("Import URL..."), self)
self.import_url_action.triggered.connect(self.import_url_action_triggered)
- self.import_folder_action = QAction(_("Import Folder..."), self)
- self.import_folder_action.triggered.connect(self.import_folder_action_triggered)
-
about_label = _("About")
about_action = QAction(f'{about_label} {APP_NAME}', self)
about_action.triggered.connect(self.on_about_action_triggered)
- about_action.setMenuRole(QAction.MenuRole.AboutRole)
self.preferences_action = QAction(_("Preferences..."), self)
self.preferences_action.triggered.connect(self.on_preferences_action_triggered)
- self.preferences_action.setMenuRole(QAction.MenuRole.PreferencesRole)
help_label = _("Help")
help_action = QAction(f'{help_label}', self)
@@ -64,10 +57,8 @@ class MenuBar(QMenuBar):
file_menu = self.addMenu(_("File"))
file_menu.addAction(self.import_action)
file_menu.addAction(self.import_url_action)
- file_menu.addAction(self.import_folder_action)
- help_menu_title = _("Help") + ("\u200B" if platform.system() == "Darwin" else "")
- help_menu = self.addMenu(help_menu_title)
+ help_menu = self.addMenu(_("Help"))
help_menu.addAction(about_action)
help_menu.addAction(help_action)
help_menu.addAction(self.preferences_action)
diff --git a/buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py b/buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
index e7a3c0c9..abc8c371 100644
--- a/buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
+++ b/buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py
@@ -44,16 +44,11 @@ class FolderWatchPreferencesWidget(QWidget):
checkbox.setObjectName("EnableFolderWatchCheckbox")
checkbox.stateChanged.connect(self.on_enable_changed)
- delete_checkbox = QCheckBox(_("Delete processed files"))
- delete_checkbox.setChecked(config.delete_processed_files)
- delete_checkbox.setObjectName("DeleteProcessedFilesCheckbox")
- delete_checkbox.stateChanged.connect(self.on_delete_processed_files_changed)
+ input_folder_browse_button = QPushButton(_("Browse"))
+ input_folder_browse_button.clicked.connect(self.on_click_browse_input_folder)
- self.input_folder_browse_button = QPushButton(_("Browse"))
- self.input_folder_browse_button.clicked.connect(self.on_click_browse_input_folder)
-
- self.output_folder_browse_button = QPushButton(_("Browse"))
- self.output_folder_browse_button.clicked.connect(self.on_click_browse_output_folder)
+ output_folder_browse_button = QPushButton(_("Browse"))
+ output_folder_browse_button.clicked.connect(self.on_click_browse_output_folder)
input_folder_row = QHBoxLayout()
self.input_folder_line_edit = LineEdit(config.input_directory, self)
@@ -62,7 +57,7 @@ class FolderWatchPreferencesWidget(QWidget):
self.input_folder_line_edit.setObjectName("InputFolderLineEdit")
input_folder_row.addWidget(self.input_folder_line_edit)
- input_folder_row.addWidget(self.input_folder_browse_button)
+ input_folder_row.addWidget(input_folder_browse_button)
output_folder_row = QHBoxLayout()
self.output_folder_line_edit = LineEdit(config.output_directory, self)
@@ -71,7 +66,7 @@ class FolderWatchPreferencesWidget(QWidget):
self.output_folder_line_edit.setObjectName("OutputFolderLineEdit")
output_folder_row.addWidget(self.output_folder_line_edit)
- output_folder_row.addWidget(self.output_folder_browse_button)
+ output_folder_row.addWidget(output_folder_browse_button)
openai_access_token = get_password(Key.OPENAI_API_KEY)
(
@@ -82,17 +77,15 @@ class FolderWatchPreferencesWidget(QWidget):
file_paths=[],
)
- self.transcription_form_widget = FileTranscriptionFormWidget(
+ transcription_form_widget = FileTranscriptionFormWidget(
transcription_options=transcription_options,
file_transcription_options=file_transcription_options,
parent=self,
)
- self.transcription_form_widget.transcription_options_changed.connect(
+ transcription_form_widget.transcription_options_changed.connect(
self.on_transcription_options_changed
)
- self.delete_checkbox = delete_checkbox
-
layout = QVBoxLayout(self)
folders_form_layout = QFormLayout()
@@ -100,17 +93,14 @@ class FolderWatchPreferencesWidget(QWidget):
folders_form_layout.addRow("", checkbox)
folders_form_layout.addRow(_("Input folder"), input_folder_row)
folders_form_layout.addRow(_("Output folder"), output_folder_row)
- folders_form_layout.addRow("", delete_checkbox)
- folders_form_layout.addWidget(self.transcription_form_widget)
+ folders_form_layout.addWidget(transcription_form_widget)
layout.addLayout(folders_form_layout)
- layout.addWidget(self.transcription_form_widget)
+ layout.addWidget(transcription_form_widget)
layout.addStretch()
self.setLayout(layout)
- self._set_settings_enabled(config.enabled)
-
def on_click_browse_input_folder(self):
folder = QFileDialog.getExistingDirectory(self, _("Select Input Folder"))
self.input_folder_line_edit.setText(folder)
@@ -129,22 +119,8 @@ class FolderWatchPreferencesWidget(QWidget):
self.config.output_directory = folder
self.config_changed.emit(self.config)
- def _set_settings_enabled(self, enabled: bool):
- self.input_folder_line_edit.setEnabled(enabled)
- self.input_folder_browse_button.setEnabled(enabled)
- self.output_folder_line_edit.setEnabled(enabled)
- self.output_folder_browse_button.setEnabled(enabled)
- self.delete_checkbox.setEnabled(enabled)
- self.transcription_form_widget.setEnabled(enabled)
-
def on_enable_changed(self, state: int):
- enabled = state == 2
- self.config.enabled = enabled
- self._set_settings_enabled(enabled)
- self.config_changed.emit(self.config)
-
- def on_delete_processed_files_changed(self, state: int):
- self.config.delete_processed_files = state == 2
+ self.config.enabled = state == 2
self.config_changed.emit(self.config)
def on_transcription_options_changed(
diff --git a/buzz/widgets/preferences_dialog/general_preferences_widget.py b/buzz/widgets/preferences_dialog/general_preferences_widget.py
index ff49f63c..af569091 100644
--- a/buzz/widgets/preferences_dialog/general_preferences_widget.py
+++ b/buzz/widgets/preferences_dialog/general_preferences_widget.py
@@ -188,14 +188,6 @@ class GeneralPreferencesWidget(QWidget):
layout.addRow(_("Live recording mode"), self.recording_transcriber_mode)
- export_note_label = QLabel(
- _("Note: Live recording export settings will be moved to the Advanced Settings in the Live Recording screen in a future version."),
- self,
- )
- export_note_label.setWordWrap(True)
- export_note_label.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
- layout.addRow("", export_note_label)
-
self.reduce_gpu_memory_enabled = self.settings.value(
key=Settings.Key.REDUCE_GPU_MEMORY, default_value=False
)
diff --git a/buzz/widgets/preferences_dialog/models/file_transcription_preferences.py b/buzz/widgets/preferences_dialog/models/file_transcription_preferences.py
index 91e31494..55ff1182 100644
--- a/buzz/widgets/preferences_dialog/models/file_transcription_preferences.py
+++ b/buzz/widgets/preferences_dialog/models/file_transcription_preferences.py
@@ -7,6 +7,7 @@ from buzz.model_loader import TranscriptionModel
from buzz.transcriber.transcriber import (
Task,
OutputFormat,
+ DEFAULT_WHISPER_TEMPERATURE,
TranscriptionOptions,
FileTranscriptionOptions,
)
@@ -19,6 +20,7 @@ class FileTranscriptionPreferences:
model: TranscriptionModel
word_level_timings: bool
extract_speech: bool
+ temperature: Tuple[float, ...]
initial_prompt: str
enable_llm_translation: bool
llm_prompt: str
@@ -31,6 +33,7 @@ class FileTranscriptionPreferences:
settings.setValue("model", self.model)
settings.setValue("word_level_timings", self.word_level_timings)
settings.setValue("extract_speech", self.extract_speech)
+ settings.setValue("temperature", self.temperature)
settings.setValue("initial_prompt", self.initial_prompt)
settings.setValue("enable_llm_translation", self.enable_llm_translation)
settings.setValue("llm_model", self.llm_model)
@@ -56,6 +59,7 @@ class FileTranscriptionPreferences:
extract_speech = False if extract_speech_value == "false" \
else bool(extract_speech_value)
+ temperature = settings.value("temperature", DEFAULT_WHISPER_TEMPERATURE)
initial_prompt = settings.value("initial_prompt", "")
enable_llm_translation_value = settings.value("enable_llm_translation", False)
enable_llm_translation = False if enable_llm_translation_value == "false" \
@@ -71,6 +75,7 @@ class FileTranscriptionPreferences:
else TranscriptionModel.default(),
word_level_timings=word_level_timings,
extract_speech=extract_speech,
+ temperature=temperature,
initial_prompt=initial_prompt,
enable_llm_translation=enable_llm_translation,
llm_model=llm_model,
@@ -89,6 +94,7 @@ class FileTranscriptionPreferences:
return FileTranscriptionPreferences(
task=transcription_options.task,
language=transcription_options.language,
+ temperature=transcription_options.temperature,
initial_prompt=transcription_options.initial_prompt,
enable_llm_translation=transcription_options.enable_llm_translation,
llm_model=transcription_options.llm_model,
@@ -109,6 +115,7 @@ class FileTranscriptionPreferences:
TranscriptionOptions(
task=self.task,
language=self.language,
+ temperature=self.temperature,
initial_prompt=self.initial_prompt,
enable_llm_translation=self.enable_llm_translation,
llm_model=self.llm_model,
diff --git a/buzz/widgets/preferences_dialog/models/folder_watch_preferences.py b/buzz/widgets/preferences_dialog/models/folder_watch_preferences.py
index 6dcea82a..f754a4ea 100644
--- a/buzz/widgets/preferences_dialog/models/folder_watch_preferences.py
+++ b/buzz/widgets/preferences_dialog/models/folder_watch_preferences.py
@@ -13,13 +13,11 @@ class FolderWatchPreferences:
input_directory: str
output_directory: str
file_transcription_options: FileTranscriptionPreferences
- delete_processed_files: bool = False
def save(self, settings: QSettings):
settings.setValue("enabled", self.enabled)
settings.setValue("input_folder", self.input_directory)
settings.setValue("output_directory", self.output_directory)
- settings.setValue("delete_processed_files", self.delete_processed_files)
settings.beginGroup("file_transcription_options")
self.file_transcription_options.save(settings)
settings.endGroup()
@@ -31,8 +29,6 @@ class FolderWatchPreferences:
input_folder = settings.value("input_folder", defaultValue="", type=str)
output_folder = settings.value("output_directory", defaultValue="", type=str)
- delete_value = settings.value("delete_processed_files", False)
- delete_processed_files = False if delete_value == "false" else bool(delete_value)
settings.beginGroup("file_transcription_options")
file_transcription_options = FileTranscriptionPreferences.load(settings)
settings.endGroup()
@@ -41,5 +37,4 @@ class FolderWatchPreferences:
input_directory=input_folder,
output_directory=output_folder,
file_transcription_options=file_transcription_options,
- delete_processed_files=delete_processed_files,
)
diff --git a/buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py b/buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
index 66395a64..e057d429 100644
--- a/buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
+++ b/buzz/widgets/preferences_dialog/shortcuts_editor_preferences_widget.py
@@ -7,7 +7,6 @@ from PyQt6.QtWidgets import QWidget, QFormLayout, QPushButton
from buzz.locale import _
from buzz.settings.shortcut import Shortcut
from buzz.settings.shortcuts import Shortcuts
-from buzz.widgets.line_edit import LineEdit
from buzz.widgets.sequence_edit import SequenceEdit
@@ -20,10 +19,8 @@ class ShortcutsEditorPreferencesWidget(QWidget):
self.shortcuts = shortcuts
self.layout = QFormLayout(self)
- _field_height = LineEdit().sizeHint().height()
for shortcut in Shortcut:
sequence_edit = SequenceEdit(shortcuts.get(shortcut), self)
- sequence_edit.setFixedHeight(_field_height)
sequence_edit.keySequenceChanged.connect(
self.get_key_sequence_changed(shortcut)
)
diff --git a/buzz/widgets/recording_transcriber_widget.py b/buzz/widgets/recording_transcriber_widget.py
index d0433631..7a35a06c 100644
--- a/buzz/widgets/recording_transcriber_widget.py
+++ b/buzz/widgets/recording_transcriber_widget.py
@@ -1,9 +1,6 @@
-import csv
-import io
import os
import re
import enum
-import time
import requests
import logging
import datetime
@@ -11,7 +8,7 @@ import sounddevice
from enum import auto
from typing import Optional, Tuple, Any
-from PyQt6.QtCore import QThread, Qt, QThreadPool, QTimer, pyqtSignal
+from PyQt6.QtCore import QThread, Qt, QThreadPool, QTimer
from PyQt6.QtGui import QTextCursor, QCloseEvent, QColor
from PyQt6.QtWidgets import (
QWidget,
@@ -19,7 +16,6 @@ from PyQt6.QtWidgets import (
QFormLayout,
QHBoxLayout,
QMessageBox,
- QApplication,
QPushButton,
QComboBox,
QLabel,
@@ -42,6 +38,7 @@ from buzz.settings.recording_transcriber_mode import RecordingTranscriberMode
from buzz.transcriber.recording_transcriber import RecordingTranscriber
from buzz.transcriber.transcriber import (
TranscriptionOptions,
+ DEFAULT_WHISPER_TEMPERATURE,
Task,
)
from buzz.translator import Translator
@@ -71,8 +68,6 @@ class RecordingTranscriberWidget(QWidget):
recording_amplitude_listener: Optional[RecordingAmplitudeListener] = None
device_sample_rate: Optional[int] = None
- transcription_stopped = pyqtSignal()
-
class RecordingStatus(enum.Enum):
STOPPED = auto()
RECORDING = auto()
@@ -138,6 +133,10 @@ class RecordingTranscriberWidget(QWidget):
initial_prompt=self.settings.value(
key=Settings.Key.RECORDING_TRANSCRIBER_INITIAL_PROMPT, default_value=""
),
+ temperature=self.settings.value(
+ key=Settings.Key.RECORDING_TRANSCRIBER_TEMPERATURE,
+ default_value=DEFAULT_WHISPER_TEMPERATURE,
+ ),
word_level_timings=False,
enable_llm_translation=self.settings.value(
key=Settings.Key.RECORDING_TRANSCRIBER_ENABLE_LLM_TRANSLATION,
@@ -149,18 +148,6 @@ class RecordingTranscriberWidget(QWidget):
llm_prompt=self.settings.value(
key=Settings.Key.RECORDING_TRANSCRIBER_LLM_PROMPT, default_value=""
),
- silence_threshold=self.settings.value(
- key=Settings.Key.RECORDING_TRANSCRIBER_SILENCE_THRESHOLD,
- default_value=0.0025,
- ),
- line_separator=self.settings.value(
- key=Settings.Key.RECORDING_TRANSCRIBER_LINE_SEPARATOR,
- default_value="\n\n",
- ),
- transcription_step=self.settings.value(
- key=Settings.Key.RECORDING_TRANSCRIBER_TRANSCRIPTION_STEP,
- default_value=3.5,
- ),
)
self.audio_devices_combo_box = AudioDevicesComboBox(self)
@@ -181,27 +168,18 @@ class RecordingTranscriberWidget(QWidget):
default_transcription_options=self.transcription_options,
model_types=model_types,
parent=self,
- show_recording_settings=True,
)
self.transcription_options_group_box.transcription_options_changed.connect(
self.on_transcription_options_changed
)
- self.transcription_options_group_box.advanced_settings_dialog.recording_mode_changed.connect(
- self.on_recording_mode_changed
- )
- self.transcription_options_group_box.advanced_settings_dialog.hide_unconfirmed_changed.connect(
- self.on_hide_unconfirmed_changed
- )
recording_options_layout = QFormLayout()
- self.microphone_label = QLabel(_("Microphone:"))
- recording_options_layout.addRow(self.microphone_label, self.audio_devices_combo_box)
+ recording_options_layout.addRow(_("Microphone:"), self.audio_devices_combo_box)
self.audio_meter_widget = AudioMeterWidget(self)
record_button_layout = QHBoxLayout()
- record_button_layout.setContentsMargins(0, 4, 0, 8)
- record_button_layout.addWidget(self.audio_meter_widget, alignment=Qt.AlignmentFlag.AlignVCenter)
+ record_button_layout.addWidget(self.audio_meter_widget)
record_button_layout.addWidget(self.record_button)
layout.addWidget(self.transcription_options_group_box)
@@ -214,18 +192,12 @@ class RecordingTranscriberWidget(QWidget):
self.translation_text_box.hide()
self.setLayout(layout)
- self.resize(700, 600)
+ self.resize(450, 500)
self.reset_recording_amplitude_listener()
- self._closing = False
self.transcript_export_file = None
self.translation_export_file = None
- self.export_file_type = "txt"
- self.export_max_entries = 0
- self.hide_unconfirmed = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED, True
- )
self.export_enabled = self.settings.value(
key=Settings.Key.RECORDING_TRANSCRIBER_EXPORT_ENABLED,
default_value=False,
@@ -237,9 +209,6 @@ class RecordingTranscriberWidget(QWidget):
self.presentation_options_bar = self.create_presentation_options_bar()
layout.insertWidget(3, self.presentation_options_bar)
self.presentation_options_bar.hide()
- self.copy_actions_bar = self.create_copy_actions_bar()
- layout.addWidget(self.copy_actions_bar) # Add at the bottom
- self.copy_actions_bar.hide()
def create_presentation_options_bar(self) -> QWidget:
"""Crete the presentation options bar widget"""
@@ -261,7 +230,7 @@ class RecordingTranscriberWidget(QWidget):
layout.addWidget(text_size_label)
self.text_size_spinbox = QSpinBox(bar)
- self.text_size_spinbox.setRange(10, 100) #10pt to 100pt
+ self.text_size_spinbox.setRange(12, 72) #12pt to 72pt
saved_text_size = self.settings.value(
Settings.Key.PRESENTATION_WINDOW_TEXT_SIZE,
@@ -317,56 +286,6 @@ class RecordingTranscriberWidget(QWidget):
return bar
- def create_copy_actions_bar(self) -> QWidget:
- """Create the copy actions bar widget"""
- bar = QWidget(self)
- layout = QHBoxLayout(bar)
- layout.setContentsMargins(5, 5, 5, 5)
- layout.setSpacing(10)
-
- layout.addStretch() # Push button to the right
-
- self.copy_transcript_button = QPushButton(_("Copy"), bar)
- self.copy_transcript_button.setToolTip(_("Copy transcription to clipboard"))
- self.copy_transcript_button.clicked.connect(self.on_copy_transcript_clicked)
- layout.addWidget(self.copy_transcript_button)
-
- return bar
-
- def on_copy_transcript_clicked(self):
- """Handle copy transcript button click"""
- transcript_text = self.transcription_text_box.toPlainText().strip()
-
- if not transcript_text:
- self.copy_transcript_button.setText(_("Nothing to copy!"))
- QTimer.singleShot(1500, lambda: self.copy_transcript_button.setText(_("Copy")))
- return
-
- app = QApplication.instance()
- if app is None:
- logging.warning("QApplication instance not available; clipboard disabled")
- self.copy_transcript_button.setText(_("Copy failed"))
- QTimer.singleShot(1500, lambda: self.copy_transcript_button.setText(_("Copy")))
- return
-
- clipboard = app.clipboard()
- if clipboard is None:
- logging.warning("Clipboard not available")
- self.copy_transcript_button.setText(_("Copy failed"))
- QTimer.singleShot(1500, lambda: self.copy_transcript_button.setText(_("Copy")))
- return
-
- try:
- clipboard.setText(transcript_text)
- except Exception as e:
- logging.warning("Clipboard error: %s", e)
- self.copy_transcript_button.setText(_("Copy failed"))
- QTimer.singleShot(1500, lambda: self.copy_transcript_button.setText(_("Copy")))
- return
-
- self.copy_transcript_button.setText(_("Copied!"))
- QTimer.singleShot(2000, lambda: self.copy_transcript_button.setText(_("Copy")))
-
def on_show_presentation_clicked(self):
"""Handle click on 'Show in new window' button"""
if self.presentation_window is None or not self.presentation_window.isVisible():
@@ -466,23 +385,7 @@ class RecordingTranscriberWidget(QWidget):
date_time_now = datetime.datetime.now().strftime("%d-%b-%Y %H-%M-%S")
- custom_template = self.settings.value(
- key=Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FILE_NAME,
- default_value="",
- )
- export_file_name_template = custom_template if custom_template else Settings().get_default_export_file_template()
-
- self.export_file_type = self.settings.value(
- key=Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FILE_TYPE,
- default_value="txt",
- )
- self.export_max_entries = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_EXPORT_MAX_ENTRIES, 0, int
- )
- self.hide_unconfirmed = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED, True
- )
- ext = ".csv" if self.export_file_type == "csv" else ".txt"
+ export_file_name_template = Settings().get_default_export_file_template()
export_file_name = (
export_file_name_template.replace("{{ input_file_name }}", "live recording")
@@ -491,27 +394,14 @@ class RecordingTranscriberWidget(QWidget):
.replace("{{ model_type }}", self.transcription_options.model.model_type.value)
.replace("{{ model_size }}", self.transcription_options.model.whisper_model_size or "")
.replace("{{ date_time }}", date_time_now)
- + ext
+ + ".txt"
)
- translated_ext = ".translated" + ext
-
if not os.path.isdir(export_folder):
self.export_enabled = False
self.transcript_export_file = os.path.join(export_folder, export_file_name)
- self.translation_export_file = self.transcript_export_file.replace(ext, translated_ext)
-
- # Clear export files at the start of each recording session
- for path in (self.transcript_export_file, self.translation_export_file):
- if os.path.isfile(path):
- self.write_to_export_file(path, "", mode="w")
-
- def on_recording_mode_changed(self, mode: RecordingTranscriberMode):
- self.transcriber_mode = mode
-
- def on_hide_unconfirmed_changed(self, value: bool):
- self.hide_unconfirmed = value
+ self.translation_export_file = self.transcript_export_file.replace(".txt", ".translated.txt")
def on_transcription_options_changed(
self, transcription_options: TranscriptionOptions
@@ -564,34 +454,16 @@ class RecordingTranscriberWidget(QWidget):
self.recording_amplitude_listener.amplitude_changed.connect(
self.on_recording_amplitude_changed, Qt.ConnectionType.QueuedConnection
)
- self.recording_amplitude_listener.average_amplitude_changed.connect(
- self.audio_meter_widget.update_average_amplitude, Qt.ConnectionType.QueuedConnection
- )
self.recording_amplitude_listener.start_recording()
def on_record_button_clicked(self):
if self.current_status == self.RecordingStatus.STOPPED:
- # Stop amplitude listener and disconnect its signal before resetting
- # to prevent queued amplitude events from overriding the reset
- if self.recording_amplitude_listener is not None:
- self.recording_amplitude_listener.amplitude_changed.disconnect(
- self.on_recording_amplitude_changed
- )
- self.recording_amplitude_listener.average_amplitude_changed.disconnect(
- self.audio_meter_widget.update_average_amplitude
- )
- self.recording_amplitude_listener.stop_recording()
- self.recording_amplitude_listener = None
- self.audio_meter_widget.reset_amplitude()
self.start_recording()
self.current_status = self.RecordingStatus.RECORDING
self.record_button.set_recording()
self.transcription_options_group_box.setEnabled(False)
self.audio_devices_combo_box.setEnabled(False)
- self.microphone_label.setEnabled(False)
self.presentation_options_bar.show()
- self.copy_actions_bar.hide()
-
else: # RecordingStatus.RECORDING
self.stop_recording()
self.set_recording_status_stopped()
@@ -630,6 +502,7 @@ class RecordingTranscriberWidget(QWidget):
self.transcription_thread = QThread()
+ # TODO: make runnable
self.transcriber = RecordingTranscriber(
input_device_index=self.selected_device_id,
sample_rate=self.device_sample_rate,
@@ -646,19 +519,6 @@ class RecordingTranscriberWidget(QWidget):
)
self.transcriber.transcription.connect(self.on_next_transcription)
- self.transcriber.amplitude_changed.connect(
- self.on_recording_amplitude_changed, Qt.ConnectionType.QueuedConnection
- )
- self.transcriber.average_amplitude_changed.connect(
- self.audio_meter_widget.update_average_amplitude, Qt.ConnectionType.QueuedConnection
- )
- self.transcriber.queue_size_changed.connect(
- self.audio_meter_widget.update_queue_size, Qt.ConnectionType.QueuedConnection
- )
-
- # Stop the separate amplitude listener to avoid two streams on the same device
- if self.recording_amplitude_listener is not None:
- self.recording_amplitude_listener.stop_recording()
self.transcriber.finished.connect(self.on_transcriber_finished)
self.transcriber.finished.connect(self.transcription_thread.quit)
@@ -682,15 +542,9 @@ class RecordingTranscriberWidget(QWidget):
self.translation_thread.finished.connect(
self.translation_thread.deleteLater
)
- self.translation_thread.finished.connect(
- lambda: setattr(self, "translation_thread", None)
- )
self.translator.finished.connect(self.translation_thread.quit)
self.translator.finished.connect(self.translator.deleteLater)
- self.translator.finished.connect(
- lambda: setattr(self, "translator", None)
- )
self.translator.translation.connect(self.on_next_translation)
@@ -719,16 +573,13 @@ class RecordingTranscriberWidget(QWidget):
self.current_status = self.RecordingStatus.STOPPED
self.transcription_options_group_box.setEnabled(True)
self.audio_devices_combo_box.setEnabled(True)
- self.microphone_label.setEnabled(True)
self.presentation_options_bar.hide()
- self.copy_actions_bar.show() #added this here
def on_download_model_error(self, error: str):
self.reset_model_download()
show_model_download_error_dialog(self, error)
self.stop_recording()
self.set_recording_status_stopped()
- self.reset_recording_amplitude_listener()
self.record_button.setDisabled(False)
@staticmethod
@@ -744,102 +595,6 @@ class RecordingTranscriberWidget(QWidget):
return text
- @staticmethod
- def write_to_export_file(file_path: str, content: str, mode: str = "a", retries: int = 5, delay: float = 0.2):
- """Write to an export file with retry logic for Windows file locking."""
- for attempt in range(retries):
- try:
- with open(file_path, mode, encoding='utf-8') as f:
- f.write(content)
- return
- except PermissionError:
- if attempt < retries - 1:
- time.sleep(delay)
- else:
- logging.warning("Export write failed after %d retries: %s", retries, file_path)
- except OSError as e:
- logging.warning("Export write failed: %s", e)
- return
-
- @staticmethod
- def write_csv_export(file_path: str, text: str, max_entries: int):
- """Append a new column to a single-row CSV export file, applying max_entries limit."""
- existing_columns = []
- if os.path.isfile(file_path):
- try:
- with open(file_path, "r", encoding="utf-8-sig") as f:
- raw = f.read()
- if raw.strip():
- reader = csv.reader(io.StringIO(raw))
- for row in reader:
- existing_columns = row
- break
- except OSError:
- pass
- existing_columns.append(text)
- if max_entries > 0:
- existing_columns = existing_columns[-max_entries:]
- buf = io.StringIO()
- writer = csv.writer(buf)
- writer.writerow(existing_columns)
- for attempt in range(5):
- try:
- with open(file_path, "w", encoding='utf-8-sig') as f:
- f.write(buf.getvalue())
- return
- except PermissionError:
- if attempt < 4:
- time.sleep(0.2)
- else:
- logging.warning("CSV export write failed after retries: %s", file_path)
- except OSError as e:
- logging.warning("CSV export write failed: %s", e)
- return
-
- @staticmethod
- def write_txt_export(file_path: str, text: str, mode: str, max_entries: int, line_separator: str):
- """Write to a TXT export file, applying max_entries limit when needed."""
- if mode == "a":
- RecordingTranscriberWidget.write_to_export_file(file_path, text + line_separator)
- if max_entries > 0 and os.path.isfile(file_path):
- raw = RecordingTranscriberWidget.read_export_file(file_path)
- parts = [p for p in raw.split(line_separator) if p]
- if len(parts) > max_entries:
- parts = parts[-max_entries:]
- RecordingTranscriberWidget.write_to_export_file(
- file_path, line_separator.join(parts) + line_separator, mode="w"
- )
- elif mode == "prepend":
- existing_content = ""
- if os.path.isfile(file_path):
- existing_content = RecordingTranscriberWidget.read_export_file(file_path)
- new_content = text + line_separator + existing_content
- if max_entries > 0:
- parts = [p for p in new_content.split(line_separator) if p]
- if len(parts) > max_entries:
- parts = parts[:max_entries]
- new_content = line_separator.join(parts) + line_separator
- RecordingTranscriberWidget.write_to_export_file(file_path, new_content, mode="w")
- else:
- RecordingTranscriberWidget.write_to_export_file(file_path, text, mode=mode)
-
- @staticmethod
- def read_export_file(file_path: str, retries: int = 5, delay: float = 0.2) -> str:
- """Read an export file with retry logic for Windows file locking."""
- for attempt in range(retries):
- try:
- with open(file_path, "r", encoding='utf-8') as f:
- return f.read()
- except PermissionError:
- if attempt < retries - 1:
- time.sleep(delay)
- else:
- logging.warning("Export read failed after %d retries: %s", retries, file_path)
- except OSError as e:
- logging.warning("Export read failed: %s", e)
- return ""
- return ""
-
# Copilot magic implementation of a sliding window approach to find the longest common substring between two texts,
# ignoring the initial differences.
@staticmethod
@@ -876,36 +631,16 @@ class RecordingTranscriberWidget(QWidget):
def process_transcription_merge(self, text: str, texts, text_box, export_file):
texts.append(text)
- # Possibly in future we want to tie this to some setting, to limit amount of data that needs
- # to be processed and exported. Value should not be less than ~10, so we have enough data to
- # work with.
- # if len(texts) > 20:
- # del texts[:len(texts) - 20]
-
# Remove possibly errorous parts from overlapping audio chunks
- last_common_length = None
for i in range(len(texts) - 1):
common_part = self.find_common_part(texts[i], texts[i + 1])
if common_part:
common_length = len(common_part)
texts[i] = texts[i][:texts[i].rfind(common_part) + common_length]
texts[i + 1] = texts[i + 1][texts[i + 1].find(common_part):]
- if i == len(texts) - 2:
- last_common_length = common_length
- elif i == len(texts) - 2:
- last_common_length = None
-
- # When hiding unconfirmed: trim the last text to only the part confirmed by overlap
- # with the previous chunk. If no overlap found, drop the last text entirely.
- display_texts = list(texts)
- if self.hide_unconfirmed and len(display_texts) > 1:
- if last_common_length is not None:
- display_texts[-1] = display_texts[-1][:last_common_length]
- else:
- display_texts = display_texts[:-1]
merged_texts = ""
- for text in display_texts:
+ for text in texts:
merged_texts = self.merge_text_no_overlap(merged_texts, text)
merged_texts = NO_SPACE_BETWEEN_SENTENCES.sub(r'\1 \2', merged_texts)
@@ -914,12 +649,8 @@ class RecordingTranscriberWidget(QWidget):
text_box.moveCursor(QTextCursor.MoveOperation.End)
if self.export_enabled and export_file:
- if self.export_file_type == "csv":
- # For APPEND_AND_CORRECT mode, rewrite the whole CSV with all merged text as a single entry
- self.write_to_export_file(export_file, "", mode="w")
- self.write_csv_export(export_file, merged_texts, 0)
- else:
- self.write_to_export_file(export_file, merged_texts, mode="w")
+ with open(export_file, "w") as f:
+ f.write(merged_texts)
def on_next_transcription(self, text: str):
text = self.filter_text(text)
@@ -933,42 +664,28 @@ class RecordingTranscriberWidget(QWidget):
if self.transcriber_mode == RecordingTranscriberMode.APPEND_BELOW:
self.transcription_text_box.moveCursor(QTextCursor.MoveOperation.End)
if len(self.transcription_text_box.toPlainText()) > 0:
- self.transcription_text_box.insertPlainText(self.transcription_options.line_separator)
+ self.transcription_text_box.insertPlainText("\n\n")
self.transcription_text_box.insertPlainText(text)
self.transcription_text_box.moveCursor(QTextCursor.MoveOperation.End)
if self.export_enabled and self.transcript_export_file:
- if self.export_file_type == "csv":
- self.write_csv_export(self.transcript_export_file, text, self.export_max_entries)
- else:
- self.write_txt_export(self.transcript_export_file, text, "a", self.export_max_entries, self.transcription_options.line_separator)
+ with open(self.transcript_export_file, "a") as f:
+ f.write(text + "\n\n")
elif self.transcriber_mode == RecordingTranscriberMode.APPEND_ABOVE:
self.transcription_text_box.moveCursor(QTextCursor.MoveOperation.Start)
self.transcription_text_box.insertPlainText(text)
- self.transcription_text_box.insertPlainText(self.transcription_options.line_separator)
+ self.transcription_text_box.insertPlainText("\n\n")
self.transcription_text_box.moveCursor(QTextCursor.MoveOperation.Start)
if self.export_enabled and self.transcript_export_file:
- if self.export_file_type == "csv":
- # For APPEND_ABOVE, prepend in CSV means inserting at beginning of columns
- existing_columns = []
- if os.path.isfile(self.transcript_export_file):
- raw = self.read_export_file(self.transcript_export_file)
- if raw.strip():
- reader = csv.reader(io.StringIO(raw))
- for row in reader:
- existing_columns = row
- break
- new_columns = [text] + existing_columns
- if self.export_max_entries > 0:
- new_columns = new_columns[:self.export_max_entries]
- buf = io.StringIO()
- writer = csv.writer(buf)
- writer.writerow(new_columns)
- self.write_to_export_file(self.transcript_export_file, buf.getvalue(), mode="w")
- else:
- self.write_txt_export(self.transcript_export_file, text, "prepend", self.export_max_entries, self.transcription_options.line_separator)
+ with open(self.transcript_export_file, "r") as f:
+ existing_content = f.read()
+
+ new_content = text + "\n\n" + existing_content
+
+ with open(self.transcript_export_file, "w") as f:
+ f.write(new_content)
elif self.transcriber_mode == RecordingTranscriberMode.APPEND_AND_CORRECT:
self.process_transcription_merge(text, self.transcripts, self.transcription_text_box, self.transcript_export_file)
@@ -998,41 +715,28 @@ class RecordingTranscriberWidget(QWidget):
if self.transcriber_mode == RecordingTranscriberMode.APPEND_BELOW:
self.translation_text_box.moveCursor(QTextCursor.MoveOperation.End)
if len(self.translation_text_box.toPlainText()) > 0:
- self.translation_text_box.insertPlainText(self.transcription_options.line_separator)
+ self.translation_text_box.insertPlainText("\n\n")
self.translation_text_box.insertPlainText(self.strip_newlines(text))
self.translation_text_box.moveCursor(QTextCursor.MoveOperation.End)
- if self.export_enabled and self.translation_export_file:
- if self.export_file_type == "csv":
- self.write_csv_export(self.translation_export_file, text, self.export_max_entries)
- else:
- self.write_txt_export(self.translation_export_file, text, "a", self.export_max_entries, self.transcription_options.line_separator)
+ if self.export_enabled:
+ with open(self.translation_export_file, "a") as f:
+ f.write(text + "\n\n")
elif self.transcriber_mode == RecordingTranscriberMode.APPEND_ABOVE:
self.translation_text_box.moveCursor(QTextCursor.MoveOperation.Start)
self.translation_text_box.insertPlainText(self.strip_newlines(text))
- self.translation_text_box.insertPlainText(self.transcription_options.line_separator)
+ self.translation_text_box.insertPlainText("\n\n")
self.translation_text_box.moveCursor(QTextCursor.MoveOperation.Start)
- if self.export_enabled and self.translation_export_file:
- if self.export_file_type == "csv":
- existing_columns = []
- if os.path.isfile(self.translation_export_file):
- raw = self.read_export_file(self.translation_export_file)
- if raw.strip():
- reader = csv.reader(io.StringIO(raw))
- for row in reader:
- existing_columns = row
- break
- new_columns = [text] + existing_columns
- if self.export_max_entries > 0:
- new_columns = new_columns[:self.export_max_entries]
- buf = io.StringIO()
- writer = csv.writer(buf)
- writer.writerow(new_columns)
- self.write_to_export_file(self.translation_export_file, buf.getvalue(), mode="w")
- else:
- self.write_txt_export(self.translation_export_file, text, "prepend", self.export_max_entries, self.transcription_options.line_separator)
+ if self.export_enabled:
+ with open(self.translation_export_file, "r") as f:
+ existing_content = f.read()
+
+ new_content = text + "\n\n" + existing_content
+
+ with open(self.translation_export_file, "w") as f:
+ f.write(new_content)
elif self.transcriber_mode == RecordingTranscriberMode.APPEND_AND_CORRECT:
self.process_transcription_merge(text, self.translations, self.translation_text_box, self.translation_export_file)
@@ -1065,14 +769,10 @@ class RecordingTranscriberWidget(QWidget):
def on_transcriber_finished(self):
self.reset_record_button()
- # Restart amplitude listener now that the transcription stream is closed
- self.reset_recording_amplitude_listener()
- self.transcription_stopped.emit()
def on_transcriber_error(self, error: str):
self.reset_record_button()
self.set_recording_status_stopped()
- self.reset_recording_amplitude_listener()
QMessageBox.critical(
self,
"",
@@ -1089,7 +789,6 @@ class RecordingTranscriberWidget(QWidget):
self.model_loader.cancel()
self.reset_model_download()
self.set_recording_status_stopped()
- self.reset_recording_amplitude_listener()
self.record_button.setDisabled(False)
def reset_model_download(self):
@@ -1113,51 +812,17 @@ class RecordingTranscriberWidget(QWidget):
self.audio_meter_widget.update_amplitude(amplitude)
def closeEvent(self, event: QCloseEvent) -> None:
- if self._closing:
- # Second call after deferred close — proceed normally
- self._do_close()
- super().closeEvent(event)
- return
-
- if self.current_status == self.RecordingStatus.RECORDING:
- # Defer the close until the transcription thread finishes to avoid
- # blocking the GUI thread with a synchronous wait.
- event.ignore()
- self._closing = True
-
- if self.model_loader is not None:
- self.model_loader.cancel()
-
- self.stop_recording()
-
- # Connect to QThread.finished — the transcriber C++ object may already
- # be scheduled for deletion via deleteLater() by this point.
- thread = self.transcription_thread
- if thread is not None:
- try:
- if thread.isRunning():
- thread.finished.connect(self._on_close_transcriber_finished)
- else:
- self._on_close_transcriber_finished()
- except RuntimeError:
- self._on_close_transcriber_finished()
- else:
- self._on_close_transcriber_finished()
- return
-
- self._do_close()
- super().closeEvent(event)
-
- def _on_close_transcriber_finished(self):
- self.transcription_thread = None
- self.close()
-
- def _do_close(self):
#Close presentation window if open
if self.presentation_window:
self.presentation_window.close()
self.presentation_window = None
+ self.fullscreen_button.setEnabled(False)
+
+ if self.model_loader is not None:
+ self.model_loader.cancel()
+
+ self.stop_recording()
if self.recording_amplitude_listener is not None:
self.recording_amplitude_listener.stop_recording()
self.recording_amplitude_listener.deleteLater()
@@ -1167,8 +832,11 @@ class RecordingTranscriberWidget(QWidget):
self.translator.stop()
if self.translation_thread is not None:
- # Just request quit — do not block the GUI thread waiting for it
self.translation_thread.quit()
+ # Only wait if thread is actually running
+ if self.translation_thread.isRunning():
+ if not self.translation_thread.wait(45_000):
+ logging.warning("Translation thread did not finish within timeout")
self.settings.set_value(
Settings.Key.RECORDING_TRANSCRIBER_LANGUAGE,
@@ -1177,6 +845,10 @@ class RecordingTranscriberWidget(QWidget):
self.settings.set_value(
Settings.Key.RECORDING_TRANSCRIBER_TASK, self.transcription_options.task
)
+ self.settings.set_value(
+ Settings.Key.RECORDING_TRANSCRIBER_TEMPERATURE,
+ self.transcription_options.temperature,
+ )
self.settings.set_value(
Settings.Key.RECORDING_TRANSCRIBER_INITIAL_PROMPT,
self.transcription_options.initial_prompt,
@@ -1196,15 +868,5 @@ class RecordingTranscriberWidget(QWidget):
Settings.Key.RECORDING_TRANSCRIBER_LLM_PROMPT,
self.transcription_options.llm_prompt,
)
- self.settings.set_value(
- Settings.Key.RECORDING_TRANSCRIBER_SILENCE_THRESHOLD,
- self.transcription_options.silence_threshold,
- )
- self.settings.set_value(
- Settings.Key.RECORDING_TRANSCRIBER_LINE_SEPARATOR,
- self.transcription_options.line_separator,
- )
- self.settings.set_value(
- Settings.Key.RECORDING_TRANSCRIBER_TRANSCRIPTION_STEP,
- self.transcription_options.transcription_step,
- )
+
+ return super().closeEvent(event)
diff --git a/buzz/widgets/transcriber/advanced_settings_dialog.py b/buzz/widgets/transcriber/advanced_settings_dialog.py
index a9e1a954..b25fc753 100644
--- a/buzz/widgets/transcriber/advanced_settings_dialog.py
+++ b/buzz/widgets/transcriber/advanced_settings_dialog.py
@@ -7,34 +7,23 @@ from PyQt6.QtWidgets import (
QPlainTextEdit,
QFormLayout,
QLabel,
- QDoubleSpinBox,
- QLineEdit,
- QComboBox,
- QHBoxLayout,
- QPushButton,
- QSpinBox,
- QFileDialog,
)
from buzz.locale import _
+from buzz.model_loader import ModelType
from buzz.transcriber.transcriber import TranscriptionOptions
from buzz.settings.settings import Settings
-from buzz.settings.recording_transcriber_mode import RecordingTranscriberMode
from buzz.widgets.line_edit import LineEdit
from buzz.widgets.transcriber.initial_prompt_text_edit import InitialPromptTextEdit
+from buzz.widgets.transcriber.temperature_validator import TemperatureValidator
class AdvancedSettingsDialog(QDialog):
transcription_options: TranscriptionOptions
transcription_options_changed = pyqtSignal(TranscriptionOptions)
- recording_mode_changed = pyqtSignal(RecordingTranscriberMode)
- hide_unconfirmed_changed = pyqtSignal(bool)
def __init__(
- self,
- transcription_options: TranscriptionOptions,
- parent: QWidget | None = None,
- show_recording_settings: bool = False,
+ self, transcription_options: TranscriptionOptions, parent: QWidget | None = None
):
super().__init__(parent)
@@ -42,15 +31,29 @@ class AdvancedSettingsDialog(QDialog):
self.settings = Settings()
self.setWindowTitle(_("Advanced Settings"))
- self.setMinimumWidth(800)
layout = QFormLayout(self)
- layout.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow)
transcription_settings_title= _("Speech recognition settings")
transcription_settings_title_label = QLabel(f"
{transcription_settings_title}
", self)
layout.addRow("", transcription_settings_title_label)
+ default_temperature_text = ", ".join(
+ [str(temp) for temp in transcription_options.temperature]
+ )
+ self.temperature_line_edit = LineEdit(default_temperature_text, self)
+ self.temperature_line_edit.setPlaceholderText(
+ _('Comma-separated, e.g. "0.0, 0.2, 0.4, 0.6, 0.8, 1.0"')
+ )
+ self.temperature_line_edit.setMinimumWidth(250)
+ self.temperature_line_edit.textChanged.connect(self.on_temperature_changed)
+ self.temperature_line_edit.setValidator(TemperatureValidator(self))
+ self.temperature_line_edit.setEnabled(
+ transcription_options.model.model_type == ModelType.WHISPER
+ )
+
+ layout.addRow(_("Temperature:"), self.temperature_line_edit)
+
self.initial_prompt_text_edit = InitialPromptTextEdit(
transcription_options.initial_prompt,
transcription_options.model.model_type,
@@ -71,160 +74,22 @@ class AdvancedSettingsDialog(QDialog):
self.enable_llm_translation_checkbox.stateChanged.connect(self.on_enable_llm_translation_changed)
layout.addRow("", self.enable_llm_translation_checkbox)
- llm_model = self.transcription_options.llm_model or "gpt-4.1-mini"
- self.llm_model_line_edit = LineEdit(llm_model, self)
- self.llm_model_line_edit.textChanged.connect(self.on_llm_model_changed)
+ self.llm_model_line_edit = LineEdit(self.transcription_options.llm_model, self)
+ self.llm_model_line_edit.textChanged.connect(
+ self.on_llm_model_changed
+ )
self.llm_model_line_edit.setMinimumWidth(170)
self.llm_model_line_edit.setEnabled(self.transcription_options.enable_llm_translation)
- self.llm_model_label = QLabel(_("AI model:"))
- self.llm_model_label.setEnabled(self.transcription_options.enable_llm_translation)
- layout.addRow(self.llm_model_label, self.llm_model_line_edit)
+ self.llm_model_line_edit.setPlaceholderText("gpt-4.1-mini")
+ layout.addRow(_("AI model:"), self.llm_model_line_edit)
- default_llm_prompt = self.transcription_options.llm_prompt or _(
- "Please translate each text sent to you from English to Spanish. Translation will be used in an automated system, please do not add any comments or notes, just the translation."
- )
- self.llm_prompt_text_edit = QPlainTextEdit(default_llm_prompt)
+ self.llm_prompt_text_edit = QPlainTextEdit(self.transcription_options.llm_prompt)
self.llm_prompt_text_edit.setEnabled(self.transcription_options.enable_llm_translation)
+ self.llm_prompt_text_edit.setPlaceholderText(_("Enter instructions for AI on how to translate, for example 'Please translate each text sent to you from English to Spanish.'"))
self.llm_prompt_text_edit.setMinimumWidth(170)
- self.llm_prompt_text_edit.setFixedHeight(80)
+ self.llm_prompt_text_edit.setFixedHeight(115)
self.llm_prompt_text_edit.textChanged.connect(self.on_llm_prompt_changed)
- self.llm_prompt_label = QLabel(_("Instructions for AI:"))
- self.llm_prompt_label.setEnabled(self.transcription_options.enable_llm_translation)
- layout.addRow(self.llm_prompt_label, self.llm_prompt_text_edit)
-
- if show_recording_settings:
- recording_settings_title = _("Recording settings")
- recording_settings_title_label = QLabel(f"
{recording_settings_title}
", self)
- layout.addRow("", recording_settings_title_label)
-
- self.silence_threshold_spin_box = QDoubleSpinBox(self)
- self.silence_threshold_spin_box.setRange(0.0, 1.0)
- self.silence_threshold_spin_box.setSingleStep(0.0005)
- self.silence_threshold_spin_box.setDecimals(4)
- self.silence_threshold_spin_box.setValue(transcription_options.silence_threshold)
- self.silence_threshold_spin_box.valueChanged.connect(self.on_silence_threshold_changed)
- self.silence_threshold_spin_box.setFixedWidth(90)
- layout.addRow(_("Silence threshold:"), self.silence_threshold_spin_box)
-
- # Live recording mode
- self.recording_mode_combo = QComboBox(self)
- for mode in RecordingTranscriberMode:
- self.recording_mode_combo.addItem(mode.value)
- self.recording_mode_combo.setCurrentIndex(
- self.settings.value(Settings.Key.RECORDING_TRANSCRIBER_MODE, 0)
- )
- self.recording_mode_combo.currentIndexChanged.connect(self.on_recording_mode_changed)
- self.recording_mode_combo.setFixedWidth(250)
- layout.addRow(_("Live recording mode") + ":", self.recording_mode_combo)
-
- self.line_separator_line_edit = QLineEdit(self)
- line_sep_display = repr(transcription_options.line_separator)[1:-1] or r"\n\n"
- self.line_separator_line_edit.setText(line_sep_display)
- self.line_separator_line_edit.textChanged.connect(self.on_line_separator_changed)
- self.line_separator_label = QLabel(_("Line separator:"))
- layout.addRow(self.line_separator_label, self.line_separator_line_edit)
-
- self.transcription_step_spin_box = QDoubleSpinBox(self)
- self.transcription_step_spin_box.setRange(2.0, 5.0)
- self.transcription_step_spin_box.setSingleStep(0.1)
- self.transcription_step_spin_box.setDecimals(1)
- self.transcription_step_spin_box.setValue(transcription_options.transcription_step)
- self.transcription_step_spin_box.valueChanged.connect(self.on_transcription_step_changed)
- self.transcription_step_spin_box.setFixedWidth(80)
- self.transcription_step_label = QLabel(_("Transcription step:"))
- layout.addRow(self.transcription_step_label, self.transcription_step_spin_box)
-
- hide_unconfirmed = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED, True
- )
- self.hide_unconfirmed_checkbox = QCheckBox(_("Hide unconfirmed"))
- self.hide_unconfirmed_checkbox.setChecked(hide_unconfirmed)
- self.hide_unconfirmed_checkbox.stateChanged.connect(self.on_hide_unconfirmed_changed)
- self.hide_unconfirmed_label = QLabel("")
- layout.addRow(self.hide_unconfirmed_label, self.hide_unconfirmed_checkbox)
-
- self._update_recording_mode_visibility(
- RecordingTranscriberMode(self.recording_mode_combo.currentText())
- )
-
- # Export enabled checkbox
- self._export_enabled = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_EXPORT_ENABLED, False
- )
- self.export_enabled_checkbox = QCheckBox(_("Enable live recording export"))
- self.export_enabled_checkbox.setChecked(self._export_enabled)
- self.export_enabled_checkbox.stateChanged.connect(self.on_export_enabled_changed)
- layout.addRow("", self.export_enabled_checkbox)
-
- # Export folder
- export_folder = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FOLDER, ""
- )
- self.export_folder_line_edit = LineEdit(export_folder, self)
- self.export_folder_line_edit.setEnabled(self._export_enabled)
- self.export_folder_line_edit.textChanged.connect(self.on_export_folder_changed)
- self.export_folder_browse_button = QPushButton(_("Browse"), self)
- self.export_folder_browse_button.setEnabled(self._export_enabled)
- self.export_folder_browse_button.clicked.connect(self.on_browse_export_folder)
- export_folder_row = QHBoxLayout()
- export_folder_row.addWidget(self.export_folder_line_edit)
- export_folder_row.addWidget(self.export_folder_browse_button)
- self.export_folder_label = QLabel(_("Export folder:"))
- self.export_folder_label.setEnabled(self._export_enabled)
- layout.addRow(self.export_folder_label, export_folder_row)
-
- # Export file name template
- export_file_name = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FILE_NAME, ""
- )
- self.export_file_name_line_edit = LineEdit(export_file_name, self)
- self.export_file_name_line_edit.setEnabled(self._export_enabled)
- self.export_file_name_line_edit.textChanged.connect(self.on_export_file_name_changed)
- self.export_file_name_label = QLabel(_("Export file name:"))
- self.export_file_name_label.setEnabled(self._export_enabled)
- layout.addRow(self.export_file_name_label, self.export_file_name_line_edit)
-
- # Export file type
- self.export_file_type_combo = QComboBox(self)
- self.export_file_type_combo.addItem(_("Text file (.txt)"), "txt")
- self.export_file_type_combo.addItem(_("CSV (.csv)"), "csv")
- current_type = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FILE_TYPE, "txt"
- )
- type_index = self.export_file_type_combo.findData(current_type)
- if type_index >= 0:
- self.export_file_type_combo.setCurrentIndex(type_index)
- self.export_file_type_combo.setEnabled(self._export_enabled)
- self.export_file_type_combo.currentIndexChanged.connect(self.on_export_file_type_changed)
- self.export_file_type_combo.setFixedWidth(200)
- self.export_file_type_label = QLabel(_("Export file type:"))
- self.export_file_type_label.setEnabled(self._export_enabled)
- layout.addRow(self.export_file_type_label, self.export_file_type_combo)
-
- # Max entries
- max_entries = self.settings.value(
- Settings.Key.RECORDING_TRANSCRIBER_EXPORT_MAX_ENTRIES, 0, int
- )
- self.export_max_entries_spin = QSpinBox(self)
- self.export_max_entries_spin.setRange(0, 99)
- self.export_max_entries_spin.setValue(max_entries)
- self.export_max_entries_spin.setEnabled(self._export_enabled)
- self.export_max_entries_spin.valueChanged.connect(self.on_export_max_entries_changed)
- self.export_max_entries_spin.setFixedWidth(90)
- self.export_max_entries_label = QLabel(_("Limit export entries\n(0 = export all):"))
- self.export_max_entries_label.setEnabled(self._export_enabled)
- layout.addRow(self.export_max_entries_label, self.export_max_entries_spin)
-
- _field_height = self.llm_model_line_edit.sizeHint().height()
- for widget in (
- self.line_separator_line_edit,
- self.silence_threshold_spin_box,
- self.recording_mode_combo,
- self.transcription_step_spin_box,
- self.export_file_type_combo,
- self.export_max_entries_spin,
- ):
- widget.setFixedHeight(_field_height)
+ layout.addRow(_("Instructions for AI:"), self.llm_prompt_text_edit)
button_box = QDialogButtonBox(
QDialogButtonBox.StandardButton(QDialogButtonBox.StandardButton.Ok), self
@@ -235,6 +100,15 @@ class AdvancedSettingsDialog(QDialog):
layout.addWidget(button_box)
self.setLayout(layout)
+ self.resize(self.sizeHint())
+
+ def on_temperature_changed(self, text: str):
+ try:
+ temperatures = [float(temp.strip()) for temp in text.split(",")]
+ self.transcription_options.temperature = tuple(temperatures)
+ self.transcription_options_changed.emit(self.transcription_options)
+ except ValueError:
+ pass
def on_initial_prompt_changed(self):
self.transcription_options.initial_prompt = (
@@ -246,11 +120,8 @@ class AdvancedSettingsDialog(QDialog):
self.transcription_options.enable_llm_translation = state == 2
self.transcription_options_changed.emit(self.transcription_options)
- enabled = self.transcription_options.enable_llm_translation
- self.llm_model_label.setEnabled(enabled)
- self.llm_model_line_edit.setEnabled(enabled)
- self.llm_prompt_label.setEnabled(enabled)
- self.llm_prompt_text_edit.setEnabled(enabled)
+ self.llm_model_line_edit.setEnabled(self.transcription_options.enable_llm_translation)
+ self.llm_prompt_text_edit.setEnabled(self.transcription_options.enable_llm_translation)
def on_llm_model_changed(self, text: str):
self.transcription_options.llm_model = text
@@ -261,72 +132,3 @@ class AdvancedSettingsDialog(QDialog):
self.llm_prompt_text_edit.toPlainText()
)
self.transcription_options_changed.emit(self.transcription_options)
-
- def on_silence_threshold_changed(self, value: float):
- self.transcription_options.silence_threshold = value
- self.transcription_options_changed.emit(self.transcription_options)
-
- def on_line_separator_changed(self, text: str):
- try:
- self.transcription_options.line_separator = text.encode().decode("unicode_escape")
- except UnicodeDecodeError:
- return
- self.transcription_options_changed.emit(self.transcription_options)
-
- def on_recording_mode_changed(self, index: int):
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_MODE, index)
- mode = list(RecordingTranscriberMode)[index]
- self._update_recording_mode_visibility(mode)
- self.recording_mode_changed.emit(mode)
-
- def _update_recording_mode_visibility(self, mode: RecordingTranscriberMode):
- is_append_and_correct = mode == RecordingTranscriberMode.APPEND_AND_CORRECT
- self.line_separator_label.setVisible(not is_append_and_correct)
- self.line_separator_line_edit.setVisible(not is_append_and_correct)
- self.transcription_step_label.setVisible(is_append_and_correct)
- self.transcription_step_spin_box.setVisible(is_append_and_correct)
- self.hide_unconfirmed_label.setVisible(is_append_and_correct)
- self.hide_unconfirmed_checkbox.setVisible(is_append_and_correct)
-
- def on_transcription_step_changed(self, value: float):
- self.transcription_options.transcription_step = round(value, 1)
- self.transcription_options_changed.emit(self.transcription_options)
-
- def on_hide_unconfirmed_changed(self, state: int):
- value = state == 2
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED, value)
- self.hide_unconfirmed_changed.emit(value)
-
- def on_export_enabled_changed(self, state: int):
- self._export_enabled = state == 2
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_EXPORT_ENABLED, self._export_enabled)
- for widget in (
- self.export_folder_label,
- self.export_folder_line_edit,
- self.export_folder_browse_button,
- self.export_file_name_label,
- self.export_file_name_line_edit,
- self.export_file_type_label,
- self.export_file_type_combo,
- self.export_max_entries_label,
- self.export_max_entries_spin,
- ):
- widget.setEnabled(self._export_enabled)
-
- def on_export_folder_changed(self, text: str):
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FOLDER, text)
-
- def on_browse_export_folder(self):
- folder = QFileDialog.getExistingDirectory(self, _("Select Export Folder"))
- if folder:
- self.export_folder_line_edit.setText(folder)
-
- def on_export_file_name_changed(self, text: str):
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FILE_NAME, text)
-
- def on_export_file_type_changed(self, index: int):
- file_type = self.export_file_type_combo.itemData(index)
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_EXPORT_FILE_TYPE, file_type)
-
- def on_export_max_entries_changed(self, value: int):
- self.settings.set_value(Settings.Key.RECORDING_TRANSCRIBER_EXPORT_MAX_ENTRIES, value)
diff --git a/buzz/widgets/transcriber/initial_prompt_text_edit.py b/buzz/widgets/transcriber/initial_prompt_text_edit.py
index 618c2273..26959f4c 100644
--- a/buzz/widgets/transcriber/initial_prompt_text_edit.py
+++ b/buzz/widgets/transcriber/initial_prompt_text_edit.py
@@ -10,4 +10,4 @@ class InitialPromptTextEdit(QPlainTextEdit):
self.setPlaceholderText(_("Enter prompt..."))
self.setEnabled(model_type.supports_initial_prompt)
self.setMinimumWidth(350)
- self.setFixedHeight(80)
+ self.setFixedHeight(115)
diff --git a/buzz/widgets/transcriber/languages_combo_box.py b/buzz/widgets/transcriber/languages_combo_box.py
index 8ebc0e32..7ab6c5b0 100644
--- a/buzz/widgets/transcriber/languages_combo_box.py
+++ b/buzz/widgets/transcriber/languages_combo_box.py
@@ -2,7 +2,7 @@ from typing import Optional
import os
from PyQt6.QtCore import pyqtSignal, Qt
-from PyQt6.QtWidgets import QComboBox, QWidget, QFrame
+from PyQt6.QtWidgets import QComboBox, QWidget
from PyQt6.QtGui import QStandardItem, QStandardItemModel
from buzz.locale import _
@@ -51,9 +51,3 @@ class LanguagesComboBox(QComboBox):
def on_index_changed(self, index: int):
self.languageChanged.emit(self.languages[index][0])
-
- def showPopup(self):
- super().showPopup()
- popup = self.findChild(QFrame)
- if popup and popup.height() > 400:
- popup.setFixedHeight(400)
diff --git a/buzz/widgets/transcriber/temperature_validator.py b/buzz/widgets/transcriber/temperature_validator.py
new file mode 100644
index 00000000..3fcc97ec
--- /dev/null
+++ b/buzz/widgets/transcriber/temperature_validator.py
@@ -0,0 +1,21 @@
+from typing import Optional, Tuple
+
+from PyQt6.QtCore import QObject
+from PyQt6.QtGui import QValidator
+
+
+class TemperatureValidator(QValidator):
+ def __init__(self, parent: Optional[QObject] = ...) -> None:
+ super().__init__(parent)
+
+ def validate(
+ self, text: str, cursor_position: int
+ ) -> Tuple["QValidator.State", str, int]:
+ try:
+ temp_strings = [temp.strip() for temp in text.split(",")]
+ if temp_strings[-1] == "":
+ return QValidator.State.Intermediate, text, cursor_position
+ _ = [float(temp) for temp in temp_strings]
+ return QValidator.State.Acceptable, text, cursor_position
+ except ValueError:
+ return QValidator.State.Invalid, text, cursor_position
diff --git a/buzz/widgets/transcriber/transcription_options_group_box.py b/buzz/widgets/transcriber/transcription_options_group_box.py
index f3c124d8..1524086e 100644
--- a/buzz/widgets/transcriber/transcription_options_group_box.py
+++ b/buzz/widgets/transcriber/transcription_options_group_box.py
@@ -33,7 +33,6 @@ class TranscriptionOptionsGroupBox(QGroupBox):
default_transcription_options: TranscriptionOptions = TranscriptionOptions(),
model_types: Optional[List[ModelType]] = None,
parent: Optional[QWidget] = None,
- show_recording_settings: bool = False,
):
super().__init__(title="", parent=parent)
self.settings = Settings()
@@ -50,9 +49,7 @@ class TranscriptionOptionsGroupBox(QGroupBox):
self.model_type_combo_box.changed.connect(self.on_model_type_changed)
self.advanced_settings_dialog = AdvancedSettingsDialog(
- transcription_options=self.transcription_options,
- parent=self,
- show_recording_settings=show_recording_settings,
+ transcription_options=self.transcription_options, parent=self
)
self.advanced_settings_dialog.transcription_options_changed.connect(
self.on_transcription_options_changed
diff --git a/buzz/widgets/transcription_task_folder_watcher.py b/buzz/widgets/transcription_task_folder_watcher.py
index 368c5d2e..6e36fcd1 100644
--- a/buzz/widgets/transcription_task_folder_watcher.py
+++ b/buzz/widgets/transcription_task_folder_watcher.py
@@ -11,12 +11,6 @@ from buzz.widgets.preferences_dialog.models.folder_watch_preferences import (
FolderWatchPreferences,
)
-# Supported media file extensions (audio and video)
-SUPPORTED_EXTENSIONS = {
- ".mp3", ".wav", ".m4a", ".ogg", ".opus", ".flac", # audio
- ".mp4", ".webm", ".ogm", ".mov", ".mkv", ".avi", ".wmv", # video
-}
-
class TranscriptionTaskFolderWatcher(QFileSystemWatcher):
preferences: FolderWatchPreferences
@@ -40,14 +34,9 @@ class TranscriptionTaskFolderWatcher(QFileSystemWatcher):
if len(self.directories()) > 0:
self.removePaths(self.directories())
if preferences.enabled:
- # Add the input directory and all subdirectories to the watcher
- for dirpath, dirnames, _ in os.walk(preferences.input_directory):
- # Skip hidden directories
- dirnames[:] = [d for d in dirnames if not d.startswith(".")]
- self.addPath(dirpath)
+ self.addPath(preferences.input_directory)
logging.debug(
- 'Watching for media files in "%s" and subdirectories',
- preferences.input_directory,
+ 'Watching for media files in "%s"', preferences.input_directory
)
def find_tasks(self):
@@ -60,18 +49,8 @@ class TranscriptionTaskFolderWatcher(QFileSystemWatcher):
for dirpath, dirnames, filenames in os.walk(input_directory):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
- file_ext = os.path.splitext(filename)[1].lower()
-
- # Check for temp conversion files (e.g., .ogg.wav)
- name_without_ext = os.path.splitext(filename)[0]
- secondary_ext = os.path.splitext(name_without_ext)[1].lower()
- is_temp_conversion_file = secondary_ext in SUPPORTED_EXTENSIONS
-
if (
filename.startswith(".") # hidden files
- or file_ext not in SUPPORTED_EXTENSIONS # non-media files
- or is_temp_conversion_file # temp conversion files like .ogg.wav
- or "_speech.mp3" in filename # extracted speech output files
or file_path in tasks # file already in tasks
or file_path in self.paths_emitted # file already emitted
):
@@ -91,34 +70,16 @@ class TranscriptionTaskFolderWatcher(QFileSystemWatcher):
ModelDownloader(model=transcription_options.model).run()
model_path = transcription_options.model.get_local_model_path()
- # Preserve subdirectory structure in output directory
- relative_path = os.path.relpath(dirpath, input_directory)
- if relative_path == ".":
- output_directory = self.preferences.output_directory
- else:
- output_directory = os.path.join(
- self.preferences.output_directory, relative_path
- )
-
- # Create output directory if it doesn't exist
- os.makedirs(output_directory, exist_ok=True)
-
task = FileTranscriptionTask(
file_path=file_path,
- original_file_path=file_path,
transcription_options=transcription_options,
file_transcription_options=file_transcription_options,
model_path=model_path,
- output_directory=output_directory,
+ output_directory=self.preferences.output_directory,
source=FileTranscriptionTask.Source.FOLDER_WATCH,
- delete_source_file=self.preferences.delete_processed_files,
)
self.task_found.emit(task)
self.paths_emitted.add(file_path)
- # Filter out hidden directories and add new subdirectories to the watcher
- dirnames[:] = [d for d in dirnames if not d.startswith(".")]
- for dirname in dirnames:
- subdir_path = os.path.join(dirpath, dirname)
- if subdir_path not in self.directories():
- self.addPath(subdir_path)
+ # Don't traverse into subdirectories
+ break
diff --git a/buzz/widgets/transcription_viewer/speaker_identification_widget.py b/buzz/widgets/transcription_viewer/speaker_identification_widget.py
index 94368d0e..6ea6eec1 100644
--- a/buzz/widgets/transcription_viewer/speaker_identification_widget.py
+++ b/buzz/widgets/transcription_viewer/speaker_identification_widget.py
@@ -10,7 +10,6 @@ from typing import Optional
# This must be done before importing libraries that download from Hugging Face
try:
import certifi
- os.environ.setdefault('REQUESTS_CA_BUNDLE', certifi.where())
os.environ.setdefault('SSL_CERT_FILE', certifi.where())
os.environ.setdefault('SSL_CERT_DIR', os.path.dirname(certifi.where()))
# Also update the default SSL context for urllib
@@ -45,63 +44,23 @@ from buzz.settings.settings import Settings
from buzz.widgets.line_edit import LineEdit
from buzz.transcriber.transcriber import Segment
-
-
-def process_in_batches(
- items,
- process_func,
- batch_size=200,
- chunk_size=230,
- smaller_batch_size=100,
- exception_types=(AssertionError,),
- **process_func_kwargs
-):
- """
- Process items in batches with automatic fallback to smaller batches on errors.
-
- This is a generic batch processing function that can be used with any processing
- function that has chunk size limitations. It automatically retries with smaller
- batches when specified exceptions occur.
-
- Args:
- items: List of items to process
- process_func: Callable that processes a batch. Should accept (batch, chunk_size, **kwargs)
- and return a list of results
- batch_size: Initial batch size (default: 200)
- chunk_size: Maximum chunk size for the processing function (default: 230)
- smaller_batch_size: Fallback batch size when errors occur (default: 100)
- exception_types: Tuple of exception types to catch and retry with smaller batches
- (default: (AssertionError,))
- **process_func_kwargs: Additional keyword arguments to pass to process_func
-
- Returns:
- List of processed results (concatenated from all batches)
-
- Example:
- >>> def my_predict(batch, chunk_size):
- ... return [f"processed_{item}" for item in batch]
- >>> results = process_in_batches(
- ... items=["a", "b", "c"],
- ... process_func=my_predict,
- ... batch_size=2
- ... )
- """
- all_results = []
-
- for i in range(0, len(items), batch_size):
- batch = items[i:i + batch_size]
- try:
- batch_results = process_func(batch, chunk_size=min(chunk_size, len(batch)), **process_func_kwargs)
- all_results.extend(batch_results)
- except exception_types as e:
- # If batch still fails, try with even smaller chunks
- logging.warning(f"Batch processing failed, trying smaller chunks: {e}")
- for j in range(0, len(batch), smaller_batch_size):
- smaller_batch = batch[j:j + smaller_batch_size]
- smaller_results = process_func(smaller_batch, chunk_size=min(chunk_size, len(smaller_batch)), **process_func_kwargs)
- all_results.extend(smaller_results)
-
- return all_results
+from ctc_forced_aligner.ctc_forced_aligner import (
+ generate_emissions,
+ get_alignments,
+ get_spans,
+ load_alignment_model,
+ postprocess_results,
+ preprocess_text,
+)
+from whisper_diarization.helpers import (
+ get_realigned_ws_mapping_with_punctuation,
+ get_sentences_speaker_mapping,
+ get_words_speaker_mapping,
+ langs_to_iso,
+ punct_model_langs,
+)
+from deepmultilingualpunctuation.deepmultilingualpunctuation import PunctuationModel
+from whisper_diarization.diarization import MSDDDiarizer
SENTENCE_END = re.compile(r'.*[.!?。!?]')
@@ -150,32 +109,6 @@ class IdentificationWorker(QObject):
}
def run(self):
- try:
- from ctc_forced_aligner.ctc_forced_aligner import (
- generate_emissions,
- get_alignments,
- get_spans,
- load_alignment_model,
- postprocess_results,
- preprocess_text,
- )
- from whisper_diarization.helpers import (
- get_realigned_ws_mapping_with_punctuation,
- get_sentences_speaker_mapping,
- get_words_speaker_mapping,
- langs_to_iso,
- punct_model_langs,
- )
- from deepmultilingualpunctuation.deepmultilingualpunctuation import PunctuationModel
- from whisper_diarization.diarization import MSDDDiarizer
- except ImportError as e:
- logging.exception("Failed to import speaker identification libraries: %s", e)
- self.error.emit(
- _("Speaker identification is not available: failed to load required libraries.")
- + f"\n\n{e}"
- )
- return
-
diarizer_model = None
alignment_model = None
@@ -197,8 +130,7 @@ class IdentificationWorker(QObject):
transcription_id=self.transcription.id_as_uuid
)
- full_transcript = " ".join(segment.text for segment in segments)
- full_transcript = re.sub(r' {2,}', ' ', full_transcript)
+ full_transcript = "".join(segment.text for segment in segments)
if self._is_cancelled:
logging.debug("Speaker identification worker: Cancelled at step 2")
@@ -259,15 +191,13 @@ class IdentificationWorker(QObject):
return
self.progress_update.emit(_("4/8 Processing audio"))
- logging.debug("Speaker identification worker: Generating emissions")
emissions, stride = generate_emissions(
alignment_model,
torch.from_numpy(audio_waveform)
.to(alignment_model.dtype)
.to(alignment_model.device),
- batch_size=1 if device == "cpu" else 8,
+ batch_size=8,
)
- logging.debug("Speaker identification worker: Emissions generated")
# Clean up alignment model
del alignment_model
@@ -313,14 +243,10 @@ class IdentificationWorker(QObject):
logging.debug("Speaker identification worker: Creating diarizer model")
diarizer_model = MSDDDiarizer(device)
- logging.debug("Speaker identification worker: Running diarization (this may take a while on CPU)")
+ logging.debug("Speaker identification worker: Running diarization")
speaker_ts = diarizer_model.diarize(torch.from_numpy(audio_waveform).unsqueeze(0))
logging.debug("Speaker identification worker: Diarization complete")
- if self._is_cancelled:
- logging.debug("Speaker identification worker: Cancelled after diarization")
- return
-
# Clean up diarizer model immediately after use
del diarizer_model
diarizer_model = None
@@ -341,14 +267,7 @@ class IdentificationWorker(QObject):
words_list = list(map(lambda x: x["word"], wsm))
- # Process in batches to avoid chunk size errors
- def predict_wrapper(batch, chunk_size, **kwargs):
- return punct_model.predict(batch, chunk_size=chunk_size)
-
- labled_words = process_in_batches(
- items=words_list,
- process_func=predict_wrapper
- )
+ labled_words = punct_model.predict(words_list, chunk_size=230)
ending_puncts = ".?!。!?"
model_puncts = ".,;:!?。!?"
@@ -459,11 +378,6 @@ class SpeakerIdentificationWidget(QWidget):
self.step_1_button.setMinimumWidth(200)
self.step_1_button.clicked.connect(self.on_identify_button_clicked)
- self.cancel_button = QPushButton(_("Cancel"))
- self.cancel_button.setMinimumWidth(200)
- self.cancel_button.setVisible(False)
- self.cancel_button.clicked.connect(self.on_cancel_button_clicked)
-
# Progress container with label and bar
progress_container = QVBoxLayout()
@@ -484,10 +398,7 @@ class SpeakerIdentificationWidget(QWidget):
self.step_1_row.addLayout(progress_container)
- button_container = QVBoxLayout()
- button_container.addWidget(self.step_1_button)
- button_container.addWidget(self.cancel_button)
- self.step_1_row.addLayout(button_container)
+ self.step_1_row.addWidget(self.step_1_button, alignment=Qt.AlignmentFlag.AlignTop)
step_1_layout.addLayout(self.step_1_row)
@@ -552,8 +463,6 @@ class SpeakerIdentificationWidget(QWidget):
def on_identify_button_clicked(self):
self.step_1_button.setEnabled(False)
- self.step_1_button.setVisible(False)
- self.cancel_button.setVisible(True)
# Clean up any existing thread before starting a new one
self._cleanup_thread()
@@ -573,36 +482,18 @@ class SpeakerIdentificationWidget(QWidget):
self.thread.start()
- def on_cancel_button_clicked(self):
- """Handle cancel button click."""
- logging.debug("Speaker identification: Cancel requested by user")
- self.cancel_button.setEnabled(False)
- self.progress_label.setText(_("Cancelling..."))
- self._cleanup_thread()
- self._reset_buttons()
- self.progress_label.setText(_("Cancelled"))
- self.progress_bar.setValue(0)
-
- def _reset_buttons(self):
- """Reset identify/cancel buttons to initial state."""
- self.step_1_button.setVisible(True)
- self.step_1_button.setEnabled(True)
- self.cancel_button.setVisible(False)
- self.cancel_button.setEnabled(True)
-
def _on_thread_finished(self, result):
"""Handle thread completion and cleanup."""
logging.debug("Speaker identification: Thread finished")
if self.thread is not None:
self.thread.quit()
self.thread.wait(5000)
- self._reset_buttons()
self.on_identification_finished(result)
def on_identification_error(self, error_message):
"""Handle identification error."""
logging.error(f"Speaker identification error: {error_message}")
- self._reset_buttons()
+ self.step_1_button.setEnabled(True)
self.progress_bar.setValue(0)
def on_progress_update(self, progress):
diff --git a/buzz/widgets/transcription_viewer/transcription_resizer_widget.py b/buzz/widgets/transcription_viewer/transcription_resizer_widget.py
index 08f3cb48..cb8dfcfc 100644
--- a/buzz/widgets/transcription_viewer/transcription_resizer_widget.py
+++ b/buzz/widgets/transcription_viewer/transcription_resizer_widget.py
@@ -36,9 +36,6 @@ from buzz.widgets.preferences_dialog.models.file_transcription_preferences impor
SENTENCE_END = re.compile(r'.*[.!?。!?]')
-# Languages that don't use spaces between words
-NON_SPACE_LANGUAGES = {"zh", "ja", "th", "lo", "km", "my"}
-
class TranscriptionWorker(QObject):
finished = pyqtSignal(list)
@@ -54,23 +51,16 @@ class TranscriptionWorker(QObject):
transcription_id=self.transcription.id_as_uuid
)
- # Check if the language uses spaces between words
- language = self.transcription.language or ""
- is_non_space_language = language in NON_SPACE_LANGUAGES
-
- # For non-space languages, don't add spaces between words
- separator = "" if is_non_space_language else " "
-
segments = []
words = []
text = ""
for buzz_segment in buzz_segments:
words.append({
- 'word': buzz_segment.text + separator,
+ 'word': buzz_segment.text + " ",
'start': buzz_segment.start_time / 100,
'end': buzz_segment.end_time / 100,
})
- text += buzz_segment.text + separator
+ text += buzz_segment.text + " "
if SENTENCE_END.match(buzz_segment.text):
segments.append({
@@ -80,13 +70,6 @@ class TranscriptionWorker(QObject):
words = []
text = ""
- # Add any remaining words that weren't terminated by sentence-ending punctuation
- if words:
- segments.append({
- 'text': text,
- 'words': words
- })
-
return {
'language': self.transcription.language,
'segments': segments
@@ -170,38 +153,6 @@ class TranscriptionResizerWidget(QWidget):
layout = QFormLayout(self)
- # Extend segment endings
- extend_label = QLabel(_("Extend end time"), self)
- font = extend_label.font()
- font.setWeight(QFont.Weight.Bold)
- extend_label.setFont(font)
- layout.addRow(extend_label)
-
- extend_group_box = QGroupBox(self)
- extend_layout = QVBoxLayout(extend_group_box)
-
- self.extend_row = QHBoxLayout()
-
- self.extend_amount_label = QLabel(_("Extend endings by up to (seconds)"), self)
-
- self.extend_amount_input = LineEdit("0.2", self)
- self.extend_amount_input.setMaximumWidth(60)
-
- self.extend_button = QPushButton(_("Extend endings"))
- self.extend_button.clicked.connect(self.on_extend_button_clicked)
-
- self.extend_row.addWidget(self.extend_amount_label)
- self.extend_row.addWidget(self.extend_amount_input)
- self.extend_row.addWidget(self.extend_button)
-
- extend_layout.addLayout(self.extend_row)
-
- layout.addRow(extend_group_box)
-
- # Spacer
- spacer1 = QSpacerItem(0, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
- layout.addItem(spacer1)
-
# Resize longer subtitles
resize_label = QLabel(_("Resize Options"), self)
font = resize_label.font()
@@ -231,14 +182,12 @@ class TranscriptionResizerWidget(QWidget):
resize_layout.addLayout(self.resize_row)
resize_group_box.setEnabled(self.transcription.word_level_timings != 1)
- if self.transcription.word_level_timings == 1:
- resize_group_box.setToolTip(_("Available only if word level timings were disabled during transcription"))
layout.addRow(resize_group_box)
# Spacer
- spacer2 = QSpacerItem(0, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
- layout.addItem(spacer2)
+ spacer = QSpacerItem(0, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+ layout.addItem(spacer)
# Merge words into subtitles
merge_options_label = QLabel(_("Merge Options"), self)
@@ -288,8 +237,6 @@ class TranscriptionResizerWidget(QWidget):
merge_options_layout.addLayout(self.merge_options_row)
merge_options_group_box.setEnabled(self.transcription.word_level_timings == 1)
- if self.transcription.word_level_timings != 1:
- merge_options_group_box.setToolTip(_("Available only if word level timings were enabled during transcription"))
layout.addRow(merge_options_group_box)
@@ -345,44 +292,6 @@ class TranscriptionResizerWidget(QWidget):
if self.transcriptions_updated_signal:
self.transcriptions_updated_signal.emit(new_transcript_id)
- def on_extend_button_clicked(self):
- try:
- extend_amount_seconds = float(self.extend_amount_input.text())
- except ValueError:
- extend_amount_seconds = 0.2
-
- # Convert seconds to milliseconds (internal time unit)
- extend_amount = int(extend_amount_seconds * 1000)
-
- segments = self.transcription_service.get_transcription_segments(
- transcription_id=self.transcription.id_as_uuid
- )
-
- extended_segments = []
- for i, segment in enumerate(segments):
- new_end = segment.end_time + extend_amount
-
- # Ensure segment end doesn't exceed start of next segment
- if i < len(segments) - 1:
- next_start = segments[i + 1].start_time
- new_end = min(new_end, next_start)
-
- extended_segments.append(
- Segment(
- start=segment.start_time,
- end=new_end,
- text=segment.text
- )
- )
-
- new_transcript_id = self.transcription_service.copy_transcription(
- self.transcription.id_as_uuid
- )
- self.transcription_service.update_transcription_as_completed(new_transcript_id, extended_segments)
-
- if self.transcriptions_updated_signal:
- self.transcriptions_updated_signal.emit(new_transcript_id)
-
def on_merge_button_clicked(self):
self.new_transcript_id = self.transcription_service.copy_transcription(
self.transcription.id_as_uuid
diff --git a/buzz/widgets/update_dialog.py b/buzz/widgets/update_dialog.py
deleted file mode 100644
index 43487284..00000000
--- a/buzz/widgets/update_dialog.py
+++ /dev/null
@@ -1,262 +0,0 @@
-import logging
-import os
-import platform
-import subprocess
-import tempfile
-from typing import Optional
-
-from PyQt6.QtCore import Qt, QUrl
-from PyQt6.QtWidgets import QApplication
-from PyQt6.QtGui import QIcon
-from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
-from PyQt6.QtWidgets import (
- QDialog,
- QVBoxLayout,
- QHBoxLayout,
- QLabel,
- QPushButton,
- QProgressBar,
- QMessageBox,
- QWidget,
- QTextEdit,
-)
-
-from buzz.__version__ import VERSION
-from buzz.locale import _
-from buzz.update_checker import UpdateInfo
-from buzz.widgets.icon import BUZZ_ICON_PATH
-
-class UpdateDialog(QDialog):
- """Dialog shows when an update is available"""
- def __init__(
- self,
- update_info: UpdateInfo,
- network_manager: Optional[QNetworkAccessManager] = None,
- parent: Optional[QWidget] = None
- ):
- super().__init__(parent)
-
- self.update_info = update_info
-
- if network_manager is None:
- network_manager = QNetworkAccessManager(self)
- self.network_manager = network_manager
-
- self._download_reply: Optional[QNetworkReply] = None
- self._temp_file_paths: list = []
- self._pending_urls: list = []
- self._temp_dir: Optional[str] = None
-
- self._setup_ui()
-
- def _setup_ui(self):
- self.setWindowTitle(_("Update Available"))
- self.setWindowIcon(QIcon(BUZZ_ICON_PATH))
- self.setMinimumWidth(450)
-
- layout = QVBoxLayout(self)
- layout.setSpacing(16)
-
- #header
- header_label = QLabel(
- _("A new version of Buzz is available!")
- )
-
- header_label.setStyleSheet("font-size: 16px; font-weight: bold;")
- layout.addWidget(header_label)
-
- #Version info
- version_layout = QHBoxLayout()
-
- current_version_label = QLabel(_("Current version:"))
- current_version_value = QLabel(f"{VERSION}")
-
- new_version_label = QLabel(_("New version:"))
- new_version_value = QLabel(f"{self.update_info.version}")
-
- version_layout.addWidget(current_version_label)
- version_layout.addWidget(current_version_value)
- version_layout.addStretch()
- version_layout.addWidget(new_version_label)
- version_layout.addWidget(new_version_value)
-
- layout.addLayout(version_layout)
-
- #Release notes
- if self.update_info.release_notes:
- notes_label = QLabel(_("Release Notes:"))
- notes_label.setStyleSheet("font-weight: bold;")
- layout.addWidget(notes_label)
-
- notes_text = QTextEdit()
- notes_text.setReadOnly(True)
- notes_text.setMarkdown(self.update_info.release_notes)
- notes_text.setMaximumHeight(150)
- layout.addWidget(notes_text)
-
- #progress bar
- self.progress_bar = QProgressBar()
- self.progress_bar.setVisible(False)
- self.progress_bar.setTextVisible(True)
- layout.addWidget(self.progress_bar)
-
- #Status label
- self.status_label = QLabel("")
- self.status_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
- layout.addWidget(self.status_label)
-
- #Buttons
- button_layout = QVBoxLayout()
-
- self.download_button = QPushButton(_("Download and Install"))
- self.download_button.clicked.connect(self._on_download_clicked)
- self.download_button.setDefault(True)
-
- button_layout.addStretch()
- button_layout.addWidget(self.download_button)
-
- layout.addLayout(button_layout)
-
- def _on_download_clicked(self):
- """Starts downloading the installer"""
- if not self.update_info.download_urls:
- QMessageBox.warning(
- self,
- _("Error"),
- _("No download URL available for your platform.")
- )
- return
-
- self.download_button.setEnabled(False)
- self.progress_bar.setVisible(True)
- self.progress_bar.setValue(0)
- self._temp_file_paths = []
- self._pending_urls = list(self.update_info.download_urls)
- self._temp_dir = tempfile.mkdtemp()
- self._download_next_file()
-
- def _download_next_file(self):
- """Download the next file in the queue"""
- if not self._pending_urls:
- self._all_downloads_finished()
- return
-
- url_str = self._pending_urls[0]
- file_index = len(self.update_info.download_urls) - len(self._pending_urls) + 1
- total_files = len(self.update_info.download_urls)
- self.status_label.setText(
- _("Downloading file {} of {}...").format(file_index, total_files)
- )
-
- url = QUrl(url_str)
- request = QNetworkRequest(url)
-
- self._download_reply = self.network_manager.get(request)
- self._download_reply.downloadProgress.connect(self._on_download_progress)
- self._download_reply.finished.connect(self._on_download_finished)
-
- def _on_download_progress(self, bytes_received: int, bytes_total: int):
- """Update the progress bar during download"""
- if bytes_total > 0:
- progress = int((bytes_received / bytes_total) * 100)
- self.progress_bar.setValue(progress)
-
- mb_received = bytes_received / (1024 * 1024)
- mb_total = bytes_total / (1024 * 1024)
- file_index = len(self.update_info.download_urls) - len(self._pending_urls) + 1
- total_files = len(self.update_info.download_urls)
- self.status_label.setText(
- _("Downloading file {} of {} ({:.1f} MB / {:.1f} MB)...").format(
- file_index, total_files, mb_received, mb_total
- )
- )
-
- def _on_download_finished(self):
- """Handles download completion for one file"""
- if self._download_reply is None:
- return
-
- if self._download_reply.error() != QNetworkReply.NetworkError.NoError:
- error_msg = self._download_reply.errorString()
- logging.error(f"Download failed: {error_msg}")
-
- QMessageBox.critical(
- self,
- _("Download Failed"),
- _("Failed to download the update: {}").format(error_msg)
- )
-
- self._reset_ui()
- self._download_reply.deleteLater()
- self._download_reply = None
- return
-
- data = self._download_reply.readAll().data()
- self._download_reply.deleteLater()
- self._download_reply = None
-
- url_str = self._pending_urls.pop(0)
-
- # Extract original filename from URL to preserve it
- original_filename = QUrl(url_str).fileName()
- if not original_filename:
- original_filename = f"download_{len(self._temp_file_paths)}"
-
- try:
- temp_path = os.path.join(self._temp_dir, original_filename)
- with open(temp_path, "wb") as f:
- f.write(data)
- self._temp_file_paths.append(temp_path)
- logging.info(f"File saved to: {temp_path}")
- except Exception as e:
- logging.error(f"Failed to save file: {e}")
- QMessageBox.critical(
- self,
- _("Error"),
- _("Failed to save the installer: {}").format(str(e))
- )
- self._reset_ui()
- return
-
- self._download_next_file()
-
- def _all_downloads_finished(self):
- """All files downloaded, run the installer"""
- self.progress_bar.setValue(100)
- self.status_label.setText(_("Download complete!"))
- self._run_installer()
-
- def _run_installer(self):
- """Run the downloaded installer"""
- if not self._temp_file_paths:
- return
-
- installer_path = self._temp_file_paths[0]
- system = platform.system()
-
- try:
- if system == "Windows":
- subprocess.Popen([installer_path], shell=True)
-
- elif system == "Darwin":
- #open the DMG file
- subprocess.Popen(["open", installer_path])
-
- # Close the app so the installer can replace files
- self.accept()
- QApplication.quit()
-
- except Exception as e:
- logging.error(f"Failed to run installer: {e}")
- QMessageBox.critical(
- self,
- _("Error"),
- _("Failed to run the installer: {}").format(str(e))
- )
-
- def _reset_ui(self):
- """Reset the UI to initial state after an error"""
- self.download_button.setEnabled(True)
- self.progress_bar.setVisible(False)
- self.status_label.setText("")
-
diff --git a/docs/docs/faq.md b/docs/docs/faq.md
index 88723b7f..1eb3207e 100644
--- a/docs/docs/faq.md
+++ b/docs/docs/faq.md
@@ -11,7 +11,9 @@ The models are stored:
- Mac OS: `~/Library/Caches/Buzz`
- Windows: `%USERPROFILE%\AppData\Local\Buzz\Buzz\Cache`
-Paste the location in your file manager to access the models or go to `Help -> Preferences -> Models` and click on `Show file location` button after downloading some model.
+Paste the location in your file manager to access the models.
+
+Since Version `1.3.4`, to get to the logs folder go to `Help -> About Buzz` and click on `Show logs` button.
### 2. What can I try if the transcription runs too slowly?
@@ -37,7 +39,7 @@ When choosing among large models consider the following. "Large" is the first re
In addition to choosing an appropriate model size you also can choose whisper type.
- **Whisper** is initial OpenAI implementation, it is accurate but slow and requires a lot of RAM.
-- **Faster Whisper** is an optimized implementation, it is orders of magnitude faster than regular Whisper and requires less RAM. Use this option if you have an Nvidia GPU with at least 6GB of VRAM.
+- Faster **Whisper** is an optimized implementation, it is orders of magnitude faster than regular Whisper and requires less RAM. Use this option if you have an Nvidia GPU with at least 6GB of VRAM.
- **Whisper.cpp** is optimized C++ implementation, it quite fast and efficient and will use any brand of GPU. Whisper.cpp is capable of running real time transcription even on a modern laptop with integrated GPU. It can also run on CPU only. Use this option if you do not have Nvidia GPU.
- **HuggingFace** option is a `Transformers` implementation and is good in that it supports wide range of custom models that may be optimized for a particular language. This option also supports [MMS](https://ai.meta.com/blog/multilingual-model-speech-recognition/) family of models from Meta AI that support over 1000 of worlds languages as well as [PEFT](https://github.com/huggingface/peft) adjustments to Whisper models.
@@ -65,7 +67,7 @@ Yes, Buzz can be used without internet connection if you download the necessary
If a model download was incomplete or corrupted, Buzz may crash. Try to delete the downloaded model files in `Help -> Preferences -> Models` and re-download them.
-If that does not help, check the log file for errors and [report the issue](https://github.com/chidiwilliams/buzz/issues) so we can fix it. If possible attach the log file to the issue. Since Version `1.3.4`, to get to the logs folder go to `Help -> About Buzz` and click on `Show logs` button.
+If that does not help, check the log file for errors and [report the issue](https://github.com/chidiwilliams/buzz/issues) so we can fix it. The log file is located in `~/Library/Logs/Buzz` (Mac OS) or `%USERPROFILE%\AppData\Local\Buzz\Buzz\Logs` (Windows). On Linux run the Buzz from the command line to see the relevant messages.
### 9. Where can I get latest development version?
diff --git a/docs/docs/index.md b/docs/docs/index.md
index 27600e0a..a03d4efe 100644
--- a/docs/docs/index.md
+++ b/docs/docs/index.md
@@ -12,22 +12,33 @@ OpenAI's [Whisper](https://github.com/openai/whisper).

[](https://GitHub.com/chidiwilliams/buzz/releases/)
+> Buzz is better on the App Store. Get a Mac-native version of Buzz with a cleaner look, audio playback, drag-and-drop import, transcript editing, search, and much more.
+>
+
## Features
- Import audio and video files and export transcripts to TXT, SRT, and
VTT ([Demo](https://www.loom.com/share/cf263b099ac3481082bb56d19b7c87fe))
- Transcription and translation from your computer's microphones to text (Resource-intensive and may not be
real-time, [Demo](https://www.loom.com/share/564b753eb4d44b55b985b8abd26b55f7))
- - Presentation window for easy accessibility during events and presentations
- - [Realtime translation](https://chidiwilliams.github.io/buzz/docs/usage/translations) with OpenAI API compatible AI
-- [Advanced Transcription Viewer](https://chidiwilliams.github.io/buzz/docs/usage/transcription_viewer) with search, playback controls, and speed adjustment
+- **Advanced Transcription Viewer** with search, playback controls, and speed adjustment
- **Smart Interface** with conditional visibility and state persistence
- **Professional Controls** including loop segments, follow audio, and keyboard shortcuts
- Supports [Whisper](https://github.com/openai/whisper#available-models-and-languages),
- [Whisper.cpp](https://github.com/ggerganov/whisper.cpp) (with Vulkan GPU acceleration), [Faster Whisper](https://github.com/guillaumekln/faster-whisper),
+ [Whisper.cpp](https://github.com/ggerganov/whisper.cpp), [Faster Whisper](https://github.com/guillaumekln/faster-whisper),
[Whisper-compatible Hugging Face models](https://huggingface.co/models?other=whisper), and
the [OpenAI Whisper API](https://platform.openai.com/docs/api-reference/introduction)
- [Command-Line Interface](#command-line-interface)
-- Speech separation before transcription for better accuracy on noisy audio
-- [Speaker identification](https://chidiwilliams.github.io/buzz/docs/usage/speaker_identification) in transcribed media
-- Available on Mac, Windows, and Linux
\ No newline at end of file
+- Available on Mac, Windows, and Linux
+
+## Transcription Viewer
+
+Buzz features a powerful transcription viewer that makes it easy to work with your transcriptions:
+
+- **🔍 Smart Search**: Find text quickly with real-time search and navigation
+- **🎵 Playback Controls**: Loop segments, follow audio, and adjust playback speed
+- **⌨️ Keyboard Shortcuts**: Efficient navigation with Ctrl+F, Ctrl+L, and more
+- **🎨 Clean Interface**: Conditional visibility keeps the interface uncluttered
+- **💾 State Persistence**: Remembers your preferences between sessions
+
+[Learn more about the Transcription Viewer →](https://chidiwilliams.github.io/buzz/docs/usage/transcription_viewer)
diff --git a/docs/docs/installation.md b/docs/docs/installation.md
index 259bf329..633ea9cd 100644
--- a/docs/docs/installation.md
+++ b/docs/docs/installation.md
@@ -3,8 +3,8 @@ title: Installation
sidebar_position: 2
---
-To install Buzz, download the latest version for your operating
-system. Buzz is available on **Mac** (Intel and Apple silicon), **Windows**, and **Linux**.
+To install Buzz, download the [latest version](https://github.com/chidiwilliams/buzz/releases/latest) for your operating
+system. Buzz is available on **Mac** (Intel), **Windows**, and **Linux**.
### macOS
@@ -25,8 +25,6 @@ To install flatpak, run:
flatpak install flathub io.github.chidiwilliams.Buzz
```
-[](https://flathub.org/en/apps/io.github.chidiwilliams.Buzz)
-
To install snap, run:
```shell
sudo apt-get install libportaudio2 libcanberra-gtk-module libcanberra-gtk3-module
@@ -36,15 +34,15 @@ sudo snap connect buzz:password-manager-service
[](https://snapcraft.io/buzz)
+Alternatively, on Ubuntu 20.04 and later, install the dependencies:
+
+```shell
+sudo apt-get install libportaudio2
+```
+
## PyPI
```shell
pip install buzz-captions
python -m buzz
```
-
-On Linux install system dependencies you may be missing
-```
-sudo apt-get install --no-install-recommends libyaml-dev libtbb-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-shape0 libxcb-cursor0 libportaudio2 gettext libpulse0 ffmpeg
-```
-On versions prior to Ubuntu 24.04 install `sudo apt-get install --no-install-recommends libegl1-mesa`
diff --git a/docs/docs/usage/1_file_import.md b/docs/docs/usage/1_file_import.md
index 8b1086a8..a811fddc 100644
--- a/docs/docs/usage/1_file_import.md
+++ b/docs/docs/usage/1_file_import.md
@@ -16,11 +16,11 @@ title: File Import
To reduce misspellings you can pass some commonly misspelled words in an `Initial prompt` that is available under `Advanced...` button. See this [guide on prompting](https://cookbook.openai.com/examples/whisper_prompting_guide#pass-names-in-the-prompt-to-prevent-misspellings).
-| Field | Options | Default | Description |
-| ------------------ | ------------------- | ------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Export As | "TXT", "SRT", "VTT" | "TXT" | Export file format |
-| Word-Level Timings | Off / On | Off | If checked, the transcription will generate a separate subtitle line for each word in the audio. Combine words into subtitles afterwards with the [resize option](https://chidiwilliams.github.io/buzz/docs/usage/edit_and_resize). |
-| Extract speech | Off / On | Off | If checked, speech will be extracted to a separate audio tack to improve accuracy. |
+| Field | Options | Default | Description |
+| ------------------ | ------------------- | ------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Export As | "TXT", "SRT", "VTT" | "TXT" | Export file format |
+| Word-Level Timings | Off / On | Off | If checked, the transcription will generate a separate subtitle line for each word in the audio. Combine words into subtitles afterwards with the [resize option](https://chidiwilliams.github.io/buzz/docs/usage/edit_and_resize). |
+| Extract speech | Off / On | Off | If checked, speech will be extracted to a separate audio tack to improve accuracy. Available since 1.3.0. |
(See the [Live Recording section](https://chidiwilliams.github.io/buzz/docs/usage/live_recording) for more information about the task, language, and quality settings.)
diff --git a/docs/docs/usage/2_live_recording.md b/docs/docs/usage/2_live_recording.md
index 750c5874..83c567d1 100644
--- a/docs/docs/usage/2_live_recording.md
+++ b/docs/docs/usage/2_live_recording.md
@@ -8,7 +8,7 @@ To start a live recording:
- Click Record.
> **Note:** Transcribing audio using the default Whisper model is resource-intensive. Consider using the Whisper.cpp.
-> It supports GPU acceleration, if the model fits in GPU memory. Use smaller models for real-time performance.
+> Since 1.3.0 it supports GPU acceleration, if the model fits in GPU memory. Use smaller models for real-time performance.
| Field | Options | Default | Description |
|------------|------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -18,19 +18,6 @@ To start a live recording:
[](https://www.loom.com/share/564b753eb4d44b55b985b8abd26b55f7 "Live Recording on Buzz")
-#### Advanced preferences
-**Silence threshold** Set threshold to for transcriptions to be processed. If average volume level is under this setting the sentence will not be transcribed. Available since 1.4.4.
-
-**Line separator** Marking to add to the transcription and translation lines. Default value is two new lines (`\n\n`) that result in an empty space between translation or transcription lines. To have no empty line use `\n`. Available since 1.4.4.
-
-**Transcription step** If live recording mode is set to `Append and correct`, you can also set a transcription step. Shorter steps will reduce latency but cause larger load on the system. Monitor the `Queue` while transcribing in this mode, if it grows too much, increase the transcription step, to reduce load. Available since 1.4.4.
-
-**Hide unconfirmed** If live recording mode is set to `Append and correct`, you can also hide the unconfirmed part of the last transcript. This part may be incorrect as the Buzz has seen it only in one overlapping transcription segment. Hiding it will increase latency, but result will show only the correct transcripts. Available since 1.4.4.
-
-#### Presentation Window
-
-Buzz has an easy to use presentation window you can use to show live transcriptions during events and presentations. To open it start the recording and new options for the `Presentation window` will appear.
-
### Record audio playing from computer (macOS)
To record audio playing from an application on your computer, you may install an audio loopback driver (a program that
diff --git a/docs/docs/usage/3_translations.md b/docs/docs/usage/3_translations.md
index 44ed71f5..84ba4a54 100644
--- a/docs/docs/usage/3_translations.md
+++ b/docs/docs/usage/3_translations.md
@@ -2,7 +2,7 @@
title: Translations
---
-Default `Translation` task uses Whisper model ability to translate to English, however `Large-V3-Turbo` is not compatible with this standard. Buzz supports additional AI translations to any other language.
+Default `Translation` task uses Whisper model ability to translate to English, however `Large-V3-Turbo` is not compatible with this standard. Since version `1.0.0` Buzz supports additional AI translations to any other language.
To use translation feature you will need to configure OpenAI API key and translation settings. Set OpenAI API ket in Preferences. Buzz also supports custom locally running translation AIs that support OpenAI API. For more information on locally running AIs see [ollama](https://ollama.com/blog/openai-compatibility) or [LM Studio](https://lmstudio.ai/). For information on available custom APIs see this [discussion thread](https://github.com/chidiwilliams/buzz/discussions/827).
diff --git a/docs/docs/usage/4_edit_and_resize.md b/docs/docs/usage/4_edit_and_resize.md
index 4231d8db..8b51cc3f 100644
--- a/docs/docs/usage/4_edit_and_resize.md
+++ b/docs/docs/usage/4_edit_and_resize.md
@@ -8,6 +8,4 @@ When transcript of some audio or video file is generated you can edit it and exp
Transcription view screen has option to resize the transcripts. Click on the "Resize" button so see available options. Transcripts that have been generated **with word-level timings** setting enabled can be combined into subtitles specifying different options, like maximum length of a subtitle and if subtitles should be split on punctuation. For transcripts that have been generated **without word-level timings** setting enabled can only be recombined specifying desired max length of a subtitle.
-If audio file is still present on the system word-level timing merge will also analyze the audio for silences to improve subtitle accuracy.
-
-The resize tool also has an option to extend end time of segments if you want the subtitles to be on the screen for longer. You can specify the amount of time in seconds to extend each subtitle segment. Buzz will add this amount of time to the end of each subtitle segment making sure that the end of a segment does not go over start of the next segment. This feature is available since 1.4.3.
\ No newline at end of file
+If audio file is still present on the system word-level timing merge will also analyze the audio for silences to improve subtitle accuracy. Subtitle generation from transcripts with word-level timings is available since version 1.3.0.
\ No newline at end of file
diff --git a/docs/docs/usage/5_speaker_identification.md b/docs/docs/usage/5_speaker_identification.md
index a8c8c097..72dc7ee6 100644
--- a/docs/docs/usage/5_speaker_identification.md
+++ b/docs/docs/usage/5_speaker_identification.md
@@ -6,4 +6,4 @@ When transcript of some audio or video file is generated you can identify speake
Transcription view screen has option to identify speakers. Click on the "Identify speakers" button so see available options.
-If audio file is still present on the system speaker identification will mark each speakers sentences with appropriate label. You can preview 10 seconds of some random sentence of the identified speaker and rename the automatically identified label to speakers real name. If "Merge speaker sentences" checkbox is selected when you save the speaker labels, all consecutive sentences of the same speaker will be merged into one segment. Speaker identification is not available on Intel macOS.
\ No newline at end of file
+If audio file is still present on the system speaker identification will mark each speakers sentences with appropriate label. You can preview 10 seconds of some random sentence of the identified speaker and rename the automatically identified label to speakers real name. If "Merge speaker sentences" checkbox is selected when you save the speaker labels, all consecutive sentences of the same speaker will be merged into one segment. Speaker identification is available since version 1.4.0 on all platforms except Intel macOS.
\ No newline at end of file
diff --git a/docs/docs/usage/5_transcription_viewer.md b/docs/docs/usage/5_transcription_viewer.md
index c075b9b3..a4c9c9e2 100644
--- a/docs/docs/usage/5_transcription_viewer.md
+++ b/docs/docs/usage/5_transcription_viewer.md
@@ -9,7 +9,7 @@ The transcription viewer is organized into several key sections:
- **Top Toolbar**: Contains view mode, export, translate, resize, and search
- **Search Bar**: Find and navigate through transcript text
- **Transcription Segments**: Table view of all transcription segments with timestamps
-- **Playback Controls**: Audio playback settings and speed controls
+- **Playback Controls**: Audio playback settings and speed controls (since version 1.3.0)
- **Audio Player**: Standard media player with progress bar
- **Current Segment Display**: Shows the currently selected or playing segment
@@ -37,21 +37,25 @@ The transcription viewer is organized into several key sections:
- **More information**: See [Edit and Resize](https://chidiwilliams.github.io/buzz/docs/usage/edit_and_resize) section
### Playback Controls Button
+(since version 1.3.0)
- **Function**: Show/hide playback control panel
- **Shortcut**: `Ctrl+Alt+P` (Windows/Linux) or `Cmd+Alt+P` (macOS)
- **Behavior**: Toggle button that shows/hides the playback controls below
### Find Button
+(since version 1.3.0)
- **Function**: Show/hide search functionality
- **Shortcut**: `Ctrl+F` (Windows/Linux) or `Cmd+F` (macOS)
- **Behavior**: Toggle button that shows/hides the search bar
### Scroll to Current Button
+(since version 1.3.0)
- **Function**: Automatically scroll to the currently playing text
- **Shortcut**: `Ctrl+G` (Windows/Linux) or `Cmd+G` (macOS)
- **Usage**: Click to jump to the current audio position in the transcript
## Search Functionality
+(since version 1.3.0)
### Search Bar
The search bar appears below the toolbar when activated and provides:
@@ -76,6 +80,7 @@ The search bar appears below the toolbar when activated and provides:
- **Cross-view Search**: Works in all view modes (Timestamps, Text, Translation)
## Playback Controls
+(since version 1.3.0)
### Loop Segment
- **Function**: Automatically loop playback of selected segments
@@ -100,6 +105,7 @@ The search bar appears below the toolbar when activated and provides:
- **Button Sizing**: Speed control buttons match the size of search navigation buttons for visual consistency
## Keyboard Shortcuts
+(since version 1.3.0)
### Audio Playback
- **`Ctrl+P` / `Cmd+P`**: Play/Pause audio
diff --git a/docs/i18n/zh/docusaurus-plugin-content-docs/current/index.md b/docs/i18n/zh/docusaurus-plugin-content-docs/current/index.md
index 86967bbb..61267e8c 100644
--- a/docs/i18n/zh/docusaurus-plugin-content-docs/current/index.md
+++ b/docs/i18n/zh/docusaurus-plugin-content-docs/current/index.md
@@ -11,6 +11,11 @@ sidebar_position: 1

[](https://GitHub.com/chidiwilliams/buzz/releases/)
+
+
在 App Store 下载运行的性能更佳。 获得外观更整洁、音频播放、拖放导入、转录编辑、搜索等功能的原生Mac版本。
+
+
+
## 功能
- 导入音频和视频文件,并将转录内容导出为 TXT、SRT 和 VTT 格式([演示](https://www.loom.com/share/cf263b099ac3481082bb56d19b7c87fe))
diff --git a/docs/i18n/zh/docusaurus-plugin-content-docs/current/installation.md b/docs/i18n/zh/docusaurus-plugin-content-docs/current/installation.md
index b3bbc7c1..2ce56a94 100644
--- a/docs/i18n/zh/docusaurus-plugin-content-docs/current/installation.md
+++ b/docs/i18n/zh/docusaurus-plugin-content-docs/current/installation.md
@@ -3,7 +3,7 @@ title: 安装
sidebar_position: 2
---
-要安装 Buzz,请下载适用于您操作系统的[最新版本](https://github.com/chidiwilliams/buzz/releases/latest)。Buzz 支持 **Mac**(Intel)、**Windows** 和 **Linux** 系统。
+要安装 Buzz,请下载适用于您操作系统的[最新版本](https://github.com/chidiwilliams/buzz/releases/latest)。Buzz 支持 **Mac**(Intel)、**Windows** 和 **Linux** 系统。(对于 Apple Silicon 用户,请参阅 [App Store 版本](https://apps.apple.com/us/app/buzz-captions/id6446018936?mt=12&itsct=apps_box_badge&itscg=30200)。)
## macOS(Intel,macOS 11.7 及更高版本)
@@ -15,7 +15,8 @@ brew install --cask buzz
或者,下载并运行 `Buzz-x.y.z.dmg` 文件。
-对于 Mac Silicon 用户(以及希望在 Mac Intel 上获得更好体验的用户)。
+对于 Mac Silicon 用户(以及希望在 Mac Intel 上获得更好体验的用户),
+请从 App Store 下载 [Buzz Captions](https://apps.apple.com/us/app/buzz-captions/id6446018936?mt=12&itsct=apps_box_badge&itscg=30200)。
## Windows(Windows 10 及更高版本)
diff --git a/hatch_build.py b/hatch_build.py
index 0aeeab4c..b070d9d9 100644
--- a/hatch_build.py
+++ b/hatch_build.py
@@ -82,42 +82,6 @@ class CustomBuildHook(BuildHookInterface):
# Build ctc_forced_aligner C++ extension in-place
print("Building ctc_forced_aligner C++ extension...")
ctc_aligner_dir = project_root / "ctc_forced_aligner"
-
- # Apply local patches before building.
- # Uses --check first to avoid touching the working tree unnecessarily,
- # which is safer in a detached-HEAD submodule.
- patches_dir = project_root / "patches"
- for patch_file in sorted(patches_dir.glob("ctc_forced_aligner_*.patch")):
- # Dry-run forward: succeeds only if patch is NOT yet applied.
- check_forward = subprocess.run(
- ["git", "apply", "--check", "--ignore-whitespace", str(patch_file)],
- cwd=ctc_aligner_dir,
- capture_output=True,
- text=True,
- )
- if check_forward.returncode == 0:
- # Patch can be applied — do it for real.
- subprocess.run(
- ["git", "apply", "--ignore-whitespace", str(patch_file)],
- cwd=ctc_aligner_dir,
- check=True,
- capture_output=True,
- text=True,
- )
- print(f"Applied patch: {patch_file.name}")
- else:
- # Dry-run failed — either already applied or genuinely broken.
- check_reverse = subprocess.run(
- ["git", "apply", "--check", "--reverse", "--ignore-whitespace", str(patch_file)],
- cwd=ctc_aligner_dir,
- capture_output=True,
- text=True,
- )
- if check_reverse.returncode == 0:
- print(f"Patch already applied (skipping): {patch_file.name}")
- else:
- print(f"WARNING: could not apply patch {patch_file.name}: {check_forward.stderr}", file=sys.stderr)
-
result = subprocess.run(
[sys.executable, "setup.py", "build_ext", "--inplace"],
cwd=ctc_aligner_dir,
@@ -152,29 +116,27 @@ class CustomBuildHook(BuildHookInterface):
else:
print(f"Warning: {whisper_cpp_dir} does not exist after build", file=sys.stderr)
- # Force include demucs package at top level (demucs_repo/demucs -> demucs/)
- demucs_pkg_dir = project_root / "demucs_repo" / "demucs"
- if demucs_pkg_dir.exists():
- # Get all files in the demucs package directory
- demucs_files = glob.glob(str(demucs_pkg_dir / "**" / "*"), recursive=True)
+ # Force include all files in demucs directory
+ demucs_dir = project_root / "demucs_repo"
+ if demucs_dir.exists():
+ # Get all files in the demucs directory
+ demucs_files = glob.glob(str(demucs_dir / "**" / "*"), recursive=True)
# Filter only files (not directories)
demucs_files = [f for f in demucs_files if Path(f).is_file()]
- # Add them to force_include, mapping to top-level demucs/
+ # Add them to force_include
if 'force_include' not in build_data:
build_data['force_include'] = {}
for file_path in demucs_files:
- # Convert to relative path from demucs package dir
- rel_from_pkg = Path(file_path).relative_to(demucs_pkg_dir)
- # Target path is demucs/
- target_path = Path("demucs") / rel_from_pkg
- build_data['force_include'][str(file_path)] = str(target_path)
+ # Convert to relative path from project root
+ rel_path = Path(file_path).relative_to(project_root)
+ build_data['force_include'][str(rel_path)] = str(rel_path)
- print(f"Force including {len(demucs_files)} files from demucs_repo/demucs/ -> demucs/")
+ print(f"Force including {len(demucs_files)} files from demucs_repo/")
else:
- print(f"Warning: {demucs_pkg_dir} does not exist", file=sys.stderr)
+ print(f"Warning: {demucs_dir} does not exist", file=sys.stderr)
# Force include all .mo files from buzz/locale directory
locale_dir = project_root / "buzz" / "locale"
diff --git a/patches/ctc_forced_aligner_windows_mutex.patch b/patches/ctc_forced_aligner_windows_mutex.patch
deleted file mode 100644
index 2940c9ab..00000000
--- a/patches/ctc_forced_aligner_windows_mutex.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/setup.py b/setup.py
-index de84a25..386f662 100644
---- a/setup.py
-+++ b/setup.py
-@@ -6,7 +6,10 @@ ext_modules = [
- Pybind11Extension(
- "ctc_forced_aligner.ctc_forced_aligner",
- ["ctc_forced_aligner/forced_align_impl.cpp"],
-- extra_compile_args=["/O2"] if sys.platform == "win32" else ["-O3"],
-+ # /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR prevents MSVC runtime mutex
-+ # static-initializer crash on newer GitHub Actions Windows runners.
-+ # See: https://github.com/actions/runner-images/issues/10004
-+ extra_compile_args=["/O2", "/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR"] if sys.platform == "win32" else ["-O3"],
- )
- ]
-
diff --git a/pyproject.toml b/pyproject.toml
index 789d4818..8d39405a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,12 +1,11 @@
[project]
name = "buzz-captions"
# Change also in Makefile and buzz/__version__.py
-version = "1.4.4"
+version = "1.4.0"
description = ""
authors = [{ name = "Chidi Williams", email = "williamschidi1@gmail.com" }]
requires-python = ">=3.12,<3.13"
readme = "README.md"
-# License format change to remove warning in PyPI will cause snap not to build
license = { text = "MIT" }
dependencies = [
"sounddevice>=0.5.3,<0.6",
@@ -20,7 +19,7 @@ dependencies = [
"dataclasses-json>=0.6.4,<0.7",
"numpy>=1.21.2,<2",
"requests>=2.31.0,<3",
- "yt-dlp>=2026.2.21",
+ "yt-dlp>=2025.11.12,<2026",
"stable-ts>=2.19.1,<3",
"faster-whisper>=1.2.1,<2",
"openai-whisper==20250625",
@@ -46,7 +45,10 @@ dependencies = [
"ctranslate2>=4.6.2,<5; sys_platform != 'darwin'",
# faster whisper need cudnn 9
"nvidia-cudnn-cu12>=9,<10; sys_platform != 'darwin'",
- # CUDA runtime libraries are provided by torch dependencies, no need to specify explicitly
+ # CUDA runtime libraries for Windows (Linux gets them via torch dependencies)
+ "nvidia-cuda-runtime-cu12>=12.9,<13; sys_platform == 'win32'",
+ "nvidia-cublas-cu12>=12.9,<13; sys_platform == 'win32'",
+ "nvidia-cuda-nvrtc-cu12>=12.9,<13; sys_platform == 'win32'",
"darkdetect>=0.8.0,<0.9",
"dora-search>=0.1.12,<0.2",
"diffq>=0.2.4,<0.3",
@@ -68,7 +70,6 @@ dependencies = [
"posthog>=3.23.0,<4",
# This version works, newer have issues on Windows
"onnxruntime==1.18.1",
- "onnx>=1.20.0", # Required for nemo-toolkit, ensures ml-dtypes is installed
"vulkan>=1.3.275.1,<2",
"hf-xet>=1.1.5,<2",
"hatchling>=1.28.0",
@@ -79,7 +80,7 @@ dependencies = [
"uroman>=1.3.1.1",
"lhotse==1.32.1",
"coverage==7.12.0",
- # demucs is bundled directly in the wheel from demucs_repo/, not installed as a dependency
+ "demucs",
"certifi==2025.11.12",
"torchcodec>=0.9.0; sys_platform != 'darwin' or platform_machine != 'x86_64'",
"torch>=2.2.2",
@@ -130,6 +131,7 @@ override-dependencies = [
]
[tool.uv.sources]
+demucs = { path = "demucs_repo", editable = true }
torch = [
{ index = "PyPI", marker = "sys_platform == 'darwin'" },
{ index = "pytorch-cu129", marker = "sys_platform != 'darwin'" },
@@ -171,27 +173,18 @@ include = [
"buzz",
"buzz/whisper_cpp/*",
"buzz/locale/*/LC_MESSAGES/buzz.mo",
+ "demucs_repo",
"whisper_diarization",
"deepmultilingualpunctuation",
"ctc_forced_aligner",
]
-# Map demucs_repo/demucs to top-level demucs/ so 'import demucs' works
-sources = {"demucs_repo/demucs" = "demucs"}
[tool.hatch.build.hooks.custom]
[build-system]
-requires = ["hatchling", "cmake>=4.2.0,<5", "polib>=1.2.0,<2", "pybind11", "setuptools>=80.9.0"]
+requires = ["hatchling", "cmake>=4.2.0,<5", "polib>=1.2.0,<2", "pybind11", "setuptools>=42"]
build-backend = "hatchling.build"
-[tool.coverage.report]
-exclude_also = [
- "if sys.platform == \"win32\":",
- "if platform.system\\(\\) == \"Windows\":",
- "if platform.system\\(\\) == \"Linux\":",
- "if platform.system\\(\\) == \"Darwin\":",
-]
-
[tool.ruff]
exclude = [
"**/whisper.cpp",
diff --git a/readme/README.zh_CN.md b/readme/README.zh_CN.md
index 49a37e40..a36d9f31 100644
--- a/readme/README.zh_CN.md
+++ b/readme/README.zh_CN.md
@@ -2,7 +2,7 @@
# Buzz
-[项目文档](https://chidiwilliams.github.io/buzz/zh/docs)
+[项目文档](https://chidiwilliams.github.io/buzz/zh/docs) | [苹果应用商店的 Buzz Captions 页面](https://apps.apple.com/us/app/buzz-captions/id6446018936?mt=12&itsct=apps_box_badge&itscg=30200)
在个人电脑上离线转录和翻译音频。技术模型来源 OpenAI [Whisper](https://github.com/openai/whisper).
@@ -12,6 +12,13 @@

[](https://GitHub.com/chidiwilliams/buzz/releases/)
+
+
在 App Store 下载运行的性能更佳。 获得外观更整洁、音频播放、拖放导入、转录编辑、搜索等功能的原生Mac版本。
Adding speaker identification on transcriptions and video support for transcription viewer, improvements to transcription table and support for over 1000 of worlds languages via MMS models as well as separate window to show live transcripts on a projector.