feat: update translations via @LingoDotDev#22426
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 2 Skipped Deployments
|
|
Lingo.dev seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
|
✅ No security or compliance issues detected. Reviewed everything up to 8000345. Security Overview
Detected Code Changes
Reply to this PR with |
There was a problem hiding this comment.
cubic reviewed 31 files and found no issues. Review PR in cubic.dev.
There was a problem hiding this comment.
cubic reviewed 31 files and found no issues. Review PR in cubic.dev.
Graphite Automations"Add consumer team as reviewer" took an action on this PR • (07/11/25)1 reviewer was added to this PR based on Keith Williams's automation. "Add foundation team as reviewer" took an action on this PR • (07/11/25)1 reviewer was added to this PR based on Keith Williams's automation. "Add ready-for-e2e label" took an action on this PR • (07/11/25)1 label was added to this PR based on Keith Williams's automation. |
000e1f4 to
57f3bab
Compare
8000345 to
1bb68c8
Compare
1bb68c8 to
8b1285a
Compare
8b1285a to
3655088
Compare
3655088 to
3b94994
Compare
3b94994 to
0554649
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
apps/web/public/static/locales/he/common.json (1)
80-88:cancelled_byis missing the dynamic subjectThe English key usually reads “Cancelled by {{name}}”.
Here the value is just “בוטל על ידי” – without{{name}}.
This will surface to users literally and drop the person’s name.-"cancelled_by": "בוטל על ידי", +"cancelled_by": "בוטל על-ידי {{name}}",
🧹 Nitpick comments (4)
apps/web/public/static/locales/he/common.json (4)
687-687: Minor wording nit
"view_role": "צפה בתפקיד"– consider the infinitive form (“לצפות בתפקיד”) to be consistent with existing keys such as"view_notifications": "צפייה בהתראות".
2732-2734: Rating strings – keep adjective gender neutralHebrew adjectives currently masculine (“הכי גבוה”, “הכי נמוך”).
If UI can appear for female-gendered hosts you may want neutral phrasing, e.g.
“בדירוג הגבוה ביותר” / “בדירוג הנמוך ביותר”.
3327-3339: Cache-management strings – punctuationHebrew full-stop after sentences is optional in UI; here a mix exists.
For the new cache strings keep it consistent with surrounding keys (most lines have no trailing period).No functional impact – style only.
3382-3390: “Delete cache” confirmation – imperative gender
"yes_delete_cache": "כן, מחק מטמון"– consider “כן, מחק את המטמון” for clarity.
Same for"delete_cached_data"→ “מחק את הנתונים במטמון”.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
i18n.lockis excluded by!**/*.lock
📒 Files selected for processing (36)
apps/web/public/static/locales/ar/common.json(11 hunks)apps/web/public/static/locales/az/common.json(11 hunks)apps/web/public/static/locales/bg/common.json(10 hunks)apps/web/public/static/locales/bn/common.json(11 hunks)apps/web/public/static/locales/ca/common.json(11 hunks)apps/web/public/static/locales/cs/common.json(11 hunks)apps/web/public/static/locales/da/common.json(11 hunks)apps/web/public/static/locales/de/common.json(11 hunks)apps/web/public/static/locales/el/common.json(11 hunks)apps/web/public/static/locales/es-419/common.json(11 hunks)apps/web/public/static/locales/es/common.json(11 hunks)apps/web/public/static/locales/et/common.json(11 hunks)apps/web/public/static/locales/eu/common.json(11 hunks)apps/web/public/static/locales/fi/common.json(11 hunks)apps/web/public/static/locales/fr/common.json(11 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(11 hunks)apps/web/public/static/locales/it/common.json(11 hunks)apps/web/public/static/locales/ja/common.json(11 hunks)apps/web/public/static/locales/km/common.json(11 hunks)apps/web/public/static/locales/ko/common.json(10 hunks)apps/web/public/static/locales/nl/common.json(11 hunks)apps/web/public/static/locales/no/common.json(11 hunks)apps/web/public/static/locales/pl/common.json(11 hunks)apps/web/public/static/locales/pt-BR/common.json(11 hunks)apps/web/public/static/locales/pt/common.json(11 hunks)apps/web/public/static/locales/ro/common.json(10 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(10 hunks)apps/web/public/static/locales/sr/common.json(11 hunks)apps/web/public/static/locales/sv/common.json(11 hunks)apps/web/public/static/locales/tr/common.json(11 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(11 hunks)apps/web/public/static/locales/zh-CN/common.json(11 hunks)apps/web/public/static/locales/zh-TW/common.json(11 hunks)
✅ Files skipped from review due to trivial changes (2)
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/bn/common.json
🚧 Files skipped from review as they are similar to previous changes (33)
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/bg/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/zh-CN/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/az/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/tr/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/vi/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/no/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/ru/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/de/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
🔇 Additional comments (4)
apps/web/public/static/locales/he/common.json (4)
51-55: Placeholder consistency for new Cal Video stringsConsider whether these new strings will be rendered together with dynamic data (e.g. organiser name, join-link, etc.).
If additional placeholders are expected (for example{{name}}or{{url}}) they must be present in the Hebrew string as well; otherwise run-time interpolation will fail.Nothing to change if the English source also contains no placeholders – just double-check.
122-124: Fine-grained wording LGTMBoth round-robin / fixed-host variants are translated clearly and keep the original nuance.
No action required.
2172-2181: Analytics keys – plural & context
"events": "אירועים"duplicates no other key – ✅"bookings_by_hour"/"most_booked_members"… translations are good.- Ensure graphs/tables that expect plural-aware forms (
_one/_other) won’t break; if the frontend uses simple strings you’re fine.No immediate code change, just sanity-check usage.
3153-3153: Consistency with existing superlative keys
"most_cancelled_bookings"parallels previous “most_booked_members” – translation looks consistent.
No change needed.
ffa785c to
3479863
Compare
3479863 to
2729578
Compare
There was a problem hiding this comment.
Actionable comments posted: 7
♻️ Duplicate comments (1)
apps/web/public/static/locales/sk-SK/common.json (1)
2734-2736: Duplicate keys – invalid JSONKeys
"most_no_show_host","highest_rated"and"lowest_rated"already exist earlier in the same file (~ lines 1480-1482).
JSON objects must not contain repeated keys – this makes the whole file invalid for strict parsers and breaks runtime i18n loaders.- "most_no_show_host": "Najviac neúčastí", - "highest_rated": "Najlepšie hodnotené", - "lowest_rated": "Najhoršie hodnotené",Either delete these duplicates or merge the wording into the original entries.
🧹 Nitpick comments (6)
apps/web/public/static/locales/sr/common.json (1)
2172-2176: Check plural-forms & placeholders for the added analytics stringsKeys such as
"bookings_by_hour","most_booked_members"and"least_booked_members"will likely be rendered in tables/charts that can show singular & plural counts.
Consider adding ICU plural forms (one,other) or{count}placeholders now, so that downstream code doesn’t need special-case logic later.apps/web/public/static/locales/he/common.json (1)
2172-2175: Hebrew wording is off – use “הכי …”
"most_booked_members"/"least_booked_members"read awkwardly:-"most_booked_members": "המוזמנים ביותר", -"least_booked_members": "המוזמנים הפחות", +"most_booked_members": "הכי מוזמנים", +"least_booked_members": "הכי פחות מוזמנים",This is the common concise phrasing.
apps/web/public/static/locales/ru/common.json (2)
2172-2174: Clarify labels – they appear as bare nouns in dashboardsThe new metrics are user-facing headings. Russian benefits from explicit subjects:
-"Бронирования по часам" -"Самые востребованные" -"Наименее востребованные" +"Бронирования по часам" +"Чаще всего бронируемые участники" +"Реже всего бронируемые участники"Adds context and stays close to the English intent.
2362-2365: Natural-sounding wording for analytics funnelCurrent phrasing is literal and a bit clumsy.
-"Маршрутизация воронки" +"Воронка маршрутизации" -"Успешные маршрутизации" +"Успешные перенаправления"Consider revising the remaining two keys in the same style.
apps/web/public/static/locales/az/common.json (2)
120-125: Terminology drift: “ev sahibi” vs “host”
fixed_hosts_unavailable_for_bookingandround_robin_hosts_unavailable_for_booking
use “ev sahibləri / ev sahiblərindən heç biri”.
Elsewhere (“organizer”, “host”) the file consistently uses the singular form “ev
sahibi”. Pick one variant and stick to it; otherwise UI wording looks patchy.
Example:-"Bəzi sabit ev sahibləri rezervasiya üçün əlçatan deyil." +"Bəzi sabit ev sahibləri (hostlar) rezervasiya üçün əlçatan deyil."
685-689: UI label sounds awkward
"view_role": "Rola Bax"is an imperative but drops the post-position “bax”.
Consistency with neighbours ("edit_role": "Rolu redaktə et") would be:-"Rola Bax" +"Rola bax"(lower-case verb and correct case suffix).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
i18n.lockis excluded by!**/*.lock
📒 Files selected for processing (36)
apps/web/public/static/locales/ar/common.json(13 hunks)apps/web/public/static/locales/az/common.json(13 hunks)apps/web/public/static/locales/bg/common.json(13 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(13 hunks)apps/web/public/static/locales/cs/common.json(13 hunks)apps/web/public/static/locales/da/common.json(13 hunks)apps/web/public/static/locales/de/common.json(13 hunks)apps/web/public/static/locales/el/common.json(12 hunks)apps/web/public/static/locales/es-419/common.json(13 hunks)apps/web/public/static/locales/es/common.json(13 hunks)apps/web/public/static/locales/et/common.json(13 hunks)apps/web/public/static/locales/eu/common.json(13 hunks)apps/web/public/static/locales/fi/common.json(13 hunks)apps/web/public/static/locales/fr/common.json(13 hunks)apps/web/public/static/locales/he/common.json(13 hunks)apps/web/public/static/locales/hu/common.json(13 hunks)apps/web/public/static/locales/it/common.json(12 hunks)apps/web/public/static/locales/ja/common.json(13 hunks)apps/web/public/static/locales/km/common.json(12 hunks)apps/web/public/static/locales/ko/common.json(12 hunks)apps/web/public/static/locales/nl/common.json(13 hunks)apps/web/public/static/locales/no/common.json(13 hunks)apps/web/public/static/locales/pl/common.json(12 hunks)apps/web/public/static/locales/pt-BR/common.json(13 hunks)apps/web/public/static/locales/pt/common.json(13 hunks)apps/web/public/static/locales/ro/common.json(12 hunks)apps/web/public/static/locales/ru/common.json(13 hunks)apps/web/public/static/locales/sk-SK/common.json(13 hunks)apps/web/public/static/locales/sr/common.json(13 hunks)apps/web/public/static/locales/sv/common.json(13 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(12 hunks)apps/web/public/static/locales/vi/common.json(13 hunks)apps/web/public/static/locales/zh-CN/common.json(13 hunks)apps/web/public/static/locales/zh-TW/common.json(12 hunks)
✅ Files skipped from review due to trivial changes (2)
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/ca/common.json
🚧 Files skipped from review as they are similar to previous changes (29)
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/zh-CN/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/tr/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/bg/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/vi/common.json
- apps/web/public/static/locales/de/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/no/common.json
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
apps/web/public/static/locales/ru/common.json (1)
Learnt from: bandhan-majumder
PR: #22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
apps/web/public/static/locales/az/common.json (1)
Learnt from: bandhan-majumder
PR: #22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
apps/web/public/static/locales/sr/common.json (1)
Learnt from: bandhan-majumder
PR: #22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
🔇 Additional comments (5)
apps/web/public/static/locales/he/common.json (1)
78-82: Placeholder seems to be missing for dynamic nameIf the key
"cancelled_by"is interpolated elsewhere as e.g."Cancelled by {{name}}", the Hebrew string should keep the{{name}}placeholder to avoid runtime trimming.-"cancelled_by": "בוטל על ידי", +"cancelled_by": "בוטל על ידי {{name}}",Please double-check the English source and keep placeholders intact.
apps/web/public/static/locales/ru/common.json (2)
3383-3390: Placeholders preserved – looks good
{{acceptedTypes}}/{{maxSize}}kept intact, plural forms OK.
51-54: LGTMTranslations are accurate and consistent with earlier vocabulary.
apps/web/public/static/locales/az/common.json (2)
3339-3343: Both old and new keys coexist – remove the obsolete oneYou introduced
restriction_schedule_descriptionbut kept
choose_restriction_schedule(line 3340).
If the old key is no longer referenced, delete it to avoid dead
translations and dev confusion.
3383-3390: Duplicate error messages
invalid_file_typeandinvalid_file_type_extensionconvey the same idea.
Unless the caller distinguishes them, keep only one key; otherwise translators
maintain two identical sentences.
| "disable_recording_for_guests": "Qonaqlar üçün yazını deaktiv edin", | ||
| "enable_automatic_transcription": "Görüşə qoşulduqdan sonra avtomatik transkripsiya funksiyasını aktivləşdir", | ||
| "enable_automatic_recording": "Təşkilatçı görüşə qoşulduqdan sonra avtomatik yazılışı aktivləşdir", | ||
| "video_options": "Video Seçimləri", | ||
| "get_meeting_session_details": "Görüş Sessiyasının Detallarını Əldə Et", | ||
| "edit_event": "Tədbiri redaktə et", | ||
| "view_session_details": "Sessiya Təfərrüatlarına Bax", | ||
| "meeting_session_details": "Görüş Sessiyasının Detalları", |
There was a problem hiding this comment.
🛠️ Refactor suggestion
“Recording” is mistranslated
enable_automatic_recording is rendered as
"Təşkilatçı görüşə qoşulduqdan sonra avtomatik yazılışı aktivləşdir".
“Yazılış” means “spelling/orthography”; the feature is about recording (audio/video).
Use a verb-noun pair consistent with lines 50 and 67, e.g.
-"Təşkilatçı görüşə qoşulduqdan sonra avtomatik yazılışı aktivləşdir"
+"Təşkilatçı görüşə qoşulduqdan sonra avtomatik yazmanı aktivləşdir"📝 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.
| "disable_recording_for_guests": "Qonaqlar üçün yazını deaktiv edin", | |
| "enable_automatic_transcription": "Görüşə qoşulduqdan sonra avtomatik transkripsiya funksiyasını aktivləşdir", | |
| "enable_automatic_recording": "Təşkilatçı görüşə qoşulduqdan sonra avtomatik yazılışı aktivləşdir", | |
| "video_options": "Video Seçimləri", | |
| "get_meeting_session_details": "Görüş Sessiyasının Detallarını Əldə Et", | |
| "edit_event": "Tədbiri redaktə et", | |
| "view_session_details": "Sessiya Təfərrüatlarına Bax", | |
| "meeting_session_details": "Görüş Sessiyasının Detalları", | |
| "disable_recording_for_guests": "Qonaqlar üçün yazını deaktiv edin", | |
| "enable_automatic_transcription": "Görüşə qoşulduqdan sonra avtomatik transkripsiya funksiyasını aktivləşdir", | |
| "enable_automatic_recording": "Təşkilatçı görüşə qoşulduqdan sonra avtomatik yazmanı aktivləşdir", | |
| "video_options": "Video Seçimləri", | |
| "edit_event": "Tədbiri redaktə et", | |
| "view_session_details": "Sessiya Təfərrüatlarına Bax", | |
| "meeting_session_details": "Görüş Sessiyasının Detalları", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/az/common.json around lines 49 to 55, the
translation for "enable_automatic_recording" incorrectly uses "yazılış" which
means spelling; replace it with the correct term for recording consistent with
other entries, using a verb-noun pair that clearly refers to audio/video
recording to accurately convey the feature.
| "you_can_view_booking_details_with_this_url": "Вы можете просмотреть детали бронирования по этой ссылке {{url}} и добавить встречу в свой календарь", | ||
| "no_options_available": "Нет доступных вариантов", | ||
| "cancellation_reason": "Причина отмены (необязательно)", | ||
| "cancelled_by": "Отменено пользователем", |
There was a problem hiding this comment.
Missing placeholder jeopardises runtime substitution
The source string usually contains a placeholder (e.g. "Cancelled by {{user}}").
Current translation "Отменено пользователем" drops that variable, so the UI will lose the actor’s name.
-"cancelled_by": "Отменено пользователем",
+"cancelled_by": "Отменено {{user}}",Please re-insert the {{user}} token (or verify that the key is indeed placeholder-free).
📝 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.
| "cancelled_by": "Отменено пользователем", | |
| "cancelled_by": "Отменено {{user}}", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json at line 80, the translation
string for "cancelled_by" is missing the placeholder {{user}} that exists in the
source string. To fix this, re-insert the {{user}} token into the Russian
translation so it matches the source format, ensuring the actor's name is
correctly displayed in the UI.
| "fixed_hosts_unavailable_for_booking": "Некоторые из закрепленных хостов недоступны для бронирования.", | ||
| "round_robin_hosts_unavailable_for_booking": "Нет доступных хостов для бронирования по принципу Round Robin.", |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Terminology drift: use one word for “host” across the file
Earlier keys translate “host” as «организатор».
Here you switch to «хост», producing mixed wording in the UI.
-"Некоторые из закрепленных хостов недоступны для бронирования."
+"Некоторые из закреплённых организаторов недоступны для бронирования."Please align both lines (122-123) to the chosen term.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json at lines 122-123, the term for
"host" is inconsistent with earlier translations, switching from «организатор»
to «хост». To fix this, replace «хост» with «организатор» in both lines to
maintain consistent terminology across the file.
| "events": "События", | ||
| "performance": "Производительность", |
There was a problem hiding this comment.
Potential duplicate keys – JSON will keep the last one
"events" & "performance" already exist earlier in the same file (lines ~147 & 511).
Having the same key twice is legal JSON but the first value is silently overwritten.
Please search & remove the duplicate, or rename the new key (e.g. "events_label").
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json around lines 2179 to 2180, the
keys "events" and "performance" are duplicates of keys defined earlier in the
file (around lines 147 and 511). Since JSON keys must be unique, remove these
duplicate entries or rename them to unique keys such as "events_label" or
"performance_label" to avoid overwriting the original values.
| "you_can_view_booking_details_with_this_url": "Podrobnosti o rezervácii si môžete pozrieť na tejto url {{url}} a pridať udalosť do svojho kalendára", | ||
| "no_options_available": "Žiadne možnosti nie sú k dispozícii", | ||
| "cancellation_reason": "Dôvod zrušenia (nepovinné)", | ||
| "cancelled_by": "Zrušené používateľom", |
There was a problem hiding this comment.
Missing interpolation placeholder
The English key cancelled_by expects a dynamic value, e.g. Cancelled by {{user}}.
The Slovak translation currently drops the {{user}} placeholder ("Zrušené používateľom"), so the UI will lose the cancelling user’s name.
- "cancelled_by": "Zrušené používateľom",
+ "cancelled_by": "Zrušil používateľ {{user}}",Make sure the placeholder is preserved.
📝 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.
| "cancelled_by": "Zrušené používateľom", | |
| "cancelled_by": "Zrušil používateľ {{user}}", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/sk-SK/common.json at line 80, the translation
for the key "cancelled_by" is missing the interpolation placeholder {{user}}
that is present in the English version. To fix this, update the Slovak
translation to include the {{user}} placeholder, for example "Zrušené
používateľom {{user}}", so the cancelling user's name is correctly displayed in
the UI.
| "events_rescheduled": "Pomereni događaji", | ||
| "events": "Događaji", | ||
| "performance": "Performanse", | ||
| "from_last_period": "iz prošlog perioda", |
There was a problem hiding this comment.
Duplicate JSON key ‒ the second "events" will overwrite the first
A key with the same name already exists earlier in the file ("events": "Događaji" around line 147).
JSON parsers keep only the last occurrence, so every runtime/ build that reads this bundle will silently drop the first translation entry.
- "events": "Događaji",
+ // TODO: decide which translation you want to keep and delete the other,
+ // or rename this key if it was meant to be differentCommittable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/sr/common.json around lines 2178 to 2181,
there is a duplicate JSON key "events" which overwrites the earlier entry around
line 147. To fix this, remove or rename the duplicate "events" key in this
section to ensure each key is unique and no translations are silently dropped
during runtime or build.
| "file_size_limit_exceed": "Veličina fajla prelazi ograničenje", | ||
| "invalid_file_type": "Nevažeći tip fajla", | ||
| "invalid_file_type_extension": "Nevažeći tip fajla. Prihvaćeni tipovi: {{acceptedTypes}}", | ||
| "max_files_exceeded": "Prekoračen maksimalan broj fajlova", | ||
| "files_uploaded_successfully": "Fajlovi uspešno otpremljeni", | ||
| "file_upload_instructions": "Prihvaćeni tipovi: {{acceptedTypes}}; Maksimalna veličina fajla: {{maxSize}}", |
There was a problem hiding this comment.
🛠️ Refactor suggestion
File-upload error strings miss consistency with validation layer
The new keys for upload errors ("invalid_file_type_extension", "file_size_limit_exceed", …) encode the error message, but the limits / accepted extensions are duplicated across translations and server-side validation.
If those limits ever change, messages will get out of sync. Prefer parameterised messages:
"file_size_limit_exceed": "Veličina fajla prelazi ograničenje od {{maxSize}} {{unit}}",
"invalid_file_type_extension": "Nevažeći tip fajla. Dozvoljeni: {{extensions}}"Then populate {{maxSize}} / {{extensions}} from the validation layer.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/sr/common.json around lines 3385 to 3390, the
error messages for file upload validation are hardcoded without parameters,
causing duplication and risk of inconsistency with the validation logic. Update
these messages to use parameterized placeholders like {{maxSize}}, {{unit}}, and
{{extensions}} instead of fixed values. Then ensure these placeholders are
dynamically populated from the validation layer to keep messages consistent with
actual limits and accepted file types.
Co-authored-by: Lingo.dev <support@lingo.dev>
Hey team,
Lingo.dev here with fresh translations!
In this update
Next Steps
Summary by cubic
Updated translations for multiple languages to add missing keys, improve accuracy, and ensure consistent brand voice across the app.