diff --git a/.gitignore b/.gitignore index 3b23310..f3f8ae6 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ whisper.dll buzz/whisper_cpp.py # Internationalization - compiled binaries -locale/**/*.mo +*.mo benchmarks.json diff --git a/Buzz.spec b/Buzz.spec index 9a1b71e..ef552f2 100644 --- a/Buzz.spec +++ b/Buzz.spec @@ -24,7 +24,7 @@ datas += collect_data_files("whisper") datas += [("buzz/assets/*", "assets")] datas += [ (file[1], os.path.dirname(file[1])) - for file in Tree("./locale", prefix="locale", excludes=["*.po"]) + for file in Tree("./buzz/locale", prefix="buzz/locale", excludes=["*.po"]) ] block_cipher = None diff --git a/Makefile b/Makefile index 160f1c2..acb7c13 100644 --- a/Makefile +++ b/Makefile @@ -161,15 +161,15 @@ translation_po_all: $(MAKE) translation_po locale=it_IT TMP_POT_FILE_PATH := $(shell mktemp) -PO_FILE_PATH := locale/${locale}/LC_MESSAGES/buzz.po +PO_FILE_PATH := buzz/locale/${locale}/LC_MESSAGES/buzz.po translation_po: xgettext --from-code=UTF-8 -o "${TMP_POT_FILE_PATH}" -l python $(shell find buzz/widgets -name '*.py') sed -i.bak 's/CHARSET/UTF-8/' ${TMP_POT_FILE_PATH} && rm ${TMP_POT_FILE_PATH}.bak msgmerge -U ${PO_FILE_PATH} ${TMP_POT_FILE_PATH} translation_mo: - for dir in locale/*/ ; do \ - msgfmt --check $$dir/LC_MESSAGES/buzz.po -o $$dir/LC_MESSAGES/buzz.mo; \ + for dir in buzz/locale/*/ ; do \ + msgfmt.py -o $$dir/LC_MESSAGES/buzz.mo $$dir/LC_MESSAGES/buzz.po; \ done lint: diff --git a/locale/ca_ES/LC_MESSAGES/buzz.po b/buzz/locale/ca_ES/LC_MESSAGES/buzz.po similarity index 73% rename from locale/ca_ES/LC_MESSAGES/buzz.po rename to buzz/locale/ca_ES/LC_MESSAGES/buzz.po index c43eb63..dc107b3 100644 --- a/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: 2023-09-02 13:50+0100\n" +"POT-Creation-Date: 2024-03-14 02:33+0000\n" "PO-Revision-Date: 2023-02-15 05:01+0000\n" "Last-Translator: Jordi Mas i Hernàndez \n" "Language-Team: Catalan \n" @@ -16,11 +16,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: buzz/widgets/main_window.py:157 buzz/widgets/main_window_toolbar.py:57 +#: buzz/widgets/main_window.py:200 buzz/widgets/main_window_toolbar.py:57 msgid "Clear History" msgstr "Neteja l'historial" -#: buzz/widgets/main_window.py:159 +#: buzz/widgets/main_window.py:202 msgid "" "Are you sure you want to delete the selected transcription(s)? This action " "cannot be undone." @@ -28,7 +28,7 @@ msgstr "" "Esteu segur que voleu suprimir les transcripcions seleccionades? Aquesta " "acció no es pot desfer." -#: buzz/widgets/main_window.py:185 +#: buzz/widgets/main_window.py:222 msgid "Select audio file" msgstr "Selecciona un fitxer d'àudio" @@ -64,11 +64,11 @@ msgstr "Idioma:" msgid "Detect Language" msgstr "Detecta l'idioma" -#: buzz/widgets/transcriber/file_transcriber_widget.py:108 +#: buzz/widgets/transcriber/file_transcription_form_widget.py:42 msgid "Word-level timings" msgstr "Temps amb granularitat de paraula" -#: buzz/widgets/transcriber/file_transcriber_widget.py:137 +#: buzz/widgets/transcriber/file_transcriber_widget.py:81 msgid "Run" msgstr "Executa" @@ -89,19 +89,25 @@ msgstr "Obre una transcripció" msgid "Cancel Transcription" msgstr "Cancel·la la transcripció" -#: buzz/widgets/menu_bar.py:29 -msgid "Import Media File..." +#: buzz/widgets/menu_bar.py:37 +#, fuzzy +msgid "Import File..." msgstr "Importa fitxer multimèdia..." -#: buzz/widgets/menu_bar.py:35 +#: buzz/widgets/menu_bar.py:40 +#, fuzzy +msgid "Import URL..." +msgstr "Importa fitxer multimèdia..." + +#: buzz/widgets/menu_bar.py:46 msgid "Preferences..." msgstr "Preferències..." -#: buzz/widgets/menu_bar.py:43 +#: buzz/widgets/menu_bar.py:54 msgid "File" msgstr "Fitxer" -#: buzz/widgets/menu_bar.py:46 +#: buzz/widgets/menu_bar.py:58 msgid "Help" msgstr "Ajuda" @@ -109,55 +115,35 @@ msgstr "Ajuda" msgid "Stop" msgstr "Atura" -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "ID" -msgstr "ID" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "File Name" -msgstr "Nom del fitxer" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "Status" -msgstr "Estat" - -#: buzz/widgets/transcription_tasks_table_widget.py:81 +#: buzz/widgets/transcription_tasks_table_widget.py:64 msgid "Completed" msgstr "Completat" -#: buzz/widgets/transcription_tasks_table_widget.py:88 +#: buzz/widgets/transcription_tasks_table_widget.py:73 msgid "Canceled" msgstr "Cancel·lat" -#: buzz/widgets/transcription_tasks_table_widget.py:90 +#: buzz/widgets/transcription_tasks_table_widget.py:75 msgid "Queued" msgstr "A la cua" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:66 msgid "Start" msgstr "Inicia" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:67 msgid "End" msgstr "Finalitza" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:68 msgid "Text" msgstr "Text" #: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 -msgid "Undo" -msgstr "Desfés" - -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:92 -msgid "Redo" -msgstr "Refés" - -#: buzz/widgets/transcription_viewer/export_transcription_button.py:39 msgid "Save File" msgstr "Desa el fitxer" -#: buzz/widgets/transcription_viewer/export_transcription_button.py:41 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:89 msgid "Text files" msgstr "Fitxers de text" @@ -169,70 +155,109 @@ msgstr "Comprova si hi ha actualitzacions" msgid "You're up to date!" msgstr "Estàs al dia!" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:61 +#: buzz/widgets/import_url_dialog.py:19 +msgid "Import URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:22 +msgid "https://example.com/audio.mp3" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:32 +msgid "URL:" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "Invalid URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "The URL you entered is invalid." +msgstr "" + +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:70 msgid "Download" msgstr "Baixada" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:66 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:75 msgid "Show file location" msgstr "Mostra la ubicació del fitxer" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:74 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83 msgid "Delete" msgstr "Suprimeix" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:111 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:120 msgid "Downloaded" msgstr "Baixat" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:116 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:125 msgid "Available for Download" msgstr "Disponible per baixar" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:158 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:171 msgid "Delete Model" msgstr "Suprimeix el model" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:159 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:172 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:178 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:191 msgid "Error" msgstr "Error" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:43 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 msgid "General" msgstr "General" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:46 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:53 msgid "Models" msgstr "Models" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:57 msgid "Shortcuts" msgstr "Dreceres" -#: buzz/widgets/recording_transcriber_widget.py:62 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:63 +msgid "Folder Watch" +msgstr "" + +#: buzz/widgets/recording_transcriber_widget.py:60 msgid "Live Recording" msgstr "Enregistrament en viu" -#: buzz/widgets/recording_transcriber_widget.py:101 +#: buzz/widgets/recording_transcriber_widget.py:104 msgid "Click Record to begin..." msgstr "Feu clic a Enregistra per a començar..." -#: buzz/widgets/recording_transcriber_widget.py:118 +#: buzz/widgets/recording_transcriber_widget.py:116 msgid "Microphone:" msgstr "Micròfon:" -#: buzz/widgets/recording_transcriber_widget.py:274 +#: buzz/widgets/recording_transcriber_widget.py:272 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:278 +#: buzz/widgets/recording_transcriber_widget.py:276 msgid "" "Please check your audio devices or check the application logs for more " "information." msgstr "" -"Comproveu els vostres dispositius d'àudio o els registres de l'aplicació per" -" a més informació." +"Comproveu els vostres dispositius d'àudio o els registres de l'aplicació per " +"a més informació." + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "File Name" +#~ msgstr "Nom del fitxer" + +#~ msgid "Status" +#~ msgstr "Estat" + +#~ msgid "Undo" +#~ msgstr "Desfés" + +#~ msgid "Redo" +#~ msgstr "Refés" diff --git a/locale/es_ES/LC_MESSAGES/buzz.po b/buzz/locale/es_ES/LC_MESSAGES/buzz.po similarity index 75% rename from locale/es_ES/LC_MESSAGES/buzz.po rename to buzz/locale/es_ES/LC_MESSAGES/buzz.po index 4f3184a..de9f1b1 100644 --- a/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: 2023-09-02 13:50+0100\n" +"POT-Creation-Date: 2024-03-14 02:33+0000\n" "PO-Revision-Date: 2023-11-09 04:35-0600\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: \n" @@ -18,21 +18,21 @@ msgstr "" "X-Generator: Poedit 3.4.1\n" # automatic translation -#: buzz/widgets/main_window.py:157 buzz/widgets/main_window_toolbar.py:57 +#: buzz/widgets/main_window.py:200 buzz/widgets/main_window_toolbar.py:57 msgid "Clear History" msgstr "Vaciar historial" # automatic translation -#: buzz/widgets/main_window.py:159 +#: buzz/widgets/main_window.py:202 msgid "" "Are you sure you want to delete the selected transcription(s)? This action " "cannot be undone." msgstr "" -"¿Confirma que quiere eliminar las transcripciones seleccionadas? Esta " -"acción no se puede deshacer." +"¿Confirma que quiere eliminar las transcripciones seleccionadas? Esta acción " +"no se puede deshacer." # automatic translation -#: buzz/widgets/main_window.py:185 +#: buzz/widgets/main_window.py:222 msgid "Select audio file" msgstr "Seleccionar archivo de audio" @@ -77,12 +77,12 @@ msgid "Detect Language" msgstr "Detectar idioma" # automatic translation -#: buzz/widgets/transcriber/file_transcriber_widget.py:108 +#: buzz/widgets/transcriber/file_transcription_form_widget.py:42 msgid "Word-level timings" msgstr "Tiempos a nivel de palabra" # automatic translation -#: buzz/widgets/transcriber/file_transcriber_widget.py:137 +#: buzz/widgets/transcriber/file_transcriber_widget.py:81 msgid "Run" msgstr "Ejecutar" @@ -108,22 +108,29 @@ msgid "Cancel Transcription" msgstr "Cancelar transcripción" # automatic translation -#: buzz/widgets/menu_bar.py:29 -msgid "Import Media File..." +#: buzz/widgets/menu_bar.py:37 +#, fuzzy +msgid "Import File..." msgstr "Importar archivo multimedia..." # automatic translation -#: buzz/widgets/menu_bar.py:35 +#: buzz/widgets/menu_bar.py:40 +#, fuzzy +msgid "Import URL..." +msgstr "Importar archivo multimedia..." + +# automatic translation +#: buzz/widgets/menu_bar.py:46 msgid "Preferences..." msgstr "Preferencias..." # automatic translation -#: buzz/widgets/menu_bar.py:43 +#: buzz/widgets/menu_bar.py:54 msgid "File" msgstr "Archivo" # automatic translation -#: buzz/widgets/menu_bar.py:46 +#: buzz/widgets/menu_bar.py:58 msgid "Help" msgstr "Ayuda" @@ -132,57 +139,36 @@ msgstr "Ayuda" msgid "Stop" msgstr "Detener" -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "ID" -msgstr "Id." - -# automatic translation -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "File Name" -msgstr "Nombre de archivo" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "Status" -msgstr "Estado" - -#: buzz/widgets/transcription_tasks_table_widget.py:81 +#: buzz/widgets/transcription_tasks_table_widget.py:64 msgid "Completed" msgstr "Completado" -#: buzz/widgets/transcription_tasks_table_widget.py:88 +#: buzz/widgets/transcription_tasks_table_widget.py:73 msgid "Canceled" msgstr "Cancelado" -#: buzz/widgets/transcription_tasks_table_widget.py:90 +#: buzz/widgets/transcription_tasks_table_widget.py:75 msgid "Queued" msgstr "En cola" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:66 msgid "Start" msgstr "Inicio" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:67 msgid "End" msgstr "Fin" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:68 msgid "Text" msgstr "Texto" -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 -msgid "Undo" -msgstr "Deshacer" - -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:92 -msgid "Redo" -msgstr "Rehacer" - # automatic translation -#: buzz/widgets/transcription_viewer/export_transcription_button.py:39 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 msgid "Save File" msgstr "Guardar archivo" -#: buzz/widgets/transcription_viewer/export_transcription_button.py:41 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:89 msgid "Text files" msgstr "Archivos de texto" @@ -196,77 +182,117 @@ msgstr "Buscar actualizaciones" msgid "You're up to date!" msgstr "Está al día." -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:61 +#: buzz/widgets/import_url_dialog.py:19 +msgid "Import URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:22 +msgid "https://example.com/audio.mp3" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:32 +msgid "URL:" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "Invalid URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "The URL you entered is invalid." +msgstr "" + +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:70 msgid "Download" msgstr "Descargar" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:66 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:75 msgid "Show file location" msgstr "Mostrar ubicación de archivo" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:74 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83 msgid "Delete" msgstr "Eliminar" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:111 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:120 msgid "Downloaded" msgstr "Descargado" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:116 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:125 msgid "Available for Download" msgstr "Disponible para descarga" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:158 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:171 msgid "Delete Model" msgstr "Eliminar modelo" # automatic translation -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:159 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:172 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:178 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:191 msgid "Error" msgstr "Error" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:43 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 msgid "General" msgstr "Generales" # automatic translation -#: buzz/widgets/preferences_dialog/preferences_dialog.py:46 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:53 msgid "Models" msgstr "Modelos" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:57 msgid "Shortcuts" msgstr "Atajos" +#: buzz/widgets/preferences_dialog/preferences_dialog.py:63 +msgid "Folder Watch" +msgstr "" + # automatic translation -#: buzz/widgets/recording_transcriber_widget.py:62 +#: buzz/widgets/recording_transcriber_widget.py:60 msgid "Live Recording" msgstr "Grabación en vivo" # automatic translation -#: buzz/widgets/recording_transcriber_widget.py:101 +#: buzz/widgets/recording_transcriber_widget.py:104 msgid "Click Record to begin..." msgstr "Pulse en Grabar para comenzar..." # automatic translation -#: buzz/widgets/recording_transcriber_widget.py:118 +#: buzz/widgets/recording_transcriber_widget.py:116 msgid "Microphone:" msgstr "Micrófono:" # automatic translation -#: buzz/widgets/recording_transcriber_widget.py:274 +#: buzz/widgets/recording_transcriber_widget.py:272 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:278 +#: buzz/widgets/recording_transcriber_widget.py:276 msgid "" "Please check your audio devices or check the application logs for more " "information." msgstr "" "Compruebe sus dispositivos de audio o consulte los registros de la " "aplicación para obtener más información." + +#~ msgid "ID" +#~ msgstr "Id." + +# automatic translation +#~ msgid "File Name" +#~ msgstr "Nombre de archivo" + +#~ msgid "Status" +#~ msgstr "Estado" + +#~ msgid "Undo" +#~ msgstr "Deshacer" + +#~ msgid "Redo" +#~ msgstr "Rehacer" diff --git a/locale/it_IT/LC_MESSAGES/buzz.po b/buzz/locale/it_IT/LC_MESSAGES/buzz.po similarity index 74% rename from locale/it_IT/LC_MESSAGES/buzz.po rename to buzz/locale/it_IT/LC_MESSAGES/buzz.po index cfc11ae..0c20cd1 100644 --- a/locale/it_IT/LC_MESSAGES/buzz.po +++ b/buzz/locale/it_IT/LC_MESSAGES/buzz.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: buzz\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-02 13:50+0100\n" +"POT-Creation-Date: 2024-03-14 02:33+0000\n" "PO-Revision-Date: 2023-09-02 16:02+0200\n" "Language-Team: (Italiano) Albano Battistella \n" "Language: it_IT\n" @@ -16,11 +16,11 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.3\n" -#: buzz/widgets/main_window.py:157 buzz/widgets/main_window_toolbar.py:57 +#: buzz/widgets/main_window.py:200 buzz/widgets/main_window_toolbar.py:57 msgid "Clear History" msgstr "Elimina la cronologia" -#: buzz/widgets/main_window.py:159 +#: buzz/widgets/main_window.py:202 msgid "" "Are you sure you want to delete the selected transcription(s)? This action " "cannot be undone." @@ -28,7 +28,7 @@ msgstr "" "Sei certo di voler eliminare le trascrizioni selezionate? Questa azione non " "può essere annullata." -#: buzz/widgets/main_window.py:185 +#: buzz/widgets/main_window.py:222 msgid "Select audio file" msgstr "Seleziona file audio" @@ -64,11 +64,11 @@ msgstr "Lingua:" msgid "Detect Language" msgstr "Rileva la lingua" -#: buzz/widgets/transcriber/file_transcriber_widget.py:108 +#: buzz/widgets/transcriber/file_transcription_form_widget.py:42 msgid "Word-level timings" msgstr "Tempistiche a livello di parola" -#: buzz/widgets/transcriber/file_transcriber_widget.py:137 +#: buzz/widgets/transcriber/file_transcriber_widget.py:81 msgid "Run" msgstr "Avvia" @@ -89,19 +89,25 @@ msgstr "Apri trascrizione" msgid "Cancel Transcription" msgstr "Annulla trascrizione" -#: buzz/widgets/menu_bar.py:29 -msgid "Import Media File..." +#: buzz/widgets/menu_bar.py:37 +#, fuzzy +msgid "Import File..." msgstr "Importa file media…" -#: buzz/widgets/menu_bar.py:35 +#: buzz/widgets/menu_bar.py:40 +#, fuzzy +msgid "Import URL..." +msgstr "Importa file media…" + +#: buzz/widgets/menu_bar.py:46 msgid "Preferences..." msgstr "Preferenze..." -#: buzz/widgets/menu_bar.py:43 +#: buzz/widgets/menu_bar.py:54 msgid "File" msgstr "File" -#: buzz/widgets/menu_bar.py:46 +#: buzz/widgets/menu_bar.py:58 msgid "Help" msgstr "Aiuto" @@ -109,55 +115,35 @@ msgstr "Aiuto" msgid "Stop" msgstr "Arresta" -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "ID" -msgstr "ID" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "File Name" -msgstr "Nome file" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "Status" -msgstr "Stato" - -#: buzz/widgets/transcription_tasks_table_widget.py:81 +#: buzz/widgets/transcription_tasks_table_widget.py:64 msgid "Completed" msgstr "Completato" -#: buzz/widgets/transcription_tasks_table_widget.py:88 +#: buzz/widgets/transcription_tasks_table_widget.py:73 msgid "Canceled" msgstr "Annullato" -#: buzz/widgets/transcription_tasks_table_widget.py:90 +#: buzz/widgets/transcription_tasks_table_widget.py:75 msgid "Queued" msgstr "In coda" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:66 msgid "Start" msgstr "Inizio" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:67 msgid "End" msgstr "FIne" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:68 msgid "Text" msgstr "Testo" #: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 -msgid "Undo" -msgstr "Annulla" - -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:92 -msgid "Redo" -msgstr "Rifai" - -#: buzz/widgets/transcription_viewer/export_transcription_button.py:39 msgid "Save File" msgstr "Salva file" -#: buzz/widgets/transcription_viewer/export_transcription_button.py:41 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:89 msgid "Text files" msgstr "File testo" @@ -169,67 +155,91 @@ msgstr "Controlla gli aggiornamenti" msgid "You're up to date!" msgstr "Il programma è aggiornato!" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:61 +#: buzz/widgets/import_url_dialog.py:19 +msgid "Import URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:22 +msgid "https://example.com/audio.mp3" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:32 +msgid "URL:" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "Invalid URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "The URL you entered is invalid." +msgstr "" + +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:70 msgid "Download" msgstr "Download" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:66 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:75 msgid "Show file location" msgstr "Mostra la posizione del file" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:74 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83 msgid "Delete" msgstr "Elimina" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:111 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:120 msgid "Downloaded" msgstr "Scaricato" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:116 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:125 msgid "Available for Download" msgstr "Disponibile per il download" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:158 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:171 msgid "Delete Model" msgstr "Elimina modello" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:159 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:172 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:178 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:191 msgid "Error" msgstr "Errore" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:43 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 msgid "General" msgstr "Generale" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:46 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:53 msgid "Models" msgstr "Modelli" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:57 msgid "Shortcuts" msgstr "Scorciatoie" -#: buzz/widgets/recording_transcriber_widget.py:62 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:63 +msgid "Folder Watch" +msgstr "" + +#: buzz/widgets/recording_transcriber_widget.py:60 msgid "Live Recording" msgstr "Registrazione in diretta" -#: buzz/widgets/recording_transcriber_widget.py:101 +#: buzz/widgets/recording_transcriber_widget.py:104 msgid "Click Record to begin..." msgstr "Fai clic su Registra per iniziare..." -#: buzz/widgets/recording_transcriber_widget.py:118 +#: buzz/widgets/recording_transcriber_widget.py:116 msgid "Microphone:" msgstr "Microfono:" -#: buzz/widgets/recording_transcriber_widget.py:274 +#: buzz/widgets/recording_transcriber_widget.py:272 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:278 +#: buzz/widgets/recording_transcriber_widget.py:276 msgid "" "Please check your audio devices or check the application logs for more " "information." @@ -237,6 +247,21 @@ msgstr "" "Controlla i tuoi dispositivi audio o i registri dell'applicazione per " "maggiori informazioni." +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "File Name" +#~ msgstr "Nome file" + +#~ msgid "Status" +#~ msgstr "Stato" + +#~ msgid "Undo" +#~ msgstr "Annulla" + +#~ msgid "Redo" +#~ msgstr "Rifai" + #~ msgid "Downloading model (0%, unknown time remaining)" #~ msgstr "Scaricando il modello (0\", tempo restante sconosciuto)" diff --git a/locale/pl_PL/LC_MESSAGES/buzz.po b/buzz/locale/pl_PL/LC_MESSAGES/buzz.po similarity index 73% rename from locale/pl_PL/LC_MESSAGES/buzz.po rename to buzz/locale/pl_PL/LC_MESSAGES/buzz.po index 6322e3c..89f2d7a 100644 --- a/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: 2023-09-02 13:50+0100\n" +"POT-Creation-Date: 2024-03-14 02:33+0000\n" "PO-Revision-Date: 2023-04-23 22:00+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -17,11 +17,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.2.2\n" -#: buzz/widgets/main_window.py:157 buzz/widgets/main_window_toolbar.py:57 +#: buzz/widgets/main_window.py:200 buzz/widgets/main_window_toolbar.py:57 msgid "Clear History" msgstr "Wyczyść historię" -#: buzz/widgets/main_window.py:159 +#: buzz/widgets/main_window.py:202 msgid "" "Are you sure you want to delete the selected transcription(s)? This action " "cannot be undone." @@ -29,7 +29,7 @@ msgstr "" "Czy na pewno chcesz usunąć zaznaczone transkrypcje? Tej operacji nie można " "cofnąć." -#: buzz/widgets/main_window.py:185 +#: buzz/widgets/main_window.py:222 msgid "Select audio file" msgstr "Wybierz plik audio" @@ -65,11 +65,11 @@ msgstr "Język:" msgid "Detect Language" msgstr "Wykryj język" -#: buzz/widgets/transcriber/file_transcriber_widget.py:108 +#: buzz/widgets/transcriber/file_transcription_form_widget.py:42 msgid "Word-level timings" msgstr "Znaczniki dla słów" -#: buzz/widgets/transcriber/file_transcriber_widget.py:137 +#: buzz/widgets/transcriber/file_transcriber_widget.py:81 msgid "Run" msgstr "Rozpocznij" @@ -90,19 +90,25 @@ msgstr "Otwórz transkrypt" msgid "Cancel Transcription" msgstr "Anuluj transkrypcję" -#: buzz/widgets/menu_bar.py:29 -msgid "Import Media File..." +#: buzz/widgets/menu_bar.py:37 +#, fuzzy +msgid "Import File..." msgstr "Importuj plik multimediów..." -#: buzz/widgets/menu_bar.py:35 +#: buzz/widgets/menu_bar.py:40 +#, fuzzy +msgid "Import URL..." +msgstr "Importuj plik multimediów..." + +#: buzz/widgets/menu_bar.py:46 msgid "Preferences..." msgstr "Ustawienia..." -#: buzz/widgets/menu_bar.py:43 +#: buzz/widgets/menu_bar.py:54 msgid "File" msgstr "Plik" -#: buzz/widgets/menu_bar.py:46 +#: buzz/widgets/menu_bar.py:58 msgid "Help" msgstr "Pomoc" @@ -110,56 +116,36 @@ msgstr "Pomoc" msgid "Stop" msgstr "Zatrzymaj" -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "ID" -msgstr "ID" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "File Name" -msgstr "Nazwa pliku" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "Status" -msgstr "Status" - -#: buzz/widgets/transcription_tasks_table_widget.py:81 +#: buzz/widgets/transcription_tasks_table_widget.py:64 msgid "Completed" msgstr "Ukończono" -#: buzz/widgets/transcription_tasks_table_widget.py:88 +#: buzz/widgets/transcription_tasks_table_widget.py:73 msgid "Canceled" msgstr "Anulowano" -#: buzz/widgets/transcription_tasks_table_widget.py:90 +#: buzz/widgets/transcription_tasks_table_widget.py:75 msgid "Queued" msgstr "Kolejka" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:66 msgid "Start" msgstr "Roozpocznij" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:67 msgid "End" msgstr "Zakończ" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:68 msgid "Text" msgstr "Tekst" #: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 -msgid "Undo" -msgstr "Cofnij" - -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:92 -msgid "Redo" -msgstr "Ponów" - -#: buzz/widgets/transcription_viewer/export_transcription_button.py:39 #, fuzzy msgid "Save File" msgstr "Zapisz plik" -#: buzz/widgets/transcription_viewer/export_transcription_button.py:41 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:89 msgid "Text files" msgstr "Pliki tekstowe" @@ -171,71 +157,95 @@ msgstr "Sprawdź aktualizacje" msgid "You're up to date!" msgstr "Posiadasz najnowszą wersję!" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:61 +#: buzz/widgets/import_url_dialog.py:19 +msgid "Import URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:22 +msgid "https://example.com/audio.mp3" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:32 +msgid "URL:" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "Invalid URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "The URL you entered is invalid." +msgstr "" + +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:70 #, fuzzy msgid "Download" msgstr "Pobierz" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:66 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:75 msgid "Show file location" msgstr "Pokaż lokalizacje pliku" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:74 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83 msgid "Delete" msgstr "Usuń" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:111 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:120 #, fuzzy msgid "Downloaded" msgstr "Pobrany" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:116 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:125 msgid "Available for Download" msgstr "Dostępne do pobrania" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:158 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:171 msgid "Delete Model" msgstr "Usuń model" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:159 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:172 #, fuzzy msgid "Are you sure you want to delete the selected model?" msgstr "Czy na pewno chcesz usunąć zaznaczoną transkrypcję?" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:178 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:191 msgid "Error" msgstr "Błąd" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:43 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 msgid "General" msgstr "Główne" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:46 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:53 #, fuzzy msgid "Models" msgstr "Model:" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:57 msgid "Shortcuts" msgstr "Skruty" -#: buzz/widgets/recording_transcriber_widget.py:62 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:63 +msgid "Folder Watch" +msgstr "" + +#: buzz/widgets/recording_transcriber_widget.py:60 msgid "Live Recording" msgstr "Nagrywanie na żywo" -#: buzz/widgets/recording_transcriber_widget.py:101 +#: buzz/widgets/recording_transcriber_widget.py:104 msgid "Click Record to begin..." msgstr "Naciśnij Nagraj, aby zacząć..." -#: buzz/widgets/recording_transcriber_widget.py:118 +#: buzz/widgets/recording_transcriber_widget.py:116 msgid "Microphone:" msgstr "Mikrofon:" -#: buzz/widgets/recording_transcriber_widget.py:274 +#: buzz/widgets/recording_transcriber_widget.py:272 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:278 +#: buzz/widgets/recording_transcriber_widget.py:276 msgid "" "Please check your audio devices or check the application logs for more " "information." @@ -243,6 +253,21 @@ msgstr "" "Sprawdź urządzenia audio lub przejrzyj logi aplikacji, by uzyskać więcej " "informacji." +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "File Name" +#~ msgstr "Nazwa pliku" + +#~ msgid "Status" +#~ msgstr "Status" + +#~ msgid "Undo" +#~ msgstr "Cofnij" + +#~ msgid "Redo" +#~ msgstr "Ponów" + #~ msgid "Downloading model (0%, unknown time remaining)" #~ msgstr "Pobieranie modelu (0%, pozostały czas nieznany)" diff --git a/locale/zh_CN/LC_MESSAGES/buzz.po b/buzz/locale/zh_CN/LC_MESSAGES/buzz.po similarity index 73% rename from locale/zh_CN/LC_MESSAGES/buzz.po rename to buzz/locale/zh_CN/LC_MESSAGES/buzz.po index b7c5bef..4041107 100644 --- a/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: 2023-09-02 13:50+0100\n" +"POT-Creation-Date: 2024-03-14 02:33+0000\n" "PO-Revision-Date: 2023-05-01 15:45+0800\n" "Last-Translator: \n" "Language-Team: lamb \n" @@ -17,17 +17,17 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.2.2\n" -#: buzz/widgets/main_window.py:157 buzz/widgets/main_window_toolbar.py:57 +#: buzz/widgets/main_window.py:200 buzz/widgets/main_window_toolbar.py:57 msgid "Clear History" msgstr "清除历史纪录" -#: buzz/widgets/main_window.py:159 +#: buzz/widgets/main_window.py:202 msgid "" "Are you sure you want to delete the selected transcription(s)? This action " "cannot be undone." msgstr "您确定要删除所选录制吗?此操作无法撤消。" -#: buzz/widgets/main_window.py:185 +#: buzz/widgets/main_window.py:222 msgid "Select audio file" msgstr "选择音频文件" @@ -63,11 +63,11 @@ msgstr "语言:" msgid "Detect Language" msgstr "检测语言" -#: buzz/widgets/transcriber/file_transcriber_widget.py:108 +#: buzz/widgets/transcriber/file_transcription_form_widget.py:42 msgid "Word-level timings" msgstr "单字级别的时间表达" -#: buzz/widgets/transcriber/file_transcriber_widget.py:137 +#: buzz/widgets/transcriber/file_transcriber_widget.py:81 msgid "Run" msgstr "开始执行" @@ -88,19 +88,25 @@ msgstr "打开转换结果" msgid "Cancel Transcription" msgstr "取消录制" -#: buzz/widgets/menu_bar.py:29 -msgid "Import Media File..." +#: buzz/widgets/menu_bar.py:37 +#, fuzzy +msgid "Import File..." msgstr "导入媒体文件..." -#: buzz/widgets/menu_bar.py:35 +#: buzz/widgets/menu_bar.py:40 +#, fuzzy +msgid "Import URL..." +msgstr "导入媒体文件..." + +#: buzz/widgets/menu_bar.py:46 msgid "Preferences..." msgstr "偏好设定..." -#: buzz/widgets/menu_bar.py:43 +#: buzz/widgets/menu_bar.py:54 msgid "File" msgstr "文件" -#: buzz/widgets/menu_bar.py:46 +#: buzz/widgets/menu_bar.py:58 msgid "Help" msgstr "帮助" @@ -108,56 +114,36 @@ msgstr "帮助" msgid "Stop" msgstr "停止" -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "ID" -msgstr "ID" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "File Name" -msgstr "文件名称" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "Status" -msgstr "状态" - -#: buzz/widgets/transcription_tasks_table_widget.py:81 +#: buzz/widgets/transcription_tasks_table_widget.py:64 msgid "Completed" msgstr "完成" -#: buzz/widgets/transcription_tasks_table_widget.py:88 +#: buzz/widgets/transcription_tasks_table_widget.py:73 msgid "Canceled" msgstr "取消" -#: buzz/widgets/transcription_tasks_table_widget.py:90 +#: buzz/widgets/transcription_tasks_table_widget.py:75 msgid "Queued" msgstr "" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:66 msgid "Start" msgstr "" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:67 msgid "End" msgstr "" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:68 msgid "Text" msgstr "" #: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 -msgid "Undo" -msgstr "" - -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:92 -msgid "Redo" -msgstr "" - -#: buzz/widgets/transcription_viewer/export_transcription_button.py:39 #, fuzzy msgid "Save File" msgstr "文件" -#: buzz/widgets/transcription_viewer/export_transcription_button.py:41 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:89 msgid "Text files" msgstr "" @@ -169,76 +155,109 @@ msgstr "检查更新" msgid "You're up to date!" msgstr "你是最新的!" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:61 +#: buzz/widgets/import_url_dialog.py:19 +msgid "Import URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:22 +msgid "https://example.com/audio.mp3" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:32 +msgid "URL:" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "Invalid URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "The URL you entered is invalid." +msgstr "" + +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:70 #, fuzzy msgid "Download" msgstr "下载模型" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:66 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:75 msgid "Show file location" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:74 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83 msgid "Delete" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:111 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:120 #, fuzzy msgid "Downloaded" msgstr "下载模型" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:116 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:125 msgid "Available for Download" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:158 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:171 msgid "Delete Model" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:159 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:172 #, fuzzy msgid "Are you sure you want to delete the selected model?" msgstr "您确定要删除所选录制吗?此操作无法撤消。" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:178 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:191 msgid "Error" msgstr "" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:43 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 msgid "General" msgstr "" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:46 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:53 #, fuzzy msgid "Models" msgstr "模型:" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:57 msgid "Shortcuts" msgstr "" -#: buzz/widgets/recording_transcriber_widget.py:62 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:63 +msgid "Folder Watch" +msgstr "" + +#: buzz/widgets/recording_transcriber_widget.py:60 msgid "Live Recording" msgstr "现场录制" -#: buzz/widgets/recording_transcriber_widget.py:101 +#: buzz/widgets/recording_transcriber_widget.py:104 msgid "Click Record to begin..." msgstr "点击开始录制" -#: buzz/widgets/recording_transcriber_widget.py:118 +#: buzz/widgets/recording_transcriber_widget.py:116 msgid "Microphone:" msgstr "麦克风:" -#: buzz/widgets/recording_transcriber_widget.py:274 +#: buzz/widgets/recording_transcriber_widget.py:272 msgid "An error occurred while starting a new recording:" msgstr "开始新录制出错" -#: buzz/widgets/recording_transcriber_widget.py:278 +#: buzz/widgets/recording_transcriber_widget.py:276 msgid "" "Please check your audio devices or check the application logs for more " "information." msgstr "请检查您的音频设备或检查应用程序日志以获取更多信息。" +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "File Name" +#~ msgstr "文件名称" + +#~ msgid "Status" +#~ msgstr "状态" + #~ msgid "Downloading model (0%, unknown time remaining)" #~ msgstr "正在下载模型 (0%, unknown 剩余时间)" diff --git a/locale/zh_TW/LC_MESSAGES/buzz.po b/buzz/locale/zh_TW/LC_MESSAGES/buzz.po similarity index 73% rename from locale/zh_TW/LC_MESSAGES/buzz.po rename to buzz/locale/zh_TW/LC_MESSAGES/buzz.po index 3bacfaf..6523fdb 100644 --- a/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: 2023-09-02 13:50+0100\n" +"POT-Creation-Date: 2024-03-14 02:33+0000\n" "PO-Revision-Date: 2023-05-01 15:45+0800\n" "Last-Translator: \n" "Language-Team: Lamb\n" @@ -17,17 +17,17 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.2.2\n" -#: buzz/widgets/main_window.py:157 buzz/widgets/main_window_toolbar.py:57 +#: buzz/widgets/main_window.py:200 buzz/widgets/main_window_toolbar.py:57 msgid "Clear History" msgstr "清除歷史紀錄" -#: buzz/widgets/main_window.py:159 +#: buzz/widgets/main_window.py:202 msgid "" "Are you sure you want to delete the selected transcription(s)? This action " "cannot be undone." msgstr "您確定要刪除所選錄製嗎?此操作無法撤消。" -#: buzz/widgets/main_window.py:185 +#: buzz/widgets/main_window.py:222 msgid "Select audio file" msgstr "選擇聲音檔案" @@ -63,11 +63,11 @@ msgstr "語言:" msgid "Detect Language" msgstr "檢測語言" -#: buzz/widgets/transcriber/file_transcriber_widget.py:108 +#: buzz/widgets/transcriber/file_transcription_form_widget.py:42 msgid "Word-level timings" msgstr "單字級別的時間表達" -#: buzz/widgets/transcriber/file_transcriber_widget.py:137 +#: buzz/widgets/transcriber/file_transcriber_widget.py:81 msgid "Run" msgstr "開始執行" @@ -88,19 +88,25 @@ msgstr "打開轉換結果" msgid "Cancel Transcription" msgstr "取消錄製" -#: buzz/widgets/menu_bar.py:29 -msgid "Import Media File..." +#: buzz/widgets/menu_bar.py:37 +#, fuzzy +msgid "Import File..." msgstr "導入媒體檔案..." -#: buzz/widgets/menu_bar.py:35 +#: buzz/widgets/menu_bar.py:40 +#, fuzzy +msgid "Import URL..." +msgstr "導入媒體檔案..." + +#: buzz/widgets/menu_bar.py:46 msgid "Preferences..." msgstr "偏好設定..." -#: buzz/widgets/menu_bar.py:43 +#: buzz/widgets/menu_bar.py:54 msgid "File" msgstr "檔案" -#: buzz/widgets/menu_bar.py:46 +#: buzz/widgets/menu_bar.py:58 msgid "Help" msgstr "幫助" @@ -108,56 +114,36 @@ msgstr "幫助" msgid "Stop" msgstr "停止" -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "ID" -msgstr "ID" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "File Name" -msgstr "檔案名稱" - -#: buzz/widgets/transcription_tasks_table_widget.py:33 -msgid "Status" -msgstr "狀態" - -#: buzz/widgets/transcription_tasks_table_widget.py:81 +#: buzz/widgets/transcription_tasks_table_widget.py:64 msgid "Completed" msgstr "完成" -#: buzz/widgets/transcription_tasks_table_widget.py:88 +#: buzz/widgets/transcription_tasks_table_widget.py:73 msgid "Canceled" msgstr "取消" -#: buzz/widgets/transcription_tasks_table_widget.py:90 +#: buzz/widgets/transcription_tasks_table_widget.py:75 msgid "Queued" msgstr "" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:66 msgid "Start" msgstr "" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:67 msgid "End" msgstr "" -#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:30 +#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:68 msgid "Text" msgstr "" #: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:87 -msgid "Undo" -msgstr "" - -#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:92 -msgid "Redo" -msgstr "" - -#: buzz/widgets/transcription_viewer/export_transcription_button.py:39 #, fuzzy msgid "Save File" msgstr "檔案" -#: buzz/widgets/transcription_viewer/export_transcription_button.py:41 +#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:89 msgid "Text files" msgstr "" @@ -169,76 +155,109 @@ msgstr "檢查更新" msgid "You're up to date!" msgstr "你是最新的!" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:61 +#: buzz/widgets/import_url_dialog.py:19 +msgid "Import URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:22 +msgid "https://example.com/audio.mp3" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:32 +msgid "URL:" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "Invalid URL" +msgstr "" + +#: buzz/widgets/import_url_dialog.py:44 +msgid "The URL you entered is invalid." +msgstr "" + +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:70 #, fuzzy msgid "Download" msgstr "下載模型" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:66 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:75 msgid "Show file location" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:74 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83 msgid "Delete" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:111 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:120 #, fuzzy msgid "Downloaded" msgstr "下載模型" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:116 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:125 msgid "Available for Download" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:158 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:171 msgid "Delete Model" msgstr "" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:159 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:172 #, fuzzy msgid "Are you sure you want to delete the selected model?" msgstr "您確定要刪除所選錄製嗎?此操作無法撤消。" -#: buzz/widgets/preferences_dialog/models_preferences_widget.py:178 +#: buzz/widgets/preferences_dialog/models_preferences_widget.py:191 msgid "Error" msgstr "" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:43 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 msgid "General" msgstr "" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:46 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:53 #, fuzzy msgid "Models" msgstr "模型:" -#: buzz/widgets/preferences_dialog/preferences_dialog.py:50 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:57 msgid "Shortcuts" msgstr "" -#: buzz/widgets/recording_transcriber_widget.py:62 +#: buzz/widgets/preferences_dialog/preferences_dialog.py:63 +msgid "Folder Watch" +msgstr "" + +#: buzz/widgets/recording_transcriber_widget.py:60 msgid "Live Recording" msgstr "現場錄製" -#: buzz/widgets/recording_transcriber_widget.py:101 +#: buzz/widgets/recording_transcriber_widget.py:104 msgid "Click Record to begin..." msgstr "點擊開始錄製" -#: buzz/widgets/recording_transcriber_widget.py:118 +#: buzz/widgets/recording_transcriber_widget.py:116 msgid "Microphone:" msgstr "麥克風:" -#: buzz/widgets/recording_transcriber_widget.py:274 +#: buzz/widgets/recording_transcriber_widget.py:272 msgid "An error occurred while starting a new recording:" msgstr "開始新錄製出錯" -#: buzz/widgets/recording_transcriber_widget.py:278 +#: buzz/widgets/recording_transcriber_widget.py:276 msgid "" "Please check your audio devices or check the application logs for more " "information." msgstr "請檢查您的音頻設備或檢查應用程序日誌以獲取更多信息。" +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "File Name" +#~ msgstr "檔案名稱" + +#~ msgid "Status" +#~ msgstr "狀態" + #~ msgid "Downloading model (0%, unknown time remaining)" #~ msgstr "正在下載模型 (0%, unknown 剩餘時間)" diff --git a/buzz/widgets/transcription_tasks_table_widget.py b/buzz/widgets/transcription_tasks_table_widget.py index e9b5063..faf8d5f 100644 --- a/buzz/widgets/transcription_tasks_table_widget.py +++ b/buzz/widgets/transcription_tasks_table_widget.py @@ -80,7 +80,7 @@ def format_record_status_text(record: QSqlRecord) -> str: column_definitions = [ ColDef( id="file_name", - header="File Name / URL", + header=_("File Name / URL"), column=Column.FILE, width=400, delegate=RecordDelegate( @@ -92,7 +92,7 @@ column_definitions = [ ), ColDef( id="model", - header="Model", + header=_("Model"), column=Column.MODEL_TYPE, width=180, delegate=RecordDelegate( @@ -101,7 +101,7 @@ column_definitions = [ ), ColDef( id="task", - header="Task", + header=_("Task"), column=Column.SOURCE, width=120, delegate=RecordDelegate( @@ -110,7 +110,7 @@ column_definitions = [ ), ColDef( id="status", - header="Status", + header=_("Status"), column=Column.STATUS, width=180, delegate=RecordDelegate(text_getter=format_record_status_text), @@ -118,7 +118,7 @@ column_definitions = [ ), ColDef( id="date_added", - header="Date Added", + header=_("Date Added"), column=Column.TIME_QUEUED, width=180, delegate=RecordDelegate( @@ -129,7 +129,7 @@ column_definitions = [ ), ColDef( id="date_completed", - header="Date Completed", + header=_("Date Completed"), column=Column.TIME_ENDED, width=180, delegate=RecordDelegate( diff --git a/msgfmt.py b/msgfmt.py new file mode 100755 index 0000000..bacbdd9 --- /dev/null +++ b/msgfmt.py @@ -0,0 +1,227 @@ +#!/usr/bin/env python +# Written by Martin v. Lwis +# Plural forms support added by alexander smishlajev +""" +Generate binary message catalog from textual translation description. + +This program converts a textual Uniforum-style message catalog (.po file) into +a binary GNU catalog (.mo file). This is essentially the same function as the +GNU msgfmt program, however, it is a simpler implementation. + +Usage: msgfmt.py [OPTIONS] filename.po + +Options: + -o file + --output-file=file + Specify the output file to write to. If omitted, output will go to a + file named filename.mo (based off the input file name). + + -h + --help + Print this message and exit. + + -V + --version + Display version information and exit. +""" +import array +import ast +import getopt +import os +import struct +import sys + +__version__ = "1.2" + +MESSAGES = {} + + +def usage(ecode, msg=""): + """ + Print usage and msg and exit with given code. + """ + print(__doc__, file=sys.stderr) + if msg: + print(msg, file=sys.stderr) + sys.exit(ecode) + + +def add(msgid, transtr, fuzzy): + """ + Add a non-fuzzy translation to the dictionary. + """ + if not fuzzy and transtr and not transtr.startswith("\x00"): + MESSAGES[msgid] = transtr + + +def generate(): + """ + Return the generated output. + """ + # the keys are sorted in the .mo file + keys = sorted(MESSAGES) + offsets = [] + ids = strs = "" + for _id in keys: + # For each string, we need size and file offset when encoded. Each string is NUL + # terminated; the NUL does not count into the size. + offsets.append( + ( + len(ids.encode("utf8")), + len(_id.encode("utf8")), + len(strs.encode("utf8")), + len(MESSAGES[_id].encode("utf8")), + ) + ) + ids += _id + "\x00" + strs += MESSAGES[_id] + "\x00" + + # The header is 7 32-bit unsigned integers. We don't use hash tables, so + # the keys start right after the index tables. + # translated string. + keystart = 7 * 4 + 16 * len(keys) + # and the values start after the keys + valuestart = keystart + len(ids) + koffsets = [] + voffsets = [] + # The string table first has the list of keys, then the list of values. + # Each entry has first the size of the string, then the file offset. + for o1, l1, o2, l2 in offsets: + koffsets += [l1, o1 + keystart] + voffsets += [l2, o2 + valuestart] + offsets = koffsets + voffsets + output = struct.pack( + "Iiiiiii", + 0x950412DE, # Magic + 0, # Version + len(keys), # # of entries + 7 * 4, # start of key index + 7 * 4 + len(keys) * 8, # start of value index + 0, + 0, + ) # size and offset of hash table + output += array.array("i", offsets).tobytes() + output += ids.encode("utf8") + output += strs.encode("utf8") + return output + + +def make(filename, outfile): + section_id = 1 + section_str = 2 + global MESSAGES + MESSAGES = {} + + # Compute .mo name from .po name and arguments + if filename.endswith(".po"): + infile = filename + else: + infile = filename + ".po" + if outfile is None: + outfile = os.path.splitext(infile)[0] + ".mo" + + try: + with open(infile, encoding="utf8") as _file: + lines = _file.readlines() + except OSError as msg: + print(msg, file=sys.stderr) + sys.exit(1) + + section = None + fuzzy = 0 + + # Parse the catalog + msgid = msgstr = "" + lno = 0 + for line in lines: + lno += 1 + # If we get a comment line after a msgstr, this is a new entry + if line[0] == "#" and section == section_str: + add(msgid, msgstr, fuzzy) + section = None + fuzzy = 0 + # Record a fuzzy mark + if line[:2] == "#," and (line.find("fuzzy") >= 0): + fuzzy = 1 + # Skip comments + if line[0] == "#": + continue + # Start of msgid_plural section, separate from singular form with \0 + if line.startswith("msgid_plural"): + msgid += "\x00" + line = line[12:] + # Now we are in a msgid section, output previous section + elif line.startswith("msgid"): + if section == section_str: + add(msgid, msgstr, fuzzy) + section = section_id + line = line[5:] + msgid = msgstr = "" + # Now we are in a msgstr section + elif line.startswith("msgstr"): + section = section_str + line = line[6:] + # Check for plural forms + if line.startswith("["): + # Separate plural forms with \0 + if not line.startswith("[0]"): + msgstr += "\x00" + # Ignore the index - must come in sequence + line = line[line.index("]") + 1 :] + # Skip empty lines + line = line.strip() + if not line: + continue + line = ast.literal_eval(line) + if section == section_id: + msgid += line + elif section == section_str: + msgstr += line + else: + print("Syntax error on %s:%d" % (infile, lno), "before:", file=sys.stderr) + print(line, file=sys.stderr) + sys.exit(1) + # Add last entry + if section == section_str: + add(msgid, msgstr, fuzzy) + + # Compute output + output = generate() + + try: + with open(outfile, "wb") as _file: + _file.write(output) + except OSError as msg: + print(msg, file=sys.stderr) + + +def main(): + try: + opts, args = getopt.getopt( + sys.argv[1:], "hVo:", ["help", "version", "output-file="] + ) + except getopt.error as msg: + usage(1, msg) + + outfile = None + # parse options + for opt, arg in opts: + if opt in ("-h", "--help"): + usage(0) + elif opt in ("-V", "--version"): + print("msgfmt.py", __version__, file=sys.stderr) + sys.exit(0) + elif opt in ("-o", "--output-file"): + outfile = arg + # do it + if not args: + print("No input file given", file=sys.stderr) + print("Try `msgfmt --help` for more information.", file=sys.stderr) + return + + for filename in args: + make(filename, outfile) + + +if __name__ == "__main__": + main()