-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Translations update from Hosted Weblate #2575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughAdds and updates many translation keys across multiple locale JSON files (hu, it, tr, zh_Hans, cs, pt_BR, de, ru, ko, pl), including punctuation/placeholder tweaks and one small value change in zh_Hans; no runtime logic or control-flow changes. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
01aabae to
814b102
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (3)
locales/it/translation.json (1)
960-961: Italian wording tweak for natural UIPrefer imperative/concise phrasing.
- "Make cursor time zero": "Rendi il tempo del cursore zero" + "Make cursor time zero": "Azzera il tempo del cursore"locales/tr/translation.json (1)
971-972: Turkish phrasing improvementMore idiomatic for a menu/action label.
- "Make cursor time zero": "İmleç zamanını sıfır yap" + "Make cursor time zero": "İmleç zamanını 0'a ayarla"locales/ru/translation.json (1)
993-994: Russian phrasing improvementUse a clearer action verb and numeral.
- "Make cursor time zero": "Сделать время курсора нулевым" + "Make cursor time zero": "Установить время курсора в 0"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
locales/cs/translation.json(3 hunks)locales/de/translation.json(41 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- locales/zh_Hans/translation.json
- locales/hu/translation.json
- locales/cs/translation.json
🔇 Additional comments (3)
locales/pt_BR/translation.json (2)
1-960: JSON structure is valid.The Brazilian Portuguese translation file maintains proper JSON formatting with no syntax errors detected throughout. The file appropriately adds numerous new translation entries and includes the new "Make cursor time zero" key as documented in the PR summary.
264-264: Based on the verification performed, the script output confirms that the placeholder{{example}}used in line 264 oflocales/pt_BR/translation.jsonis consistent across multiple locale files (nb_NO, zh_Hant, zh_Hans, vi, uk). All translation files for the "Please input a valid duration" key use the identical placeholder structure. The translation at line 264 is correct and consistent with the established pattern.locales/de/translation.json (1)
1-1001: JSON structure is valid and translations appear sound.The German translation file is properly formatted JSON with no syntax errors. The numerous changes represent typical translation refinements: improved grammar, corrected terminology (e.g., "HEVC-Dateien" → "HEVC-Videos" at line 5), and enhanced clarity. The new "Make cursor time zero" key at line 1001 is correctly formatted and consistent with other locale files.
locales/it/translation.json
Outdated
| "Video tracks": "Tracce video", | ||
| "Make cursor time zero": "Rendi il tempo del cursore zero" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Sanity-check: key present in all locales and JSON valid
Quick repo scan to ensure every locales/*/translation.json contains the new key and is valid JSON.
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
python - <<'PY'
import json, glob, sys
key = "Make cursor time zero"
missing, errors = [], []
for path in glob.glob("locales/*/translation.json"):
try:
with open(path, encoding="utf-8") as f:
data = json.load(f)
except Exception as e:
errors.append(f"{path}: {e}")
continue
if key not in data:
missing.append(path)
print("JSON errors:" if errors else "No JSON errors.", *errors, sep="\n")
print("Missing key in:" if missing else "All locales contain the key.", *missing, sep="\n")
PYLength of output: 767
Add the new key "Make cursor time zero" to all 26 missing locale files
The sanity check failed: the key exists only in locales/it/translation.json but is missing from all other locale files (ar, es, et, fa, fi, fr, he, id, ja, ko, lt, nb_NO, nl, nn, pl, pt, ro, si, sk, sl, sr, sv, ta, uk, vi, zh_Hant). All these files must be updated with appropriate translations for this key to maintain consistency across supported languages.
🤖 Prompt for AI Agents
In locales/it/translation.json around lines 960-961 the key "Make cursor time
zero" exists only in Italian; add the exact same key "Make cursor time zero"
with an appropriate translated value to each of the missing locale files (ar,
es, et, fa, fi, fr, he, id, ja, ko, lt, nb_NO, nl, nn, pl, pt, ro, si, sk, sl,
sr, sv, ta, uk, vi, zh_Hant) to restore parity—if you don’t have a verified
translation for a language, add the English string as a temporary fallback and
add a TODO comment for later translation, keeping file formatting and ordering
consistent with other keys.
66b2a57 to
856dd11
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (3)
locales/cs/translation.json (1)
1004-1005: Czech phrasing tweak (optional).“Nastavit čas v místě kurzoru jako nulový” works; more idiomatic would be “Nastavit čas v místě kurzoru na nulu”.
- "Make cursor time zero": "Nastavit čas v místě kurzoru jako nulový" + "Make cursor time zero": "Nastavit čas v místě kurzoru na nulu"locales/tr/translation.json (1)
971-987: Minor Turkish wording nits (optional).Prefer noun forms:
- “Setting” → “Ayar”
- “System default” → “Sistem varsayılanı”
Everything else looks solid.
- "Setting": "Ayarlanıyor", + "Setting": "Ayar", - "System default": "Sistem öntanımlı değeri", + "System default": "Sistem varsayılanı",Please confirm UI context for “Setting” is a noun, not a progress state.
locales/pt_BR/translation.json (1)
900-900: pt_BR phrasing tweak for new key (optional).Current is clear; idiomatic alternative:
- "Make cursor time zero": "Tornar zero o tempo do cursor", + "Make cursor time zero": "Zerar o tempo no cursor",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- locales/ru/translation.json
- locales/it/translation.json
- locales/zh_Hans/translation.json
- locales/hu/translation.json
🔇 Additional comments (3)
locales/cs/translation.json (2)
702-702: LGTM (placeholder parity).Text is concise; {{values}} preserved.
924-924: LGTM; consistency with “Ne‑globální”.Wording matches nearby term “Ne‑globální” (Line 920). No placeholder loss.
Please run the placeholder-audit script in my pt_BR comment to verify parity repo-wide.
locales/pt_BR/translation.json (1)
264-264: LGTM (placeholder parity).{{example}} preserved; punctuation OK.
cf4b154 to
1b116cc
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (3)
locales/it/translation.json (1)
960-976: Repo-wide key parity sanity check (follow-up to earlier comment)Validate that all locales include the newly introduced keys (not only “Make cursor time zero”, but also: “Apply change”, “Apply filter”, “Auto merge segments into one file after export, but keep exported per-segment files too”, “Error”, “Export each segment to a separate file”, “Go”, “Invalid timecode format”, “Loop selected segments in order”, “Please confirm”, “Reduce motion in user interface”, “Select segments”, “Setting”, “Success!”, “System default”, “The audio track is not supported while previewing. You can convert to a supported format from the menu”).
Run:
#!/usr/bin/env bash set -euo pipefail keys=( "Make cursor time zero" "Apply change" "Apply filter" "Auto merge segments into one file after export, but keep exported per-segment files too" "Error" "Export each segment to a separate file" "Go" "Invalid timecode format" "Loop selected segments in order" "Please confirm" "Reduce motion in user interface" "Select segments" "Setting" "Success!" "System default" "The audio track is not supported while previewing. You can convert to a supported format from the menu" ) miss=0 for f in locales/*/translation.json; do for k in "${keys[@]}"; do if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null; then echo "MISSING: $k -> $f" miss=1 fi done # also validate JSON structure jq -e . "$f" >/dev/null done if [ $miss -eq 0 ]; then echo "All locales contain all new keys." else echo "Some locales are missing keys (see MISSING lines above)." exit 1 filocales/pt_BR/translation.json (2)
640-640: Critical: Placeholder mismatch remains unresolved from previous review.This issue was already flagged in an earlier review. The translation is still missing the
{{count}}placeholder that exists in the key.Current:
"Extracting {{count}} unprocessable tracks_one": "Extraindo uma faixa improcessável"The value should include
{{count}}to match the plural variant and function correctly:- "Extracting {{count}} unprocessable tracks_one": "Extraindo uma faixa improcessável", + "Extracting {{count}} unprocessable tracks_one": "Extraindo {{count}} faixa improcessável",
914-914: Grammar: Use formal imperative form.This issue was flagged in a previous review. The translation uses the informal verb form "seleciona" instead of the formal imperative "selecione".
- "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro",
🧹 Nitpick comments (3)
locales/it/translation.json (1)
961-976: Polish recent Italian additions for grammar and clarityTighten phrasing, fix singular/plural, and punctuation.
Apply this diff:
- "Make cursor time zero": "Rendi il tempo del cursore zero", + "Make cursor time zero": "Imposta a zero il tempo del cursore", - "Apply change": "Applica modifiche", + "Apply change": "Applica modifica", - "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file , ma conserva anche i file esportati per segmento", + "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione, unisci automaticamente i segmenti in un unico file, ma conserva anche i file esportati per segmento", - "Reduce motion in user interface": "Riduci movimento interfaccia utente", + "Reduce motion in user interface": "Riduci il movimento nell'interfaccia utente", - "Setting": "Impostazioni", + "Setting": "Impostazione", - "Success!": "Completato!", + "Success!": "Operazione riuscita!", - "System default": "Predefinito sistema", + "System default": "Predefinito di sistema"locales/cs/translation.json (1)
1004-1005: Minor style tweak for “Make cursor time zero”More idiomatic Czech:
- "Make cursor time zero": "Nastavit čas v místě kurzoru jako nulový" + "Make cursor time zero": "Nastavit čas v místě kurzoru na nulu"locales/tr/translation.json (1)
985-986: Fix “Setting” noun and refine “System default”Current “Ayarlanıyor” is a verb form. Use the noun.
- "Setting": "Ayarlanıyor", + "Setting": "Ayar", - "System default": "Sistem öntanımlı değeri", + "System default": "Sistem varsayılanı"Optionally, for a clearer toast:
- "Success!": "Başarılı!", + "Success!": "İşlem başarılı!"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- locales/ru/translation.json
- locales/zh_Hans/translation.json
- locales/hu/translation.json
🔇 Additional comments (4)
locales/it/translation.json (1)
960-960: JSON formatting LGTMTrailing comma added after "Video tracks" is correct and keeps the JSON valid with following entries.
locales/cs/translation.json (2)
702-702: Phrasing improvement LGTMUpdated to “Doporučuje se nastavit toto na: {{values}}” is clearer.
924-924: Metadata option description LGTMDash-separated phrasing reads better; no functional change.
locales/tr/translation.json (1)
971-984: New Turkish entries look consistentKeys added after “Video tracks” with correct JSON punctuation; translations are accurate.
1f13095 to
f8dba55
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (2)
locales/pt_BR/translation.json (2)
640-640: Preserve ICU placeholder in singular form.Missing “{{count}}” in the value breaks parity vs key.
Apply this diff:
- "Extracting {{count}} unprocessable tracks_one": "Extraindo uma faixa improcessável", + "Extracting {{count}} unprocessable tracks_one": "Extraindo {{count}} faixa improcessável",
914-914: Minor grammar: use formal imperative “selecione”.Apply this diff:
- "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro",
🧹 Nitpick comments (5)
locales/ru/translation.json (1)
993-1010: RU: minor consistency and phrasing tweaksAlign with existing terms and typical UI phrasing.
- "Go": "Вперёд", + "Go": "Перейти", - "Invalid timecode format": "Неверный формат таймкода", + "Invalid timecode format": "Неверный формат тайм-кода", - "Reduce motion in user interface": "Уменьшить движение в пользовательском интерфейсе", + "Reduce motion in user interface": "Сократить анимацию интерфейса", - "Select segments": "Выбор сегментов", + "Select segments": "Выбрать сегменты", - "System default": "Системные настройки по умолчанию", + "System default": "Системное по умолчанию",locales/hu/translation.json (1)
833-852: HU: button wording and term polishMore idiomatic labels; keep compounds consistent.
- "Go": "Menj", + "Go": "Mehet", - "Invalid timecode format": "Érvénytelen időkódformátum", + "Invalid timecode format": "Érvénytelen időkód‑formátum", - "Loop selected segments in order": "A kiválasztott szegmensek sorrendbe hurkolása", + "Loop selected segments in order": "A kiválasztott szegmensek ismétlése sorrendben", - "Reduce motion in user interface": "Csökkentse a mozgást a felhasználói felületen", + "Reduce motion in user interface": "Animációk csökkentése", - "System default": "Rendszer", + "System default": "Rendszer alapértelmezett",Optional: if “Setting” is singular, prefer “Beállítás”; if it’s a section title, current “Beállítások” is fine.
locales/cs/translation.json (2)
702-702: CS: smoother phrasing“Obvykle se doporučuje nastavit na: {{values}}” reads more naturally.
- "It's generally recommended to set this to one of: {{values}}": "Doporučuje se nastavit toto na: {{values}}", + "It's generally recommended to set this to one of: {{values}}": "Obvykle se doporučuje nastavit na: {{values}}",
924-924: CS: “Ne‑globální” formPrefer “Neglobální” (without hyphen) in standard Czech.
- "Whether to preserve metadata from source file. Default: Global (file metadata) - metadata pro jednotlivé stopy a kapitoly budou kopírována. Ne-globální: pouze metadata pro jednotlivé stopy a kapitoly budou kopírována. Žádná: Nebudou kopírována žádná metadata.", + "Whether to preserve metadata from source file. Default: Global (file metadata) - metadata pro jednotlivé stopy a kapitoly budou kopírována. Neglobální: pouze metadata pro jednotlivé stopy a kapitoly budou kopírována. Žádná: Nebudou kopírována žádná metadata.",locales/it/translation.json (1)
961-976: Polish Italian phrasing and singular/plural accuracy.Minor, but improves clarity and consistency.
Apply this diff:
- "Make cursor time zero": "Rendi il tempo del cursore zero", + "Make cursor time zero": "Imposta il tempo del cursore a zero", - "Apply change": "Applica modifiche", + "Apply change": "Applica modifica", - "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file , ma conserva anche i file esportati per segmento", + "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione, unisci automaticamente i segmenti in un unico file, ma conserva anche i file esportati per ciascun segmento", - "Reduce motion in user interface": "Riduci movimento interfaccia utente", + "Reduce motion in user interface": "Riduci il movimento nell'interfaccia utente", - "Setting": "Impostazioni", + "Setting": "Impostazione", - "System default": "Predefinito sistema", + "System default": "Predefinito di sistema",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- locales/zh_Hans/translation.json
🔇 Additional comments (2)
locales/cs/translation.json (1)
1004-1005: CS: new keys look goodTranslations for “Video tracks” and “Make cursor time zero” are appropriate.
locales/pt_BR/translation.json (1)
264-264: LGTM: placeholder aligned.“{{example}}” preserved correctly in the translation.
locales/tr/translation.json
Outdated
| "Setting": "Ayarlanıyor", | ||
| "Success!": "Başarılı!", | ||
| "System default": "Sistem öntanımlı değeri", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix “Setting” and improve “System default”.
“Setting” should not be progressive; and “System default” has a more idiomatic Turkish form.
Apply this diff:
- "Setting": "Ayarlanıyor",
+ "Setting": "Ayar",
- "System default": "Sistem öntanımlı değeri",
+ "System default": "Sistem varsayılanı",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Setting": "Ayarlanıyor", | |
| "Success!": "Başarılı!", | |
| "System default": "Sistem öntanımlı değeri", | |
| "Setting": "Ayar", | |
| "Success!": "Başarılı!", | |
| "System default": "Sistem varsayılanı", |
🤖 Prompt for AI Agents
In locales/tr/translation.json around lines 984-986, replace the progressive
"Ayarlanıyor" for "Setting" with the correct noun "Ayar" (or "Ayarlar" if the UI
expects plural "Settings") and change the awkward "Sistem öntanımlı değeri" for
"System default" to the more idiomatic "Sistem varsayılanı".
af86517 to
b2143b7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
locales/pt_BR/translation.json (1)
914-914: Minor grammar fix (formal imperative).
Use “selecione” instead of “seleciona”.Apply this diff:
- "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro",
🧹 Nitpick comments (2)
locales/it/translation.json (1)
961-977: Polish Italian phrasing, number, and punctuation.
- Prefer imperative “Azzera …”
- Singularize “modifica”; “impostazione” for singular key.
- Fix spacing before comma; smoother “predefinito di sistema”.
Apply this diff:
- "Make cursor time zero": "Rendi il tempo del cursore zero", + "Make cursor time zero": "Azzera il tempo del cursore", - "Apply change": "Applica modifiche", + "Apply change": "Applica modifica", - "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file , ma conserva anche i file esportati per segmento", + "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file, ma conserva anche i file esportati per segmento", - "Setting": "Impostazioni", + "Setting": "Impostazione", - "Success!": "Completato!", + "Success!": "Operazione riuscita!", - "System default": "Predefinito sistema", + "System default": "Predefinito di sistema",locales/ru/translation.json (1)
1008-1008: Slightly more natural Russian for “System default”.
Optional, but reads better in UI lists.Apply this diff:
- "System default": "Системные настройки по умолчанию", + "System default": "Системное значение по умолчанию",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- locales/zh_Hans/translation.json
- locales/tr/translation.json
🔇 Additional comments (6)
locales/pt_BR/translation.json (2)
264-264: Placeholder parity fixed — looks good.The Portuguese value now preserves {{example}} exactly. No further action.
877-959: Verification complete: pt_BR placeholder parity and JSON formatting are correct.The sanity check has been run successfully:
- ✅ JSON parsing: All locales valid
- ✅ pt_BR placeholder parity: No mismatches detected in the strings reviewed (lines 877-959 show correct formatting with variables like
{{invalidChars}},{{alreadyBoundKey}},{{filterName}},{{segNumVariable}}properly preserved identically in keys and values)Pre-existing placeholder translation issues detected in other locales (es, nl, pt, tr) where variable names are being translated (e.g.,
{{example}}→{{ejemplo}}), but these are outside the scope of the pt_BR changes and should be addressed separately.locales/hu/translation.json (1)
833-852: Valid translation additions with proper Hungarian localization.The new entries add Hungarian translations for UI strings. All 20 new keys have appropriate Hungarian translations with proper grammar, accents, and terminology.
locales/cs/translation.json (3)
702-702: Minor text clarification: removal of "jednu z" phrase.Line 702 changes the Czech phrasing from "...na jednu z: {{values}}" to "...na: {{values}}" (removing "one of"). This simplifies the text while maintaining the intended meaning. The template variable
{{values}}provides the context for the selection list. This appears to be an intentional refinement of the phrasing.
924-924: Metadata preservation description updated.Line 924 updates the Czech translation for the metadata preservation setting. The new version appears to provide a more detailed and structured explanation with proper handling of the three options (Default/Global, Non-global, None). This is a translation refinement.
1004-1021: Valid translation additions consistent with Hungarian file.The new 18 Czech translation entries mirror the Hungarian additions (lines 833-852) with appropriate Czech localization. All entries are properly formatted with correct punctuation and terminology for UI strings.
b2143b7 to
4afcc58
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (2)
locales/pt_BR/translation.json (1)
914-914: Minor grammar fix (formal imperative).Use “selecione” instead of “seleciona”.
- "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro",locales/tr/translation.json (1)
984-986: Fix “Setting” and improve “System default”.Use noun “Ayar” (not progressive) and idiomatic “Sistem varsayılanı”.
- "Setting": "Ayarlanıyor", + "Setting": "Ayar", - "System default": "Sistem öntanımlı değeri", + "System default": "Sistem varsayılanı",
🧹 Nitpick comments (8)
locales/pt_BR/translation.json (3)
264-264: Prefer “insira” for user prompts.Use a more natural imperative: “insira” instead of “entre”.
- "Please input a valid duration. Example: {{example}}": "Por favor, entre uma duração válida. Exemplo: {{example}}", + "Please input a valid duration. Example: {{example}}": "Por favor, insira uma duração válida. Exemplo: {{example}}",
884-884: Hyphenate “quadro‑chave”.Portuguese uses “quadro‑chave”; keep consistency with the rest of the file.
- "Cut at the preceding keyframe (not accurate time.) Equiv to": "Cortar no quadro chave anterior (tempo não preciso). Equivalente a", + "Cut at the preceding keyframe (not accurate time.) Equiv to": "Cortar no quadro‑chave anterior (tempo não preciso). Equivalente a",
948-948: “Alternar” vs “Alterar”.This string toggles a boolean; use “Alternar todas as faixas”.
- "Toggle all tracks": "Alterar todas as faixas", + "Toggle all tracks": "Alternar todas as faixas",locales/it/translation.json (5)
962-962: Singular agreement.“Apply change” → “Applica modifica” (not plural).
- "Apply change": "Applica modifiche", + "Apply change": "Applica modifica",
964-964: Fix spacing and punctuation.Remove the stray space before comma and tighten phrasing.
- "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file , ma conserva anche i file esportati per segmento", + "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file, ma conserva anche i file esportati per segmento",
971-971: Add needed preposition.“Nell’interfaccia utente” reads naturally.
- "Reduce motion in user interface": "Riduci movimento interfaccia utente", + "Reduce motion in user interface": "Riduci il movimento nell'interfaccia utente",
973-973: Use singular form.“Setting” → “Impostazione”.
- "Setting": "Impostazioni", + "Setting": "Impostazione",
975-975: More idiomatic phrasing.Prefer “Predefinito di sistema”.
- "System default": "Predefinito sistema", + "System default": "Predefinito di sistema",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- locales/ru/translation.json
- locales/zh_Hans/translation.json
🔇 Additional comments (3)
locales/cs/translation.json (2)
1004-1004: Trailing comma added to accommodate new translation keys.The trailing comma added to the "Video tracks" entry (line 1004) properly accommodates the addition of 17 new translation keys (lines 1005-1021). The JSON structure remains syntactically valid with proper key-value formatting.
All new keys follow the established pattern:
"Make cursor time zero"through"The audio track is not supported while previewing..."- Translations appear contextually appropriate for UI labels, error messages, and settings
Also applies to: 1005-1021
702-702: Punctuation adjustments to existing translations.Two existing translation entries have been updated with minor punctuation modifications:
- Line 702: Removed dash after
{{values}}in the English context text- Line 924: Added dash after
"Výchozí:"(Czech for "Default:") to improve formatting consistencyThese appear to be refinements for better translation clarity and formatting consistency.
Also applies to: 924-924
locales/hu/translation.json (1)
833-833: Parallel translation updates with proper JSON formatting.The Hungarian translation file has been updated with 19 new translation keys, mirroring the additions in the Czech file. A trailing comma was properly added to the "Video tracks" entry (line 833) to accommodate the new keys.
New entries include identical UI labels, error messages, and settings across both locales:
"Make cursor time zero"through"Yes"- All translations appear contextually appropriate for the LosslessCut application
JSON structure remains syntactically valid with correct key-value formatting and closing braces.
Also applies to: 834-852
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)
🔇 Additional comments (2)
locales/hu/translation.json (2)
833-882: JSON structure and formatting appear sound for Hungarian translations.The additions follow proper JSON key-value formatting with appropriate Hungarian translations. The file structure aligns with the Italian version (same key set, localized values). No syntax errors detected in the added segment.
833-882: The concern about duplicate keys "No" and "Yes" is unfounded.Verification confirms these keys appear only once each in the file (lines 843 and 852) and do not exist elsewhere. The JSON syntax is valid, and the Hungarian translations are correct. All entries in the specified range are new additions with no duplicates.
Likely an incorrect or invalid review comment.
12fcc92 to
a1e3923
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (9)
locales/pl/translation.json (4)
271-271: Product name mistranslation (“DaVinci Resolve”).“Resolve” was translated as “Postanowienie”.
- "DaVinci Resolve / Final Cut Pro XML": "DaVinci Postanowienie / Finalny Cut Pro XML", + "DaVinci Resolve / Final Cut Pro XML": "DaVinci Resolve / Final Cut Pro XML",
710-710: “Sanitize” mistranslated (should be “Oczyść”).“Tonowanie” changes meaning.
- "Sanitize": "Tonowanie", + "Sanitize": "Oczyść",
662-662: Typos/terminology consistency (“Ścieżka”, “klatka”).- "Track {{index}} mismatch: {{key1}} {{value1}} != {{value2}}": "Ścieszka {{index}} niezgodność: {{key1}} {{value1}} != {{value2}}", + "Track {{index}} mismatch: {{key1}} {{value1}} != {{value2}}": "Ścieżka {{index}} – niezgodność: {{key1}} {{value1}} != {{value2}}", - "Current frame has been set as cover art": "Bieżąca ramka została ustawiona jako okładka", + "Current frame has been set as cover art": "Bieżąca klatka została ustawiona jako okładka",Also applies to: 681-681
1-973: Fix placeholder mismatches in locales to prevent runtime substitution failures.The validation script found 7 placeholder parity regressions:
locales/pl/translation.json:
"Extracting {{count}} unprocessable tracks_one": translation missing{{count}}"Toggle {{type}} tracks": uses{{typ}}instead of{{type}}locales/pt_BR/translation.json:
"Extracting {{count}} unprocessable tracks_one": translation missing{{count}}locales/tr/translation.json:
"Download {{version}}": uses{{versiyon}}instead of{{version}}"Please input a valid duration. Example: {{example}}": uses{{örnek}}instead of{{example}}"Frames extracted to: {{path}}": uses{{yol}}instead of{{path}}"Extracting {{count}} unprocessable tracks_one": translation missing{{count}}Placeholder names must match exactly between keys and values, or runtime substitution will fail.
locales/pt_BR/translation.json (2)
640-640: Fix critical placeholder mismatches (must keep {{count}}).Missing/misplaced count breaks runtime formatting.
- "Extracting {{count}} unprocessable tracks_one": "Extraindo uma faixa improcessável", + "Extracting {{count}} unprocessable tracks_one": "Extraindo {{count}} faixa improcessável", - "Extracting {{count}} unprocessable tracks_other": "Extraindo {{count}} faixas improcessáveis", + "Extracting {{count}} unprocessable tracks_other": "Extraindo {{count}} faixas improcessáveis",Also applies to: 715-715
253-253: Typo: “fiferente” → “diferente”.- "Try with a <1>Different file</1>": "Tentar com um <1>Arquivo fiferente</1>", + "Try with a <1>Different file</1>": "Tentar com um <1>arquivo diferente</1>",locales/tr/translation.json (3)
428-428: Fix critical placeholder mismatches ({{version}}, {{example}}, {{path}}).Placeholders must remain untranslated and exact.
- "Download {{version}}": "{{versiyon}} sürümünü indirin", + "Download {{version}}": "{{version}} sürümünü indirin", - "Please input a valid duration. Example: {{example}}": "Lütfen geçerli bir süre girin. Örnek: {{örnek}}", + "Please input a valid duration. Example: {{example}}": "Lütfen geçerli bir süre girin. Örnek: {{example}}", - "Frames extracted to: {{path}}": "Şuraya çıkarılan kareler: {{yol}}", + "Frames extracted to: {{path}}": "Kareler şuraya çıkarıldı: {{path}}",Also applies to: 488-488, 540-540
221-221: Broken React/markup tag in “See Help” string.Missing closing </1>.
- "See <1>Help</1>": "Bkz. <1>Yardım<1>", + "See <1>Help</1>": "Bkz. <1>Yardım</1>",
690-690: Untranslated token “Delete”.- "Delete": "Delete", + "Delete": "Sil",
♻️ Duplicate comments (2)
locales/pt_BR/translation.json (1)
914-914: Minor grammar fix (formal imperative).- "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro",locales/tr/translation.json (1)
984-986: Apply previous review: “Setting”/“System default”.- "Setting": "Ayarlanıyor", + "Setting": "Ayar", - "System default": "Sistem öntanımlı değeri", + "System default": "Sistem varsayılanı",
🧹 Nitpick comments (1)
locales/pl/translation.json (1)
892-903: Polish wording improvements (ordinals, preposition, imperative).Small fixes for clarity/naturalness.
- "1st, 2nd and 3rd track": "1, 2 i 3 ścieżka", + "1st, 2nd and 3rd track": "1., 2. i 3. ścieżka", - "Cannot find any keyframe within 60 seconds of frame {{time}}": "Nie można znaleźć żadnej klatki kluczowej w ciągu 60 sekund z klatki {{time}}", + "Cannot find any keyframe within 60 seconds of frame {{time}}": "Nie można znaleźć żadnej klatki kluczowej w ciągu 60 sekund od klatki {{time}}", - "Make cursor time zero": "Zrób czas kursora na zero", + "Make cursor time zero": "Ustaw czas kursora na zero",Also applies to: 928-928
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/ko/translation.json(2 hunks)locales/pl/translation.json(2 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- locales/hu/translation.json
- locales/it/translation.json
- locales/zh_Hans/translation.json
- locales/cs/translation.json
🔇 Additional comments (2)
locales/ko/translation.json (1)
948-1028: Translation additions look good.The Korean translation entries (lines 948–1028) are properly formatted JSON with consistent structure. All strings are correctly quoted, template variables like
{getModifier(segmentMouseModifierKey)}are preserved in the translation value, and the file closes with a valid JSON object brace. No syntax or structure issues detected.locales/ru/translation.json (1)
993-1039: Russian translation additions are properly formatted.The Russian translation entries (lines 993–1039) follow consistent JSON formatting with correct quoting, comma placement, and proper preservation of template variables and HTML tag placeholders (e.g.,
{getModifier(segmentMouseModifierKey)}). The final entry (line 1039) correctly has no trailing comma before the closing brace. All translations appear contextually appropriate and linguistically consistent with the existing Russian locale data.
locales/pl/translation.json
Outdated
| "Toggle {{type}} tracks": "Przełącznik {{typ}} ścieżek", | ||
| "Toggle all tracks": "Przełącznik wszystkich ścieżek", | ||
| "Toggle dark mode": "Przełączanik trybu ciemnego", | ||
| "Toggle tracks by expression": "Przełącznik ścieżek wg wyrażenia", | ||
| "Toggle tracks using current filter": "Przełącznik ścieżek przy użyciu bieżącego filtra", | ||
| "Total seconds": "Ogółem sekund", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix placeholder and wording in toggle strings ({{type}} mismatch, typos).
Placeholder must remain {{type}}. Also fix typos/wording for consistency.
Apply:
- "Toggle {{type}} tracks": "Przełącznik {{typ}} ścieżek",
- "Toggle all tracks": "Przełącznik wszystkich ścieżek",
- "Toggle dark mode": "Przełączanik trybu ciemnego",
- "Toggle tracks by expression": "Przełącznik ścieżek wg wyrażenia",
- "Toggle tracks using current filter": "Przełącznik ścieżek przy użyciu bieżącego filtra",
+ "Toggle {{type}} tracks": "Przełącz ścieżki {{type}}",
+ "Toggle all tracks": "Przełącz wszystkie ścieżki",
+ "Toggle dark mode": "Przełącz tryb ciemny",
+ "Toggle tracks by expression": "Przełącz ścieżki według wyrażenia",
+ "Toggle tracks using current filter": "Przełącz ścieżki, używając bieżącego filtra",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Toggle {{type}} tracks": "Przełącznik {{typ}} ścieżek", | |
| "Toggle all tracks": "Przełącznik wszystkich ścieżek", | |
| "Toggle dark mode": "Przełączanik trybu ciemnego", | |
| "Toggle tracks by expression": "Przełącznik ścieżek wg wyrażenia", | |
| "Toggle tracks using current filter": "Przełącznik ścieżek przy użyciu bieżącego filtra", | |
| "Total seconds": "Ogółem sekund", | |
| "Toggle {{type}} tracks": "Przełącz ścieżki {{type}}", | |
| "Toggle all tracks": "Przełącz wszystkie ścieżki", | |
| "Toggle dark mode": "Przełącz tryb ciemny", | |
| "Toggle tracks by expression": "Przełącz ścieżki według wyrażenia", | |
| "Toggle tracks using current filter": "Przełącz ścieżki, używając bieżącego filtra", | |
| "Total seconds": "Ogółem sekund", |
a1e3923 to
1231fe8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (7)
locales/pl/translation.json (3)
271-271: Keep product names unchanged (brand correctness).Use original names:
- "DaVinci Resolve / Final Cut Pro XML": "DaVinci Postanowienie / Finalny Cut Pro XML", + "DaVinci Resolve / Final Cut Pro XML": "DaVinci Resolve / Final Cut Pro XML",
662-662: Spelling fix: “Ścieżka” not “Ścieszka”.- "Track {{index}} mismatch: {{key1}} {{value1}} != {{value2}}": "Ścieszka {{index}} niezgodność: {{key1}} {{value1}} != {{value2}}", + "Track {{index}} mismatch: {{key1}} {{value1}} != {{value2}}": "Ścieżka {{index}}: niezgodność: {{key1}} {{value1}} != {{value2}}",
1-973: Fix 2 placeholder mismatches in the Polish translation file.The verification identified 2 localization bugs:
Line with key "Extracting {{count}} unprocessable tracks_one"
Value:"Wyodrębnianie jednej nieprzetworzonej ścieżki"→ Missing{{count}}placeholder. Should use the placeholder instead of hardcoding "jednej" (one).Line with key "Toggle {{type}} tracks"
Value:"Przełącznik {{typ}} ścieżek"→ Placeholder name typo. Change{{typ}}to{{type}}to match the key.locales/ko/translation.json (1)
386-386: Broken Trans tags and placeholder mismatch will break rendering. Fix these.
- Line 386: Extra stray closing tag at end.
- Line 845: Placeholder typo
"{mode2}}"should be"{{mode2}}".- Line 853: Malformed closing tag text
... 보기./1>should be a proper</1>tag.Apply:
- "If nothing helps, you can send an <1>Error report</1>": "도움이 되지 않았다면 <1>오류 보고서</1>를 보낼 수 있습니다.</1>", + "If nothing helps, you can send an <1>Error report</1>": "도움이 되지 않았다면 <1>오류 보고서</1>를 보낼 수 있습니다.", - "Segment mode: \"{{mode1}}\" will create segments bounding the black sections. \"{mode2}}\" will create segments that start/stop at the center of each black section.": "세그먼트 모드: \"{{mode1}}\"은(는) 검은색 영역을 경계로 하는 세그먼트를 생성합니다. \"{mode2}}\"은(는) 각 검은색 영역의 중앙에서 시작/중지하는 세그먼트를 생성합니다.", + "Segment mode: \"{{mode1}}\" will create segments bounding the black sections. \"{{mode2}}\" will create segments that start/stop at the center of each black section.": "세그먼트 모드: \"{{mode1}}\"은(는) 검은색 영역을 경계로 하는 세그먼트를 생성합니다. \"{{mode2}}\"은(는) 각 검은색 영역의 중앙에서 시작/중지하는 세그먼트를 생성합니다.", - "Enter a JavaScript expression which will be evaluated for each segment. Segments for which the expression evaluates to \"true\" will be selected. <1>View available syntax.</1>": "각 세그먼트에 대해 평가할 JavaScript 표현식을 입력합니다. 표현식이 \"true\"로 평가되는 세그먼트가 선택됩니다. <1>사용 가능한 구문 보기./1>", + "Enter a JavaScript expression which will be evaluated for each segment. Segments for which the expression evaluates to \"true\" will be selected. <1>View available syntax.</1>": "각 세그먼트에 대해 평가할 JavaScript 표현식을 입력합니다. 표현식이 \"true\"로 평가되는 세그먼트가 선택됩니다. <1>사용 가능한 구문 보기.</1>",Also applies to: 845-845, 853-853
locales/it/translation.json (2)
937-937: Fix typo in prompt.“Vuoir” → “Vuoi”.
- "Are you sure you want to reset all keyboard bindings?": "Vuoir ripristinare tutti i collegamenti tastiera?", + "Are you sure you want to reset all keyboard bindings?": "Vuoi ripristinare tutti i collegamenti tastiera?",
940-940: Complete the sentence around the Trans placeholder.Add the missing verb for clarity.
- "Enter a JavaScript filter expression which will be evaluated for each track of the current file. Tracks for which the expression evaluates to \"true\" will be selected or deselected. You may also the <1></1> keyboard action to run this filter.": "Inserisci un'espressione del filtro JavaScript che verrà valutata per ciascuna traccia del file attuale. Tracce per le quali l'espressione valuta se \"True\" verrà selezionato o deselezionato. Per eseguire questo filtro puoi anche <1> </1> l'azione tastiera.", + "Enter a JavaScript filter expression which will be evaluated for each track of the current file. Tracks for which the expression evaluates to \"true\" will be selected or deselected. You may also the <1></1> keyboard action to run this filter.": "Inserisci un'espressione di filtro JavaScript che verrà valutata per ciascuna traccia del file attuale. Le tracce per cui l'espressione restituisce \"true\" saranno selezionate o deselezionate. Puoi anche usare l'azione da tastiera <1></1> per eseguire questo filtro.",locales/zh_Hans/translation.json (1)
1011-1011: Fix inaccurate/mistyped translations.
- Line 1011: Should reference “视频轨道” (video tracks), not “音轨”.
- Line 944: “MOVE” → “MOV”.
- Line 570: Remove stray English “Toggle”.
Apply:
- "Keep or discard video tracks": "保留或废弃音轨", + "Keep or discard video tracks": "保留或废弃视频轨道", - "This file contains an audio track that FFmpeg is unable to mux into the MP4 format, so MOV has been auto-selected as the default output format.": "此文件包含一个 FFmpeg 无法嵌入到 MP4 格式的音轨,所以自动选择 MOVE 作为默认输出格式。", + "This file contains an audio track that FFmpeg is unable to mux into the MP4 format, so MOV has been auto-selected as the default output format.": "此文件包含一个 FFmpeg 无法复用到 MP4 容器的音轨,因此已自动选择 MOV 作为默认输出格式。", - "Toggle inclusion of this segment in export": "Toggle 将此段包含在导出中", + "Toggle inclusion of this segment in export": "切换是否在导出中包含此片段",Also applies to: 944-944, 570-570
♻️ Duplicate comments (4)
locales/pl/translation.json (2)
961-966: Restore placeholder and wording parity for “Toggle …” strings.Use the exact placeholder {{type}} and concise verbs; current translations break placeholder name and style.
Apply:
- "Toggle {{type}} tracks": "Przełącznik {{typ}} ścieżek", - "Toggle all tracks": "Przełącznik wszystkich ścieżek", - "Toggle dark mode": "Przełączanik trybu ciemnego", - "Toggle tracks by expression": "Przełącznik ścieżek wg wyrażenia", - "Toggle tracks using current filter": "Przełącznik ścieżek przy użyciu bieżącego filtra", + "Toggle {{type}} tracks": "Przełącz ścieżki {{type}}", + "Toggle all tracks": "Przełącz wszystkie ścieżki", + "Toggle dark mode": "Przełącz tryb ciemny", + "Toggle tracks by expression": "Przełącz ścieżki według wyrażenia", + "Toggle tracks using current filter": "Przełącz ścieżki, używając bieżącego filtra",
454-454: Fix stray encoding artifact (“segmentów”).Apply:
- "Decrease segment order": "Zmniejszenie kolejności segmentów", + "Decrease segment order": "Zmniejszenie kolejności segmentów",locales/pt_BR/translation.json (1)
914-914: Restore formal imperative (regression).- "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro",locales/it/translation.json (1)
960-1006: Italian additions look good; ensure parity across locales for new keys.The new entries are consistent. Please verify all locales include these keys, per earlier review thread.
Run the validation script provided in the KO file comment to confirm coverage.
🧹 Nitpick comments (2)
locales/pl/translation.json (1)
710-710: Polish wording/terminology nits (clearer UI Polish).- "Sanitize": "Tonowanie", + "Sanitize": "Oczyszczanie", - "Frame number": "Frakcje ramek", + "Frame number": "Numer klatki", - "Start over": "Uruchom o", + "Start over": "Zacznij od nowa", - "Report an error": "Raport jeden błędu", + "Report an error": "Zgłoś błąd", - "Close batch": "Zamknij wsadowe", + "Close batch": "Zamknij partię", - "Start of video": "Uruchom z wideo", + "Start of video": "Początek wideo",Also applies to: 539-539, 379-381, 457-457, 497-497
locales/hu/translation.json (1)
833-833: Small terminology/grammar tweaks for clarity.- "Video tracks": "Videó sávok", + "Video tracks": "Videosávok", - "Setting": "Beállítások", + "Setting": "Beállítás",Also applies to: 847-847
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/ko/translation.json(2 hunks)locales/pl/translation.json(2 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- locales/tr/translation.json
🔇 Additional comments (8)
locales/pl/translation.json (1)
451-451: Source meaning drift (added GPS). Verify intent.You added “i lokalizacja GPS.” Compare across locales; keep additions only if intended globally.
- "You might want to redact any sensitive information like paths.": "Warto zredagować wszelkie poufne informacje, takie jak ścieżki i lokalizacja GPS.", + "You might want to redact any sensitive information like paths.": "Warto zredagować wszelkie poufne informacje, takie jak ścieżki.",If GPS is desired, consider updating the source key or aligning other locales.
locales/hu/translation.json (1)
833-881: Changed block validates correctly; pre-existing placeholder mismatch found elsewhere in file.The validation for the changed lines (833-881) passed successfully—all placeholders in that block match between keys and values. However, the validation script detected a pre-existing placeholder mismatch outside this changed block: the key "Extracting {{count}} unprocessable tracks_one" contains the
{{count}}placeholder, but its Hungarian value does not include it. While this is unrelated to the current changes, consider addressing it separately as a follow-up fix.locales/ko/translation.json (1)
680-680: LGTM for this update.Wording is clear and keeps privacy caution.
locales/zh_Hans/translation.json (2)
155-155: LGTM on wording change.“切割点” → “剪切点” is clearer.
1025-1071: New ZH‑Hans keys look consistent; please validate placeholders/tags.Additions look good. Run the repo‑wide validation script to catch any tag/ICU issues.
locales/ru/translation.json (1)
993-1039: New translation entries are well-formed and comprehensive.The addition of ~47 new Russian translation keys (lines 993–1039) maintains consistent JSON formatting and includes proper Cyrillic translations for UI strings. All template variables (e.g.,
{{variables}}) and HTML-like format tags are correctly preserved. No syntax or content issues detected.locales/cs/translation.json (2)
702-702: Verify intentionality of translation refinements at lines 702 and 924.Two existing Czech translations have been updated:
- Line 702: Shortened from "...nastavit toto na jednu z: {{values}}" to "...nastavit toto na: {{values}}"
- Line 924: Long metadata description reformatted with dashes: "Výchozí: Globální... - metadata..."
Please confirm these changes are intentional improvements/corrections and not unintended regressions. If intentional, they appear well-formed.
Also applies to: 924-924
1004-1050: New Czech translation entries are consistent and well-integrated.The addition of ~47 new Czech translation keys (lines 1004–1050) mirrors the Russian file additions and maintains consistent JSON formatting. All Czech translations appear complete (not in English), template variables are preserved, and HTML-like format tags are intact. No syntax issues detected.
locales/ko/translation.json
Outdated
| "Center segments around start time": "시작 시간 주변에 세그먼트 가운데 정렬", | ||
| "1st, 2nd and 3rd track": "1번, 2번, 3번 트랙", | ||
| "Action:": "작업:", | ||
| "All code changes": "모든 코드 변경사항", | ||
| "All release notes": "모든 출시 기록", | ||
| "Always": "항상", | ||
| "Apply change": "변경 적용", | ||
| "Apply filter": "필터 적용", | ||
| "Are you sure you want to reset all keyboard bindings?": "모든 키보드 바인딩을 재설정하시겠습니까?", | ||
| "Audio tracks": "오디오 트랙", | ||
| "Auto merge segments into one file after export, but keep exported per-segment files too": "내보낸 후 세그먼트들을 하나의 파일로 자동 병합하지만 내보낸 세그먼트별 파일도 유지", | ||
| "Cannot find any keyframe after the desired start cut point": "원하는 시작 절단 지점 이후의 키 프레임을 찾을 수 없습니다", | ||
| "Cannot find any keyframe within 60 seconds of frame {{time}}": "{{time}} 프레임의 60초 이내에 키프레임을 찾을 수 없습니다", | ||
| "English language tracks": "영어 트랙", | ||
| "Enter a JavaScript filter expression which will be evaluated for each track of the current file. Tracks for which the expression evaluates to \"true\" will be selected or deselected. You may also the <1></1> keyboard action to run this filter.": "현재 파일의 각 트랙에 대해 평가될 JavaScript 필터 표현식을 입력하세요. 표현식이 \"true\"로 평가되는 트랙은 선택되거나 선택 해제됩니다. 이 필터를 실행하기 위해 <1></1> 키보드 작업을 수행할 수도 있습니다.", | ||
| "Error": "오류", | ||
| "Error code: {{errorCode}}. This could mean that anti-virus or something else is blocking the execution of FFmpeg. Make sure the following file exists and is executable:": "오류 코드: {{errorCode}}. 안티바이러스 프로그램이나 다른 프로그램이 FFmpeg 실행을 차단하고 있을 수 있습니다. 다음 파일이 존재하고 실행 가능한지 확인하세요:", | ||
| "Existing files will be overwritten without warning!": "기존 파일들은 아무런 경고 없이 덮어씌워집니다!", | ||
| "Expand segments +5 sec": "세그먼트 +5초 확장", | ||
| "Export each segment to a separate file": "각 세그먼트를 별도의 파일로 내보내기", | ||
| "Expression did not lead to a string": "표현식이 문자열로 이어지지 않았습니다", | ||
| "Failed to read file. Perhaps it has been moved?": "파일을 읽지 못했습니다. 파일이 이동되었을 수도 있습니다.", | ||
| "Fatal: FFmpeg executable not found": "치명적 오류: FFmpeg 실행 파일을 찾을 수 없음", | ||
| "Fatal: FFmpeg not accessible": "치명적 오류: FFmpeg에 액세스할 수 없음", | ||
| "FFmpeg is non-functional": "FFmpeg 작동하지 않음", | ||
| "Filter tracks": "트랙 필터링", | ||
| "Fix video codec tag / ID": "비디오 코덱 태그/ID 수정", | ||
| "Generating full overview waveform, this may take a few minutes.": "전체 개요 파형을 생성하는 중으로 몇 분 정도 걸릴 수 있습니다.", | ||
| "Go": "이동", | ||
| "Invalid duration": "잘못된 길이", | ||
| "Invalid timecode format": "잘못된 타임코드 형식", | ||
| "Invert segment selection": "세그먼트 선택 반전", | ||
| "Keep or discard all tracks": "모든 트랙 유지 또는 삭제", | ||
| "Keep or discard subtitle tracks": "자막 트랙 유지 또는 삭제", | ||
| "Keep or discard video tracks": "비디오 트랙 유지 또는 삭제", | ||
| "Load overview": "개요 불러오기", | ||
| "Loop selected segments in order": "선택한 세그먼트를 순서대로 반복", | ||
| "Make cursor time zero": "커서 시간을 0으로 만들기", | ||
| "Make sure that the FFmpeg executable exists:": "FFmpeg 실행 파일이 있는지 확인:", | ||
| "Manipulate segments on timeline": "타임라인에서 세그먼트 조작", | ||
| "Markers:": "마커:", | ||
| "Maximize": "최대화", | ||
| "Meta": "메타", | ||
| "Mouse click and drag": "마우스 클릭 및 드래그", | ||
| "Never": "안 함", | ||
| "No files found in folder": "폴더에서 파일을 찾을 수 없음", | ||
| "No GPS points found": "GPS 지점을 찾을 수 없음", | ||
| "No tracks match this expression.": "이 표현식과 일치하는 트랙이 없습니다.", | ||
| "No VTS vob files found in folder": "폴더에서 VTS vob 파일을 찾을 수 없음", | ||
| "OpenTimelineIO": "OpenTimelineIO", | ||
| "Please confirm": "확인해 주세요", | ||
| "Read all keyframes": "모든 키프레임 읽기", | ||
| "Read more: {{url}}": "더 읽어보기: {{url}}", | ||
| "Reading all keyframes": "모든 키프레임 읽는 중", | ||
| "Reduce motion in user interface": "사용자 인터페이스에서 모션 줄이기", | ||
| "Remove current segment cutpoint": "현재 세그먼트 절단지점 제거", | ||
| "Remove cutpoint from segment {{segmentNumber}}": "{{segmentNumber}} 세그먼트에서 절단지점 제거", | ||
| "Segment manipulation mouse modifier key": "세그먼트 조작 마우스 수정자 키", | ||
| "Segment start time must precede end time": "세그먼트 시작 시간은 종료 시간보다 앞서야 함", | ||
| "Select segments": "세그먼트 선택", | ||
| "Select segments at cursor": "커서에서 세그먼트 선택", | ||
| "Setting": "설정", | ||
| "Show advanced options": "고급 옵션 표시", | ||
| "Smart cut is not possible when FPS is unknown": "FPS를 알 수 없는 경우 스마트 절단이 불가능합니다", | ||
| "Some video files have incorrect codec tags which may cause problems playing back the video track in some players. On the flip side, fixing the codec tag will also cause problems in some players, so you might have to try both settings.": "일부 비디오 파일에는 잘못된 코덱 태그가 있어 일부 플레이어에서 비디오 트랙을 재생하는 데 문제가 발생할 수 있습니다. 반대로 코덱 태그를 수정하면 일부 플레이어에서도 문제가 발생하므로 두 가지 설정을 모두 시도해야 할 수도 있습니다.", | ||
| "Success!": "성공!", | ||
| "System default": "시스템 기본값", | ||
| "Template error: {{error}}": "템플릿 오류: {{error}}", | ||
| "The audio track is not supported while previewing. You can convert to a supported format from the menu": "미리보기 중에는 오디오 트랙이 지원되지 않습니다. 메뉴에서 지원되는 형식으로 변환할 수 있습니다", | ||
| "Toggle {{type}} tracks": "{{type}} 트랙 전환", | ||
| "Toggle all tracks": "모든 트랙 전환", | ||
| "Toggle dark mode": "다크 모드 전환", | ||
| "Toggle tracks by expression": "표현식에 따라 트랙 전환", | ||
| "Toggle tracks using current filter": "현재 필터를 사용하여 트랙 전환", | ||
| "Total seconds": "전체 시간(초)", | ||
| "Tracks with at least 720p video": "최소 720p 비디오가 있는 트랙", | ||
| "Tracks with H264 codec": "H264 코덱이 있는 트랙", | ||
| "Video tracks": "비디오 트랙", | ||
| "Waveform height": "파형 높이", | ||
| "What's new in LosslessCut?": "LosslessCut의 새로운 기능은?", | ||
| "<0></0> <2></2>, <4></4> <6></6> or <8><0>{getModifier(segmentMouseModifierKey)}</0></8>+<10></10> to set cutpoints": "절단지점 설정은 <0></0> <2></2>, <4></4> <6></6> 또는 <8><0>{getModifier(segmentMouseModifierKey)}</0></8>+<10></10> 사용" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
New KO keys look consistent; please run placeholder/tag validation across locales.
Content looks good. To avoid runtime issues, validate Trans tags and ICU placeholders repo‑wide.
Run:
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "1) JSON syntax check"
fd -t f 'translation.json' locales | xargs -I{} sh -c 'jq -e . "{}" >/dev/null || echo "Invalid JSON: {}"'
echo "2) Ensure new keys exist in all locales"
keys=$'Make cursor time zero\nApply change\nApply filter\nAuto merge segments into one file after export, but keep exported per-segment files too\nError\nExport each segment to a separate file\nGo\nInvalid timecode format\nLoop selected segments in order\nPlease confirm\nReduce motion in user interface\nSelect segments\nSetting\nSuccess!\nSystem default\nTemplate error: {{error}}\nThe audio track is not supported while previewing. You can convert to a supported format from the menu'
while IFS= read -r key; do
missing=()
for f in locales/*/translation.json; do
rg -q --fixed-strings "\"$key\"" "$f" || missing+=("$f")
done
if [ "${#missing[@]}" -gt 0 ]; then
echo "Missing key: $key"
printf ' - %s\n' "${missing[@]}"
fi
done <<< "$keys"
echo "3) Trans/ICU placeholder sanity"
python - <<'PY'
import json,glob,re,sys
bad=[]
for path in glob.glob('locales/*/translation.json'):
try:
data=json.load(open(path,encoding='utf-8'))
except Exception as e:
continue
for k,v in data.items():
if not isinstance(v,str): continue
opens=re.findall(r'<(\d+)>',v); closes=re.findall(r'</(\d+)>',v)
if sorted(opens)!=sorted(closes):
bad.append((path,k,'tag-mismatch',opens,closes))
# catch single-brace mistakes
if re.search(r'{[^{}]+}}|{{[^{}]+}', v):
bad.append((path,k,'brace-imbalance',v))
# ensure variables preserved
for var in re.findall(r'{{\s*([\w.]+)\s*}}', k):
if f'{{{{{var}}}}}' not in v:
pass
# no-op, keys language agnostic
for b in bad[:200]:
print('ISSUE', *b[:3], '...', sep=' | ')
if not bad: print('No Trans/ICU issues detected')
PYLength of output: 40186
Add missing Korean keys to all other locale files.
Verification found 18 new keys in locales/ko/translation.json (lines 948–1028) are missing from 24 other locale files (ar, es, et, fa, fi, fr, he, id, ja, lt, nb_NO, nl, nn, pt, pt_BR, ro, si, sk, sl, sr, sv, ta, uk, vi, zh_Hant). All locales must contain identical key sets to ensure complete i18n coverage and prevent runtime errors.
🤖 Prompt for AI Agents
In locales/ko/translation.json around lines 948–1028 there are 18 new keys that
are missing across 24 other locale files (ar, es, et, fa, fi, fr, he, id, ja,
lt, nb_NO, nl, nn, pt, pt_BR, ro, si, sk, sl, sr, sv, ta, uk, vi, zh_Hant); add
those exact keys to each of those locale JSON files preserving the same key
names and JSON structure, insert appropriate translations or temporary English
placeholders if a translation is not available, ensure commas and quoting keep
each file valid JSON, and run the i18n locale-key validation or tests to confirm
all locale files contain identical key sets.
locales/pt_BR/translation.json
Outdated
| "Subtitles (SRT)": "Legendas (SRT)", | ||
| "<0>If you're having a problem or question about LosslessCut, please first check the links in the <1>Help</1> menu. If you cannot find any resolution, you may ask a question in <3>GitHub discussions</3> or on <5>Discord.</5></0><1>If you believe that you found a bug in LosslessCut, you may <1>report a bug</1>.</1>": "<0>Se você tiver algum problema ou dúvida sobre o LosslessCut, verifique primeiro os links no menu <1>Ajuda</1>. Se não encontrar nenhuma solução, faça uma pergunta nas <3>Discussões do GitHub</3> ou no <5>Discord.</5></0><1>Se você acredita ter encontrado um bug no LosslessCut, pode <1>relatar um bug</1>.</1>", | ||
| "Adjusting the output FPS and cutting at the same time will cause incorrect cuts. Consider instead doing it in two separate steps.": "Ajustar o FPS de saída e cortar ao mesmo tempo causará cortes incorretos. Considere fazer isso em duas etapas separadas.", | ||
| "At least one codec is not supported by the selected output file format. Try another output format or try to disable one or more tracks.": "Pelo menos um codec não é suportado pelo formato de arquivo de saída selecionado. Tente outro formato de saída ou tente desativar uma ou mais faixas.", | ||
| "At least one resulting file name contains invalid character(s): {{invalidChars}}": "Pelo menos um nome de arquivo resultante contém caracteres inválidos: {{invalidChars}}", | ||
| "At least one resulting file name ends with a whitespace character or a dot, which is not allowed.": "Pelo menos um nome de arquivo resultante termina com um caractere de espaço em branco ou um ponto, o que não é permitido.", | ||
| "Combination is already bound to \"{{alreadyBoundKey}}\". Do you want to replace the existing binding?": "A combinação já está vinculada a \"{{alreadyBoundKey}}\". Deseja substituir a vinculação existente?", | ||
| "Cut at the preceding keyframe (not accurate time.) Equiv to": "Cortar no quadro chave anterior (tempo não preciso). Equivalente a", | ||
| "Divide timeline into a number of segments with an approximate byte size": "Dividir linha do tempo em vários segmentos com um tamanho aproximado de bytes", | ||
| "DV Analyzer Summary.txt": "Resumo do Analisador DV.txt", | ||
| "Enable \"{{filterName}}\" bitstream filter.": "Habilitar filtro de fluxo de bits \"{{filterName}}\".", | ||
| "Enabling this will allow faster playback of the exported file. This makes processing use 3 times as much export I/O, which is negligible for small files but might slow down exporting of large files.": "Habilitar isso permitirá uma reprodução mais rápida do arquivo exportado. Isso faz com que o processamento use 3 vezes mais E/S de exportação, o que é insignificante para arquivos pequenos, mas pode tornar a exportação de arquivos grandes mais lenta.", | ||
| "Enter a JavaScript expression which will be evaluated for each segment. Segments for which the expression evaluates to \"true\" will be selected. <1>View available syntax.</1>": "Insira uma expressão JavaScript que será avaliada para cada segmento. Os segmentos para os quais a expressão for avaliada como \"verdadeiro\" serão selecionados. <1>Veja a sintaxe disponível.</1>", | ||
| "Enter a JavaScript expression which will be evaluated for each selected segment. Returned properties will be edited. <1>View available syntax.</1>": "Insira uma expressão JavaScript que será avaliada para cada segmento selecionado. As propriedades retornadas serão editadas. <1>Veja a sintaxe disponível.</1>", | ||
| "Enter a JavaScript filter expression which will be evaluated for each track of the current file. Tracks for which the expression evaluates to \"true\" will be selected or deselected. You may also the <1></1> keyboard action to run this filter.": "Insira uma expressão de filtro JavaScript que será avaliada para cada faixa do arquivo atual. As faixas para as quais a expressão for avaliada como \"true\" serão selecionadas ou desmarcadas. Você também pode usar a ação de teclado <1></1> para executar este filtro.", | ||
| "Expand segments +5 sec": "Expandir segmentos +5 seg", | ||
| "Exporting whole file without cutting, because there are no segments to export.": "Exportar arquivo inteiro sem cortar, porque não há segmentos para exportar.", | ||
| "Extract frames from current segment as image files": "Extrair quadros do segmento atual como arquivos de imagem", | ||
| "Extract frames from selected segments as image files": "Extrair quadros de segmentos selecionados como arquivos de imagem", | ||
| "Fell back to default output file name": "Retornar ao nome do arquivo de saída padrão", | ||
| "File is not natively supported. Preview playback may be slow and of low quality, but the final export will be lossless. You may convert the file from the menu for a better preview.": "O arquivo não possui suporte nativo. A reprodução da pré-visualização pode ser lenta e de baixa qualidade, mas a exportação final será sem perdas. Você pode converter o arquivo no menu para uma pré-visualização melhor.", | ||
| "Generating full overview waveform, this may take a few minutes.": "Gerando uma forma de onda de visão geral completa, isso pode levar alguns minutos.", | ||
| "Losslessly download a whole media file from the specified URL, mux it into an mkv file and open it in LosslessCut. This can be useful if you need to download a video from a website, e.g. a HLS streaming video. For example in Chrome you can open Developer Tools and view the network traffic, find the playlist (e.g. m3u8) and copy paste its URL here.": "Baixe sem perdas um arquivo de mídia inteiro a partir da URL especificada, multiplexe-o em um arquivo mkv e abra-o no LosslessCut. Isso pode ser útil se você precisar baixar um vídeo de um site, por exemplo, um vídeo de streaming HLS. Por exemplo, no Chrome, você pode abrir as Ferramentas do Desenvolvedor e visualizar o tráfego de rede, encontrar a playlist (por exemplo, m3u8) e copiar e colar o URL aqui.", | ||
| "Make cursor time zero": "Tornar zero o tempo do cursor", | ||
| "Mini-waveform has been enabled. Click again to enable full-screen waveform": "A mini forma de onda foi habilitada. Clique novamente para habilitar a forma de onda em tela cheia", | ||
| "Minimum numeric padded length": "Comprimento mínimo numérico preenchido", | ||
| "Mouse wheel frame seek modifier key": "Tecla modificadora de busca de quadro pela roda do mouse", | ||
| "Mouse wheel keyframe seek modifier key": "Tecla modificadora de busca de quadro-chave pela roda do mouse", | ||
| "Note that this only applies when extracting multiple frames. When \"Frame number\" is selected, frame numbers are relative to the start of the segment (starting from 1).": "Observe que isso só se aplica à extração de vários quadros. Quando \"Número do quadro\" é selecionado, os números dos quadros são relativos ao início do segmento (começando em 1).", | ||
| "OpenTimelineIO": "OpenTimelineIO", | ||
| "Output file name is the same as the source file name. This increases the risk of accidentally overwriting or deleting source files!": "O nome do arquivo de saída é o mesmo do arquivo de origem. Isso aumenta o risco de sobrescrever ou excluir acidentalmente os arquivos de origem!", | ||
| "Output file name template results in duplicate file names (you are trying to export multiple files with the same name). You can fix this for example by adding the \"{{segNumVariable}}\" variable.": "O modelo de nome de arquivo de saída resulta em nomes de arquivo duplicados (você está tentando exportar vários arquivos com o mesmo nome). Você pode corrigir isso, por exemplo, adicionando a variável \"{{segNumVariable}}\".", | ||
| "Overwrite output setting is disabled and some files might have been skipped.": "A configuração de saída de substituição está desabilitada e alguns arquivos podem ter sido ignorados.", | ||
| "Please enter a JavaScript expression.": "Por favor, insira uma expressão JavaScript.", | ||
| "Please enter a number from 1 to {{n}} to be the new order for the current segment": "Insira um número de 1 a {{n}} para ser a nova ordem do segmento atual", | ||
| "Please enter a valid number.": "Por favor, insira um número válido.", | ||
| "Please input a valid size. Example: {{example}}": "Por favor, insira um tamanho válido. Exemplo: {{example}}", | ||
| "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", | ||
| "Read all keyframes": "Ler todos os quadros-chave", | ||
| "Reading all keyframes": "Lendo todos os quadros-chave", | ||
| "Remember window size and position": "Lembrar posição e tamanho da janela", | ||
| "Remove current segment cutpoint": "Remover ponto de corte do segmento atual", | ||
| "Remove cutpoint from segment {{segmentNumber}}": "Remover ponto de corte do segmento {{segmentNumber}}", | ||
| "Sanitize file names": "Corrigir nomes de arquivos", | ||
| "Seek one frame": "Buscar um quadro", | ||
| "Seek one key frame": "Buscar um quadro-chave", | ||
| "Segment duration less than 5 seconds": "Duração do segmento menor do que 5 segundos", | ||
| "Segment label (exact)": "Rótulo do segmento (exato)", | ||
| "Segment label (regexp)": "Rótulo do segmento (regexp)", | ||
| "Segment mode: \"{{mode1}}\" will create segments bounding the black sections. \"{{mode2}}\" will create segments that start/stop at the center of each black section.": "Modo de segmento: \"{{mode1}}\" criará segmentos delimitando as seções pretas. \"{{mode2}}\" criará segmentos que começam/param no centro de cada seção preta.", | ||
| "Segment mode: \"{{mode1}}\" will create segments bounding the silent sections. \"{{mode2}}\" will create segments that start/stop at the center of each silent section.": "Modo de segmento: \"{{mode1}}\" criará segmentos delimitando as seções silenciosas. \"{{mode2}}\" criará segmentos que começam/param no centro de cada seção silenciosa.", | ||
| "Segment tag value": "Valor da tag do segmento", | ||
| "Segments to chapters mode is active, this means that the file will not be cut. Instead chapters will be created from the segments.": "O modo de segmentos para capítulos está ativo, o que significa que o arquivo não será cortado. Em vez disso, capítulos serão criados a partir dos segmentos.", | ||
| "Shift all end times": "Mudar todos os tempos finais", | ||
| "Shift all start times": "Mudar todos os tempos iniciais", | ||
| "Show GPS map": "Mostrar mapa do GPS", | ||
| "Show informational in-app notifications": "Mostrar notificações informativas no aplicativo", | ||
| "Shrink segments -5 sec": "Diminuir segmentos em -5 seg", | ||
| "Smart cut auto detect bitrate": "Taxa de bits de detecção do corte automático inteligente", | ||
| "Smart cut is experimental and will not work on all files.": "O corte inteligente é experimental e não funcionará em todos os arquivos.", | ||
| "Source file's time minus segment end cut time": "Tempo do arquivo de origem menos o tempo de corte do segmento final", | ||
| "Source file's time plus segment start cut time": "Tempo do arquivo de origem mais tempo de corte do segmento inicial", | ||
| "There is a known issue in FFmpeg with cutting FLAC files. The file will be re-encoded, which is still lossless, but the export may be slower.": "Há um problema conhecido no FFmpeg com o corte de arquivos FLAC. O arquivo será recodificado, sem perdas, mas a exportação pode ser mais lenta.", | ||
| "This file contains an audio track that FFmpeg is unable to mux into the MP4 format, so MOV has been auto-selected as the default output format.": "Este arquivo contém uma faixa de áudio que o FFmpeg não consegue mixar no formato MP4, então o MOV foi selecionado automaticamente como o formato de saída padrão.", | ||
| "This gives you an overview of the export and allows you to customise more parameters before exporting, like changing the output file name.": "Isso lhe dá uma visão geral da exportação e permite que você personalize mais parâmetros antes de exportar, como alterar o nome do arquivo de saída.", | ||
| "This option allows you to shift all segment start times forward by one or more frames before cutting. This can be useful if the output video starts from the wrong (preceding) keyframe.": "Esta opção permite adiantar todos os horários de início dos segmentos em um ou mais quadros antes do corte. Isso pode ser útil se o vídeo de saída começar no quadro-chave errado (anterior).", | ||
| "This option lets you losslessly change the speed at which media players will play back the exported file. For example if you double the FPS, the playback speed will double (and duration will halve), however all the frames will be intact and played back (but faster). Be careful not to set it too high, as the player might not be able to keep up (playback CPU usage will increase proportionally to the speed!)": "Esta opção permite alterar sem perdas a velocidade com que os reprodutores de mídia reproduzirão o arquivo exportado. Por exemplo, se você dobrar o FPS, a velocidade de reprodução dobrará (e a duração será reduzida pela metade), porém todos os quadros permanecerão intactos e reproduzidos (mas mais rápido). Tenha cuidado para não definir um valor muito alto, pois o reprodutor pode não conseguir acompanhar (o uso da CPU na reprodução aumentará proporcionalmente à velocidade!)", | ||
| "Timeline keyboard seek interval": "Intervalo de busca do teclado da linha do tempo", | ||
| "Timeline keyboard seek interval (longer)": "Intervalo de busca do teclado na linha do tempo (longo)", | ||
| "Timeline keyboard seek interval (longest)": "Intervalo de busca do teclado na linha do tempo (mais longo)", | ||
| "Toggle {{type}} tracks": "Alternar faixas {{type}}", | ||
| "Toggle all tracks": "Alterar todas as faixas", | ||
| "Toggle dark mode": "Alternar modo escuro", | ||
| "Toggle tracks by expression": "Alternar faixas por expressão", | ||
| "Toggle tracks using current filter": "Alternar faixas usando filtro atual", | ||
| "Treat source file modification date/time as:": "Trate a data/hora de modificação do arquivo de origem como:", | ||
| "Use + and - for relative seek": "Use + e - para busca relativa", | ||
| "When merging, it's generally recommended to set this to \"make_non_negative\"": "Ao mesclar, geralmente é recomendado definir isso como \"make_non_negative\"", | ||
| "Whether to preserve chapters from source file.": "Se os capítulos do arquivo de origem devem ser preservados.", | ||
| "Whether to preserve metadata from source file. Default: Global (file metadata), per-track and per-chapter metadata will be copied. Non-global: Only per-track and per-chapter metadata will be copied. None: No metadata will be copied": "Se os metadados do arquivo de origem devem ser preservados. Padrão: Global (metadados do arquivo), metadados por faixa e por capítulo serão copiados. Não global: Somente metadados por faixa e por capítulo serão copiados. Nenhum: Nenhum metadado será copiado.", | ||
| "You are not allowed to write the output file. This probably means that the file already exists with the wrong permissions, or you don't have write permissions to the output folder.": "Você não tem permissão para salvar o arquivo de saída. Isso provavelmente significa que o arquivo já existe com as permissões erradas ou que você não tem permissão de gravação na pasta de saída.", | ||
| "You can customize the file name of the merged file using special variables.": "Você pode personalizar o nome do arquivo mesclado usando variáveis especiais.", | ||
| "You have enabled the \"invert segments\" mode <1></1> which will cut away selected segments instead of keeping them. But there is no space between any segments, or at least two segments are overlapping. This would not produce any output. Either make room between segments or click the Yinyang <3></3> symbol below to disable this mode. Alternatively you may combine overlapping segments from the menu.": "Você ativou o modo \"inverter segmentos\" <1></1>, que corta os segmentos selecionados em vez de mantê-los. Mas não há espaço entre os segmentos, ou pelo menos dois segmentos estão sobrepostos. Isso não produzirá nenhuma saída. Crie espaço entre os segmentos ou clique no símbolo Yinyang <3></3> abaixo para desativar este modo. Como alternativa, você pode combinar segmentos sobrepostos no menu." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spot-fixes on newly edited strings (typos/consistency).
- "Fell back to default output file name": "Retornar ao nome do arquivo de saída padrão",
+ "Fell back to default output file name": "Retornou ao nome de arquivo de saída padrão",
- "Please enter a JavaScript expression.": "Por favor, insira uma expressão JavaScript.",
+ "Please enter a JavaScript expression.": "Insira uma expressão JavaScript.",
- "Expand segments +5 seg",
+ "Expandir segmentos +5 s",(Note: keep “seg” vs “s” consistent across similar entries; project tends to use “s”.)
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
locales/pt_BR/translation.json lines 877-959: Several small typos and
consistency issues in recently edited strings—fix them by (1) changing
informal/incorrect Portuguese "seleciona" to the imperative "selecione" in
"Please select a working directory first"; (2) make time-unit abbreviations
consistent by replacing "seg" with "s" in "Expandir segmentos +5 seg" and
"Diminuir segmentos -5 seg" (project prefers "s"); and (3) run a quick pass over
these lines to correct any remaining minor punctuation/spacing inconsistencies
(e.g., stray spaces around punctuation or inconsistent use of hyphenation) so
the entries match the project's existing style.
🧩 Analysis chain
Run JSON/placeholder parity checks on changed block.
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
jq -e type locales/pt_BR/translation.json >/dev/null
python - <<'PY'
import json, re, sys
pat = re.compile(r"\{\{\s*([a-zA-Z0-9_\.]+)\s*\}\}")
def ph(s): return set(pat.findall(s or ""))
d=json.load(open("locales/pt_BR/translation.json",encoding="utf-8"))
bad=[]
for k,v in d.items():
if ph(k)!=ph(v):
if ph(k) or ph(v):
bad.append((k,sorted(ph(k)),sorted(ph(v))))
if bad:
print("MISMATCHES:")
[print("-",k, pk, pv) for k,pk,pv in bad[:50]]
sys.exit(1)
print("✅ PT-BR placeholders match")
PYLength of output: 72
🏁 Script executed:
#!/bin/bash
# Find the problematic key-value pair in the translation file
rg -n "Extracting.*unprocessable tracks_one" locales/pt_BR/translation.json -A2 -B2Length of output: 373
🏁 Script executed:
#!/bin/bash
# Also search for the Portuguese variant to see current state
rg -n "Extraindo|tracks_one" locales/pt_BR/translation.json -C2 | head -40Length of output: 1796
🏁 Script executed:
#!/bin/bash
# Get the exact key and value around this issue
python3 - <<'EOF'
import json
with open("locales/pt_BR/translation.json", encoding="utf-8") as f:
data = json.load(f)
# Find the key with 'Extracting' and 'unprocessable tracks_one'
for k, v in data.items():
if "Extracting" in k and "unprocessable tracks_one" in k:
print(f"KEY: {k}")
print(f"VALUE: {v}")
print(f"---")
EOFLength of output: 95
🏁 Script executed:
#!/bin/bash
# Also check if there's a similar _other variant that might have the placeholder
python3 - <<'EOF'
import json, re
with open("locales/pt_BR/translation.json", encoding="utf-8") as f:
data = json.load(f)
# Find all keys with 'unprocessable tracks' to see the pattern
for k in sorted(data.keys()):
if "unprocessable tracks" in k:
v = data[k]
print(f"KEY: {k}")
print(f"VALUE: {v}")
print()
EOFLength of output: 486
Fix missing placeholder in Portuguese translation (line 640).
The _one variant of "Extracting unprocessable tracks" is missing the {{count}} placeholder:
"Extracting {{count}} unprocessable tracks_one": "Extraindo uma faixa improcessável",
Should be:
"Extracting {{count}} unprocessable tracks_one": "Extraindo {{count}} faixa improcessável",
At runtime, {{count}} will be substituted with "1" for the singular form. Without the placeholder in the Portuguese value, the message will not format correctly.
🤖 Prompt for AI Agents
locales/pt_BR/translation.json around lines 877 to 959: the Portuguese singular
entry for "Extracting {{count}} unprocessable tracks_one" is missing the
{{count}} placeholder; update the translation value to include the placeholder
so it reads "Extraindo {{count}} faixa improcessável" (i.e. insert {{count}}
into the existing string) to match the source key and allow runtime
substitution.
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/zh_Hans/
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/it/
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/tr/
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/hu/
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/cs/
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (812 of 812 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (827 of 827 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/it/
Currently translated at 100.0% (827 of 827 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/tr/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/ru/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/zh_Hans/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/it/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/tr/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/hu/
Currently translated at 100.0% (826 of 826 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/cs/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/ru/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/zh_Hans/
Currently translated at 99.8% (852 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/ko/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/it/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/hu/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/pl/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/pl/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/cs/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/ko/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
Currently translated at 100.0% (853 of 853 strings) Translation: LosslessCut/LosslessCut Translate-URL: https://hosted.weblate.org/projects/losslesscut/losslesscut/de/
8882933 to
2511116
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
♻️ Duplicate comments (5)
locales/pt_BR/translation.json (2)
892-914: Fix grammar and unit style (“s” not “seg”); align tone.Applies prior guidance and improves consistency.
- "Expand segments +5 sec": "Expandir segmentos +5 seg", + "Expand segments +5 sec": "Expandir segmentos +5 s", - "Fell back to default output file name": "Retornar ao nome do arquivo de saída padrão", + "Fell back to default output file name": "Retornou ao nome de arquivo de saída padrão", - "Please enter a JavaScript expression.": "Por favor, insira uma expressão JavaScript.", + "Please enter a JavaScript expression.": "Insira uma expressão JavaScript.", - "Please select a working directory first": "Por favor, seleciona uma pasta de trabalho primeiro", + "Please select a working directory first": "Por favor, selecione uma pasta de trabalho primeiro"
638-642: Singular string likely missing {{count}} placeholder; verify and fix.Ensure the value includes {{count}} in the singular variant; otherwise formatting breaks at runtime.
#!/usr/bin/env bash set -euo pipefail jq -e type locales/pt_BR/translation.json >/dev/null python - <<'PY' import json, re, sys d=json.load(open("locales/pt_BR/translation.json",encoding="utf-8")) k="Extracting {{count}} unprocessable tracks_one" v=d.get(k,"") if "{{count}}" not in v: print("Missing {{count}} in value:", v) sys.exit(1) print("✅ {{count}} present in singular variant") PYIf missing, apply:
- "Extracting {{count}} unprocessable tracks_one": "Extraindo uma faixa improcessável", + "Extracting {{count}} unprocessable tracks_one": "Extraindo {{count}} faixa improcessável",locales/pl/translation.json (2)
454-454: Encoding artifact in “segmentów”.Remove stray character.
- "Decrease segment order": "Zmniejszenie kolejności segmentów", + "Decrease segment order": "Zmniejszenie kolejności segmentów",
961-965: Fix placeholder and wording in toggle strings.Keep placeholder as {{type}} and use imperative phrasing.
- "Toggle {{type}} tracks": "Przełącznik {{typ}} ścieżek", - "Toggle all tracks": "Przełącznik wszystkich ścieżek", - "Toggle dark mode": "Przełączanik trybu ciemnego", - "Toggle tracks by expression": "Przełącznik ścieżek wg wyrażenia", - "Toggle tracks using current filter": "Przełącznik ścieżek przy użyciu bieżącego filtra", + "Toggle {{type}} tracks": "Przełącz ścieżki {{type}}", + "Toggle all tracks": "Przełącz wszystkie ścieżki", + "Toggle dark mode": "Przełącz tryb ciemny", + "Toggle tracks by expression": "Przełącz ścieżki według wyrażenia", + "Toggle tracks using current filter": "Przełącz ścieżki, używając bieżącego filtra",locales/tr/translation.json (1)
984-986: Fix “Setting” and “System default”.Use noun/idiomatic forms:
- "Setting": "Ayar"
- "System default": "Sistem varsayılanı"
- "Setting": "Ayarlanıyor", + "Setting": "Ayar", - "System default": "Sistem öntanımlı değeri", + "System default": "Sistem varsayılanı",
🧹 Nitpick comments (7)
locales/pl/translation.json (1)
892-959: Polish wording nits on recently added entries.Improve naturalness; no placeholder changes.
- "1st, 2nd and 3rd track": "1, 2 i 3 ścieżka", + "1st, 2nd and 3rd track": "1., 2. i 3. ścieżka", - "All code changes": "Wszystkie kody zmian", + "All code changes": "Wszystkie zmiany w kodzie", - "All release notes": "Wszystko o wydaniu", + "All release notes": "Wszystkie informacje o wydaniu", - "Go": "Idź", + "Go": "Przejdź", - "Select segments at cursor": "Wybór segmentów z kursorem", + "Select segments at cursor": "Wybierz segmenty pod kursorem", - "Success!": "Powodzenie!", + "Success!": "Sukces!", - "System default": "Domyślny system", + "System default": "Domyślne ustawienia systemowe"locales/pt_BR/translation.json (2)
934-934: Keep time unit abbreviation consistent.Use “s”.
- "Shrink segments -5 sec": "Diminuir segmentos em -5 seg", + "Shrink segments -5 sec": "Diminuir segmentos em -5 s",
460-464: Tiny spacing/wording fix.- "Input has <1>{{numStreamsTotal}}</1> tracks - <3>Keeping <1>{{numStreamsToCopy}}</1>faixas</3>", + "Input has <1>{{numStreamsTotal}}</1> tracks - <3>Keeping <1>{{numStreamsToCopy}}</1> faixas</3>",locales/it/translation.json (2)
961-976: Polish key Italian strings (singular, idioms, spacing).
- Prefer singular for “Apply change”.
- Make “Setting” singular.
- Improve “System default”.
- Remove stray space before comma and clarify “per-segment”.
- "Apply change": "Applica modifiche", + "Apply change": "Applica modifica", - "Setting": "Impostazioni", + "Setting": "Impostazione", - "System default": "Predefinito sistema", + "System default": "Predefinito di sistema", - "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file , ma conserva anche i file esportati per segmento", + "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file, mantenendo anche i file esportati per singolo segmento",
978-985: Minor phrasing nits (optional).More idiomatic:
- "Expression did not lead to a string" → "L'espressione non ha restituito una stringa".
- "Make sure that the FFmpeg executable exists:" is fine; no change required.
- "Expression did not lead to a string": "L'espressione non ha portato ad una stringa", + "Expression did not lead to a string": "L'espressione non ha restituito una stringa",locales/zh_Hans/translation.json (2)
155-155: Term consistency for “cutpoints”.Elsewhere you use “切割点”; keep consistent here.
- "Segments and cut points": "片段和剪切点", + "Segments and cut points": "片段和切割点",
1025-1033: Use a more natural verb for “Go”.“前往” reads better than “转至” in UI navigation.
- "Go": "转至", + "Go": "前往",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (9)
locales/cs/translation.json(3 hunks)locales/hu/translation.json(1 hunks)locales/it/translation.json(1 hunks)locales/ko/translation.json(2 hunks)locales/pl/translation.json(2 hunks)locales/pt_BR/translation.json(2 hunks)locales/ru/translation.json(1 hunks)locales/tr/translation.json(1 hunks)locales/zh_Hans/translation.json(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- locales/hu/translation.json
- locales/ko/translation.json
🔇 Additional comments (2)
locales/ru/translation.json (1)
993-1011: Lines 993–1011 verified correct; pre-existing issues found elsewhere require separate fixes.Verification confirmed placeholder and tag parity for the reviewed lines. However, the broader file check revealed 2 pre-existing mismatches outside this PR's scope:
- Line 291: "Merge {{segments}}…" uses
{{сегменты}}(Cyrillic) instead of matching English placeholder- Line 717: "Extracting {{count}}…" translation is missing the
{{count}}placeholderThe reviewed lines 993–1011 are sound and should be approved. The pre-existing issues at lines 291 and 717 should be addressed in a separate fix.
locales/cs/translation.json (1)
1005-1050: JSON syntax validation passed.The file structure is valid JSON with proper formatting, comma placement, and no encoding/escaping issues detected. All new translation entries follow the established key-value pattern consistent with existing entries in the file.
| "Auto merge segments into one file after export, but keep exported per-segment files too": "Po exportu automaticky sloučit segmenty do jednoho souboru, ale ponechat také exportované soubory s jednotlivými segmenty", | ||
| "Error": "Chyba", | ||
| "Export each segment to a separate file": "Exportovat každý segment jako zvlášť soubor", | ||
| "Go": "Gb", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify translation accuracy for "Go" key.
The translation "Go" → "Gb" appears potentially incorrect. In a UI context, "Go" typically translates to an action verb like "Jít" or "Pokračuj" in Czech, not "Gb" (which resembles a unit abbreviation for Gigabytes). Please verify this translation is intentional and correct.
I'll verify the translation accuracy by examining the context in the translation files.
🏁 Script executed:
#!/bin/bash
# Check context around the "Go" translation in Czech locale file
echo "=== Czech translation context around line 1011 ==="
sed -n '1005,1015p' locales/cs/translation.json
echo -e "\n=== Check if English translation file exists and what 'Go' maps to ==="
if [ -f locales/en/translation.json ]; then
grep -n '"Go"' locales/en/translation.json
fi
echo -e "\n=== Search for 'Gb' occurrences in Czech locale to identify pattern ==="
grep -n '"Gb"' locales/cs/translation.json | head -20
echo -e "\n=== Check structure: list all locale files ==="
fd -e json locales/ | head -20Length of output: 1360
I need to check how other locales translate "Go" to establish the correct pattern and confirm this is an error.
🏁 Script executed:
#!/bin/bash
# Check how other locales translate "Go" to understand the pattern
echo "=== 'Go' translation across all locales ==="
find locales -name 'translation.json' -type f | sort | while read file; do
locale=$(echo "$file" | cut -d'/' -f2)
result=$(grep '"Go"' "$file" 2>/dev/null)
if [ -n "$result" ]; then
echo "$locale: $result"
fi
done
echo -e "\n=== Check if this is the only short abbreviation in Czech ==="
grep -E '"\w{1,2}"' locales/cs/translation.json | head -20Length of output: 343
Fix incorrect Czech translation for "Go" key.
The translation "Gb" is objectively incorrect and inconsistent with all other locales. Every language file translates "Go" to an action verb (German: "Los", Polish: "Idź", Russian: "Вперёд", etc.), but Czech incorrectly maps to "Gb"—which is neither a Czech word nor a relevant abbreviation. Correct this to a proper Czech verb such as "Jít" (go) or "Pokračuj" (proceed).
🤖 Prompt for AI Agents
locales/cs/translation.json around line 1011: the value for the "Go" key is
incorrect ("Gb"); replace it with a correct Czech action verb—e.g., change the
value to "Jít" (or "Pokračuj" if context prefers a continuing action) so the
entry becomes "Go": "Jít".
| "Video tracks": "Tracce video", | ||
| "Make cursor time zero": "Rendi il tempo del cursore zero", | ||
| "Apply change": "Applica modifiche", | ||
| "Apply filter": "Applica filtro", | ||
| "Auto merge segments into one file after export, but keep exported per-segment files too": "Dopo l'esportazione unisci automaticamente i segmenti in un unico file , ma conserva anche i file esportati per segmento", | ||
| "Error": "Errore", | ||
| "Export each segment to a separate file": "Esporta ogni segmento in un file separato", | ||
| "Go": "Vai", | ||
| "Invalid timecode format": "Formato timecode non valido", | ||
| "Loop selected segments in order": "Ripeti segmenti selezionati in ordine", | ||
| "Please confirm": "Conferma", | ||
| "Reduce motion in user interface": "Riduci movimento interfaccia utente", | ||
| "Select segments": "Seleziona segmenti", | ||
| "Setting": "Impostazioni", | ||
| "Success!": "Completato!", | ||
| "System default": "Predefinito sistema", | ||
| "The audio track is not supported while previewing. You can convert to a supported format from the menu": "Durante l'anteprima la traccia audio non è supportata. Puoi convertire in un formato supportato dal menu", | ||
| "Template error: {{error}}": "Errore modello: {{error}}", | ||
| "<0></0> <2></2>, <4></4> <6></6> or <8><0>{getModifier(segmentMouseModifierKey)}</0></8>+<10></10> to set cutpoints": "<0></0> <2></2>, <4></4> <6></6> or <8><0>{getModifier(segmentMouseModifierKey)}</0></8>+<10></10> per impostare punti di taglio", | ||
| "All code changes": "Tutte le modifiche al codice", | ||
| "All release notes": "Tutte le note di rilascio", | ||
| "Always": "Sempre", | ||
| "Cannot find any keyframe after the desired start cut point": "Impossibile trovare alcun fotogramma chiave dopo il punto di taglio iniziale desiderato", | ||
| "Cannot find any keyframe within 60 seconds of frame {{time}}": "Impossibile trovare alcun fotogramma chiave entro 60 secondi dal fotogramma {{time}}", | ||
| "Error code: {{errorCode}}. This could mean that anti-virus or something else is blocking the execution of FFmpeg. Make sure the following file exists and is executable:": "Codice errore: {{errorCode}}. Ciò potrebbe significare che l'antivirus o qualcos'altro sta bloccando l'esecuzione di FFmpeg. Assicurati che il seguente file esista e sia eseguibile:", | ||
| "Expression did not lead to a string": "L'espressione non ha portato ad una stringa", | ||
| "Fatal: FFmpeg executable not found": "Fatale: eseguibile FFmpeg non trovato", | ||
| "Fatal: FFmpeg not accessible": "Fatale: FFmpeg non accessibile", | ||
| "FFmpeg is non-functional": "FFmpeg non funziona", | ||
| "Fix video codec tag / ID": "Correggi il tag/ID del codec video", | ||
| "Invalid duration": "Durata non valida", | ||
| "Make sure that the FFmpeg executable exists:": "Assicurati che l'eseguibile FFmpeg esista:", | ||
| "Manipulate segments on timeline": "Manipola i segmenti nella timeline", | ||
| "Markers:": "Marcatori:", | ||
| "Meta": "Meta", | ||
| "Mouse click and drag": "Clic con il mouse e trascina", | ||
| "Never": "Mai", | ||
| "No files found in folder": "Nessun file trovato nella cartella", | ||
| "No GPS points found": "Nessun punto GPS trovato", | ||
| "No VTS vob files found in folder": "Nessun file VOB VTS trovato nella cartella", | ||
| "Read more: {{url}}": "Altre info: {{url}}", | ||
| "Segment manipulation mouse modifier key": "Tasto modificatore mouse per la manipolazione segmenti", | ||
| "Segment start time must precede end time": "Il punto iniziale del segmento deve precedere il punto finale", | ||
| "Show advanced options": "Visualizza opzioni avanzate", | ||
| "Smart cut is not possible when FPS is unknown": "Il taglio intelligente non è possibile quando l'FPS è sconosciuto", | ||
| "Some video files have incorrect codec tags which may cause problems playing back the video track in some players. On the flip side, fixing the codec tag will also cause problems in some players, so you might have to try both settings.": "Alcuni file video hanno tag codec errati che potrebbero causare problemi nella riproduzione della traccia video in alcuni lettori. D'altro canto, anche la correzione del tag del codec causerà problemi in alcuni lettori, quindi potresti dover provare entrambe le impostazioni.", | ||
| "What's new in LosslessCut?": "Quali sono le novità in LosslessCut?" | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Parity check across locales for new keys.
Please verify all locales include a representative new key (e.g., "Make cursor time zero") to avoid missing-string fallbacks at runtime.
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
key='Make cursor time zero'
missing=()
for f in locales/*/translation.json; do
if ! rg -q --fixed-strings "\"$key\"" "$f"; then
missing+=("$f")
fi
done
echo "Locales missing \"$key\":"
printf '%s\n' "${missing[@]:-None}"Length of output: 720
---
🏁 Script executed:
```shell
#!/bin/bash
set -euo pipefail
# Count all locale directories with translation.json
total=$(find locales -maxdepth 2 -name "translation.json" -type f | wc -l)
echo "Total locale translation.json files: $total"
echo ""
# List all locales
echo "All locales:"
find locales -maxdepth 2 -name "translation.json" -type f | sed 's|^locales/||; s|/translation.json||' | sort
Length of output: 174
Verify and add missing translations for "Make cursor time zero" across all 24 locales.
Verification confirms the parity issue: only 11 of 35 locales currently include the new key. The following 24 locales are missing translations and need to be updated:
ar, es, et, fa, fi, fr, he, id, ja, lt, nb_NO, nl, nn, pt, ro, si, sk, sl, sr, sv, ta, uk, vi, zh_Hant
Without translations in these locales, users will encounter untranslated key strings at runtime.
🤖 Prompt for AI Agents
locales/it/translation.json lines 960-1007: The new key "Make cursor time zero"
exists only in the Italian locale but is missing from 24 other locale files; add
the same key with appropriate translations in each missing locale (ar, es, et,
fa, fi, fr, he, id, ja, lt, nb_NO, nl, nn, pt, ro, si, sk, sl, sr, sv, ta, uk,
vi, zh_Hant) to restore parity; for each locale file, insert the key "Make
cursor time zero" with the correct localized string (or a placeholder
translation if awaiting translator) in the same section/order as other UI
strings and run a quick JSON validation/lint to ensure no syntax errors.
| "Setting": "Ayarlanıyor", | ||
| "Success!": "Başarılı!", | ||
| "System default": "Sistem öntanımlı değeri", | ||
| "The audio track is not supported while previewing. You can convert to a supported format from the menu": "Ön izleme sırasında ses parçası desteklenmiyor. Menüden desteklenen bir biçime dönüştürebilirsiniz", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consistency: “Önizleme” as one word.
Standardize preview to "Önizleme".
- "The audio track is not supported while previewing. You can convert to a supported format from the menu": "Ön izleme sırasında ses parçası desteklenmiyor. Menüden desteklenen bir biçime dönüştürebilirsiniz",
+ "The audio track is not supported while previewing. You can convert to a supported format from the menu": "Önizleme sırasında ses parçası desteklenmiyor. Menüden desteklenen bir biçime dönüştürebilirsiniz",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "The audio track is not supported while previewing. You can convert to a supported format from the menu": "Ön izleme sırasında ses parçası desteklenmiyor. Menüden desteklenen bir biçime dönüştürebilirsiniz", | |
| "The audio track is not supported while previewing. You can convert to a supported format from the menu": "Önizleme sırasında ses parçası desteklenmiyor. Menüden desteklenen bir biçime dönüştürebilirsiniz", |
🤖 Prompt for AI Agents
locales/tr/translation.json around line 987: the Turkish translation uses "Ön
izleme" (two words) but should be standardized to "Önizleme" (one word); update
the string value to replace "Ön izleme" with "Önizleme" so the entry reads:
"Önizleme sırasında ses parçası desteklenmiyor. Menüden desteklenen bir biçime
dönüştürebilirsiniz".
Translations update from Hosted Weblate for LosslessCut/LosslessCut.
Current translation status:
Summary by CodeRabbit
New Features
Tweaks