From 578825dcfb31da5ea64a331fd9fa9fe4fb51d3e1 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 08:49:23 +0700 Subject: [PATCH 01/10] Fail build if any i18n strings were not extracted --- .github/workflows/fw-lite.yaml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index 989096d7b3..d09ef195cd 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -91,6 +91,26 @@ jobs: - name: Run snapshot tests working-directory: frontend/viewer run: task playwright-test-standalone + - name: Ensure all i18n strings have been extracted + working-directory: frontend/viewer + run: | + rm -f src/locales/en.po.old + cp src/locales/en.po src/locales/en.po.old + pnpm i18n:extract + DIFFCOUNT=$(diff -u src/locales/en.po{.old,} | grep '+msgid' | wc -l) + if [ $DIFFCOUNT -gt 0 ]; then + # Unextracted strings found, fail the build + echo + echo $DIFFCOUNT unextracted strings found: + echo + diff -u src/locales/en.po{.old,} | grep '+msgid' | cut -c2- + echo + echo Please run `pnpm i18n:extract` and commit the new src/locales/en.po file + exit 1 + fi + + rm -f src/locales/en.po.old + exit 0 - name: Build viewer working-directory: frontend/viewer From 64c2911e8449807a8a9355f82ee03502912af829 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 08:53:49 +0700 Subject: [PATCH 02/10] Fix quoting in "Please run pnpm i18n:extract" line --- .github/workflows/fw-lite.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index d09ef195cd..04db126897 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -105,7 +105,7 @@ jobs: echo diff -u src/locales/en.po{.old,} | grep '+msgid' | cut -c2- echo - echo Please run `pnpm i18n:extract` and commit the new src/locales/en.po file + echo Please run "'"pnpm i18n:extract"'" and commit the new src/locales/en.po file exit 1 fi From e05861412f88142b25fd946dfb20992cbd617e9b Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 08:54:35 +0700 Subject: [PATCH 03/10] Printing blank lines gets omitted in GHA logs The blank lines are supposed to make the "Unextracted strings found" message stand out, but the GHA logs are omitting blank lines. So we'll use `***` to make it stand out instead. --- .github/workflows/fw-lite.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index 04db126897..e805f17fb3 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -100,11 +100,11 @@ jobs: DIFFCOUNT=$(diff -u src/locales/en.po{.old,} | grep '+msgid' | wc -l) if [ $DIFFCOUNT -gt 0 ]; then # Unextracted strings found, fail the build - echo + echo '***' echo $DIFFCOUNT unextracted strings found: - echo + echo '***' diff -u src/locales/en.po{.old,} | grep '+msgid' | cut -c2- - echo + echo '***' echo Please run "'"pnpm i18n:extract"'" and commit the new src/locales/en.po file exit 1 fi From 60d484f6666097c27f42416bede1df99918abd59 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 09:00:58 +0700 Subject: [PATCH 04/10] Exit verify-i18n step on any unexpected failures Also set `shell: bash` so this step could be run on Windows and still work --- .github/workflows/fw-lite.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index e805f17fb3..9ceda501d6 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -93,7 +93,9 @@ jobs: run: task playwright-test-standalone - name: Ensure all i18n strings have been extracted working-directory: frontend/viewer + shell: bash run: | + set -e rm -f src/locales/en.po.old cp src/locales/en.po src/locales/en.po.old pnpm i18n:extract From 76b692ff041f5ee756865efdca1d98e79ccfccdc Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 09:08:30 +0700 Subject: [PATCH 05/10] Much simpler test for unextracted strings The lingui CLI command exits with code 1 if it finds unextracted strings, which allows it to function as the test in our CLI step. --- .github/workflows/fw-lite.yaml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index 9ceda501d6..e0f03bf679 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -93,26 +93,8 @@ jobs: run: task playwright-test-standalone - name: Ensure all i18n strings have been extracted working-directory: frontend/viewer - shell: bash - run: | - set -e - rm -f src/locales/en.po.old - cp src/locales/en.po src/locales/en.po.old - pnpm i18n:extract - DIFFCOUNT=$(diff -u src/locales/en.po{.old,} | grep '+msgid' | wc -l) - if [ $DIFFCOUNT -gt 0 ]; then - # Unextracted strings found, fail the build - echo '***' - echo $DIFFCOUNT unextracted strings found: - echo '***' - diff -u src/locales/en.po{.old,} | grep '+msgid' | cut -c2- - echo '***' - echo Please run "'"pnpm i18n:extract"'" and commit the new src/locales/en.po file - exit 1 - fi - - rm -f src/locales/en.po.old - exit 0 + run: pnpm i18n:extract + # Will fail with exit code 1 if any unextracted strings found, which is what we want - name: Build viewer working-directory: frontend/viewer From 3801ace9ad243fd615968cd6332d6d7a273a1e60 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 09:13:55 +0700 Subject: [PATCH 06/10] Run i18n checking step *before* Playwright --- .github/workflows/fw-lite.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index e0f03bf679..b9eadce0df 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -85,17 +85,17 @@ jobs: working-directory: frontend run: | pnpm install + - name: Ensure all i18n strings have been extracted + working-directory: frontend/viewer + run: pnpm i18n:extract + # The i18n:extract step will fail with exit code 1 if any unextracted strings found, which is what we want + - name: Set up Playwright dependencies working-directory: frontend run: pnpm exec playwright install --with-deps - name: Run snapshot tests working-directory: frontend/viewer run: task playwright-test-standalone - - name: Ensure all i18n strings have been extracted - working-directory: frontend/viewer - run: pnpm i18n:extract - # Will fail with exit code 1 if any unextracted strings found, which is what we want - - name: Build viewer working-directory: frontend/viewer run: pnpm run build From 0169cf83f911dadba9f1f099702bf473d0c00f3d Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 09:29:44 +0700 Subject: [PATCH 07/10] Back to shell script, lingui doesn't do what we need It seems something else was responsible for the non-zero exit code on the previous run, not lingui's CLI. Go back to comparing .po files. --- .github/workflows/fw-lite.yaml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index b9eadce0df..9dc69d8aa6 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -87,9 +87,22 @@ jobs: pnpm install - name: Ensure all i18n strings have been extracted working-directory: frontend/viewer - run: pnpm i18n:extract - # The i18n:extract step will fail with exit code 1 if any unextracted strings found, which is what we want - + shell: bash + run: | + set -e + # GHA sets -o pipefail when "shell: bash" but we want to turn it off + set +o pipefail + rm -f src/locales/en.po.old + cp src/locales/en.po src/locales/en.po.old + pnpm i18n:extract + DIFFCOUNT=$(diff -u src/locales/en.po{.old,} | grep '+msgid' | wc -l) + if [ $DIFFCOUNT -gt 0 ]; then + # Unextracted strings found, fail the build + echo '***' + echo $DIFFCOUNT unextracted strings found: + echo '***' + diff -u src/locales/en.po{.old,} | grep '+msgid' | cut -c2- + echo '***' - name: Set up Playwright dependencies working-directory: frontend run: pnpm exec playwright install --with-deps From 82c4f3c2a9c16c452e7e770b52da0692eb519e56 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 31 Jul 2025 09:35:35 +0700 Subject: [PATCH 08/10] Fix partially-missing script --- .github/workflows/fw-lite.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml index 9dc69d8aa6..e3ef4c65d9 100644 --- a/.github/workflows/fw-lite.yaml +++ b/.github/workflows/fw-lite.yaml @@ -90,7 +90,7 @@ jobs: shell: bash run: | set -e - # GHA sets -o pipefail when "shell: bash" but we want to turn it off + # GHA sets -o pipefail when shell is bash but we want to turn it off set +o pipefail rm -f src/locales/en.po.old cp src/locales/en.po src/locales/en.po.old @@ -103,6 +103,10 @@ jobs: echo '***' diff -u src/locales/en.po{.old,} | grep '+msgid' | cut -c2- echo '***' + echo Please run pnpm i18n:extract + exit 1 + fi + rm -f src/locales/en.po.old - name: Set up Playwright dependencies working-directory: frontend run: pnpm exec playwright install --with-deps From 0225252ac5a92a4219b31682ed3df1261e40c400 Mon Sep 17 00:00:00 2001 From: Kevin Hahn Date: Thu, 31 Jul 2025 11:17:51 +0700 Subject: [PATCH 09/10] stop running lingui extract twice --- frontend/viewer/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/viewer/package.json b/frontend/viewer/package.json index 5e4986284e..c1018754cc 100644 --- a/frontend/viewer/package.json +++ b/frontend/viewer/package.json @@ -25,7 +25,7 @@ "check": "svelte-check", "lint": "eslint .", "lint:report": "eslint . --output-file eslint_report.json --format json", - "i18n:extract": "lingui extract --clean && lingui extract", + "i18n:extract": "lingui extract --clean", "generate-icon-types": "node ./generate-icon-types.js", "storybook": "storybook dev -p 6006 --host 0.0.0.0", "build-storybook": "storybook build" From 69fb096083b564dd27afb22d53b459560e7aeefe Mon Sep 17 00:00:00 2001 From: Kevin Hahn Date: Thu, 31 Jul 2025 11:18:59 +0700 Subject: [PATCH 10/10] update locales --- frontend/viewer/src/locales/en.po | 48 +++++++++++++++++++++++------- frontend/viewer/src/locales/es.po | 49 +++++++++++++++++++++++-------- frontend/viewer/src/locales/fr.po | 49 +++++++++++++++++++++++-------- frontend/viewer/src/locales/id.po | 49 +++++++++++++++++++++++-------- frontend/viewer/src/locales/ko.po | 49 +++++++++++++++++++++++-------- 5 files changed, 185 insertions(+), 59 deletions(-) diff --git a/frontend/viewer/src/locales/en.po b/frontend/viewer/src/locales/en.po index 1ba67d3470..551280679e 100644 --- a/frontend/viewer/src/locales/en.po +++ b/frontend/viewer/src/locales/en.po @@ -76,8 +76,8 @@ msgstr "Account" msgid "Activity" msgstr "Activity" -#: src/lib/components/field-editors/audio-input.svelte:206 -#: src/lib/components/audio/AudioDialog.svelte:106 +#: src/lib/components/field-editors/audio-input.svelte:213 +#: src/lib/components/audio/AudioDialog.svelte:153 msgid "Add audio" msgstr "Add audio" @@ -126,10 +126,18 @@ msgstr "Application version" msgid "Are you sure you want to delete {0}?" msgstr "Are you sure you want to delete {0}?" -#: src/lib/components/field-editors/audio-input.svelte:215 +#: src/lib/components/field-editors/audio-input.svelte:222 msgid "Audio file not included in Send & Receive" msgstr "Audio file not included in Send & Receive" +#: src/lib/components/audio/AudioDialog.svelte:82 +msgid "Audio saved and uploaded to Lexbox" +msgstr "Audio saved and uploaded to Lexbox" + +#: src/lib/components/audio/AudioDialog.svelte:79 +msgid "Audio saved locally" +msgstr "Audio saved locally" + #: src/lib/history/HistoryView.svelte:95 #: src/lib/activity/ActivityView.svelte:91 msgid "Author:" @@ -160,7 +168,7 @@ msgstr "Browse" #: src/lib/entry-editor/EntryOrSensePicker.svelte:245 #: src/lib/components/field-editors/select.svelte:166 #: src/lib/components/field-editors/multi-select.svelte:280 -#: src/lib/components/audio/AudioDialog.svelte:118 +#: src/lib/components/audio/AudioDialog.svelte:167 msgid "Cancel" msgstr "Cancel" @@ -399,14 +407,27 @@ msgstr "Field Labels" msgid "FieldWorks logo" msgstr "FieldWorks logo" +#: src/lib/components/audio/AudioDialog.svelte:89 +msgid "File already exists" +msgstr "File already exists" + #: src/lib/components/audio/audio-editor.svelte:32 msgid "File name:" msgstr "File name:" -#: src/lib/components/field-editors/audio-input.svelte:74 +#: src/lib/components/field-editors/audio-input.svelte:79 msgid "File not found" msgstr "File not found" +#: src/lib/components/audio/AudioDialog.svelte:87 +msgid "File saving not supported" +msgstr "File saving not supported" + +#: src/lib/components/audio/AudioDialog.svelte:164 +#: src/lib/components/audio/AudioDialog.svelte:85 +msgid "File too big" +msgstr "File too big" + #: src/project/browse/SearchFilter.svelte:100 msgid "Filter # entries" msgstr "Filter # entries" @@ -587,7 +608,7 @@ msgstr "New Entry" msgid "No activity found" msgstr "No activity found" -#: src/lib/components/field-editors/audio-input.svelte:210 +#: src/lib/components/field-editors/audio-input.svelte:217 msgid "No audio" msgstr "No audio" @@ -604,6 +625,10 @@ msgstr "No Dictionaries found" msgid "No entries found" msgstr "No entries found" +#: src/lib/components/audio/AudioDialog.svelte:75 +msgid "No file selected" +msgstr "No file selected" + #: src/lib/history/HistoryView.svelte:66 msgid "No history found" msgstr "No history found" @@ -645,7 +670,7 @@ msgstr "Note" msgid "Offline" msgstr "Offline" -#: src/lib/components/field-editors/audio-input.svelte:77 +#: src/lib/components/field-editors/audio-input.svelte:82 msgid "Offline, unable to download" msgstr "Offline, unable to download" @@ -712,7 +737,7 @@ msgstr "Refresh Projects" msgid "Remove" msgstr "Remove" -#: src/lib/components/field-editors/audio-input.svelte:261 +#: src/lib/components/field-editors/audio-input.svelte:268 msgid "Remove audio" msgstr "Remove audio" @@ -720,11 +745,11 @@ msgstr "Remove audio" msgid "Reopen" msgstr "Reopen" -#: src/lib/components/field-editors/audio-input.svelte:258 +#: src/lib/components/field-editors/audio-input.svelte:265 msgid "Replace audio" msgstr "Replace audio" -#: src/lib/components/audio/AudioDialog.svelte:120 +#: src/lib/components/audio/AudioDialog.svelte:169 msgid "Save audio" msgstr "Save audio" @@ -877,10 +902,11 @@ msgid "Unknown" msgstr "Unknown" #: src/project/ProjectSidebar.svelte:115 +#: src/lib/components/audio/AudioDialog.svelte:91 msgid "Unknown error" msgstr "Unknown error" -#: src/lib/components/field-editors/audio-input.svelte:80 +#: src/lib/components/field-editors/audio-input.svelte:85 msgid "Unknown error {0}" msgstr "Unknown error {0}" diff --git a/frontend/viewer/src/locales/es.po b/frontend/viewer/src/locales/es.po index 2fc05f2c9c..1a81c9a912 100644 --- a/frontend/viewer/src/locales/es.po +++ b/frontend/viewer/src/locales/es.po @@ -81,8 +81,8 @@ msgstr "Cuenta" msgid "Activity" msgstr "Actividad" -#: src/lib/components/field-editors/audio-input.svelte:206 -#: src/lib/components/audio/AudioDialog.svelte:106 +#: src/lib/components/field-editors/audio-input.svelte:213 +#: src/lib/components/audio/AudioDialog.svelte:153 msgid "Add audio" msgstr "Añadir audio" @@ -131,10 +131,18 @@ msgstr "Versión de la aplicación" msgid "Are you sure you want to delete {0}?" msgstr "¿Estás seguro de que quieres borrar {0}?" -#: src/lib/components/field-editors/audio-input.svelte:215 +#: src/lib/components/field-editors/audio-input.svelte:222 msgid "Audio file not included in Send & Receive" msgstr "Archivo de audio no incluido en Enviar y Recibir" +#: src/lib/components/audio/AudioDialog.svelte:82 +msgid "Audio saved and uploaded to Lexbox" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:79 +msgid "Audio saved locally" +msgstr "" + #: src/lib/history/HistoryView.svelte:95 #: src/lib/activity/ActivityView.svelte:91 msgid "Author:" @@ -165,7 +173,7 @@ msgstr "Visite" #: src/lib/entry-editor/EntryOrSensePicker.svelte:245 #: src/lib/components/field-editors/select.svelte:166 #: src/lib/components/field-editors/multi-select.svelte:280 -#: src/lib/components/audio/AudioDialog.svelte:118 +#: src/lib/components/audio/AudioDialog.svelte:167 msgid "Cancel" msgstr "Cancelar" @@ -404,14 +412,27 @@ msgstr "Etiquetas de campo" msgid "FieldWorks logo" msgstr "Logotipo de FieldWorks" +#: src/lib/components/audio/AudioDialog.svelte:89 +msgid "File already exists" +msgstr "" + #: src/lib/components/audio/audio-editor.svelte:32 msgid "File name:" msgstr "Nombre del fichero:" -#: src/lib/components/field-editors/audio-input.svelte:74 +#: src/lib/components/field-editors/audio-input.svelte:79 msgid "File not found" msgstr "Archivo no encontrado" +#: src/lib/components/audio/AudioDialog.svelte:87 +msgid "File saving not supported" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:164 +#: src/lib/components/audio/AudioDialog.svelte:85 +msgid "File too big" +msgstr "" + #: src/project/browse/SearchFilter.svelte:100 msgid "Filter # entries" msgstr "Filtro # entradas" @@ -592,7 +613,7 @@ msgstr "Nueva entrada" msgid "No activity found" msgstr "No se ha encontrado actividad" -#: src/lib/components/field-editors/audio-input.svelte:210 +#: src/lib/components/field-editors/audio-input.svelte:217 msgid "No audio" msgstr "Sin audio" @@ -609,6 +630,10 @@ msgstr "No se han encontrado diccionarios" msgid "No entries found" msgstr "No se han encontrado entradas" +#: src/lib/components/audio/AudioDialog.svelte:75 +msgid "No file selected" +msgstr "" + #: src/lib/history/HistoryView.svelte:66 msgid "No history found" msgstr "No se han encontrado antecedentes" @@ -650,7 +675,7 @@ msgstr "Nota" msgid "Offline" msgstr "Fuera de línea" -#: src/lib/components/field-editors/audio-input.svelte:77 +#: src/lib/components/field-editors/audio-input.svelte:82 msgid "Offline, unable to download" msgstr "Desconectado, no se puede descargar" @@ -717,7 +742,7 @@ msgstr "Actualizar proyectos" msgid "Remove" msgstr "Eliminar" -#: src/lib/components/field-editors/audio-input.svelte:261 +#: src/lib/components/field-editors/audio-input.svelte:268 msgid "Remove audio" msgstr "Eliminar audio" @@ -725,11 +750,11 @@ msgstr "Eliminar audio" msgid "Reopen" msgstr "Vuelva a abrir" -#: src/lib/components/field-editors/audio-input.svelte:258 +#: src/lib/components/field-editors/audio-input.svelte:265 msgid "Replace audio" msgstr "Sustituir audio" -#: src/lib/components/audio/AudioDialog.svelte:120 +#: src/lib/components/audio/AudioDialog.svelte:169 msgid "Save audio" msgstr "Guardar audio" @@ -882,10 +907,11 @@ msgid "Unknown" msgstr "Desconocido" #: src/project/ProjectSidebar.svelte:115 +#: src/lib/components/audio/AudioDialog.svelte:91 msgid "Unknown error" msgstr "Error desconocido" -#: src/lib/components/field-editors/audio-input.svelte:80 +#: src/lib/components/field-editors/audio-input.svelte:85 msgid "Unknown error {0}" msgstr "Error desconocido {0}" @@ -942,4 +968,3 @@ msgstr "Sistema de escritura: {0}" #: src/project/browse/filter/WsSelect.svelte:29 msgid "Writing Systems" msgstr "Sistemas de escritura" - diff --git a/frontend/viewer/src/locales/fr.po b/frontend/viewer/src/locales/fr.po index b97639374d..09950a3b92 100644 --- a/frontend/viewer/src/locales/fr.po +++ b/frontend/viewer/src/locales/fr.po @@ -81,8 +81,8 @@ msgstr "Compte" msgid "Activity" msgstr "Activité" -#: src/lib/components/field-editors/audio-input.svelte:206 -#: src/lib/components/audio/AudioDialog.svelte:106 +#: src/lib/components/field-editors/audio-input.svelte:213 +#: src/lib/components/audio/AudioDialog.svelte:153 msgid "Add audio" msgstr "Ajouter de l'audio" @@ -131,10 +131,18 @@ msgstr "Version de l'application" msgid "Are you sure you want to delete {0}?" msgstr "Êtes-vous sûr de vouloir supprimer {0}?" -#: src/lib/components/field-editors/audio-input.svelte:215 +#: src/lib/components/field-editors/audio-input.svelte:222 msgid "Audio file not included in Send & Receive" msgstr "Le fichier audio n'est pas inclus dans l'envoi et la réception" +#: src/lib/components/audio/AudioDialog.svelte:82 +msgid "Audio saved and uploaded to Lexbox" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:79 +msgid "Audio saved locally" +msgstr "" + #: src/lib/history/HistoryView.svelte:95 #: src/lib/activity/ActivityView.svelte:91 msgid "Author:" @@ -165,7 +173,7 @@ msgstr "Parcourir" #: src/lib/entry-editor/EntryOrSensePicker.svelte:245 #: src/lib/components/field-editors/select.svelte:166 #: src/lib/components/field-editors/multi-select.svelte:280 -#: src/lib/components/audio/AudioDialog.svelte:118 +#: src/lib/components/audio/AudioDialog.svelte:167 msgid "Cancel" msgstr "Annuler" @@ -404,14 +412,27 @@ msgstr "Étiquettes de champ" msgid "FieldWorks logo" msgstr "Logo FieldWorks" +#: src/lib/components/audio/AudioDialog.svelte:89 +msgid "File already exists" +msgstr "" + #: src/lib/components/audio/audio-editor.svelte:32 msgid "File name:" msgstr "Nom du fichier :" -#: src/lib/components/field-editors/audio-input.svelte:74 +#: src/lib/components/field-editors/audio-input.svelte:79 msgid "File not found" msgstr "Fichier non trouvé" +#: src/lib/components/audio/AudioDialog.svelte:87 +msgid "File saving not supported" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:164 +#: src/lib/components/audio/AudioDialog.svelte:85 +msgid "File too big" +msgstr "" + #: src/project/browse/SearchFilter.svelte:100 msgid "Filter # entries" msgstr "Filtre # entrées" @@ -592,7 +613,7 @@ msgstr "Nouvelle entrée" msgid "No activity found" msgstr "Aucune activité trouvée" -#: src/lib/components/field-editors/audio-input.svelte:210 +#: src/lib/components/field-editors/audio-input.svelte:217 msgid "No audio" msgstr "Pas d'audio" @@ -609,6 +630,10 @@ msgstr "Aucun dictionnaire trouvé" msgid "No entries found" msgstr "Aucune entrée trouvée" +#: src/lib/components/audio/AudioDialog.svelte:75 +msgid "No file selected" +msgstr "" + #: src/lib/history/HistoryView.svelte:66 msgid "No history found" msgstr "Aucun antécédent n'a été trouvé" @@ -650,7 +675,7 @@ msgstr "Note" msgid "Offline" msgstr "Hors ligne" -#: src/lib/components/field-editors/audio-input.svelte:77 +#: src/lib/components/field-editors/audio-input.svelte:82 msgid "Offline, unable to download" msgstr "Hors ligne, impossible de télécharger" @@ -717,7 +742,7 @@ msgstr "Projets de rafraîchissement" msgid "Remove" msgstr "Retirer" -#: src/lib/components/field-editors/audio-input.svelte:261 +#: src/lib/components/field-editors/audio-input.svelte:268 msgid "Remove audio" msgstr "Supprimer l'audio" @@ -725,11 +750,11 @@ msgstr "Supprimer l'audio" msgid "Reopen" msgstr "Réouverture" -#: src/lib/components/field-editors/audio-input.svelte:258 +#: src/lib/components/field-editors/audio-input.svelte:265 msgid "Replace audio" msgstr "Remplacer l'audio" -#: src/lib/components/audio/AudioDialog.svelte:120 +#: src/lib/components/audio/AudioDialog.svelte:169 msgid "Save audio" msgstr "Sauvegarder l'audio" @@ -882,10 +907,11 @@ msgid "Unknown" msgstr "Inconnu" #: src/project/ProjectSidebar.svelte:115 +#: src/lib/components/audio/AudioDialog.svelte:91 msgid "Unknown error" msgstr "Erreur inconnue" -#: src/lib/components/field-editors/audio-input.svelte:80 +#: src/lib/components/field-editors/audio-input.svelte:85 msgid "Unknown error {0}" msgstr "Erreur inconnue {0}" @@ -942,4 +968,3 @@ msgstr "Système d'écriture : {0}" #: src/project/browse/filter/WsSelect.svelte:29 msgid "Writing Systems" msgstr "Systèmes d'écriture" - diff --git a/frontend/viewer/src/locales/id.po b/frontend/viewer/src/locales/id.po index f73722ba5a..9012932317 100644 --- a/frontend/viewer/src/locales/id.po +++ b/frontend/viewer/src/locales/id.po @@ -81,8 +81,8 @@ msgstr "Akun" msgid "Activity" msgstr "Aktivitas" -#: src/lib/components/field-editors/audio-input.svelte:206 -#: src/lib/components/audio/AudioDialog.svelte:106 +#: src/lib/components/field-editors/audio-input.svelte:213 +#: src/lib/components/audio/AudioDialog.svelte:153 msgid "Add audio" msgstr "Menambahkan audio" @@ -131,10 +131,18 @@ msgstr "Versi aplikasi" msgid "Are you sure you want to delete {0}?" msgstr "Apakah Anda yakin ingin menghapus {0}?" -#: src/lib/components/field-editors/audio-input.svelte:215 +#: src/lib/components/field-editors/audio-input.svelte:222 msgid "Audio file not included in Send & Receive" msgstr "File audio tidak disertakan dalam Kirim & Terima" +#: src/lib/components/audio/AudioDialog.svelte:82 +msgid "Audio saved and uploaded to Lexbox" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:79 +msgid "Audio saved locally" +msgstr "" + #: src/lib/history/HistoryView.svelte:95 #: src/lib/activity/ActivityView.svelte:91 msgid "Author:" @@ -165,7 +173,7 @@ msgstr "Jelajahi" #: src/lib/entry-editor/EntryOrSensePicker.svelte:245 #: src/lib/components/field-editors/select.svelte:166 #: src/lib/components/field-editors/multi-select.svelte:280 -#: src/lib/components/audio/AudioDialog.svelte:118 +#: src/lib/components/audio/AudioDialog.svelte:167 msgid "Cancel" msgstr "Batal" @@ -404,14 +412,27 @@ msgstr "Label Bidang" msgid "FieldWorks logo" msgstr "Logo FieldWorks" +#: src/lib/components/audio/AudioDialog.svelte:89 +msgid "File already exists" +msgstr "" + #: src/lib/components/audio/audio-editor.svelte:32 msgid "File name:" msgstr "Nama file:" -#: src/lib/components/field-editors/audio-input.svelte:74 +#: src/lib/components/field-editors/audio-input.svelte:79 msgid "File not found" msgstr "File tidak ditemukan" +#: src/lib/components/audio/AudioDialog.svelte:87 +msgid "File saving not supported" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:164 +#: src/lib/components/audio/AudioDialog.svelte:85 +msgid "File too big" +msgstr "" + #: src/project/browse/SearchFilter.svelte:100 msgid "Filter # entries" msgstr "Filter # entri" @@ -592,7 +613,7 @@ msgstr "Entri Baru" msgid "No activity found" msgstr "Tidak ada aktivitas yang ditemukan" -#: src/lib/components/field-editors/audio-input.svelte:210 +#: src/lib/components/field-editors/audio-input.svelte:217 msgid "No audio" msgstr "Tidak ada audio" @@ -609,6 +630,10 @@ msgstr "Tidak ditemukan Kamus" msgid "No entries found" msgstr "Tidak ada entri yang ditemukan" +#: src/lib/components/audio/AudioDialog.svelte:75 +msgid "No file selected" +msgstr "" + #: src/lib/history/HistoryView.svelte:66 msgid "No history found" msgstr "Tidak ditemukan riwayat" @@ -650,7 +675,7 @@ msgstr "Catatan" msgid "Offline" msgstr "Offline" -#: src/lib/components/field-editors/audio-input.svelte:77 +#: src/lib/components/field-editors/audio-input.svelte:82 msgid "Offline, unable to download" msgstr "Offline, tidak dapat mengunduh" @@ -717,7 +742,7 @@ msgstr "Menyegarkan Proyek" msgid "Remove" msgstr "Menghapus" -#: src/lib/components/field-editors/audio-input.svelte:261 +#: src/lib/components/field-editors/audio-input.svelte:268 msgid "Remove audio" msgstr "Menghapus audio" @@ -725,11 +750,11 @@ msgstr "Menghapus audio" msgid "Reopen" msgstr "Buka kembali" -#: src/lib/components/field-editors/audio-input.svelte:258 +#: src/lib/components/field-editors/audio-input.svelte:265 msgid "Replace audio" msgstr "Mengganti audio" -#: src/lib/components/audio/AudioDialog.svelte:120 +#: src/lib/components/audio/AudioDialog.svelte:169 msgid "Save audio" msgstr "Menyimpan audio" @@ -882,10 +907,11 @@ msgid "Unknown" msgstr "Tidak diketahui" #: src/project/ProjectSidebar.svelte:115 +#: src/lib/components/audio/AudioDialog.svelte:91 msgid "Unknown error" msgstr "Kesalahan yang tidak diketahui" -#: src/lib/components/field-editors/audio-input.svelte:80 +#: src/lib/components/field-editors/audio-input.svelte:85 msgid "Unknown error {0}" msgstr "Kesalahan tidak dikenal {0}" @@ -942,4 +968,3 @@ msgstr "Sistem penulisan: {0}" #: src/project/browse/filter/WsSelect.svelte:29 msgid "Writing Systems" msgstr "Sistem Penulisan" - diff --git a/frontend/viewer/src/locales/ko.po b/frontend/viewer/src/locales/ko.po index dc57017d32..1f726173b6 100644 --- a/frontend/viewer/src/locales/ko.po +++ b/frontend/viewer/src/locales/ko.po @@ -81,8 +81,8 @@ msgstr "계정" msgid "Activity" msgstr "활동" -#: src/lib/components/field-editors/audio-input.svelte:206 -#: src/lib/components/audio/AudioDialog.svelte:106 +#: src/lib/components/field-editors/audio-input.svelte:213 +#: src/lib/components/audio/AudioDialog.svelte:153 msgid "Add audio" msgstr "오디오 추가" @@ -131,10 +131,18 @@ msgstr "애플리케이션 버전" msgid "Are you sure you want to delete {0}?" msgstr "{0}을 삭제하시겠습니까?" -#: src/lib/components/field-editors/audio-input.svelte:215 +#: src/lib/components/field-editors/audio-input.svelte:222 msgid "Audio file not included in Send & Receive" msgstr "보내기 및 받기에 포함되지 않은 오디오 파일" +#: src/lib/components/audio/AudioDialog.svelte:82 +msgid "Audio saved and uploaded to Lexbox" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:79 +msgid "Audio saved locally" +msgstr "" + #: src/lib/history/HistoryView.svelte:95 #: src/lib/activity/ActivityView.svelte:91 msgid "Author:" @@ -165,7 +173,7 @@ msgstr "찾아보기" #: src/lib/entry-editor/EntryOrSensePicker.svelte:245 #: src/lib/components/field-editors/select.svelte:166 #: src/lib/components/field-editors/multi-select.svelte:280 -#: src/lib/components/audio/AudioDialog.svelte:118 +#: src/lib/components/audio/AudioDialog.svelte:167 msgid "Cancel" msgstr "취소" @@ -404,14 +412,27 @@ msgstr "필드 레이블" msgid "FieldWorks logo" msgstr "FieldWorks 로고" +#: src/lib/components/audio/AudioDialog.svelte:89 +msgid "File already exists" +msgstr "" + #: src/lib/components/audio/audio-editor.svelte:32 msgid "File name:" msgstr "파일 이름:" -#: src/lib/components/field-editors/audio-input.svelte:74 +#: src/lib/components/field-editors/audio-input.svelte:79 msgid "File not found" msgstr "파일을 찾을 수 없음" +#: src/lib/components/audio/AudioDialog.svelte:87 +msgid "File saving not supported" +msgstr "" + +#: src/lib/components/audio/AudioDialog.svelte:164 +#: src/lib/components/audio/AudioDialog.svelte:85 +msgid "File too big" +msgstr "" + #: src/project/browse/SearchFilter.svelte:100 msgid "Filter # entries" msgstr "필터링 항목 수" @@ -592,7 +613,7 @@ msgstr "새 항목" msgid "No activity found" msgstr "활동을 찾을 수 없습니다." -#: src/lib/components/field-editors/audio-input.svelte:210 +#: src/lib/components/field-editors/audio-input.svelte:217 msgid "No audio" msgstr "오디오 없음" @@ -609,6 +630,10 @@ msgstr "사전을 찾을 수 없습니다." msgid "No entries found" msgstr "항목을 찾을 수 없습니다." +#: src/lib/components/audio/AudioDialog.svelte:75 +msgid "No file selected" +msgstr "" + #: src/lib/history/HistoryView.svelte:66 msgid "No history found" msgstr "기록을 찾을 수 없습니다." @@ -650,7 +675,7 @@ msgstr "참고" msgid "Offline" msgstr "오프라인" -#: src/lib/components/field-editors/audio-input.svelte:77 +#: src/lib/components/field-editors/audio-input.svelte:82 msgid "Offline, unable to download" msgstr "오프라인 상태, 다운로드할 수 없음" @@ -717,7 +742,7 @@ msgstr "프로젝트 새로 고침" msgid "Remove" msgstr "제거" -#: src/lib/components/field-editors/audio-input.svelte:261 +#: src/lib/components/field-editors/audio-input.svelte:268 msgid "Remove audio" msgstr "오디오 제거" @@ -725,11 +750,11 @@ msgstr "오디오 제거" msgid "Reopen" msgstr "다시 열기" -#: src/lib/components/field-editors/audio-input.svelte:258 +#: src/lib/components/field-editors/audio-input.svelte:265 msgid "Replace audio" msgstr "오디오 교체" -#: src/lib/components/audio/AudioDialog.svelte:120 +#: src/lib/components/audio/AudioDialog.svelte:169 msgid "Save audio" msgstr "오디오 저장" @@ -882,10 +907,11 @@ msgid "Unknown" msgstr "알 수 없음" #: src/project/ProjectSidebar.svelte:115 +#: src/lib/components/audio/AudioDialog.svelte:91 msgid "Unknown error" msgstr "알 수 없는 오류" -#: src/lib/components/field-editors/audio-input.svelte:80 +#: src/lib/components/field-editors/audio-input.svelte:85 msgid "Unknown error {0}" msgstr "알 수 없는 오류 {0}" @@ -942,4 +968,3 @@ msgstr "쓰기 시스템: {0}" #: src/project/browse/filter/WsSelect.svelte:29 msgid "Writing Systems" msgstr "쓰기 시스템" -