Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
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. |
WalkthroughAdded and updated localization keys across many apps/web/public/static/locales//common.json files. New public UI keys include get_started, hide_advanced_settings, saved_filters, translate_description_button_description, interface_language_description, always_show_x_days_description, guests_field_must_be_multiemail, and connect_now_unavailable_tooltip. PBAC surface expanded with pbac_resource_availability, pbac_resource_out_of_office and pbac_desc_create_/view_/update_/delete_ for availability and out_of_office. Several existing keys were reworded or renamed (e.g., set_to_default, translate_description_button, allow_booker_to_select_duration → allow_multiple_durations). All changes are localization/text-only. Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests
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 |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (27)
apps/web/public/static/locales/vi/common.json (1)
2205-2205: Polish VN phrasing and quote UI labels consistentlySuggest quoting the field label and using “là kiểu” for clarity/consistency with other validation strings.
- "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu 'Nhiều email'", + "guests_field_must_be_multiemail": "Trường \"Khách\" phải là kiểu \"Nhiều email\""apps/web/public/static/locales/es-419/common.json (1)
2205-2205: Standardize label quoting and casing in validation messageUse double quotes for UI labels and treat field/type names as labels. Verified: key present in all common.json locale files and JSON parses.
File: apps/web/public/static/locales/es-419/common.json (line 2205)
- "guests_field_must_be_multiemail": "El campo de invitados debe ser del tipo 'Múltiples correos electrónicos'", + "guests_field_must_be_multiemail": "El campo \"Invitados\" debe ser de tipo \"Correo electrónico múltiple\"",apps/web/public/static/locales/pl/common.json (1)
2205-2205: Polish quotes and UI label casing for consistencyUse Polish quotes and quote the field label to match existing patterns (e.g., “Pole „username”…”). Suggested copy:
- Pole „Goście” musi być typu „Wiele adresów e‑mail”.
Apply this diff:
- "guests_field_must_be_multiemail": "Pole gości musi być typu 'Wiele adresów e-mail'", + "guests_field_must_be_multiemail": "Pole „Goście” musi być typu „Wiele adresów e‑mail”",apps/web/public/static/locales/ja/common.json (1)
2205-2205: Prefer “メールアドレス” and align with existing “フィールドタイプ” phrasing.Current reads a bit unnatural and inconsistent with nearby strings (e.g., フィールドタイプ/入力形式). Suggest:
- "guests_field_must_be_multiemail": "ゲストフィールドは「複数のメール」タイプである必要があります", + "guests_field_must_be_multiemail": "ゲストフィールドは「複数のメールアドレス」フィールドタイプである必要があります",apps/web/public/static/locales/da/common.json (1)
2205-2205: Use the literal field type label and quote the field name.The UI label appears to be “Multi email” (not translated). Suggest making the message precise and consistent with product copy: refer to the “Gæster” field by name and keep the type token as-is.
- "guests_field_must_be_multiemail": "Feltet for gæster skal være af typen 'Flere e-mails'", + "guests_field_must_be_multiemail": "Feltet 'Gæster' skal være af typen 'Multi email'",apps/web/public/static/locales/fi/common.json (1)
2205-2205: Polish Finnish phrasing and quote UI labels consistently.Replace in apps/web/public/static/locales/fi/common.json (line 2205):
- "guests_field_must_be_multiemail": "Vieraskentän on oltava tyyppiä 'Useita sähköposteja'", + "guests_field_must_be_multiemail": "\"Vieraat\"-kentän on oltava tyypiltään \"Useita sähköposteja\"",apps/web/public/static/locales/de/common.json (1)
2205-2205: Polish terminology for consistency with existing copy (“E‑Mail‑Adresse”).Prefer “E‑Mail‑Adressen” and reference the labeled field “Gäste” explicitly.
- "guests_field_must_be_multiemail": "Das Gästefeld muss vom Typ 'Mehrere E-Mails' sein", + "guests_field_must_be_multiemail": "Das Feld 'Gäste' muss vom Typ 'Mehrere E-Mail-Adressen' sein",apps/web/public/static/locales/bg/common.json (1)
2205-2205: Quote UI labels consistently; use the field’s localized name.Elsewhere in BG strings, UI labels are quoted with escaped double quotes. Recommend: quote “Гости” and “Множество имейли,” and refer to the field by its label, not a description.
- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето \"Гости\" трябва да бъде от тип \"Множество имейли\"",apps/web/public/static/locales/eu/common.json (1)
2205-2205: Optional: prefer "Email helbide" over "Helbide elektroniko" in eu localeVerified key present in all locales (All locales OK).
File: apps/web/public/static/locales/eu/common.json — suggested change:
- "guests_field_must_be_multiemail": "Gonbidatuen eremuak 'Helbide elektroniko anitzak' motakoa izan behar du", + "guests_field_must_be_multiemail": "Gonbidatuen eremuak 'Email helbide anitzak' motakoa izan behar du",apps/web/public/static/locales/ca/common.json (1)
2205-2205: Minor CAT tweak: prefer “de tipus” and use double quotes for UI labelFor consistency with other strings, suggest “de tipus” (vs “del tipus”) and quoting the UI label with double quotes.
Apply this diff:
- "guests_field_must_be_multiemail": "El camp de convidats ha de ser del tipus 'Múltiples correus electrònics'", + "guests_field_must_be_multiemail": "El camp de convidats ha de ser de tipus \"Múltiples correus electrònics\"",apps/web/public/static/locales/it/common.json (1)
2205-2205: Polish copy: capitalization, quote style, and terminal period for consistencyAdjust to match surrounding strings (capitalize field label, prefer double quotes for UI terms, end with a period).
Please confirm the exact Italian label used in the UI for the Multi email field type; if it’s a fixed English label (“Multi email”), keep it as is inside quotes.
- "guests_field_must_be_multiemail": "Il campo ospiti deve essere di tipo 'Email multiple'", + "guests_field_must_be_multiemail": "Il campo \"Ospiti\" deve essere di tipo \"Email multiple\"."apps/web/public/static/locales/sr/common.json (1)
2205-2205: Serbian copy/terminology consistency: prefer quoted field label and “email” without hyphen.Align with existing sr strings that use “Email”/“email” (not “e‑mail”) and quote the localized field label for clarity.
Apply this diff:
- "guests_field_must_be_multiemail": "Polje za goste mora biti tipa 'Više e-mail adresa'", + "guests_field_must_be_multiemail": "Polje „Gosti“ mora biti tipa „Više email adresa“",apps/web/public/static/locales/zh-TW/common.json (1)
2205-2205: Use 賓客 for consistency in zh-TW "guests" strings.Most "guests_" keys in apps/web/public/static/locales/zh-TW/common.json use "賓客"; change the entry at line 2205 to match.
- "guests_field_must_be_multiemail": "來賓欄位必須是「多個電子郵件」類型", + "guests_field_must_be_multiemail": "賓客欄位必須是「多個電子郵件」類型",apps/web/public/static/locales/tr/common.json (1)
2205-2205: Use locale-consistent term — change "Misafirler" to "Davetliler" in TRAligns with existing "guests" key at line 292.
- "guests_field_must_be_multiemail": "Misafirler alanı 'Birden fazla e-posta' türünde olmalıdır", + "guests_field_must_be_multiemail": "Davetliler alanı 'Birden fazla e-posta' türünde olmalıdır",apps/web/public/static/locales/el/common.json (1)
2205-2205: Align terminology with existing locale (“Επισκέπτες”) and quote field label.Consistent with "guests": "Επισκέπτες" elsewhere and clearer UX to reference the exact field label.
Apply this diff:
- "guests_field_must_be_multiemail": "Το πεδίο καλεσμένων πρέπει να είναι τύπου 'Πολλαπλά emails'", + "guests_field_must_be_multiemail": "Το πεδίο \"Επισκέπτες\" πρέπει να είναι τύπου \"Πολλαπλά emails\"",apps/web/public/static/locales/pt-BR/common.json (1)
2205-2205: Use double quotes for quoted UI text; align "guests" terminology
- Replace the single quotes with escaped double quotes. Apply:
- "guests_field_must_be_multiemail": "O campo de convidados deve ser do tipo 'Múltiplos e-mails'", + "guests_field_must_be_multiemail": "O campo de convidados deve ser do tipo \"Múltiplos e-mails\"",
- Minor: this entry uses "convidados" while the "guests" key maps to "Participantes" in apps/web/public/static/locales/pt-BR/common.json — prefer "Participantes" for consistency (optional).
apps/web/public/static/locales/ru/common.json (1)
2205-2205: Polish RU copy and quoting for consistency.Suggest quoting the field label, using «» quotes, and aligning with existing “email-адреса” phrasing. Also “должно иметь тип” reads more naturally than “должно быть типа”.
-"guests_field_must_be_multiemail": "Поле гостей должно быть типа 'Несколько адресов электронной почты'", +"guests_field_must_be_multiemail": "Поле «Гости» должно иметь тип «Несколько email-адресов»",Note: RU locale uses both «Гости» and «Участники» elsewhere. If the field label in the UI is «Участники», consider:
-"guests_field_must_be_multiemail": "Поле «Гости» должно иметь тип «Несколько email-адресов»", +"guests_field_must_be_multiemail": "Поле «Участники» должно иметь тип «Несколько email-адресов»",Please confirm which label is correct for this context.
apps/web/public/static/locales/sv/common.json (1)
2205-2205: Switch to escaped double quotes and reference the field label for consistency.Most strings quote UI labels/types with escaped double quotes. Suggest aligning to: Fältet "Gäster" … "Flera e‑postadresser".
Apply this diff:
- "guests_field_must_be_multiemail": "Fältet för gäster måste vara av typen 'Flera e-postadresser'", + "guests_field_must_be_multiemail": "Fältet \"Gäster\" måste vara av typen \"Flera e-postadresser\"",Please confirm the Swedish UI uses “Flera e-postadresser” as the type label so this matches what users see.
apps/web/public/static/locales/hu/common.json (1)
2205-2205: LGTM; consider minor microcopy tweak for clarity/consistency.To match how UI labels are quoted elsewhere and to make the referenced field/type explicit, prefer quoting both labels and using Hungarian quotes for the type.
Apply this diff:
- "guests_field_must_be_multiemail": "A vendégek mezőnek 'Több e-mail cím' típusúnak kell lennie", + "guests_field_must_be_multiemail": "A 'Vendégek' mezőnek „Több e‑mail cím” típusúnak kell lennie",apps/web/public/static/locales/zh-CN/common.json (1)
2205-2205: Use “访客” for “Guests” in zh-CN (not “嘉宾”)File: apps/web/public/static/locales/zh-CN/common.json (line 2205) — 访客: 23 occurrences; 嘉宾: 7 occurrences. Align this key for consistency.
- "guests_field_must_be_multiemail": "嘉宾字段必须是“多个邮箱”类型", + "guests_field_must_be_multiemail": "访客字段必须为“多个邮箱”类型",apps/web/public/static/locales/fr/common.json (1)
2205-2205: Polish the string for FR style and term consistency.Prefer French guillemets and our usual “e‑mail” hyphenation; also refer to the field by its label name “Invités”.
If the field type name is a fixed product term in English, keep “Multi email” inside quotes; otherwise the localized type should be “E‑mails multiples”. Suggested localized version:
- "guests_field_must_be_multiemail": "Le champ des invités doit être de type 'Emails multiples'", + "guests_field_must_be_multiemail": "Le champ « Invités » doit être de type « E-mails multiples »",Please confirm whether the UI surfaces the type as a localized label or the exact English term.
apps/web/public/static/locales/cs/common.json (1)
2205-2205: Use Czech field label 'Hosté' in the messageFound "guests" = "Hosté" and the type label "Více e-mailů" in apps/web/public/static/locales/cs/common.json — update the string to reference the field label.
- "guests_field_must_be_multiemail": "Pole pro hosty musí být typu 'Více e-mailů'", + "guests_field_must_be_multiemail": "Pole 'Hosté' musí být typu 'Více e-mailů'",apps/web/public/static/locales/az/common.json (1)
2205-2205: Verify whether "Multi email" is a literal field type or localized label; also prefer double quotes for quoted labels.If "Multi email" is the exact type name in the UI, keep it untranslated and quoted; otherwise keep the AZ translation but switch to double quotes for consistency with other quoted labels.
Suggested quote tweak (safe either way):
- "guests_field_must_be_multiemail": "Qonaqlar sahəsi 'Çoxsaylı e-poçtlar' tipində olmalıdır", + "guests_field_must_be_multiemail": "Qonaqlar sahəsi \"Çoxsaylı e-poçtlar\" tipində olmalıdır",apps/web/public/static/locales/pt/common.json (1)
2205-2205: PT wording/consistency: prefer “e‑mails” and capitalize field label.To align with prevailing usage in this file and PT-PT conventions, consider “e‑mails” (with hyphen) and capitalizing the field name as a UI label.
Please also confirm the UI field-type label is localized as “Múltiplos e‑mails” elsewhere so the quoted term exactly matches what users see.
- "guests_field_must_be_multiemail": "O campo de convidados deve ser do tipo 'Múltiplos emails'", + "guests_field_must_be_multiemail": "O campo Convidados deve ser do tipo 'Múltiplos e-mails'",apps/web/public/static/locales/he/common.json (1)
2205-2205: Quote the field name in Hebrew and keep the localized type labelapps/web/public/static/locales/he/common.json:2205
Most locales localize the "Multiple emails" type — update the Hebrew string to quote the field name while retaining the Hebrew type label.
- "guests_field_must_be_multiemail": "שדה האורחים חייב להיות מסוג 'מספר כתובות אימייל'", + "guests_field_must_be_multiemail": "השדה 'אורחים' חייב להיות מסוג 'מספר כתובות אימייל'",apps/web/public/static/locales/uk/common.json (1)
2205-2205: Use guillemets and reference the localized field label for consistency with UA style elsewhere in this file.Many strings here quote field labels/types with «…». Suggest aligning this one.
- "guests_field_must_be_multiemail": "Поле гостей має бути типу 'Кілька електронних адрес'", + "guests_field_must_be_multiemail": "Поле «Гості» має бути типу «Кілька електронних адрес»",apps/web/public/static/locales/ro/common.json (1)
2205-2205: Romanian phrasing/terminology: use the existing label “Vizitatori” and quote the field nameElsewhere “guests” is translated as “Vizitatori” (e.g., Line 292 “guests”: “Vizitatori”). For consistency and clarity, quote the field label like other entries (e.g., “Câmpul „username”…” at Line 857).
- "guests_field_must_be_multiemail": "Câmpul invitați trebuie să fie de tipul „Mai multe adrese de e-mail”", + "guests_field_must_be_multiemail": "Câmpul „Vizitatori” trebuie să fie de tipul „Mai multe adrese de e‑mail”",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(1 hunks)apps/web/public/static/locales/az/common.json(1 hunks)apps/web/public/static/locales/bg/common.json(1 hunks)apps/web/public/static/locales/bn/common.json(1 hunks)apps/web/public/static/locales/ca/common.json(1 hunks)apps/web/public/static/locales/cs/common.json(1 hunks)apps/web/public/static/locales/da/common.json(1 hunks)apps/web/public/static/locales/de/common.json(1 hunks)apps/web/public/static/locales/el/common.json(1 hunks)apps/web/public/static/locales/es-419/common.json(1 hunks)apps/web/public/static/locales/es/common.json(1 hunks)apps/web/public/static/locales/et/common.json(1 hunks)apps/web/public/static/locales/eu/common.json(1 hunks)apps/web/public/static/locales/fi/common.json(1 hunks)apps/web/public/static/locales/fr/common.json(1 hunks)apps/web/public/static/locales/he/common.json(1 hunks)apps/web/public/static/locales/hu/common.json(1 hunks)apps/web/public/static/locales/it/common.json(1 hunks)apps/web/public/static/locales/ja/common.json(1 hunks)apps/web/public/static/locales/km/common.json(1 hunks)apps/web/public/static/locales/ko/common.json(1 hunks)apps/web/public/static/locales/nl/common.json(1 hunks)apps/web/public/static/locales/no/common.json(1 hunks)apps/web/public/static/locales/pl/common.json(1 hunks)apps/web/public/static/locales/pt-BR/common.json(1 hunks)apps/web/public/static/locales/pt/common.json(1 hunks)apps/web/public/static/locales/ro/common.json(1 hunks)apps/web/public/static/locales/ru/common.json(1 hunks)apps/web/public/static/locales/sk-SK/common.json(1 hunks)apps/web/public/static/locales/sr/common.json(1 hunks)apps/web/public/static/locales/sv/common.json(1 hunks)apps/web/public/static/locales/tr/common.json(1 hunks)apps/web/public/static/locales/uk/common.json(1 hunks)apps/web/public/static/locales/vi/common.json(1 hunks)apps/web/public/static/locales/zh-CN/common.json(1 hunks)apps/web/public/static/locales/zh-TW/common.json(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Detect changes
🔇 Additional comments (9)
apps/web/public/static/locales/es/common.json (1)
2205-2205: Use escaped double quotes for UI labels in es/common.jsonFile: apps/web/public/static/locales/es/common.json (line ~2205). JSON parses and the key exists across locales; verification script failed to confirm Spanish quoting due to a sed parsing error. Apply this diff:
- "guests_field_must_be_multiemail": "El campo de invitados debe ser del tipo 'Múltiples correos electrónicos'", + "guests_field_must_be_multiemail": "El campo de invitados debe ser del tipo \"Múltiples correos electrónicos\"",apps/web/public/static/locales/bn/common.json (1)
2205-2205: Bengali phrasing & glossary consistency — use "ইমেল" and "প্রকার"Rationale: bn locales use "ইমেল" more often (130 vs 33 occurrences).
File: apps/web/public/static/locales/bn/common.json
- "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'একাধিক ইমেইল' ধরনের হওয়া", + "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটির প্রকার অবশ্যই 'একাধিক ইমেল' হতে হবে",Verify whether the UI exposes the field-type label untranslated (e.g., "Multi email"); if it does, keep that token in English inside quotes, otherwise apply the translation above.
apps/web/public/static/locales/no/common.json (1)
2205-2205: Do not change only the Norwegian file to the English token "Multi email" — keep translations consistent.Verification shows every apps/web/public/static/locales/*/common.json currently translates the field type (none contain "Multi email"); replacing only no/common.json would be inconsistent — either keep the translated string or update all locales/i18n source and coordinate with translators.
Likely an incorrect or invalid review comment.
apps/web/public/static/locales/ko/common.json (1)
2205-2205: Approve — field-type label is consistent. EN source uses 'Multiple emails' and KO uses '다중 이메일' (apps/web/public/static/locales/ko/common.json:2205); no change required.apps/web/public/static/locales/sk-SK/common.json (2)
2205-2205: LGTM: key added with valid JSON and clear Slovak phrasing.
2205-2205: Minor: align field‑type label and quotes with UI conventions.
Use consistent double quotes for the field-type label; either keep the UI label verbatim in English ("Multi email") or localize — pick one of the options below and verify across locales/JSON.Option A (keep UI label in English):
- "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu 'Viacero e-mailov'", + "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu \"Multi email\"",Option B (localized label with consistent quotes):
- "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu 'Viacero e-mailov'", + "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu \"Viacero e-mailov\"",Re-run verification (previous run errored) with this corrected script:
#!/bin/bash set -euo pipefail root="apps/web/public/static/locales" fd -t f common.json "$root" | while IFS= read -r f; do jq -e 'has("guests_field_must_be_multiemail") and (.guests_field_must_be_multiemail|type=="string" and length>0)' "$f" >/dev/null 2>&1 || echo "Missing or empty: $f" doneapps/web/public/static/locales/km/common.json (1)
2205-2205: Keep single quotes — match repository conventionMost locales (including apps/web/public/static/locales/en/common.json) use single quotes for this key; changing to double quotes would be inconsistent.
Likely an incorrect or invalid review comment.
apps/web/public/static/locales/az/common.json (1)
2205-2205: Verify 'guests_field_must_be_multiemail' exists in all locale common.json files
- en/common.json — present: "Guests field must be of type 'Multiple emails'"
- apps/web/public/static/locales/az/common.json — present: "Qonaqlar sahəsi 'Çoxsaylı e-poçtlar' tipində olmalıdır"
- Automated scan aborted with "/dev/fd/... No such file or directory"; remaining locales were not verified — run the command below to complete the check.
#!/bin/bash set -euo pipefail KEY='guests_field_must_be_multiemail' ROOT='apps/web/public/static/locales' echo "[en] $KEY value:" if [ -f "$ROOT/en/common.json" ]; then jq -r --arg k "$KEY" '.[$k] // "<missing>"' "$ROOT/en/common.json" || echo "<error reading en>" else echo "Missing $ROOT/en/common.json" fi echo "[az] $KEY value:" if [ -f "$ROOT/az/common.json" ]; then jq -r --arg k "$KEY" '.[$k] // "<missing>"' "$ROOT/az/common.json" || echo "<error reading az>" else echo "Missing $ROOT/az/common.json" fi echo "Scanning all locale common.json files for JSON validity and key presence..." find "$ROOT" -type f -name 'common.json' -print0 | while IFS= read -r -d '' f; do if ! jq -e . "$f" >/dev/null 2>&1; then echo "INVALID JSON: $f" continue fi if jq -e --arg k "$KEY" 'has($k)' "$f" >/dev/null 2>&1; then echo "OK: $f" else echo "MISSING: $f" fi doneapps/web/public/static/locales/nl/common.json (1)
2205-2205: Polish Dutch phrasing for "Guests" fieldUse "Gasten" for consistency with other translations.
File: apps/web/public/static/locales/nl/common.json
Apply this diff:
- "guests_field_must_be_multiemail": "Gastveld moet van het type 'Meerdere e-mails' zijn", + "guests_field_must_be_multiemail": "Het veld 'Gasten' moet van het type 'Meerdere e-mails' zijn",Validated: nl JSON parses; key present in en/common.json (line 2205) and in 37 locale files.
ac787a5 to
2a13276
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
apps/web/public/static/locales/es-419/common.json (1)
2205-2205: Minor copy tweak for clarity and label consistencyPrefer referencing the field label explicitly and using escaped double quotes (matching other strings like display_add_to_calendar_organizer). Suggest:
-"guests_field_must_be_multiemail": "El campo de invitados debe ser del tipo 'Múltiples correos electrónicos'", +"guests_field_must_be_multiemail": "El campo \"Invitados\" debe ser de tipo \"Múltiples correos electrónicos\"",Please also verify this phrasing aligns with how the field type is named in Spanish across the UI.
apps/web/public/static/locales/ko/common.json (1)
2205-2205: Optional: consider “멀티 이메일” for term consistencyWe use “멀티라인 텍스트” elsewhere; aligning “Multi email” → “멀티 이메일” may improve consistency.
-"guests_field_must_be_multiemail": "게스트 필드는 '다중 이메일' 유형이어야 합니다", +"guests_field_must_be_multiemail": "게스트 필드는 '멀티 이메일' 유형이어야 합니다",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(1 hunks)apps/web/public/static/locales/az/common.json(1 hunks)apps/web/public/static/locales/bg/common.json(1 hunks)apps/web/public/static/locales/bn/common.json(1 hunks)apps/web/public/static/locales/ca/common.json(1 hunks)apps/web/public/static/locales/cs/common.json(1 hunks)apps/web/public/static/locales/da/common.json(1 hunks)apps/web/public/static/locales/de/common.json(1 hunks)apps/web/public/static/locales/el/common.json(1 hunks)apps/web/public/static/locales/es-419/common.json(1 hunks)apps/web/public/static/locales/es/common.json(1 hunks)apps/web/public/static/locales/et/common.json(1 hunks)apps/web/public/static/locales/eu/common.json(1 hunks)apps/web/public/static/locales/fi/common.json(1 hunks)apps/web/public/static/locales/fr/common.json(1 hunks)apps/web/public/static/locales/he/common.json(1 hunks)apps/web/public/static/locales/hu/common.json(1 hunks)apps/web/public/static/locales/it/common.json(1 hunks)apps/web/public/static/locales/ja/common.json(1 hunks)apps/web/public/static/locales/km/common.json(1 hunks)apps/web/public/static/locales/ko/common.json(1 hunks)apps/web/public/static/locales/nl/common.json(1 hunks)apps/web/public/static/locales/no/common.json(1 hunks)apps/web/public/static/locales/pl/common.json(1 hunks)apps/web/public/static/locales/pt-BR/common.json(1 hunks)apps/web/public/static/locales/pt/common.json(1 hunks)apps/web/public/static/locales/ro/common.json(1 hunks)apps/web/public/static/locales/ru/common.json(1 hunks)apps/web/public/static/locales/sk-SK/common.json(1 hunks)apps/web/public/static/locales/sr/common.json(1 hunks)apps/web/public/static/locales/sv/common.json(1 hunks)apps/web/public/static/locales/tr/common.json(1 hunks)apps/web/public/static/locales/uk/common.json(1 hunks)apps/web/public/static/locales/vi/common.json(1 hunks)apps/web/public/static/locales/zh-CN/common.json(1 hunks)apps/web/public/static/locales/zh-TW/common.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (32)
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/tr/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/az/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/he/common.json
- apps/web/public/static/locales/vi/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/ru/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/no/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/de/common.json
- apps/web/public/static/locales/zh-CN/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
🔇 Additional comments (4)
apps/web/public/static/locales/bg/common.json (1)
2205-2205: Don't force English "Multi email" in BG — field-type labels are localized.Search shows the type is translated across locales (EN: "Multiple emails"); keep the Bulgarian phrasing ("Полето за гости трябва да бъде от тип 'Множество имейли'") or align it to an existing BG type label (e.g., "Множество имейл адреси") for consistency.
Likely an incorrect or invalid review comment.
apps/web/public/static/locales/ko/common.json (2)
2205-2205: LGTM: natural, polite KR translationReads well and matches tone. Placement and punctuation consistent with neighbors.
2205-2205: Verified — translation key present & JSON valid; CLA still required
- apps/web/public/static/locales/ko/common.json validated with jq; "guests_field_must_be_multiemail" is present in apps/web/public/static/locales/en/common.json and across all locale common.json files (line 2205).
- Gate merge until CLA shows signed.
apps/web/public/static/locales/nl/common.json (1)
2205-2205: Apply NL microcopy: change "Gastveld" → "Gastenveld" (keep 'Meerdere e‑mails').EN/locales show "Guests field" and the field-type "Multiple emails" is localized across locales, so translating the type as "Meerdere e‑mails" is correct.
File: apps/web/public/static/locales/nl/common.json (around line 2205)
- "guests_field_must_be_multiemail": "Gastveld moet van het type 'Meerdere e-mails' zijn", + "guests_field_must_be_multiemail": "Gastenveld moet van het type 'Meerdere e-mails' zijn",
2a13276 to
667d5bb
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
apps/web/public/static/locales/vi/common.json (1)
2205-2205: Unify terminology: use “Khách” (not “khách mời”).Elsewhere in vi locale, “guests” translates to “Khách”. Suggest aligning for consistency.
Apply this diff:
- "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu 'Nhiều email'", + "guests_field_must_be_multiemail": "Trường Khách phải có kiểu 'Nhiều email'",apps/web/public/static/locales/cs/common.json (1)
2205-2205: Optional: clarify the field label by quoting it.Slight copy tweak to match how other field labels are quoted in this locale.
- "guests_field_must_be_multiemail": "Pole pro hosty musí být typu 'Více e-mailů'", + "guests_field_must_be_multiemail": "Pole 'Hosté' musí být typu 'Více e-mailů'",apps/web/public/static/locales/zh-CN/common.json (2)
2205-2205: Fix zh-CN phrasing and term consistency (“访客” vs “嘉宾”).Use “访客” to match existing keys and prefer concise type label “多邮箱”.
If the UI does not localize the field-type label, keep the quoted English “Multi email”.
-"guests_field_must_be_multiemail": "嘉宾字段必须是“多个邮箱”类型", +"guests_field_must_be_multiemail": "访客字段必须为“多邮箱”类型",
1-1: Process gate: CLA not signed — block merge.The CLA check shows “not_signed”. Please have the committer link the commit email to a GitHub account and sign the CLA, then re-run the check.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(1 hunks)apps/web/public/static/locales/az/common.json(1 hunks)apps/web/public/static/locales/bg/common.json(1 hunks)apps/web/public/static/locales/bn/common.json(1 hunks)apps/web/public/static/locales/ca/common.json(1 hunks)apps/web/public/static/locales/cs/common.json(1 hunks)apps/web/public/static/locales/da/common.json(1 hunks)apps/web/public/static/locales/de/common.json(1 hunks)apps/web/public/static/locales/el/common.json(1 hunks)apps/web/public/static/locales/es-419/common.json(1 hunks)apps/web/public/static/locales/es/common.json(1 hunks)apps/web/public/static/locales/et/common.json(1 hunks)apps/web/public/static/locales/eu/common.json(1 hunks)apps/web/public/static/locales/fi/common.json(1 hunks)apps/web/public/static/locales/fr/common.json(1 hunks)apps/web/public/static/locales/he/common.json(1 hunks)apps/web/public/static/locales/hu/common.json(1 hunks)apps/web/public/static/locales/it/common.json(1 hunks)apps/web/public/static/locales/ja/common.json(1 hunks)apps/web/public/static/locales/km/common.json(1 hunks)apps/web/public/static/locales/ko/common.json(1 hunks)apps/web/public/static/locales/nl/common.json(1 hunks)apps/web/public/static/locales/no/common.json(1 hunks)apps/web/public/static/locales/pl/common.json(1 hunks)apps/web/public/static/locales/pt-BR/common.json(1 hunks)apps/web/public/static/locales/pt/common.json(1 hunks)apps/web/public/static/locales/ro/common.json(1 hunks)apps/web/public/static/locales/ru/common.json(1 hunks)apps/web/public/static/locales/sk-SK/common.json(1 hunks)apps/web/public/static/locales/sr/common.json(1 hunks)apps/web/public/static/locales/sv/common.json(1 hunks)apps/web/public/static/locales/tr/common.json(1 hunks)apps/web/public/static/locales/uk/common.json(1 hunks)apps/web/public/static/locales/vi/common.json(1 hunks)apps/web/public/static/locales/zh-CN/common.json(1 hunks)apps/web/public/static/locales/zh-TW/common.json(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/web/public/static/locales/sk-SK/common.json
🚧 Files skipped from review as they are similar to previous changes (31)
- apps/web/public/static/locales/no/common.json
- apps/web/public/static/locales/az/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/ru/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/he/common.json
- apps/web/public/static/locales/tr/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/bg/common.json
- apps/web/public/static/locales/de/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/zh-TW/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
🔇 Additional comments (3)
apps/web/public/static/locales/vi/common.json (1)
2205-2205: Verify cross‑locale presence and EN source.Confirm this key exists in en/common.json and in all locale common.json files (past runs showed gaps in hr, id, iw, lv, sk, ta, th).
Run:
#!/bin/bash set -euo pipefail base="apps/web/public/static/locales" key='"guests_field_must_be_multiemail"' # Show missing locales for this key fd -a -t f common.json "$base" | sort | while read -r f; do if grep -Fq "$key" "$f"; then printf "FOUND: %s\n" "$f" else printf "MISSING: %s\n" "$f" fi done echo echo "EN check:" grep -nF "$key" "$base/en/common.json" || echo "EN: key missing"apps/web/public/static/locales/cs/common.json (1)
2205-2205: LGTM — key present and JSON valid across locales. Checked 44 common.json files; missing count: 0. All good ✅apps/web/public/static/locales/es/common.json (1)
2205-2205: Don't change only es to the English product term "Multi email".All locales currently use a localized translation for guests_field_must_be_multiemail (apps/web/public/static/locales/*/common.json); changing only apps/web/public/static/locales/es/common.json to "Multi email" would create an inconsistent UX. Either keep "Múltiples correos electrónicos" (also update es-419 to match if needed) or, if "Multi email" is an approved product term, coordinate with i18n and update all locale files.
Likely an incorrect or invalid review comment.
667d5bb to
2f706e1
Compare
2f706e1 to
aad0261
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
apps/web/public/static/locales/ru/common.json (1)
2205-2205: Refine phrasing and quotes for RU style consistency.Use guillemets and reference the field label explicitly for clarity and consistency with existing strings.
Apply this diff:
- "guests_field_must_be_multiemail": "Поле гостей должно быть типа \"Несколько адресов электронной почты\"", + "guests_field_must_be_multiemail": "Поле «Гости» должно иметь тип «Несколько адресов электронной почты»",apps/web/public/static/locales/es-419/common.json (1)
2205-2205: Microcopy tweak for clarity and consistency with UI labels.Consider quoting the field label and using a more natural phrasing. Suggestion:
- "guests_field_must_be_multiemail": "El campo de invitados debe ser del tipo 'Múltiples correos electrónicos'", + "guests_field_must_be_multiemail": "El campo 'Invitados' debe ser de tipo 'Correos electrónicos múltiples'"apps/web/public/static/locales/de/common.json (1)
2205-2205: Minor copy tweak for clarity and consistency with field labelSuggest explicitly quoting the field name and keeping hyphenation consistent:
- "guests_field_must_be_multiemail": "Das Gästefeld muss vom Typ 'Mehrere E-Mails' sein", + "guests_field_must_be_multiemail": "Das Feld 'Gäste' muss vom Typ 'Mehrere E-Mails' sein",Also, please verify that the German label for the field type exactly matches what's shown in the UI (e.g., 'Mehrere E-Mails' vs. 'Mehrere E-Mail-Adressen') to avoid mismatch.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(1 hunks)apps/web/public/static/locales/az/common.json(1 hunks)apps/web/public/static/locales/bg/common.json(1 hunks)apps/web/public/static/locales/bn/common.json(1 hunks)apps/web/public/static/locales/ca/common.json(1 hunks)apps/web/public/static/locales/cs/common.json(1 hunks)apps/web/public/static/locales/da/common.json(1 hunks)apps/web/public/static/locales/de/common.json(1 hunks)apps/web/public/static/locales/el/common.json(1 hunks)apps/web/public/static/locales/es-419/common.json(1 hunks)apps/web/public/static/locales/es/common.json(1 hunks)apps/web/public/static/locales/et/common.json(1 hunks)apps/web/public/static/locales/eu/common.json(1 hunks)apps/web/public/static/locales/fi/common.json(1 hunks)apps/web/public/static/locales/fr/common.json(1 hunks)apps/web/public/static/locales/he/common.json(1 hunks)apps/web/public/static/locales/hu/common.json(1 hunks)apps/web/public/static/locales/it/common.json(1 hunks)apps/web/public/static/locales/ja/common.json(1 hunks)apps/web/public/static/locales/km/common.json(1 hunks)apps/web/public/static/locales/ko/common.json(1 hunks)apps/web/public/static/locales/nl/common.json(1 hunks)apps/web/public/static/locales/no/common.json(1 hunks)apps/web/public/static/locales/pl/common.json(1 hunks)apps/web/public/static/locales/pt-BR/common.json(1 hunks)apps/web/public/static/locales/pt/common.json(1 hunks)apps/web/public/static/locales/ro/common.json(1 hunks)apps/web/public/static/locales/ru/common.json(1 hunks)apps/web/public/static/locales/sk-SK/common.json(1 hunks)apps/web/public/static/locales/sr/common.json(1 hunks)apps/web/public/static/locales/sv/common.json(1 hunks)apps/web/public/static/locales/tr/common.json(1 hunks)apps/web/public/static/locales/uk/common.json(1 hunks)apps/web/public/static/locales/vi/common.json(1 hunks)apps/web/public/static/locales/zh-CN/common.json(1 hunks)apps/web/public/static/locales/zh-TW/common.json(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/web/public/static/locales/tr/common.json
🚧 Files skipped from review as they are similar to previous changes (31)
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/bg/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/az/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/vi/common.json
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/zh-CN/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/no/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/he/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
🔇 Additional comments (2)
apps/web/public/static/locales/km/common.json (1)
2205-2205: LGTM — keep translated term (not a UI-invariant). Locale search shows every locale (including en) translates the phrase rather than preserving the literal "Multi email"; leave km/common.json as-is.apps/web/public/static/locales/es-419/common.json (1)
2205-2205: Confirm cross‑locale presence and align Spanish UI label
- Found "guests_field_must_be_multiemail" in en/common.json and in many locales including apps/web/public/static/locales/es/common.json and es-419/common.json (≈line 2205).
- Automated missing-locales check errored and UI-label search didn't complete — verify the Spanish UI label for the "Multi email" input is "Múltiples correos electrónicos" and update the translation if it differs.
aad0261 to
32dc101
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
apps/web/public/static/locales/da/common.json (1)
2205-2205: Use quoted field label 'Gæster' in the Danish translation.Reference the field label explicitly for clarity and consistency with other locales.
- "guests_field_must_be_multiemail": "Feltet for gæster skal være af typen 'Flere e-mails'", + "guests_field_must_be_multiemail": "Feltet 'Gæster' skal være af typen 'Flere e-mails'",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(1 hunks)apps/web/public/static/locales/az/common.json(1 hunks)apps/web/public/static/locales/bg/common.json(1 hunks)apps/web/public/static/locales/bn/common.json(1 hunks)apps/web/public/static/locales/ca/common.json(1 hunks)apps/web/public/static/locales/cs/common.json(1 hunks)apps/web/public/static/locales/da/common.json(1 hunks)apps/web/public/static/locales/de/common.json(1 hunks)apps/web/public/static/locales/el/common.json(1 hunks)apps/web/public/static/locales/es-419/common.json(1 hunks)apps/web/public/static/locales/es/common.json(1 hunks)apps/web/public/static/locales/et/common.json(1 hunks)apps/web/public/static/locales/eu/common.json(1 hunks)apps/web/public/static/locales/fi/common.json(1 hunks)apps/web/public/static/locales/fr/common.json(1 hunks)apps/web/public/static/locales/he/common.json(1 hunks)apps/web/public/static/locales/hu/common.json(1 hunks)apps/web/public/static/locales/it/common.json(1 hunks)apps/web/public/static/locales/ja/common.json(1 hunks)apps/web/public/static/locales/km/common.json(1 hunks)apps/web/public/static/locales/ko/common.json(1 hunks)apps/web/public/static/locales/nl/common.json(1 hunks)apps/web/public/static/locales/no/common.json(1 hunks)apps/web/public/static/locales/pl/common.json(1 hunks)apps/web/public/static/locales/pt-BR/common.json(1 hunks)apps/web/public/static/locales/pt/common.json(1 hunks)apps/web/public/static/locales/ro/common.json(1 hunks)apps/web/public/static/locales/ru/common.json(1 hunks)apps/web/public/static/locales/sk-SK/common.json(1 hunks)apps/web/public/static/locales/sr/common.json(1 hunks)apps/web/public/static/locales/sv/common.json(1 hunks)apps/web/public/static/locales/tr/common.json(1 hunks)apps/web/public/static/locales/uk/common.json(1 hunks)apps/web/public/static/locales/vi/common.json(1 hunks)apps/web/public/static/locales/zh-CN/common.json(1 hunks)apps/web/public/static/locales/zh-TW/common.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (35)
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/vi/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/he/common.json
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/zh-CN/common.json
- apps/web/public/static/locales/no/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/de/common.json
- apps/web/public/static/locales/az/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/bg/common.json
- apps/web/public/static/locales/ru/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/tr/common.json
- apps/web/public/static/locales/pt/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
32dc101 to
e9a67d8
Compare
e9a67d8 to
2caf4b2
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(1 hunks)apps/web/public/static/locales/az/common.json(1 hunks)apps/web/public/static/locales/bg/common.json(1 hunks)apps/web/public/static/locales/bn/common.json(1 hunks)apps/web/public/static/locales/ca/common.json(1 hunks)apps/web/public/static/locales/cs/common.json(1 hunks)apps/web/public/static/locales/da/common.json(1 hunks)apps/web/public/static/locales/de/common.json(1 hunks)apps/web/public/static/locales/el/common.json(1 hunks)apps/web/public/static/locales/es-419/common.json(1 hunks)apps/web/public/static/locales/es/common.json(1 hunks)apps/web/public/static/locales/et/common.json(1 hunks)apps/web/public/static/locales/eu/common.json(1 hunks)apps/web/public/static/locales/fi/common.json(1 hunks)apps/web/public/static/locales/fr/common.json(1 hunks)apps/web/public/static/locales/he/common.json(1 hunks)apps/web/public/static/locales/hu/common.json(1 hunks)apps/web/public/static/locales/it/common.json(1 hunks)apps/web/public/static/locales/ja/common.json(1 hunks)apps/web/public/static/locales/km/common.json(1 hunks)apps/web/public/static/locales/ko/common.json(1 hunks)apps/web/public/static/locales/nl/common.json(1 hunks)apps/web/public/static/locales/no/common.json(1 hunks)apps/web/public/static/locales/pl/common.json(1 hunks)apps/web/public/static/locales/pt-BR/common.json(1 hunks)apps/web/public/static/locales/pt/common.json(1 hunks)apps/web/public/static/locales/ro/common.json(1 hunks)apps/web/public/static/locales/ru/common.json(1 hunks)apps/web/public/static/locales/sk-SK/common.json(1 hunks)apps/web/public/static/locales/sr/common.json(1 hunks)apps/web/public/static/locales/sv/common.json(1 hunks)apps/web/public/static/locales/tr/common.json(1 hunks)apps/web/public/static/locales/uk/common.json(1 hunks)apps/web/public/static/locales/vi/common.json(1 hunks)apps/web/public/static/locales/zh-CN/common.json(1 hunks)apps/web/public/static/locales/zh-TW/common.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (34)
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/bg/common.json
- apps/web/public/static/locales/de/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/no/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/tr/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/vi/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/ru/common.json
- apps/web/public/static/locales/ro/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/zh-CN/common.json
- apps/web/public/static/locales/az/common.json
- apps/web/public/static/locales/he/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/sk-SK/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
🔇 Additional comments (1)
apps/web/public/static/locales/sv/common.json (1)
2205-2205: Approve — keep localized Swedish label and single‑quote styleEnglish canonical label is "Multiple emails" (apps/web/public/static/locales/en/common.json); most locales translate that label and use single quotes — sv's "Flera e‑postadresser" in single quotes is consistent, no change required.
There was a problem hiding this comment.
Actionable comments posted: 8
🧹 Nitpick comments (31)
apps/web/public/static/locales/et/common.json (1)
324-324: CTA tone: prefer singular imperative for buttons.Use “Alusta” to match other CTAs like “Logi sisse/ välja” and keep voice consistent.
- "get_started": "Alustage", + "get_started": "Alusta",apps/web/public/static/locales/he/common.json (4)
1024-1024: Match wording style with “הצגת…”Use the gerund form for UI toggle symmetry.
- "hide_advanced_settings": "הסתר הגדרות מתקדמות", + "hide_advanced_settings": "הסתרת הגדרות מתקדמות",
3150-3152: Avoid imperative; prefer noun‑phrase and pluralize for accuracy.Keeps tone consistent across locale and mirrors the description.
- "translate_description_button": "תרגום אוטומטי של כותרת ותיאור", - "translate_description_button_description": "תרגם אוטומטית כותרות ותיאורים לשפת הדפדפן של המבקר באמצעות בינה מלאכותית.", + "translate_description_button": "תרגום אוטומטי של כותרות ותיאורים", + "translate_description_button_description": "תרגום כותרות ותיאורים באופן אוטומטי לשפת הדפדפן של המבקר באמצעות בינה מלאכותית.",
3348-3348: Make phrasing gender‑neutral.Removes “עליך” to avoid gendered language.
- "interface_language_description": "הגדר את השפה המועדפת עליך לממשק ההזמנות", + "interface_language_description": "הגדרת שפת ממשק ההזמנות המועדפת",
2928-2928: Hebrew style polish (maqaf, clarity).Improves flow; uses maqaf (־) and avoids colloquial “הלוח”.
- "always_show_x_days_description": "מזיז אוטומטית את חלון ההזמנות ל-{{x}} ימים קדימה בכל יום, ומבטיח שהלוח שלך תמיד מציג את {{x}} הימים הבאים של משבצות זמן זמינות.", + "always_show_x_days_description": "מעביר אוטומטית את חלון ההזמנות ל־{{x}} הימים הקרובים מדי יום, כדי להבטיח שתמיד יוצגו {{x}} הימים הבאים של משבצות זמן זמינות.",apps/web/public/static/locales/bn/common.json (1)
2694-2694: Terminology consistency: “সংস্থা” vs “সংগঠন”The file mixes both terms for “organization.” Prefer one term consistently (most strings use “সংস্থা”). Suggest aligning this label.
- "create_org": "সংগঠন তৈরি করুন", + "create_org": "সংস্থা তৈরি করুন",apps/web/public/static/locales/bg/common.json (1)
3347-3347: Tiny grammar tweak (optional).
“език на интерфейса” reads a bit more natural.- "interface_language_description": "Задайте предпочитания от вас език за интерфейса за резервации", + "interface_language_description": "Задайте предпочитания от вас език на интерфейса за резервации",apps/web/public/static/locales/ro/common.json (2)
1334-1334: Optional: match tone used by other togglesMost toggles use singular imperative (“Permite”, “Afișează”).
- "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple",
2928-2928: Minor wording tweak for clarityPreposition “cu” reads a bit more naturally here.
- "always_show_x_days_description": "Mută automat fereastra de rezervare de {{x}} zile înainte în fiecare zi, asigurându-se că calendarul dumneavoastră arată mereu următoarele {{x}} zile cu intervale disponibile.", + "always_show_x_days_description": "Mută automat înainte cu {{x}} zile, în fiecare zi, fereastra de rezervare, astfel încât calendarul să arate mereu următoarele {{x}} zile cu intervale disponibile.",apps/web/public/static/locales/es/common.json (2)
324-324: Unificar con “Empezar”.En el archivo ya usamos “Empezar” para “getting_started”; sugiero alinear.
- "get_started": "Comenzar", + "get_started": "Empezar",
2208-2208: Ajustar wording y confirmar etiqueta real del tipo de campo.Propuesta más natural en ES y entrecomillado tipográfico; verifiquen el label exacto en la UI para evitar desajustes.
- "guests_field_must_be_multiemail": "El campo de invitados debe ser de tipo 'Múltiples correos electrónicos'", + "guests_field_must_be_multiemail": "El campo Invitados debe ser de tipo «Múltiples correos electrónicos».",¿El tipo aparece en la UI exactamente como “Múltiples correos electrónicos”? Si no, sincronizar con el label visible.
apps/web/public/static/locales/fi/common.json (2)
3151-3152: Button copy may be too long; consider shorteningFor a button, “Käännä automaattisesti” or “Käännä otsikko ja kuvaus” is crisper. Keep the longer text in the description as-is.
3347-3348: Minor copy tweak for fluencySuggest “Valitse varausliittymän kieli” or “Aseta käyttöliittymän kieli” (current: “Aseta varausliittymän haluamasi kieli”).
apps/web/public/static/locales/da/common.json (4)
2207-2208: Minor phrasing improvement for clarityConsider explicitly referencing the UI field name.
- "guests_field_must_be_multiemail": "Gæstefeltet skal være af typen 'Flere e-mails'", + "guests_field_must_be_multiemail": "Feltet 'Gæster' skal være af typen 'Flere e-mails'",
3150-3152: Optional grammar tweakButton label is fine. For the description, a singular genitive reads more naturally in Danish.
- "translate_description_button_description": "Oversæt automatisk titler og beskrivelser til besøgendes browsersprog ved hjælp af AI.", + "translate_description_button_description": "Oversæt automatisk titler og beskrivelser til den besøgendes browsersprog ved hjælp af AI.",
3347-3348: Optional wording polish“bookinggrænsefladen” is okay; if you prefer simpler phrasing consistent with “bookingside,” consider:
- "interface_language_description": "Indstil dit foretrukne sprog for bookinggrænsefladen", + "interface_language_description": "Indstil dit foretrukne sprog for bookingsiden",
1-5: Operational: CLA not signed will block mergeCLAassistant reports not_signed for PR #23991. Ensure the commit author maps to a GitHub user and signs the CLA, then trigger a recheck to unblock merge.
apps/web/public/static/locales/sr/common.json (2)
3150-3151: Minor wording/term tweak for consistency (“pregledač”, genitive)Elsewhere we use “pregledač” (not “pretraživač”) and genitive “posetioca”.
- "translate_description_button": "Automatski prevedi naslov i opis", - "translate_description_button_description": "Automatski prevedi naslove i opise na jezik posetiočevog pretraživača koristeći veštačku inteligenciju.", + "translate_description_button": "Automatski prevedi naslov i opis", + "translate_description_button_description": "Automatski prevedi naslove i opise na jezik pregledača posetioca uz pomoć veštačke inteligencije.",
3347-3347: Optional: slightly smoother phrasingGenitive reads more naturally.
- "interface_language_description": "Postavite željeni jezik za interfejs za rezervacije", + "interface_language_description": "Postavite željeni jezik interfejsa za rezervacije",apps/web/public/static/locales/ko/common.json (2)
1334-1334: Terminology consistency with existing error strings다른 키에서 “복수 기간” 용어를 사용 중입니다(예: event_setup_multiple_duration_error). 아래처럼 맞추길 권장합니다.
- "allow_multiple_durations": "여러 기간 허용", + "allow_multiple_durations": "복수 기간 허용",
3519-3521: Align OOO resource term with existing “자리 비움”파일 내 OOO는 주로 “자리 비움”을 사용합니다(예: out_of_office, user_away 등). 리소스명도 일치시키는 편이 좋습니다.
"pbac_resource_availability": "가용성", - "pbac_resource_out_of_office": "부재중", + "pbac_resource_out_of_office": "자리 비움",추가로, 상단의
"availability": "유효성"은 전반의 “가용성” 용례와 상이하니 후속 작업으로 정리 권장합니다.apps/web/public/static/locales/az/common.json (1)
2928-2928: Minor style polish for readabilityHyphen after a variable is awkward; also prefer “vaxtlarını” over “slotlarını”.
- "always_show_x_days_description": "Avtomatik olaraq {{x}}-günlük rezervasiya pəncərəsini hər gün irəli aparır, təqviminizin həmişə növbəti {{x}} günün mövcud slotlarını göstərməsini təmin edir.", + "always_show_x_days_description": "Avtomatik olaraq {{x}} günlük rezervasiya pəncərəsini hər gün irəli aparır və təqviminizin həmişə növbəti {{x}} günün mövcud vaxtlarını göstərməsini təmin edir.",apps/web/public/static/locales/fr/common.json (2)
2928-2929: French style tweak for clarity (optional).Smoother phrasing; avoids repetition and reads more idiomatically.
- "always_show_x_days_description": "Déplace automatiquement la fenêtre de réservation de {{x}} jours chaque jour, garantissant que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.", + "always_show_x_days_description": "Décale automatiquement chaque jour une fenêtre de {{x}} jours, de sorte que votre calendrier affiche en permanence les {{x}} prochains jours de créneaux disponibles.",
1-1: Meta: CLA bot is blocking mergeCLA Assistant shows “not_signed” for this PR. Ensure the contributor’s commits map to a GitHub user who signs the CLA before merge (then trigger a recheck).
apps/web/public/static/locales/it/common.json (2)
3150-3152: Prefer "Traduci automaticamente" over "Auto traduci".
More idiomatic Italian and consistent with the description line.Apply this diff:
- "translate_description_button": "Auto traduci titolo e descrizione", + "translate_description_button": "Traduci automaticamente titolo e descrizione",
3520-3532: Align OOO resource/verbs with existing IT wording ("Assenza/Assenze").
Elsewhere the product uses “Assenza/Fuori ufficio” semantics; “Fuori sede” and verb forms like “Crea fuori sede” sound off. Suggest consistent “Assenza/Assenze”.Apply this diff:
- "pbac_resource_availability": "Disponibilità", - "pbac_resource_out_of_office": "Fuori sede", + "pbac_resource_availability": "Disponibilità", + "pbac_resource_out_of_office": "Assenze", @@ - "pbac_desc_create_availability": "Crea disponibilità", - "pbac_desc_view_availability": "Visualizza disponibilità", - "pbac_desc_update_availability": "Aggiorna disponibilità", - "pbac_desc_delete_availability": "Elimina disponibilità", + "pbac_desc_create_availability": "Crea disponibilità", + "pbac_desc_view_availability": "Visualizza disponibilità", + "pbac_desc_update_availability": "Aggiorna disponibilità", + "pbac_desc_delete_availability": "Elimina disponibilità", @@ - "pbac_desc_create_out_of_office": "Crea fuori sede", - "pbac_desc_view_out_of_office": "Visualizza fuori sede", - "pbac_desc_update_out_of_office": "Aggiorna fuori sede", - "pbac_desc_delete_out_of_office": "Elimina fuori sede", + "pbac_desc_create_out_of_office": "Crea assenza", + "pbac_desc_view_out_of_office": "Visualizza assenze", + "pbac_desc_update_out_of_office": "Aggiorna assenza", + "pbac_desc_delete_out_of_office": "Elimina assenza",apps/web/public/static/locales/de/common.json (3)
324-324: CTA wording alignment (optional).Consider matching existing CTA tone (“Los geht's”) or use “Jetzt loslegen” for button brevity.
- "get_started": "Loslegen", + "get_started": "Jetzt loslegen",
2208-2208: Polish phrasing and quotes.Minor copy tweak + German quotation marks for the field type label.
- "guests_field_must_be_multiemail": "Das Gästefeld muss vom Typ 'Mehrere E-Mails' sein", + "guests_field_must_be_multiemail": "Das Gästefeld muss den Typ „Mehrere E-Mails“ haben",
3151-3152: Minor style tweak (“mithilfe von KI”).Button text is fine. For the description, “mithilfe von KI” reads more idiomatic.
- "translate_description_button_description": "Titel und Beschreibungen automatisch in die Browsersprache des Besuchers mittels KI übersetzen.", + "translate_description_button_description": "Titel und Beschreibungen automatisch in die Browsersprache des Besuchers mithilfe von KI übersetzen.",apps/web/public/static/locales/vi/common.json (2)
2928-2928: Minor copy tightening.Phrase is a bit repetitive. Suggest a smoother wording.
- "always_show_x_days_description": "Tự động di chuyển cửa sổ đặt lịch {{x}} ngày mỗi ngày, đảm bảo lịch của bạn luôn hiển thị {{x}} ngày tiếp theo có các khung giờ trống.", + "always_show_x_days_description": "Tự động dịch chuyển cửa sổ đặt lịch mỗi ngày để luôn hiển thị {{x}} ngày tiếp theo có khung giờ trống.",
2694-2694: Optional: capitalization consistency.“create_org” uses sentence case (“Tạo tổ chức”) while “create_your_org” (Line 2694‑2696 context) uses capped “Tổ chức”. Consider standardizing to sentence case across related strings.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(10 hunks)apps/web/public/static/locales/az/common.json(12 hunks)apps/web/public/static/locales/bg/common.json(11 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(9 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(10 hunks)apps/web/public/static/locales/eu/common.json(11 hunks)apps/web/public/static/locales/fi/common.json(9 hunks)apps/web/public/static/locales/fr/common.json(9 hunks)apps/web/public/static/locales/he/common.json(10 hunks)apps/web/public/static/locales/hu/common.json(10 hunks)apps/web/public/static/locales/it/common.json(12 hunks)apps/web/public/static/locales/ja/common.json(9 hunks)apps/web/public/static/locales/km/common.json(10 hunks)apps/web/public/static/locales/ko/common.json(9 hunks)apps/web/public/static/locales/nl/common.json(12 hunks)apps/web/public/static/locales/no/common.json(12 hunks)apps/web/public/static/locales/pl/common.json(12 hunks)apps/web/public/static/locales/pt-BR/common.json(11 hunks)apps/web/public/static/locales/pt/common.json(12 hunks)apps/web/public/static/locales/ro/common.json(12 hunks)apps/web/public/static/locales/ru/common.json(10 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(12 hunks)apps/web/public/static/locales/uk/common.json(10 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 as they are similar to previous changes (6)
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/zh-TW/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/zh-CN/common.json
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
Learnt from: Udit-takkar
PR: calcom/cal.com#23761
File: packages/features/shell/navigation/Navigation.tsx:125-130
Timestamp: 2025-09-12T14:46:29.720Z
Learning: In calcom/cal.com, translations for other locales are added later in the development process, so don't flag missing translation keys in non-English locale files when only the English locale has been updated.
📚 Learning: 2025-09-12T14:46:29.720Z
Learnt from: Udit-takkar
PR: calcom/cal.com#23761
File: packages/features/shell/navigation/Navigation.tsx:125-130
Timestamp: 2025-09-12T14:46:29.720Z
Learning: In calcom/cal.com, translations for other locales are added later in the development process, so don't flag missing translation keys in non-English locale files when only the English locale has been updated.
Applied to files:
apps/web/public/static/locales/ca/common.json
| "pbac_resource_availability": "الأوقات المتاحة", | ||
| "pbac_resource_out_of_office": "خارج المكتب", | ||
| "pbac_desc_create_webhooks": "إنشاء ويب هوكس", | ||
| "pbac_desc_view_webhooks": "عرض ويب هوكس", | ||
| "pbac_desc_update_webhooks": "تحديث الويب هوك", | ||
| "pbac_desc_delete_webhooks": "حذف الويب هوك", | ||
| "pbac_desc_create_availability": "إنشاء وقت متاح", | ||
| "pbac_desc_view_availability": "عرض الأوقات المتاحة", | ||
| "pbac_desc_update_availability": "تحديث الأوقات المتاحة", | ||
| "pbac_desc_delete_availability": "حذف الأوقات المتاحة", | ||
| "pbac_desc_create_out_of_office": "إنشاء حالة خارج المكتب", | ||
| "pbac_desc_view_out_of_office": "عرض حالة خارج المكتب", | ||
| "pbac_desc_update_out_of_office": "تحديث حالة خارج المكتب", | ||
| "pbac_desc_delete_out_of_office": "حذف حالة خارج المكتب", |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
🧩 Analysis chain
Consistency: pluralize “availability” action description to match others.
Other availability actions use plural “الأوقات”. Make “create” plural too.
Apply:
-"pbac_desc_create_availability": "إنشاء وقت متاح",
+"pbac_desc_create_availability": "إنشاء أوقات متاحة",Confirm no other locales diverge on singular/plural for this PBAC string to keep cross‑locale consistency. Based on learnings
🏁 Script executed:
#!/bin/bash
echo "=== pbac_desc_create_availability in all locales ==="
rg -n '"pbac_desc_create_availability":' -g 'apps/web/public/static/locales/*/common.json'
echo -e "\n=== All availability action keys in all locales ==="
rg -n '"pbac_desc_(create|view|update|delete)_availability":' -g 'apps/web/public/static/locales/*/common.json'Length of output: 20220
Pluralize Arabic “create availability” translation
Update apps/web/public/static/locales/ar/common.json to match the plural form used by the other availability actions in Arabic:
-"pbac_desc_create_availability": "إنشاء وقت متاح",
+"pbac_desc_create_availability": "إنشاء الأوقات المتاحة",📝 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.
| "pbac_resource_availability": "الأوقات المتاحة", | |
| "pbac_resource_out_of_office": "خارج المكتب", | |
| "pbac_desc_create_webhooks": "إنشاء ويب هوكس", | |
| "pbac_desc_view_webhooks": "عرض ويب هوكس", | |
| "pbac_desc_update_webhooks": "تحديث الويب هوك", | |
| "pbac_desc_delete_webhooks": "حذف الويب هوك", | |
| "pbac_desc_create_availability": "إنشاء وقت متاح", | |
| "pbac_desc_view_availability": "عرض الأوقات المتاحة", | |
| "pbac_desc_update_availability": "تحديث الأوقات المتاحة", | |
| "pbac_desc_delete_availability": "حذف الأوقات المتاحة", | |
| "pbac_desc_create_out_of_office": "إنشاء حالة خارج المكتب", | |
| "pbac_desc_view_out_of_office": "عرض حالة خارج المكتب", | |
| "pbac_desc_update_out_of_office": "تحديث حالة خارج المكتب", | |
| "pbac_desc_delete_out_of_office": "حذف حالة خارج المكتب", | |
| "pbac_resource_availability": "الأوقات المتاحة", | |
| "pbac_resource_out_of_office": "خارج المكتب", | |
| "pbac_desc_create_webhooks": "إنشاء ويب هوكس", | |
| "pbac_desc_view_webhooks": "عرض ويب هوكس", | |
| "pbac_desc_update_webhooks": "تحديث الويب هوك", | |
| "pbac_desc_delete_webhooks": "حذف الويب هوك", | |
| "pbac_desc_create_availability": "إنشاء الأوقات المتاحة", | |
| "pbac_desc_view_availability": "عرض الأوقات المتاحة", | |
| "pbac_desc_update_availability": "تحديث الأوقات المتاحة", | |
| "pbac_desc_delete_availability": "حذف الأوقات المتاحة", | |
| "pbac_desc_create_out_of_office": "إنشاء حالة خارج المكتب", | |
| "pbac_desc_view_out_of_office": "عرض حالة خارج المكتب", | |
| "pbac_desc_update_out_of_office": "تحديث حالة خارج المكتب", | |
| "pbac_desc_delete_out_of_office": "حذف حالة خارج المكتب", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ar/common.json around lines 3519 to 3532, the
translation for "pbac_desc_create_availability" uses the singular "إنشاء وقت
متاح" while the other availability actions use the plural form; change its value
to the plural form (e.g., "إنشاء الأوقات المتاحة") to match the rest and keep
consistency across availability-related keys.
| "attendees": "Participanții", | ||
| "add_attendees": "Adăugați participanți", | ||
| "show_advanced_settings": "Afișează setările avansate", | ||
| "hide_advanced_settings": "Ascundeți setările avansate", |
There was a problem hiding this comment.
Align imperative style with “Afișează setările avansate”
Use singular imperative to mirror the paired toggle.
- "hide_advanced_settings": "Ascundeți setările avansate",
+ "hide_advanced_settings": "Ascunde setările avansate",📝 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.
| "hide_advanced_settings": "Ascundeți setările avansate", | |
| "hide_advanced_settings": "Ascunde setările avansate", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ro/common.json around line 1023, the
translation "Ascundeți setările avansate" uses a plural/formal imperative;
change it to the singular imperative form to match the paired toggle style by
replacing the value with "Ascunde setarea avansată".
438afed to
fca290e
Compare
There was a problem hiding this comment.
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 (1)
apps/web/public/static/locales/pt-BR/common.json (1)
962-971: Restore established “time” terminologyPT-BR strings consistently use “time” for “team” across the UI, and this spot reverted to “equipe”, breaking that convention. Please switch back to “Criar time” to stay in sync with the rest of the locale.
- "create_team": "Criar equipe", + "create_team": "Criar time",
🧹 Nitpick comments (41)
apps/web/public/static/locales/et/common.json (4)
324-324: Tone: use singular CTA “Alusta” for consistency with UI style.
“Alustage” sounds formal/plural; CTAs elsewhere use singular.- "get_started": "Alustage", + "get_started": "Alusta",
324-324: Do not merge until CLA is signed.
CLAassistant marks this PR as not_signed; please gate merge on CLA completion.
1236-1236: Differentiate “set_to_default” vs “set_as_default”.
“Määra vaikimisi” duplicates meaning of “set_as_default”. Prefer “Taasta vaikeväärtus” to indicate reset.- "set_to_default": "Määra vaikimisi", + "set_to_default": "Taasta vaikeväärtus",
3348-3348: Optional: slightly smoother phrasing.
“Valige … keel” sounds a bit more natural for a setting label.- "interface_language_description": "Määrake broneerimisliidese eelistatud keel", + "interface_language_description": "Valige broneerimisliidese eelistatud keel",apps/web/public/static/locales/ro/common.json (3)
2928-2928: Polish phrasing for clarity and voice consistency.Smoother Romanian and consistent second‑person tone.
- "always_show_x_days_description": "Mută automat fereastra de rezervare de {{x}} zile înainte în fiecare zi, asigurându-se că calendarul dumneavoastră arată mereu următoarele {{x}} zile cu intervale disponibile.", + "always_show_x_days_description": "Mută zilnic înainte fereastra de rezervare de {{x}} zile, astfel încât calendarul să afișeze întotdeauna următoarele {{x}} zile cu intervale disponibile.",
3150-3151: Align with common singular imperative tone (“Tradu automat …”).Keeps copy concise and consistent.
- "translate_description_button": "Traduceți automat titlul și descrierea", - "translate_description_button_description": "Traduceți automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", + "translate_description_button": "Tradu automat titlul și descrierea", + "translate_description_button_description": "Tradu automat titlurile și descrierile în limba browserului vizitatorului, folosind AI.",
1334-1334: Optional: align imperative tone (“Permite durate multiple”).If standardizing on singular imperative across settings:
- "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple",apps/web/public/static/locales/da/common.json (1)
3150-3152: Optional copy tweak for button toneCurrent is fine. Consider slightly more natural phrasing for the button: “Oversæt automatisk titel og beskrivelse”.
- "translate_description_button": "Autooversæt titel og beskrivelse", + "translate_description_button": "Oversæt automatisk titel og beskrivelse",apps/web/public/static/locales/ru/common.json (2)
1-1: CLA not signed — merge will be blockedThis PR is from an automation account. Please ensure the CLA is signed by a GitHub user associated with the commits, or reattribute commits accordingly before merge.
1334-1334: More natural RU phrasing for multiple durations“Несколько длительностей” is awkward; prefer “несколько вариантов длительности”.
- "allow_multiple_durations": "Разрешить несколько длительностей", + "allow_multiple_durations": "Разрешить несколько вариантов длительности",apps/web/public/static/locales/sv/common.json (2)
324-324: Process note: CLA will block merge if not resolvedCLAassistant reports “not_signed” for this PR. Ensure the committer account signs the CLA or links the commit email to a GitHub user, then recheck.
3150-3151: Optional: match number/casing between label and descriptionButton uses singular (“titel och beskrivning”), description uses plural (“titlar och beskrivningar”). Consider aligning both to plural for consistency, or keep as-is if following UI brevity rules.
- "translate_description_button": "Översätt titel och beskrivning automatiskt", + "translate_description_button": "Översätt titlar och beskrivningar automatiskt",apps/web/public/static/locales/bn/common.json (3)
2207-2207: Consistency: “ইমেল” vs “ইমেইল”File mostly uses “ইমেল”. Align this key for consistency.
- "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'একাধিক ইমেইল' ধরনের হতে হবে", + "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'একাধিক ইমেল' ধরনের হতে হবে",
324-324: Process note: CLA check is blocking mergeCLAassistant marks this PR as not_signed for the contributor identity. Ensure commits are authored by a GitHub account that can sign the CLA, then recheck.
2294-2294: Use “সংস্থা” instead of “সংগঠন” for “organization”
Inbn/common.json, “সংস্থা” appears 110 times vs. “সংগঠন” 40 times—replace “সংগঠন” here to match the prevailing term.apps/web/public/static/locales/hu/common.json (3)
324-324: Use formal imperative for consistency (“Ön” register).Change “Kezdjük el” to “Kezdje el”.
- "get_started": "Kezdjük el", + "get_started": "Kezdje el",
3519-3532: PBAC additions look good; optional label tweak.Consider “Irodán kívüli állapot” for the resource label to mirror the description keys, e.g.,
pbac_resource_out_of_office: “Irodán kívüli állapot”.
3581-3581: Minor consistency tweak (optional).“Megbeszélés kezdési időpontja” matches other “... időpontja” strings.
- "meeting_start_time": "Megbeszélés kezdési ideje", + "meeting_start_time": "Megbeszélés kezdési időpontja",apps/web/public/static/locales/uk/common.json (1)
1236-1236: Unify verb choice with existing key “set_as_default”Elsewhere you use «Установити …» (e.g., Line 2071). Pick one form project‑wide; suggest matching existing.
- "set_to_default": "Встановити за замовчуванням", + "set_to_default": "Установити за замовчуванням",apps/web/public/static/locales/sk-SK/common.json (1)
324-3347: Heads‑up: CLA assistant shows “not_signed” for this PR.Merging will likely be blocked until the contributor signs the CLA or rechecks with the correct GitHub account/email.
apps/web/public/static/locales/ja/common.json (3)
2928-2928: Smoother phrasing for availability window (optional).- "always_show_x_days_description": "予約ウィンドウを毎日自動的に{{x}}日分前進させ、カレンダーに常に次の{{x}}日間の利用可能な枠を表示します。", + "always_show_x_days_description": "予約ウィンドウを毎日自動で{{x}}日分先へ更新し、常に次の{{x}}日間の空き枠をカレンダーに表示します。",
3347-3347: Clarify wording (“表示言語”).- "interface_language_description": "予約インターフェースの希望言語を設定します", + "interface_language_description": "予約インターフェースの表示言語を設定します",
3519-3521: Resource label nuance for OOO.「不在」→「不在設定」の方が他キーと調子が揃います。
"pbac_resource_availability": "空き状況", - "pbac_resource_out_of_office": "不在", + "pbac_resource_out_of_office": "不在設定",apps/web/public/static/locales/fr/common.json (4)
2928-2929: Smoother French phrasing (optional).Slightly tighten the description; keep {{x}} intact.
- "always_show_x_days_description": "Déplace automatiquement la fenêtre de réservation de {{x}} jours chaque jour, garantissant que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.", + "always_show_x_days_description": "Fait avancer chaque jour la fenêtre de réservation de {{x}} jours afin d’afficher en permanence les {{x}} prochains jours de créneaux disponibles."
3150-3152: Minor wording polish for natural French.Prefer “à l’aide de l’IA” and keep sentence case consistent.
- "translate_description_button": "Traduire automatiquement le titre et la description", - "translate_description_button_description": "Traduire automatiquement les titres et descriptions dans la langue du navigateur du visiteur en utilisant l'IA.", + "translate_description_button": "Traduire automatiquement le titre et la description", + "translate_description_button_description": "Traduire automatiquement les titres et descriptions dans la langue du navigateur du visiteur à l’aide de l’IA."
3347-3348: Add trailing period for consistency (optional).Most description strings end with a period.
- "interface_language_description": "Définissez votre langue préférée pour l'interface de réservation", + "interface_language_description": "Définissez votre langue préférée pour l'interface de réservation."
1-1: Process note: CLA not signed.Before merging PR #23991 (created 2025-09-22), ensure the contributor’s CLA is signed or mapped to a valid GitHub user/email to satisfy the CLAassistant check.
apps/web/public/static/locales/de/common.json (4)
324-324: Button copy consistency with “Los geht’s”.Elsewhere “getting_started” is “Los geht's”. Consider aligning this CTA.
- "get_started": "Loslegen", + "get_started": "Los geht's",Please confirm the UI context; if this is a button label and you prefer verb-first CTAs, “Jetzt starten” is another concise option.
3519-3519: Pluralize PBAC resource labels to match others (Teams, Buchungen, Ereignistypen).- "pbac_resource_availability": "Verfügbarkeit", + "pbac_resource_availability": "Verfügbarkeiten", - "pbac_resource_out_of_office": "Abwesenheit", + "pbac_resource_out_of_office": "Abwesenheiten",Verify any UI that expects singular nouns for these two resources.
Also applies to: 3521-3521
2007-2007: Quotation style for UI type name.Use German quotation marks (or drop quotes) to match surrounding strings.
- "guests_field_must_be_multiemail": "Das Gästefeld muss vom Typ 'Mehrere E-Mails' sein", + "guests_field_must_be_multiemail": "Das Gästefeld muss vom Typ „Mehrere E‑Mails“ sein",Confirm “Mehrere E‑Mails” matches the exact UI option label in DE.
3150-3151: Auto-translate strings read well.Optional brevity: “… mit KI” instead of “mittels KI” if you prefer simpler phrasing.
apps/web/public/static/locales/vi/common.json (3)
2207-2207: Optional wording polish for field-type guidance.Slightly clearer and consistent with field labels.
- "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu 'Nhiều email'", + "guests_field_must_be_multiemail": "Trường \"Khách mời\" phải có kiểu \"Nhiều email\"",
3347-3347: Optional: minor clarity.Consider “Đặt ngôn ngữ ưa thích cho giao diện đặt lịch hẹn” for consistency with existing “đặt lịch hẹn” phrasing elsewhere. Safe to keep as-is.
- "interface_language_description": "Đặt ngôn ngữ ưa thích cho giao diện đặt lịch", + "interface_language_description": "Đặt ngôn ngữ ưa thích cho giao diện đặt lịch hẹn",
324-324: Procedural: CLA appears unsigned for this PR.Before merging bot-submitted translations, resolve CLA status for the contributor identity (Lingo.dev) per PR thread to avoid merge blocks.
apps/web/public/static/locales/ar/common.json (1)
2928-2928: Minor Arabic style tweak (optional).Avoid “للـ … أيام” duplication; prefer “للأيام {{x}} القادمة”.
-"always_show_x_days_description": "ينقل تلقائيًا نافذة الحجز لمدة {{x}} يومًا إلى الأمام كل يوم، مما يضمن أن تقويمك يعرض دائمًا الفترات المتاحة للـ {{x}} أيام القادمة.", +"always_show_x_days_description": "ينقل تلقائيًا نافذة الحجز لمدة {{x}} يومًا إلى الأمام كل يوم، مما يضمن أن تقويمك يعرض دائمًا الفترات المتاحة للأيام {{x}} القادمة.",apps/web/public/static/locales/bg/common.json (3)
2207-2207: Minor typography: quote the field type with Bulgarian quotes (or drop quotes).
Single quotes are valid but UI copy is cleaner with „…“.- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",
3347-3347: Grammar polish.
More natural phrasing:- "interface_language_description": "Задайте предпочитания от вас език за интерфейса за резервации", + "interface_language_description": "Задайте предпочитания език на интерфейса за резервации",
3519-3532: PBAC strings: JSON-safe quotes fixed.
Inner quotes are escaped, so JSON stays valid. Suggest using Bulgarian quotes „…“ for style parity with other locales (optional).- "pbac_desc_create_out_of_office": "Създаване на статус \"Извън офиса\"", + "pbac_desc_create_out_of_office": "Създаване на статус „Извън офиса“", - "pbac_desc_view_out_of_office": "Преглед на статус \"Извън офиса\"", + "pbac_desc_view_out_of_office": "Преглед на статус „Извън офиса“", - "pbac_desc_update_out_of_office": "Актуализиране на статус \"Извън офиса\"", + "pbac_desc_update_out_of_office": "Актуализиране на статус „Извън офиса“", - "pbac_desc_delete_out_of_office": "Изтриване на статус \"Извън офиса\"", + "pbac_desc_delete_out_of_office": "Изтриване на статус „Извън офиса“",apps/web/public/static/locales/az/common.json (2)
1-1: Heads‑up: CLA gateCLAassistant shows “not_signed”. Please ensure the contributor signs the CLA before merging.
3519-3528: Consistency: use imperative form to match other PBAC descriptorsOther PBAC strings use “... edin/baxın”. Update availability descriptions accordingly.
Apply this diff:
- "pbac_desc_create_availability": "Mövcudluq yaratmaq", - "pbac_desc_view_availability": "Mövcudluğu görmək", - "pbac_desc_update_availability": "Mövcudluğu yeniləmək", - "pbac_desc_delete_availability": "Mövcudluğu silmək", + "pbac_desc_create_availability": "Mövcudluq yaradın", + "pbac_desc_view_availability": "Mövcudluğa baxın", + "pbac_desc_update_availability": "Mövcudluğu yeniləyin", + "pbac_desc_delete_availability": "Mövcudluğu silin",Based on learnings
apps/web/public/static/locales/no/common.json (1)
1-1: Operational: CLA is not signed for PR #23991CLAassistant reports “not_signed” for this PR. The contributor (Lingo.dev bot) or associated GitHub user must sign the CLA before merging.
Action:
- Have the committer associate their email with a GitHub account and sign via the CLA link.
- Then click the “Recheck” link in the CLAassistant comment.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(10 hunks)apps/web/public/static/locales/az/common.json(12 hunks)apps/web/public/static/locales/bg/common.json(11 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(9 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(9 hunks)apps/web/public/static/locales/fr/common.json(9 hunks)apps/web/public/static/locales/he/common.json(10 hunks)apps/web/public/static/locales/hu/common.json(11 hunks)apps/web/public/static/locales/it/common.json(12 hunks)apps/web/public/static/locales/ja/common.json(9 hunks)apps/web/public/static/locales/km/common.json(10 hunks)apps/web/public/static/locales/ko/common.json(10 hunks)apps/web/public/static/locales/nl/common.json(12 hunks)apps/web/public/static/locales/no/common.json(12 hunks)apps/web/public/static/locales/pl/common.json(12 hunks)apps/web/public/static/locales/pt-BR/common.json(11 hunks)apps/web/public/static/locales/pt/common.json(12 hunks)apps/web/public/static/locales/ro/common.json(13 hunks)apps/web/public/static/locales/ru/common.json(10 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(12 hunks)apps/web/public/static/locales/uk/common.json(10 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 as they are similar to previous changes (2)
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/fi/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
fca290e to
58d7396
Compare
There was a problem hiding this comment.
Actionable comments posted: 9
🧹 Nitpick comments (15)
apps/web/public/static/locales/bg/common.json (5)
1236-1236: Disambiguate “set_to_default” vs “set_as_default”.Both keys currently read identically in BG, which can confuse users. Suggest distinct phrasings.
- "set_to_default": "Задаване по подразбиране", + "set_to_default": "Възстанови по подразбиране",And for the existing key below (to apply as well):
- "set_as_default": "Задаване по подразбиране", + "set_as_default": "Задай като по подразбиране"Also applies to: 2071-2071
2208-2208: Bulgarian quote marks for UI term.Use „…“ instead of ASCII single quotes for consistency and readability.
- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",
3151-3151: Terminology consistency for “AI”.Elsewhere BG uses “ИИ”. Consider aligning for consistency.
- "translate_description_button_description": "Автоматично превеждане на заглавия и описания на езика на браузъра на посетителя с помощта на изкуствен интелект.", + "translate_description_button_description": "Автоматично превеждане на заглавия и описания на езика на браузъра на посетителя чрез ИИ.",
3347-3347: Minor phrasing polish (optional).Slightly more natural BG: “на интерфейса за резервации”.
- "interface_language_description": "Задайте предпочитания от вас език за интерфейса за резервации", + "interface_language_description": "Задайте предпочитания от вас език на интерфейса за резервации",
3529-3532: Prefer Bulgarian quotes to avoid escapes.JSON is valid, but using „…“ improves readability and avoids backslashes in UI.
- "pbac_desc_create_out_of_office": "Създаване на статус \"Извън офиса\"", - "pbac_desc_view_out_of_office": "Преглед на статус \"Извън офиса\"", - "pbac_desc_update_out_of_office": "Актуализиране на статус \"Извън офиса\"", - "pbac_desc_delete_out_of_office": "Изтриване на статус \"Извън офиса\"", + "pbac_desc_create_out_of_office": "Създаване на статус „Извън офиса“", + "pbac_desc_view_out_of_office": "Преглед на статус „Извън офиса“", + "pbac_desc_update_out_of_office": "Актуализиране на статус „Извън офиса“", + "pbac_desc_delete_out_of_office": "Изтриване на статус „Извън офиса“",apps/web/public/static/locales/es/common.json (2)
3150-3151: Pulir el CTA de traducción automática“El auto traducir” suena forzado en español y la descripción pierde los artículos definidos, lo que se nota en pantalla. Propongo la forma infinitiva natural y mantener los artículos para que la frase fluya mejor.
- "translate_description_button": "Auto traducir título y descripción", - "translate_description_button_description": "Traduce automáticamente títulos y descripciones al idioma del navegador del visitante usando IA.", + "translate_description_button": "Traducir título y descripción automáticamente", + "translate_description_button_description": "Traduce automáticamente el título y la descripción al idioma del navegador del visitante usando IA.",
3525-3532: Descripciones PBAC: usar plural coherente con el resto del móduloEl resto de descripciones PBAC ya usa sustantivos plurales (“Crear entradas…”, “Gestionar registros…”) para evitar un tono telegráfico. Aquí volvemos a frases en singular. Sugiero volver al patrón plural para mantener consistencia y claridad.
- "pbac_desc_create_availability": "Crear disponibilidad", - "pbac_desc_view_availability": "Ver disponibilidad", - "pbac_desc_update_availability": "Actualizar disponibilidad", - "pbac_desc_delete_availability": "Eliminar disponibilidad", - "pbac_desc_create_out_of_office": "Crear fuera de la oficina", - "pbac_desc_view_out_of_office": "Ver fuera de la oficina", - "pbac_desc_update_out_of_office": "Actualizar fuera de la oficina", - "pbac_desc_delete_out_of_office": "Eliminar fuera de la oficina", + "pbac_desc_create_availability": "Crear entradas de disponibilidad", + "pbac_desc_view_availability": "Ver entradas de disponibilidad", + "pbac_desc_update_availability": "Actualizar entradas de disponibilidad", + "pbac_desc_delete_availability": "Eliminar entradas de disponibilidad", + "pbac_desc_create_out_of_office": "Crear entradas de fuera de la oficina", + "pbac_desc_view_out_of_office": "Ver entradas de fuera de la oficina", + "pbac_desc_update_out_of_office": "Actualizar entradas de fuera de la oficina", + "pbac_desc_delete_out_of_office": "Eliminar entradas de fuera de la oficina",apps/web/public/static/locales/az/common.json (2)
3347-3347: Optional: prefer “seçin” over “təyin edin” for selection UI.Slightly more natural in settings copy.
- "interface_language_description": "Rezervasiya interfeysi üçün üstünlük verdiyiniz dili təyin edin", + "interface_language_description": "Rezervasiya interfeysi üçün üstünlük verdiyiniz dili seçin",
3525-3528: Align PBAC availability descriptions with imperative style used elsewhere.Match patterns like “Webhook-lara baxın”.
- "pbac_desc_create_availability": "Mövcudluq yaratmaq", - "pbac_desc_view_availability": "Mövcudluğu görmək", - "pbac_desc_update_availability": "Mövcudluğu yeniləmək", - "pbac_desc_delete_availability": "Mövcudluğu silmək", + "pbac_desc_create_availability": "Mövcudluq yaradın", + "pbac_desc_view_availability": "Mövcudluğa baxın", + "pbac_desc_update_availability": "Mövcudluğu yeniləyin", + "pbac_desc_delete_availability": "Mövcudluğu silin",apps/web/public/static/locales/no/common.json (1)
1236-1237: Avoid duplicate phrasing with existing “set_as_default”Both keys render as “Sett som standard”. Consider differentiating this one to “Gjør til standard” for clarity.
- "set_to_default": "Sett som standard", + "set_to_default": "Gjør til standard",apps/web/public/static/locales/sv/common.json (1)
3347-3347: Scope check: does this affect all UI or only booking pages?If global UI, consider: “Ange ditt föredragna språk för gränssnittet”. If booking-only, current text is fine. Please confirm scope.
apps/web/public/static/locales/bn/common.json (2)
3150-3151: Polish: avoid mixed English; use fully Bengali phrasingReplace “auto” and “AI” with Bengali equivalents for consistency with the rest of bn locale.
- "translate_description_button": "শিরোনাম এবং বিবরণ auto অনুবাদ করুন", - "translate_description_button_description": "AI ব্যবহার করে দর্শকের ব্রাউজার ভাষায় শিরোনাম এবং বিবরণ স্বয়ংক্রিয়ভাবে অনুবাদ করুন।", + "translate_description_button": "শিরোনাম ও বর্ণনা স্বয়ংক্রিয়ভাবে অনুবাদ করুন", + "translate_description_button_description": "এআই ব্যবহার করে দর্শকের ব্রাউজার ভাষায় শিরোনাম ও বর্ণনা স্বয়ংক্রিয়ভাবে অনুবাদ করুন।"
3294-3294: Standardize translation for “organization”
Detected both “সংস্থা” and “সংগঠন” in common.json (e.g.,create_your_orgvscreate_org). Pick one term and align all related keys to ensure consistency.apps/web/public/static/locales/eu/common.json (2)
324-324: LGTM; key reads well. Also, don’t merge until CLA is signed.String is accurate. Please ensure CLA is signed before merging PR #23991.
3519-3521: Unify “pbac_resource_availability” translation to “Eskuragarritasuna”Match the existing
availabilityandedit_availabilityterms in common.json:-"pbac_resource_availability": "Erabilgarritasuna", +"pbac_resource_availability": "Eskuragarritasuna",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(10 hunks)apps/web/public/static/locales/az/common.json(12 hunks)apps/web/public/static/locales/bg/common.json(11 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(9 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(9 hunks)apps/web/public/static/locales/fr/common.json(9 hunks)apps/web/public/static/locales/he/common.json(10 hunks)apps/web/public/static/locales/hu/common.json(10 hunks)apps/web/public/static/locales/it/common.json(12 hunks)apps/web/public/static/locales/ja/common.json(9 hunks)apps/web/public/static/locales/km/common.json(11 hunks)apps/web/public/static/locales/ko/common.json(9 hunks)apps/web/public/static/locales/nl/common.json(12 hunks)apps/web/public/static/locales/no/common.json(12 hunks)apps/web/public/static/locales/pl/common.json(12 hunks)apps/web/public/static/locales/pt-BR/common.json(11 hunks)apps/web/public/static/locales/pt/common.json(12 hunks)apps/web/public/static/locales/ro/common.json(13 hunks)apps/web/public/static/locales/ru/common.json(10 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(12 hunks)apps/web/public/static/locales/uk/common.json(10 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 as they are similar to previous changes (3)
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/ro/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
🔇 Additional comments (129)
apps/web/public/static/locales/pl/common.json (2)
2207-2207: Restore Polish quoting and casing for field label.Tekst nadal używa angielskich apostrofów i małej litery w nazwie pola. Proszę wrócić do formatu z polskimi cudzysłowami i właściwą kapitalizacją:
Pole „Goście” musi być typu „Wiele adresów e-mail”.
3150-3151: Keep the CTA imperative.Etykieta przycisku wciąż jest rzeczownikiem. Dla spójności z innymi CTA i angielską wersją zmień na formę rozkazującą, np. „Przetłumacz tytuł i opis”.
apps/web/public/static/locales/et/common.json (1)
3580-3581: Correct the genitive case in “booking_creation_time”.“Broneerimise” is the illative; the UI needs the genitive “Broneeringu” to read naturally. Please adjust the noun case.
- "booking_creation_time": "Broneerimise loomise aeg", + "booking_creation_time": "Broneeringu loomise aeg",apps/web/public/static/locales/he/common.json (1)
2207-2208: Keep terminology consistent for “email”.בשאר קובצי העברית אנחנו משתמשים במונח “דוא״ל”, וכאן מופיע “אימייל”. כדי לשמור על קו אחיד ולמנוע בלבול לוקאליזציה, כדאי לחזור לטרמינולוגיה הרגילה. הצעה:
- "guests_field_must_be_multiemail": "שדה האורחים חייב להיות מסוג 'מספר אימיילים'", + "guests_field_must_be_multiemail": "שדה האורחים חייב להיות מסוג 'מספר כתובות דוא\"ל'",apps/web/public/static/locales/bg/common.json (3)
962-962: Confirm intended voice for “create_team”.If this is a button label, prefer the imperative “Създай екип”; if it’s a heading, current noun form is fine. Please confirm usage.
3150-3151: Verify wiring for new translate‑description keys.Ensure both keys exist in en/common.json and are referenced in the UI (t('…') or ). Otherwise they’ll never surface.
#!/bin/bash # Check EN/BG presence and UI usages set -e for key in translate_description_button translate_description_button_description; do echo "== EN =="; rg -nP "\"$key\"\\s*:" apps/web/public/static/locales/en/common.json -C1 echo "== BG =="; rg -nP "\"$key\"\\s*:" apps/web/public/static/locales/bg/common.json -C1 echo "== UI usages =="; rg -nP "t\\(\\s*['\"]${key}['\"]\\s*\\)|<Trans[^>]+i18nKey=['\"]${key}['\"]" apps/web -n -C2 || true done
1023-1023: Match the “show/hide” pair’s style.Use the same noun phrase as the “show” label. Recommend dropping the definite article.
- "hide_advanced_settings": "Скриване на разширените настройки", + "hide_advanced_settings": "Скриване на разширени настройки",apps/web/public/static/locales/ko/common.json (1)
3347-3348: Fix particle omission in interface-language descriptionThe phrase still misses the object particle and reads incomplete. Please update to “예약 인터페이스의 선호 언어를 설정” so the sentence scans naturally. This mirrors the prior feedback that hasn’t been addressed.
apps/web/public/static/locales/cs/common.json (3)
207-207: Match locale quoting style for UI type labelsThis locale usually quotes literal UI labels with escaped double quotes. Please switch to escaped double quotes here for consistency.
- "guests_field_must_be_multiemail": "Pole pro hosty musí být typu 'Více e-mailů'", + "guests_field_must_be_multiemail": "Pole pro hosty musí být typu \"Více e-mailů\"",
1334-1334: Align wording with existing duration terminologyElsewhere we refer to durations as “doby trvání”. Updating this key keeps the language consistent with the rest of the locale.
- "allow_multiple_durations": "Povolit více délek trvání", + "allow_multiple_durations": "Povolit více dob trvání",
3529-3532: Clarify out-of-office permission descriptionsThe current wording (“Vytvořit/Zobrazit/Aktualizovat/Smazat mimo kancelář”) reads as if the action itself happens outside the office, rather than managing an out-of-office entry. Please mirror the phrasing used elsewhere (e.g., reference “záznamy o nepřítomnosti”) so the intent is clear and consistent.
- "pbac_desc_create_out_of_office": "Vytvořit mimo kancelář", - "pbac_desc_view_out_of_office": "Zobrazit mimo kancelář", - "pbac_desc_update_out_of_office": "Aktualizovat mimo kancelář", - "pbac_desc_delete_out_of_office": "Smazat mimo kancelář", + "pbac_desc_create_out_of_office": "Vytvářet záznamy o nepřítomnosti", + "pbac_desc_view_out_of_office": "Zobrazovat záznamy o nepřítomnosti", + "pbac_desc_update_out_of_office": "Aktualizovat záznamy o nepřítomnosti", + "pbac_desc_delete_out_of_office": "Mazat záznamy o nepřítomnosti",apps/web/public/static/locales/pt/common.json (12)
324-324: LGTM — consistent with existing “Começar”.
962-962: LGTM — pt‑PT “equipa”.
1334-1334: LGTM — clear rename and natural pt‑PT.
2694-2694: LGTM — natural pt‑PT.
1236-1236: Use pt‑PT term for “default”.- "set_to_default": "Definir como padrão", + "set_to_default": "Definir como predefinição",
2207-2207: Keep quoted UI labels verbatim.Use field label “Convidados” and the UI type exactly as shown (“Multi email”), without localizing inside quotes.
- "guests_field_must_be_multiemail": "O campo de convidados deve ser do tipo 'Múltiplos emails'", + "guests_field_must_be_multiemail": "O campo 'Convidados' deve ser do tipo 'Multi email'"Run to confirm the exact English/type label used in the repo:
#!/bin/bash set -euo pipefail echo "en/common.json entry (if present):" rg -nC1 '"guests_field_must_be_multiemail":' apps/web/public/static/locales/en/common.json || true echo echo "Search UI/type strings to verify the quoted label:" rg -n -S -i "Multi ?email|Multiple ?emails" --glob '!**/dist/**' --glob '!**/build/**'
2928-2928: Swap BR‑PT phrasing for pt‑PT.- "always_show_x_days_description": "Move automaticamente a janela de reserva de {{x}} dias para frente a cada dia, garantindo que seu calendário sempre mostre os próximos {{x}} dias de horários disponíveis.", + "always_show_x_days_description": "Move automaticamente a janela de reserva de {{x}} dias para a frente todos os dias, garantindo que o seu calendário mostre sempre os próximos {{x}} dias de horários disponíveis.",
3150-3151: Articles + pt‑PT verb choice.- "translate_description_button": "Traduzir automaticamente título e descrição", - "translate_description_button_description": "Traduzir automaticamente títulos e descrições para o idioma do navegador do visitante usando IA.", + "translate_description_button": "Traduzir automaticamente o título e a descrição", + "translate_description_button_description": "Traduzir automaticamente o título e a descrição para o idioma do navegador do visitante, utilizando IA.",
3317-3317: Stick to pt‑PT vocabulary (“guardados”).- "saved_filters": "Filtros salvos", + "saved_filters": "Filtros guardados",
3347-3347: Restore definite article (“o seu …”).- "interface_language_description": "Defina seu idioma preferido para a interface de reserva", + "interface_language_description": "Defina o seu idioma preferido para a interface de reserva",
3519-3533: Unify delete verb to “Eliminar” (pt‑PT).Other delete strings use “Eliminar”; avoid BR‑PT “Excluir”.
- "pbac_desc_delete_availability": "Excluir disponibilidade", + "pbac_desc_delete_availability": "Eliminar disponibilidade", - "pbac_desc_delete_out_of_office": "Excluir fora do escritório", + "pbac_desc_delete_out_of_office": "Eliminar fora do escritório",
1023-1023: Match casing with paired label.Keep title‑case to mirror “Mostrar Configurações Avançadas”.
- "hide_advanced_settings": "Ocultar configurações avançadas", + "hide_advanced_settings": "Ocultar Configurações Avançadas",apps/web/public/static/locales/es/common.json (1)
1023-1024: Mantén la pareja “Mostrar/Ocultar” coherente con el copy existenteEl toggle “Mostrar Opciones Avanzadas” y su estado inverso deberían compartir exactamente el mismo sustantivo y capitalización. “Ocultar ajustes avanzados” introduce otra palabra y styling, generando una UI poco pulida. Cambiemos a “Ocultar Opciones Avanzadas” para quedar alineados con el texto visible al usuario.
- "hide_advanced_settings": "Ocultar ajustes avanzados", + "hide_advanced_settings": "Ocultar Opciones Avanzadas",apps/web/public/static/locales/sr/common.json (3)
962-962: Restore polite plural on CTACTA buttons in this section use the formal plural (“Kreirajte”) for tone consistency; reverting to “Kreiraj” breaks that convention. Please switch back to “Kreirajte tim.”
- "create_team": "Kreiraj tim", + "create_team": "Kreirajte tim",
3150-3151: Keep button label tone aligned with descriptionWe previously standardised this button on “Automatski…” to mirror the descriptive string; “Auto…” feels abrupt and inconsistent. Please revert.
- "translate_description_button": "Auto prevod naslova i opisa", - "translate_description_button_description": "Automatski prevodi naslove i opise na jezik posetiočevog pregledača koristeći veštačku inteligenciju.", + "translate_description_button": "Automatski prevod naslova i opisa", + "translate_description_button_description": "Automatski prevodi naslove i opise na jezik posetiočevog pregledača koristeći veštačku inteligenciju.",
2207-2207: Match established quotation style for UI labelsThis key should follow the house style of Serbian angled quotes („…“) and localized “imejl,” per earlier guidance. Please adjust accordingly.
- "guests_field_must_be_multiemail": "Polje za goste mora biti tipa 'Više e-mail adresa'", + "guests_field_must_be_multiemail": "Polje „Gosti” mora biti tipa „Više imejl adresa”",apps/web/public/static/locales/ru/common.json (4)
1023-1023: Keep toggle wording consistent with the paired labelThe “show” state says “Показать дополнительные параметры”, but the “hide” state still reads “Скрыть расширенные настройки”, breaking copy symmetry. Please mirror the phrasing.
- "hide_advanced_settings": "Скрыть расширенные настройки", + "hide_advanced_settings": "Скрыть дополнительные параметры",
1334-1334: Use the established phrasing for multiple durations“Несколько длительностей” sounds off in Russian UI copy; prior guidance suggested “несколько вариантов длительности”. Please align with that phrasing.
- "allow_multiple_durations": "Разрешить несколько длительностей", + "allow_multiple_durations": "Разрешить несколько вариантов длительности",
3519-3532: Match PBAC description style with surrounding entriesNearby PBAC strings use noun phrases (“Создание…”, “Просмотр…”). These new entries switched to imperative verbs, which feels inconsistent. Please revert to the noun-style pattern and use angle quotes around «Вне офиса».
- "pbac_desc_create_availability": "Создать доступность", - "pbac_desc_view_availability": "Просмотреть доступность", - "pbac_desc_update_availability": "Обновить доступность", - "pbac_desc_delete_availability": "Удалить доступность", - "pbac_desc_create_out_of_office": "Создать статус \"Вне офиса\"", - "pbac_desc_view_out_of_office": "Просмотреть статус \"Вне офиса\"", - "pbac_desc_update_out_of_office": "Обновить статус \"Вне офиса\"", - "pbac_desc_delete_out_of_office": "Удалить статус \"Вне офиса\"", + "pbac_desc_create_availability": "Создание доступности", + "pbac_desc_view_availability": "Просмотр доступности", + "pbac_desc_update_availability": "Обновление доступности", + "pbac_desc_delete_availability": "Удаление доступности", + "pbac_desc_create_out_of_office": "Создание статуса «Вне офиса»", + "pbac_desc_view_out_of_office": "Просмотр статуса «Вне офиса»", + "pbac_desc_update_out_of_office": "Обновление статуса «Вне офиса»", + "pbac_desc_delete_out_of_office": "Удаление статуса «Вне офиса»",
2207-2207: Restore locale-consistent terminology for “Guests”RU locale elsewhere uses «Участники» for “Guests”, and field labels normally keep angle quotes. Please revert to the consistent wording.
- "guests_field_must_be_multiemail": "Поле гостей должно быть типа 'Несколько адресов электронной почты'", + "guests_field_must_be_multiemail": "Поле «Участники» должно быть типа «Несколько адресов электронной почты»",apps/web/public/static/locales/pt-BR/common.json (3)
962-962: Restore “time” terminology for teams.Toda a UI pt-BR usa “time” para “team” (ex.: “Gerenciar esta equipe” fica “Gerenciar este time”). Este ponto isolado voltou para “equipe” e quebra a consistência visual. Refaça para “Criar time”.
- "create_team": "Criar equipe", + "create_team": "Criar time",
1023-1023: Match capitalization with the paired toggle.A chave “show_advanced_settings” está em Title Case (“Mostrar Configurações Avançadas”). Para manter a UI alinhada, o rótulo de ocultar deve seguir o mesmo padrão.
- "hide_advanced_settings": "Ocultar configurações avançadas", + "hide_advanced_settings": "Ocultar Configurações Avançadas",
3520-3521: Use a plural noun for this PBAC resource label.Os demais rótulos PBAC usam substantivos no plural (“Reservas”, “Equipes”, “Funções”). “Ausente” é adjetivo singular e destoa; mantenha o padrão com “Ausências”.
- "pbac_resource_out_of_office": "Ausente", + "pbac_resource_out_of_office": "Ausências",apps/web/public/static/locales/tr/common.json (4)
1334-1334: Keep terminology consistent with existing glossary
“Çoklu” sounds translated word-for-word; the product copy elsewhere uses “birden fazla” for “multiple”. Please switch to “Birden fazla süreye izin ver” to stay consistent with the rest of the UI.- "allow_multiple_durations": "Çoklu sürelere izin ver", + "allow_multiple_durations": "Birden fazla süreye izin ver",
2207-2207: Align with the established “Davetliler” term
Elsewhere in TR locale we standardised “guests” as “Davetliler”; mixing in “Misafirler” breaks the glossary and the “Çoklu e-posta” phrasing is clunky. Please update to the agreed wording.- "guests_field_must_be_multiemail": "Misafirler alanı 'Çoklu e-postalar' türünde olmalıdır", + "guests_field_must_be_multiemail": "Davetliler alanının 'Birden fazla e-posta' türünde olması gerekir",
3150-3151: Use the correct accusative form in the button label
Direct objects in Turkish need the “-ı” suffix. The earlier review already settled on “Başlığı ve açıklamayı…”. Please restore that to keep the button copy natural.- "translate_description_button": "Başlık ve açıklamayı otomatik çevir", + "translate_description_button": "Başlığı ve açıklamayı otomatik çevir",
3520-3532: Make the PBAC “Ofis dışı” strings read naturally
We previously aligned these keys to “Ofis dışı” + “kaydını” wording so actions sound natural (e.g., “Ofis dışı kaydı oluştur”). The current “Ofis Dışında / Ofis dışını …” forms regress to the awkward phrasing we already fixed. Please revert to the agreed copy.- "pbac_resource_out_of_office": "Ofis Dışında", - "pbac_desc_create_out_of_office": "Ofis dışı oluştur", - "pbac_desc_view_out_of_office": "Ofis dışını görüntüle", - "pbac_desc_update_out_of_office": "Ofis dışını güncelle", - "pbac_desc_delete_out_of_office": "Ofis dışını sil", + "pbac_resource_out_of_office": "Ofis dışı", + "pbac_desc_create_out_of_office": "Ofis dışı kaydı oluştur", + "pbac_desc_view_out_of_office": "Ofis dışı kayıtlarını görüntüle", + "pbac_desc_update_out_of_office": "Ofis dışı kayıtlarını güncelle", + "pbac_desc_delete_out_of_office": "Ofis dışı kayıtlarını sil",apps/web/public/static/locales/fi/common.json (1)
2207-2207: Keep the'multiEmail'literal intactThe value inside the quotes must remain the exact field identifier
'multiEmail'; translating it to'Useita sähköposteja'breaks parity with the required literal. Please revert the quoted portion while keeping the surrounding sentence localized.- "guests_field_must_be_multiemail": "Vieraiden kentän täytyy olla tyyppiä 'Useita sähköposteja'", + "guests_field_must_be_multiemail": "Vieraiden kentän täytyy olla tyyppiä 'multiEmail'",apps/web/public/static/locales/hu/common.json (4)
1236-1236: Restore the intended “Set to default” meaning.Line [1236] still says “Beállítás alapértelmezettként,” which reads as “Set as default,” not “Set to default.” Users will keep misinterpreting the action. Please revert to a phrasing that clearly means resetting to the default. Based on past review commentsraise_major_issueduplicate_comment
-"set_to_default": "Beállítás alapértelmezettként", +"set_to_default": "Visszaállítás alapértelmezettre",
2207-2207: Fix the possessive form and hyphenation.Line [2207] still uses “mezőnek” and “e-mail cím,” which are ungrammatical here. The correct possessive is “mezőjének,” and the compound noun needs the hyphenated form “e-mail-cím.” Based on past review commentsraise_minor_issueduplicate_comment
-"guests_field_must_be_multiemail": "A vendégek mezőnek 'Több e-mail cím' típusúnak kell lennie", +"guests_field_must_be_multiemail": "A vendégek mezőjének 'Több e-mail-cím' típusúnak kell lennie",
2928-2928: Keep the narration formal.Line [2928] still uses the informal possessive “naptárad,” but the locale sticks to the polite register (“Ön”). Please switch to the formal form so the tone stays consistent. Based on past review commentsraise_minor_issueduplicate_comment
-"always_show_x_days_description": "Automatikusan előrelépteti a {{x}} napos foglalási ablakot minden nap, biztosítva, hogy a naptárad mindig a következő {{x}} nap elérhető időpontjait mutassa.", +"always_show_x_days_description": "Automatikusan előrelépteti a {{x}} napos foglalási ablakot minden nap, biztosítva, hogy naptára mindig a következő {{x}} nap elérhető időpontjait mutassa.",
3347-3347: Use the formal imperative.Line [3347] still reads “Állítsd,” which clashes with the formal voice used elsewhere (“Ön”). Please switch back to the polite imperative. Based on past review commentsraise_minor_issueduplicate_comment
-"interface_language_description": "Állítsd be a foglalási felület preferált nyelvét", +"interface_language_description": "Állítsa be a foglalási felület preferált nyelvét",apps/web/public/static/locales/zh-TW/common.json (10)
324-324: Translation looks correct for the get_started key.The translation "開始使用" is appropriate and commonly used for "get started" in Traditional Chinese.
1023-1023: Translation is accurate and maintains consistency."隱藏進階設定" correctly translates "hide_advanced_settings" and follows the established pattern used elsewhere in the file for similar UI elements.
1334-1334: Translation maintains terminology consistency."允許多種時長" uses consistent terminology with other duration-related strings in the file. This aligns well with existing patterns like "時間長度" used in other contexts.
2207-2207: Translation terminology is consistent."來賓欄位必須是「多個電子郵件」類型" appropriately uses "來賓" for "guests" and maintains technical accuracy for the form field requirement.
2928-2928: Translation follows established patterns.The string correctly maintains variable spacing and uses consistent terminology. The translation structure aligns with other similar temporal descriptions in the file.
3150-3152: Translation is clear and technically accurate."自動翻譯標題和描述" and the description string both correctly convey the AI translation functionality with appropriate technical language.
3317-3317: Translation uses appropriate terminology."已儲存的篩選條件" is a suitable translation for "saved_filters" that maintains clarity and follows established UI terminology patterns.
3347-3347: Translation maintains consistency with interface terminology."設定預約介面的偏好語言" correctly uses "預約" which aligns with the established terminology throughout the file for booking-related strings.
3519-3532: PBAC translations are comprehensive and well-structured.All the PBAC (Permission-Based Access Control) resource and action descriptions are properly translated with consistent terminology:
- Uses "開放時間" for "availability"
- Uses "不在辦公室" for "out_of_office"
- Action verbs (建立, 檢視, 更新, 刪除) are consistently applied across all resources
3580-3580: Translation uses consistent booking terminology."預約建立時間" correctly uses "預約" for booking, which aligns with the established terminology pattern used throughout the file.
apps/web/public/static/locales/ja/common.json (5)
324-324: Use 「はじめる」 to match existing CTA tone既存UI(例: 「はじめに」)と語調を揃えるため、ひらがな表記の「はじめる」に戻してください。
1023-1023: Toggle copy should mirror 「表示」⇔「非表示」 pairトグルの反対語は既存UIにならい「詳細設定を非表示」が自然です。
1334-1334: Clarify that multiple durations are allowed「時間枠」だと枠数と誤解されがちなので、「複数の所要時間を許可」に調整してください。
2207-2207: Spell out 「メールアドレス」 for clarity「複数のメール」だと意味が曖昧です。「複数のメールアドレス」タイプと明示してください。
3525-3532: Add 「する」 for PBAC action consistency他のPBAC説明と語尾を合わせ、「〜する」で統一してください。
- "pbac_desc_create_availability": "空き状況を作成", + "pbac_desc_create_availability": "空き状況を作成する", - "pbac_desc_view_availability": "空き状況を表示", + "pbac_desc_view_availability": "空き状況を表示する", - "pbac_desc_update_availability": "空き状況を更新", + "pbac_desc_update_availability": "空き状況を更新する", - "pbac_desc_delete_availability": "空き状況を削除", + "pbac_desc_delete_availability": "空き状況を削除する", - "pbac_desc_create_out_of_office": "不在設定を作成", + "pbac_desc_create_out_of_office": "不在設定を作成する", - "pbac_desc_view_out_of_office": "不在設定を表示", + "pbac_desc_view_out_of_office": "不在設定を表示する", - "pbac_desc_update_out_of_office": "不在設定を更新", + "pbac_desc_update_out_of_office": "不在設定を更新する", - "pbac_desc_delete_out_of_office": "不在設定を削除", + "pbac_desc_delete_out_of_office": "不在設定を削除する",apps/web/public/static/locales/sk-SK/common.json (2)
2207-2207: Align “email” spelling with locale conventions.V ostatných slovenských prekladoch používame tvar „email“ bez pomlčky, takže prosím upravte aj túto vetu na konzistentný zápis.
- "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu 'Viacero e-mailov'", + "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu 'Viacero emailov'",
1236-1236: Restore original wording for “set_to_default”.Zmena na „Nastaviť ako predvolené“ obchádza rozdiel oproti
set_as_defaulta rozbíja význam “vrátiť na predvolené nastavenie”. Prosím vráťte preklad späť na „Nastaviť na predvolené“.- "set_to_default": "Nastaviť ako predvolené", + "set_to_default": "Nastaviť na predvolené",apps/web/public/static/locales/uk/common.json (3)
1023-1023: Match hide/show toggle phrasingПоручній кнопці вже відповідає «Показати додаткові параметри» (Line 1022), тож і цей рядок має використовувати тотожну лексику. Зараз ми маємо «Приховати розширені налаштування», що рве симетрію та звучить мовно інше.
- "hide_advanced_settings": "Приховати розширені налаштування", + "hide_advanced_settings": "Приховати додаткові параметри",
2207-2207: Restore field label and Ukrainian quotesПопереднє зауваження щодо використання лапок «…» та згадки назви поля залишилось без змін. Треба повернути формат «Поле «Гості» має бути типу «Кілька електронних адрес»».
- "guests_field_must_be_multiemail": "Поле гостей повинно мати тип 'Кілька електронних адрес'", + "guests_field_must_be_multiemail": "Поле «Гості» має бути типу «Кілька електронних адрес»",
2928-2928: Fix accusative plural for {{x}}Форма «наступні {{x}} днів» неправильно передає знахідний відмінок. Слід ужити «наступні {{x}} дні», як уже пропонувалося раніше.
- "always_show_x_days_description": "Автоматично переміщує вікно бронювання на {{x}} днів вперед кожного дня, забезпечуючи, щоб ваш календар завжди показував наступні {{x}} днів доступних слотів.", + "always_show_x_days_description": "Автоматично переміщує вікно бронювання на {{x}} днів уперед щодня, забезпечуючи, щоб ваш календар завжди показував наступні {{x}} дні доступних слотів.",apps/web/public/static/locales/nl/common.json (4)
1334-1334: Restore the improved duration phrasing.Deze string is teruggevallen naar “tijdsduren”, terwijl we eerder “duur‑opties” hadden afgestemd op de UX-copy. Dit leest natuurlijker en voorkomt terminologie-afwijking binnen de planner-flow. Graag terugzetten naar de eerdere formulering.
2207-2207: Gebruik opnieuw de consistente gastenvertaling.We hadden dit veld al geharmoniseerd naar “Het veld ‘Bezoekers’ … ‘Meerdere e‑mailadressen’” zodat het aansluit op de NL-labels elders in de app. Het huidige “Gastveld” en “Meerdere e-mails” wijkt daarvan af en voelt onaf. Herstel de vorige, consistente persoonsnamings.
2928-2928: Herstel het gepolijste “tijdsloten”‑copy.De zin bevat opnieuw “tijdslots” en het overbodige “aan”. We hadden dit reeds opgeschoond naar “…beschikbare tijdsloten toont.” om anglicismen te vermijden. Graag het eerdere, correcte NL-termengebruik terugzetten.
3520-3521: Blijf bij “Afwezigheid” voor PBAC-resource.De resourcewaarde staat nu op “Afwezig”, maar de bijhorende beschrijvingen gebruiken “Afwezigheid” en dat was ook de afgesproken terminologie. Voor een coherent permissieoverzicht de zelfstandig naamwoordvorm herstellen.
apps/web/public/static/locales/de/common.json (1)
1334-1334: Restore established terminology for “duration”.The product text elsewhere consistently uses “Laufzeit/Laufzeiten”. Please update this string to “Mehrere Laufzeiten erlauben” so the terminology stays aligned across the UI.
apps/web/public/static/locales/az/common.json (12)
324-324: LGTM: natural imperative for “Get started”.“Başlayın” reads well in buttons.
962-962: LGTM: consistent casing/style for “Create team”.“Komanda yaradın” aligns with similar actions (“Hesab yaradın”, etc.).
1023-1023: LGTM: imperative fixed for “Hide advanced settings”.Matches “Show advanced settings” above.
1334-1334: LGTM: label matches feature rename.“Çoxsaylı müddətlərə icazə verin” is clear and consistent with other “allow …” toggles.
2207-2207: LGTM: clear validation copy.Accurately names required field type.
2694-2694: LGTM: consistent imperative for “Create org”.“Təşkilat yaradın” aligns with “Komanda yaradın”.
3581-3581: LGTM: grammar fix for “Meeting start time”.“Görüşün başlama vaxtı” is correct possessive form.
2928-2928: Polish phrasing and terminology (“{{x}} günlük”, avoid “slot”).Use the native “günlük” form and prefer “mövcud vaxtlar”.
- "always_show_x_days_description": "Avtomatik olaraq {{x}}-günlük rezervasiya pəncərəsini hər gün irəli aparır, təqviminizin həmişə növbəti {{x}} günün mövcud slotlarını göstərməsini təmin edir.", + "always_show_x_days_description": "Avtomatik olaraq {{x}} günlük rezervasiya pəncərəsini hər gün irəli aparır və təqviminizin həmişə növbəti {{x}} gün üçün mövcud vaxtlarını göstərməsini təmin edir.",
3150-3151: Avoid mixing English “auto” in Azerbaijani UI.Button should use “avtomatik” to match the description below.
- "translate_description_button": "Başlıq və təsviri auto tərcümə et", + "translate_description_button": "Başlıq və təsviri avtomatik tərcümə et",
3317-3317: Typo: participle form (“Saxlanmış” vs “Saxlanılmış”).Use the preferred participle.
- "saved_filters": "Saxlanılmış filtrlər", + "saved_filters": "Saxlanmış filtrlər",
3519-3521: Fix Azerbaijani phrasing for “Out of office” resource.Use noun phrase “Ofisdən kənar” (not adverbial “-da”).
"pbac_resource_availability": "Mövcudluq", - "pbac_resource_out_of_office": "Ofisdən kənarda", + "pbac_resource_out_of_office": "Ofisdən kənar",
3529-3532: Clarify out‑of‑office permission strings (add “qeyd(lər)”, use imperative).Makes sentences complete and consistent with PBAC copy.
- "pbac_desc_create_out_of_office": "Ofisdən kənar yaratmaq", - "pbac_desc_view_out_of_office": "Ofisdən kənarı görmək", - "pbac_desc_update_out_of_office": "Ofisdən kənarı yeniləmək", - "pbac_desc_delete_out_of_office": "Ofisdən kənarı silmək", + "pbac_desc_create_out_of_office": "Ofisdən kənar qeydi yaradın", + "pbac_desc_view_out_of_office": "Ofisdən kənar qeydlərə baxın", + "pbac_desc_update_out_of_office": "Ofisdən kənar qeydləri yeniləyin", + "pbac_desc_delete_out_of_office": "Ofisdən kənar qeydləri silin",apps/web/public/static/locales/no/common.json (11)
324-324: LGTM: new CTA string“Kom i gang” is correct and consistent with existing “Komme i gang”.
1023-1024: LGTM: advanced settings pairMatches “Vis avanserte innstillinger” ↔ “Skjul avanserte innstillinger”.
1334-1335: LGTM: duration toggle“Tillat flere varigheter” reads fine in UI context.
3317-3318: LGTM: saved filters“Lagrede filtre” matches product terminology.
3347-3348: LGTM: interface language descriptionClear and accurate.
3519-3533: LGTM: PBAC resource and CRUD descriptorsTerminology (“Tilgjengelighet”, “Ute av kontoret”) and CRUD verbs look consistent across PBAC entries.
3581-3582: LGTM: meeting start time“Møtets starttidspunkt” is idiomatic.
2694-2694: LGTM: org creation CTA“Opprett organisasjon” matches existing patterns.
2207-2208: Regression: polish “Gjester”-field phrasingReintroduces earlier, less‑idiomatic wording. Use explicit field label and JSON‑escaped quotes.
- "guests_field_must_be_multiemail": "Gjestfeltet må være av typen 'Flere e-poster'", + "guests_field_must_be_multiemail": "Feltet \"Gjester\" må være av typen \"Flere e-poster\"",
2928-2928: Regression: fix grammar in booking window description“{{x}}-dagers bookingvinduet” is ungrammatical. Use a natural construction that preserves {{x}}.
- "always_show_x_days_description": "Flytter automatisk {{x}}-dagers bookingvinduet fremover hver dag, slik at kalenderen din alltid viser de neste {{x}} dagene med tilgjengelige tidspunkter.", + "always_show_x_days_description": "Flytter automatisk bookingvinduet på {{x}} dager fremover hver dag, slik at kalenderen din alltid viser de neste {{x}} dagene med ledige tidspunkter.",
3150-3151: Genitive fix: “besøkerens nettleserspråk”Use singular genitive for a more idiomatic phrase; keep “AI” unchanged.
- "translate_description_button_description": "Oversett automatisk titler og beskrivelser til besøkendes nettleserspråk ved hjelp av AI.", + "translate_description_button_description": "Oversett automatisk titler og beskrivelser til besøkerens nettleserspråk ved hjelp av AI.",apps/web/public/static/locales/ca/common.json (3)
962-962: Restore the Catalan article in “create_team”.La forma natural és “Crea un equip”; la nova cadena omet l’article i sona incorrecta.
- "create_team": "Crea equip", + "create_team": "Crea un equip",
1334-1334: Keep “durades” consistent with the rest of the file.La terminologia existent usa “durades” (no “duracions”); mantinguem la coherència.
- "allow_multiple_durations": "Permet múltiples duracions", + "allow_multiple_durations": "Permet múltiples durades",
3529-3532: Clarify the PBAC “out of office” descriptions.Sense el substantiu implícit (“períodes”), frases com “Crear fora de l’oficina” resulten abruptes. Afegim-lo per mantenir la claredat i la coherència amb la resta de PBAC.
- "pbac_desc_create_out_of_office": "Crear fora de l'oficina", - "pbac_desc_view_out_of_office": "Veure fora de l'oficina", - "pbac_desc_update_out_of_office": "Actualitzar fora de l'oficina", - "pbac_desc_delete_out_of_office": "Eliminar fora de l'oficina", + "pbac_desc_create_out_of_office": "Crear períodes de fora de l'oficina", + "pbac_desc_view_out_of_office": "Veure els períodes de fora de l'oficina", + "pbac_desc_update_out_of_office": "Actualitzar els períodes de fora de l'oficina", + "pbac_desc_delete_out_of_office": "Eliminar els períodes de fora de l'oficina",apps/web/public/static/locales/el/common.json (1)
3520-3532: Restore lowercase “γραφείου” for PBAC label.Previous feedback aligned this label with the existing string at Line 2729 (“Εκτός γραφείου”), but the new entry reintroduces the capitalized version. Please switch back to keep the UI consistent.
- "pbac_resource_out_of_office": "Εκτός Γραφείου", + "pbac_resource_out_of_office": "Εκτός γραφείου",apps/web/public/static/locales/vi/common.json (1)
1236-1236: Keep “set_to_default” distinct from “set_as_default”.Previous feedback asked for “Đặt về mặc định” so this key doesn’t duplicate “set_as_default”. The current value is still the same as “set_as_default”, so users won’t see the nuance between restoring to default vs setting as default. Please switch it to “Đặt về mặc định”.
- "set_to_default": "Đặt làm mặc định", + "set_to_default": "Đặt về mặc định",apps/web/public/static/locales/ar/common.json (3)
2207-2208: Keep quoted label in English for UI parity.The UI still surfaces this option as the literal English string
'Multiple emails'. Translating the quoted label breaks parity and makes it harder for users to match the control. Please restore the quoted text to'Multiple emails'and keep the surrounding Arabic copy intact.-"guests_field_must_be_multiemail": "يجب أن يكون حقل الضيوف من نوع 'بريد إلكتروني متعدد'", +"guests_field_must_be_multiemail": "يجب أن يكون حقل الضيوف من نوع 'Multiple emails'",
3347-3348: Match prior guidance: use “واجهة المستخدم”.The copy should refer to the user interface in general, not the booking surface specifically. Please update the phrase to “واجهة المستخدم” as previously requested to avoid unintended specialization.
-"interface_language_description": "اضبط لغتك المفضلة لواجهة الحجز", +"interface_language_description": "اضبط لغتك المفضلة لواجهة المستخدم",
3526-3526: Pluralize “availability” to stay consistent.Other availability actions already use the plural form “الأوقات المتاحة”. Keep “create” consistent to avoid mismatched phrasing across related permissions.
-"pbac_desc_create_availability": "إنشاء وقت متاح", +"pbac_desc_create_availability": "إنشاء الأوقات المتاحة",apps/web/public/static/locales/sv/common.json (10)
324-324: LGTM — adds missing CTA"Kom igång" is correct and consistent with existing onboarding strings.
1023-1023: LGTM — toggle pair reads wellMatches “Visa avancerade inställningar”.
1334-1334: LGTM — clearer key/value for multi-duration"Tillåt flera varaktigheter" is natural Swedish.
2207-2207: Polish phrasing/casing; remove quotesUse the field label casing and avoid embedded quotes.
- "guests_field_must_be_multiemail": "Fältet för gäster måste vara av typen 'Flera e-postadresser'", + "guests_field_must_be_multiemail": "Fältet Gäster måste vara av typen Flera e‑postadresser"
2928-2928: LGTM — description reads fluentlyPlural handling around {{x}} is fine.
3150-3152: LGTM — translate button + helper textCopy is concise; “webbläsarspråk” is correct.
3317-3317: LGTM — Insights term“Sparade filter” matches other analytics copy.
2694-2694: LGTM — casing fix“Skapa organisation” corrects title-case inconsistency.
3519-3532: Align OOO resource label with terminology used in adjacent PBAC descriptionsNeighboring keys use “Frånvaro”. Change the resource label to match.
- "pbac_resource_out_of_office": "Inte på kontoret", + "pbac_resource_out_of_office": "Frånvaro",
3580-3580: LGTM — phrasing improved“TId för bokningsskapande” is clearer than the previous variant.
apps/web/public/static/locales/bn/common.json (9)
3529-3532: Clarify “Out of office” action labels (operate on an entry/state)Current text can read like “step outside.” Make it explicit you’re creating/viewing/updating/deleting an OOO entry.
- "pbac_desc_create_out_of_office": "অফিসের বাইরে তৈরি করুন", - "pbac_desc_view_out_of_office": "অফিসের বাইরে দেখুন", - "pbac_desc_update_out_of_office": "অফিসের বাইরে আপডেট করুন", - "pbac_desc_delete_out_of_office": "অফিসের বাইরে মুছুন", + "pbac_desc_create_out_of_office": "অফিসের বাইরে এন্ট্রি তৈরি করুন", + "pbac_desc_view_out_of_office": "অফিসের বাইরে এন্ট্রি দেখুন", + "pbac_desc_update_out_of_office": "অফিসের বাইরে এন্ট্রি আপডেট করুন", + "pbac_desc_delete_out_of_office": "অফিসের বাইরে এন্ট্রি মুছুন",
2207-2207: LGTM: comma fix keeps JSON validTrailing comma added; key reads naturally.
3519-3528: LGTM: PBAC “availability” resources/descriptorsLabels are precise and consistent (প্রাপ্যতা …).
324-324: LGTM: get_startedNatural imperative “শুরু করুন”.
1023-1023: LGTM: hide_advanced_settingsMatches existing pair with show_advanced_settings.
1334-1334: LGTM: allow_multiple_durationsClear and matches feature semantics.
2928-2928: LGTM: always_show_x_days_descriptionAccurate, variables preserved.
3317-3317: LGTM: saved_filtersTerm choice is idiomatic.
3347-3347: LGTM: interface_language_descriptionConcise and user-facing tone fits settings page.
apps/web/public/static/locales/eu/common.json (11)
1023-1023: LGTMTranslation and casing are consistent with adjacent keys.
1236-1236: LGTM“Ezarri lehenetsi gisa” matches existing usage of “lehenetsi.”
1334-1334: LGTMAccurate phrasing for multi-duration allow toggle.
2207-2207: LGTM; verify quoted field-type label matches UIText is fine. Please confirm the quoted field-type label equals the UI label for that input type across locales.
2928-2928: LGTMClear explanation; placeholders are correct.
3580-3582: LGTMBoth labels are natural Basque and consistent with prior terminology.
3317-3317: LGTMNatural phrasing for “Saved filters.”
3347-3347: LGTMDescription is clear and consistent with interface_language label.
3150-3151: Singular/plural mismatch with button text; make description singular to matchButton uses singular (“izenburua eta deskribapena”) while description uses plurals. Align for consistency.
"translate_description_button": "Automatikoki itzuli izenburua eta deskribapena", -"translate_description_button_description": "Automatikoki itzuli izenburuak eta deskribapenak bisitariaren nabigatzailearen hizkuntzara adimen artifizialaren bidez.", +"translate_description_button_description": "Automatikoki itzuli izenburua eta deskribapena bisitariaren nabigatzailearen hizkuntzara adimen artifizialaren bidez.",
3525-3529: Consistency: use “eskuragarritasuna” in PBAC availability descriptionsAlign with general keys (e.g., Lines 1009–1011).
-"pbac_desc_create_availability": "Sortu erabilgarritasuna", -"pbac_desc_view_availability": "Ikusi erabilgarritasuna", -"pbac_desc_update_availability": "Eguneratu erabilgarritasuna", -"pbac_desc_delete_availability": "Ezabatu erabilgarritasuna", +"pbac_desc_create_availability": "Sortu eskuragarritasuna", +"pbac_desc_view_availability": "Ikusi eskuragarritasuna", +"pbac_desc_update_availability": "Eguneratu eskuragarritasuna", +"pbac_desc_delete_availability": "Ezabatu eskuragarritasuna",
3530-3532: Clarify OOO action descriptions by explicitly referencing entriesCurrent forms read as incomplete commands. Recommend explicitly mentioning “sarrera(k).”
-"pbac_desc_create_out_of_office": "Sortu bulegotik kanpo", -"pbac_desc_view_out_of_office": "Ikusi bulegotik kanpo", -"pbac_desc_update_out_of_office": "Eguneratu bulegotik kanpo", -"pbac_desc_delete_out_of_office": "Ezabatu bulegotik kanpo", +"pbac_desc_create_out_of_office": "Sortu bulegotik kanpoko sarrera", +"pbac_desc_view_out_of_office": "Ikusi bulegotik kanpoko sarrerak", +"pbac_desc_update_out_of_office": "Eguneratu bulegotik kanpoko sarrerak", +"pbac_desc_delete_out_of_office": "Ezabatu bulegotik kanpoko sarrerak",
| "pbac_resource_out_of_office": "부재중", | ||
| "pbac_desc_create_webhooks": "웹훅 생성", | ||
| "pbac_desc_view_webhooks": "웹훅 보기", | ||
| "pbac_desc_update_webhooks": "웹훅 업데이트", | ||
| "pbac_desc_delete_webhooks": "웹훅 삭제", | ||
| "pbac_desc_create_availability": "가용성 생성", | ||
| "pbac_desc_view_availability": "가용성 보기", | ||
| "pbac_desc_update_availability": "가용성 업데이트", | ||
| "pbac_desc_delete_availability": "가용성 삭제", | ||
| "pbac_desc_create_out_of_office": "부재중 생성", | ||
| "pbac_desc_view_out_of_office": "부재중 보기", | ||
| "pbac_desc_update_out_of_office": "부재중 업데이트", | ||
| "pbac_desc_delete_out_of_office": "부재중 삭제", |
There was a problem hiding this comment.
Align PBAC “out of office” terminology with existing UI
Elsewhere we consistently translate out_of_office as “자리 비움,” but these new PBAC strings switch to “부재중,” breaking searchability and glossary alignment. Please revise each value to the established phrasing (e.g. “자리 비움 항목 생성/보기/업데이트/삭제”).
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ko/common.json around lines 3520 to 3532, the
PBAC strings use “부재중” but the project glossary uses “자리 비움”; update each PBAC
value to the established phrasing and style (e.g., replace "부재중 생성" with "자리 비움
항목 생성", "부재중 보기" with "자리 비움 항목 보기", "부재중 업데이트" with "자리 비움 항목 업데이트", and "부재중
삭제" with "자리 비움 항목 삭제") so all four create/view/update/delete entries match the
existing UI terminology and searchability.
| "pbac_resource_availability": "可用性", | ||
| "pbac_resource_out_of_office": "外出", | ||
| "pbac_desc_create_webhooks": "创建 Webhook", | ||
| "pbac_desc_view_webhooks": "查看 Webhook", | ||
| "pbac_desc_update_webhooks": "更新 Webhooks", | ||
| "pbac_desc_delete_webhooks": "删除 Webhooks", | ||
| "pbac_desc_create_availability": "创建可用性", | ||
| "pbac_desc_view_availability": "查看可用性", | ||
| "pbac_desc_update_availability": "更新可用性", | ||
| "pbac_desc_delete_availability": "删除可用性", | ||
| "pbac_desc_create_out_of_office": "创建外出", | ||
| "pbac_desc_view_out_of_office": "查看外出", | ||
| "pbac_desc_update_out_of_office": "更新外出", | ||
| "pbac_desc_delete_out_of_office": "删除外出", |
There was a problem hiding this comment.
Keep “availability” terminology consistent.
All existing zh-CN strings translate “availability” as “可预约时间”(see Line 1008 "availability": "可预约时间"). The newly added PBAC keys switch to “可用性”, which breaks terminology consistency and may confuse users scanning related permissions. Please update these values (resource label plus create/view/update/delete descriptions) to keep using “可预约时间”。
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-CN/common.json around lines 3519 to 3532,
the new PBAC keys use “可用性” which breaks terminology consistency with the
existing translation at line ~1008 where “availability” is translated as
“可预约时间”; update the values for "pbac_resource_availability" and all four
"pbac_desc_*_availability" entries (create/view/update/delete) to use "可预约时间" so
the resource label and its create/view/update/delete descriptions match the
project-wide terminology.
58d7396 to
5214058
Compare
There was a problem hiding this comment.
Actionable comments posted: 14
🧹 Nitpick comments (33)
apps/web/public/static/locales/ja/common.json (3)
2304-2304: Minor tone tweak for tooltip (optional).
Quote the label and soften tone.- "connect_now_unavailable_tooltip": "今すぐ接続は現在利用できません。上記の空き枠から予約するか、後でもう一度お試しください。", + "connect_now_unavailable_tooltip": "「今すぐ接続」は現在ご利用いただけません。上記の空き枠から予約するか、後でもう一度お試しください。",
2930-2930: Prefer established term over “予約ウィンドウ” (optional).
「予約可能期間」のほうが自然です。- "always_show_x_days_description": "予約ウィンドウを毎日自動的に{{x}}日分前進させ、常に今後{{x}}日間の空き枠を表示します。", + "always_show_x_days_description": "予約可能期間を毎日自動的に{{x}}日分前進させ、常に今後{{x}}日間の空き枠を表示します。",
3348-3348: Slightly refine “interface language”.
「表示言語」 is more idiomatic than 「希望言語」 in settings.- "interface_language_description": "予約インターフェースの希望言語を設定します", + "interface_language_description": "予約インターフェースの表示言語を設定します",apps/web/public/static/locales/bn/common.json (3)
2304-2304: Polish tooltip copy (more natural Bengali)Suggestion improves tone and clarity.
- "connect_now_unavailable_tooltip": "এখন সংযোগ করা অনুপলব্ধ। অনুগ্রহ করে উপরের স্লট থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।", + "connect_now_unavailable_tooltip": "এই মুহূর্তে সংযোগ করা সম্ভব নয়। উপরের স্লট থেকে বুক করুন বা পরে আবার চেষ্টা করুন।",
2929-2929: Minor wording tweak (optional)Flows a bit better and keeps {{x}} intact.
- "always_show_x_days_description": "প্রতিদিন স্বয়ংক্রিয়ভাবে {{x}}-দিনের বুকিং উইন্ডো সামনে সরিয়ে দেয়, যা নিশ্চিত করে যে আপনার ক্যালেন্ডার সর্বদা পরবর্তী {{x}} দিনের উপলব্ধ স্লট দেখায়।", + "always_show_x_days_description": "প্রতিদিন স্বয়ংক্রিয়ভাবে {{x}} দিনের বুকিং উইন্ডো এগিয়ে দেয়, যাতে ক্যালেন্ডার সবসময় পরবর্তী {{x}} দিনের উপলব্ধ স্লট দেখায়।",
2695-2695: Consistency nit: “সংগঠন” vs “সংস্থা”This key now uses “সংগঠন”; elsewhere both terms appear. Consider standardizing across bn locale for consistency (e.g., prefer “সংগঠন” like "organization").
apps/web/public/static/locales/ro/common.json (2)
2304-2304: Polish tooltip wording (“sloturi” → “intervale”).More natural Romanian and avoids anglicism.
- "connect_now_unavailable_tooltip": "Conectarea acum nu este disponibilă momentan. Vă rugăm să rezervați din sloturile de mai sus sau să încercați din nou mai târziu.", + "connect_now_unavailable_tooltip": "Conectarea acum nu este disponibilă momentan. Vă rugăm să rezervați din intervalele de mai sus sau să încercați din nou mai târziu.",
2929-2929: Improve clarity and consistency (“sloturi” → “intervale”; “dumneavoastră” → “dvs.”).Aligns with tone used elsewhere (“dvs.”).
- "always_show_x_days_description": "Mută automat fereastra de rezervare de {{x}} zile înainte în fiecare zi, asigurându-se că calendarul dumneavoastră arată mereu următoarele {{x}} zile de sloturi disponibile.", + "always_show_x_days_description": "Mută automat fereastra de rezervare cu {{x}} zile înainte în fiecare zi, astfel încât calendarul dvs. să afișeze mereu următoarele {{x}} zile de intervale disponibile.",apps/web/public/static/locales/no/common.json (1)
2304-2304: Minor UX copy tweak for tooltipAdd quotes around button label and prefer “ikke tilgjengelig”. Optional.
- "connect_now_unavailable_tooltip": "Koble til nå er utilgjengelig akkurat nå. Vennligst bestill fra tilgjengelige tider ovenfor eller prøv igjen senere.", + "connect_now_unavailable_tooltip": "«Koble til nå» er ikke tilgjengelig. Bestill fra tilgjengelige tider ovenfor, eller prøv igjen senere.",apps/web/public/static/locales/sr/common.json (4)
1-1: Heads‑up: CLA status blocking mergeCLAassistant shows not_signed for this PR; ensure the contributor signs the CLA before merge.
2304-2304: Smoother tooltip phrasingMore natural Serbian:
- "connect_now_unavailable_tooltip": "Povezivanje odmah trenutno nije dostupno. Molimo rezervišite iz gornjih termina ili pokušajte kasnije.", + "connect_now_unavailable_tooltip": "„Povežite odmah” trenutno nije dostupno. Molimo rezervišite neki od termina iznad ili pokušajte kasnije.",
2930-2930: Minor grammar tweak (“za” umesto “od”)Sounds more idiomatic.
- "always_show_x_days_description": "Automatski pomera prozor za rezervacije od {{x}} dana unapred svakog dana, osiguravajući da vaš kalendar uvek prikazuje sledećih {{x}} dana dostupnih termina.", + "always_show_x_days_description": "Automatski pomera prozor za rezervacije za {{x}} dana unapred svakog dana, osiguravajući da vaš kalendar uvek prikazuje sledećih {{x}} dana dostupnih termina.",
3349-3349: Clarify object of the descriptionPrefer “interfejsa za zakazivanje” for consistency with “stranica za zakazivanje”.
- "interface_language_description": "Postavite željeni jezik za interfejs za rezervacije", + "interface_language_description": "Postavite željeni jezik interfejsa za zakazivanje",apps/web/public/static/locales/ko/common.json (4)
1334-1334: Reword “duration” more naturally as ‘기간’.
“여러 시간 옵션” → “여러 기간 옵션”이 자연스럽습니다.- "allow_multiple_durations": "여러 시간 옵션 허용", + "allow_multiple_durations": "여러 기간 옵션 허용",
2207-2207: Optional: drop quotes around the type name.
따옴표 없이도 의미가 명확합니다.- "guests_field_must_be_multiemail": "게스트 필드는 '여러 이메일' 유형이어야 합니다", + "guests_field_must_be_multiemail": "게스트 필드는 여러 이메일 유형이어야 합니다",
2304-2304: Clarify tooltip phrasing.
“위의 시간대” → “위의 가능한 시간대”가 더 정확합니다. “지금 연결하기를 사용할 수 없습니다”도 간결화 권장.- "connect_now_unavailable_tooltip": "지금 연결하기를 사용할 수 없습니다. 위의 시간대에서 예약하거나 나중에 다시 시도해 주세요.", + "connect_now_unavailable_tooltip": "지금 연결은 사용할 수 없습니다. 위의 가능한 시간대에서 예약하거나 나중에 다시 시도해 주세요.",
3520-3529: Availability PBAC strings: OK; consider term consistency elsewhere.
여기서는 “가용성”을 사용(좋음). 파일 상단의 "availability": "유효성"(라인 1008)과 불일치가 있으므로 후속 정리 권장.apps/web/public/static/locales/pl/common.json (1)
2930-2930: Optional wording polishFlows a bit more naturally; meaning unchanged.
- "always_show_x_days_description": "Automatycznie przesuwa {{x}}-dniowe okno rezerwacji każdego dnia, zapewniając, że Twój kalendarz zawsze pokazuje kolejne {{x}} dni dostępnych terminów.", + "always_show_x_days_description": "Każdego dnia automatycznie przesuwa okno rezerwacji o {{x}} dni, dzięki czemu kalendarz zawsze pokazuje kolejne {{x}} dni dostępnych terminów.",apps/web/public/static/locales/az/common.json (1)
2304-2304: Polish: prefer native term over “slot”.“vaxt aralıqları” reads more natural than “slotlar”.
- "connect_now_unavailable_tooltip": "İndi qoşulmaq mümkün deyil. Zəhmət olmasa yuxarıdakı slotlardan rezervasiya edin və ya sonra yenidən cəhd edin.", + "connect_now_unavailable_tooltip": "İndi qoşulmaq mümkün deyil. Zəhmət olmasa yuxarıdakı vaxt aralıqlarından rezervasiya edin və ya sonra yenidən cəhd edin.",apps/web/public/static/locales/ar/common.json (1)
2930-2930: Polish phrasing for number agreement.
Avoid awkward “للـ {{x}} يومًا”. Recommend neutral phrasing.Apply:
-"always_show_x_days_description": "ينقل تلقائيًا نافذة الحجز لمدة {{x}} يوم إلى الأمام كل يوم، مما يضمن أن تقويمك يعرض دائمًا الفترات المتاحة للـ {{x}} يومًا القادمة.", +"always_show_x_days_description": "ينقل تلقائيًا نافذة الحجز لمدة {{x}} يومًا إلى الأمام كل يوم، لضمان عرض تقويمك دائمًا الفترات المتاحة للأيام الـ {{x}} القادمة.",apps/web/public/static/locales/cs/common.json (2)
2304-2304: Smoother phrasing for tooltip (optional).
Current text is clear; this variant reads more naturally.- "connect_now_unavailable_tooltip": "Připojit nyní není momentálně k dispozici. Prosím rezervujte si termín z výše uvedených slotů nebo to zkuste později.", + "connect_now_unavailable_tooltip": "Připojení není momentálně k dispozici. Rezervujte si prosím termín z výše uvedených časových slotů nebo to zkuste později.",
2930-2930: Consider pluralization-safe copy.
Avoid hardcoding “{{x}} dní”; use ICU-style plural already used elsewhere in this file.- "always_show_x_days_description": "Automaticky posouvá {{x}}-denní rezervační okno každý den dopředu, což zajišťuje, že váš kalendář vždy zobrazuje dostupné sloty na příštích {{x}} dní.", + "always_show_x_days_description": "Každý den automaticky posune okno rezervací tak, aby kalendář vždy zobrazoval dostupné sloty na příštích $t(day, {\"count\": {{x}}}).",apps/web/public/static/locales/fr/common.json (3)
2304-2304: Microcopy tweak for fluencySmoother phrasing in FR and avoids plural ambiguity.
- "connect_now_unavailable_tooltip": "La connexion immédiate n'est pas disponible pour le moment. Veuillez réserver parmi les créneaux ci-dessus ou réessayer plus tard.", + "connect_now_unavailable_tooltip": "La connexion immédiate n’est pas disponible pour le moment. Veuillez réserver un créneau ci‑dessus ou réessayer plus tard.",
2929-2929: Refine style (“fenêtre glissante”)More natural and concise FR while keeping meaning.
- "always_show_x_days_description": "Déplace automatiquement la fenêtre de réservation de {{x}} jours chaque jour, garantissant que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.", + "always_show_x_days_description": "Fait avancer chaque jour une fenêtre glissante de {{x}} jours afin d’afficher en permanence les {{x}} prochains jours de créneaux disponibles.",
3151-3152: Minor clarity: “à l’aide de l’IA”Prepositional tweak reads more idiomatic in FR.
- "translate_description_button_description": "Traduire automatiquement les titres et descriptions dans la langue du navigateur du visiteur en utilisant l'IA.", + "translate_description_button_description": "Traduire automatiquement les titres et descriptions dans la langue du navigateur du visiteur à l’aide de l’IA.",apps/web/public/static/locales/ca/common.json (3)
1023-1023: Keep “Show/Hide advanced settings” verb forms consistent.
Current “Amaga...” pairs better with “Mostra...”. Suggest updating the nearby “show_advanced_settings” value.- "show_advanced_settings": "Mostrar configuració avançada", + "show_advanced_settings": "Mostra la configuració avançada",Based on learnings
2304-2304: Align tooltip with the UI label and improve flow.
Use the feature name “Connecta ara” and a smoother construction.- "connect_now_unavailable_tooltip": "Connectar ara no està disponible en aquest moment. Si us plau, reserva des dels espais disponibles anteriors o torna-ho a provar més tard.", + "connect_now_unavailable_tooltip": "«Connecta ara» no està disponible en aquest moment. Si us plau, tria una de les franges disponibles més amunt o torna-ho a provar més tard.",
3349-3349: Minor phrasing polish.
“Defineix l’idioma de la interfície...” sounds a touch more natural.- "interface_language_description": "Estableix el teu idioma preferit per a la interfície de reserva", + "interface_language_description": "Defineix l'idioma de la interfície de reserva",apps/web/public/static/locales/vi/common.json (2)
2304-2304: Use consistent booking terminology (“khung giờ”).
Replace “ô trống” with “khung giờ trống” to align with the rest of the file.- "connect_now_unavailable_tooltip": "Kết nối ngay hiện không khả dụng. Vui lòng đặt lịch từ các ô trống phía trên hoặc thử lại sau.", + "connect_now_unavailable_tooltip": "Kết nối ngay hiện không khả dụng. Vui lòng đặt lịch từ các khung giờ trống phía trên hoặc thử lại sau.",
2929-2929: Minor polish + terminology consistency.
Keep meaning, switch “ô trống” → “khung giờ trống” for consistency.- "always_show_x_days_description": "Tự động di chuyển cửa sổ đặt lịch {{x}} ngày mỗi ngày, đảm bảo lịch của bạn luôn hiển thị {{x}} ngày tiếp theo có các ô trống khả dụng.", + "always_show_x_days_description": "Tự động di chuyển cửa sổ đặt lịch {{x}} ngày mỗi ngày, đảm bảo lịch của bạn luôn hiển thị {{x}} ngày tiếp theo có các khung giờ trống khả dụng.",apps/web/public/static/locales/el/common.json (2)
3348-3348: Optional: tighten scope of “interface_language_description”.
If this setting applies to the booking UI only, consider:- "interface_language_description": "Ορίστε την προτιμώμενη γλώσσα για το περιβάλλον κρατήσεων", + "interface_language_description": "Ορίστε την προτιμώμενη γλώσσα διεπαφής κρατήσεων"If it’s global, use: “Ορίστε την προτιμώμενη γλώσσα διεπαφής”.
1-1: Process note: CLA is not signed for PR #23991.
Merging will be blocked until the CLA check passes. Please have the contributor associate their commit email with a GitHub account and re‑run the CLA check.apps/web/public/static/locales/sv/common.json (1)
3349-3349: Optional: consider “Välj” over “Ange”Both are fine; “Välj ditt föredragna språk …” may read more UI‑like. No change required.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(12 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 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(13 hunks)apps/web/public/static/locales/no/common.json(13 hunks)apps/web/public/static/locales/pl/common.json(13 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(14 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(12 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- apps/web/public/static/locales/zh-TW/common.json
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
📚 Learning: 2025-09-12T14:46:29.720Z
Learnt from: Udit-takkar
PR: calcom/cal.com#23761
File: packages/features/shell/navigation/Navigation.tsx:125-130
Timestamp: 2025-09-12T14:46:29.720Z
Learning: In calcom/cal.com, translations for other locales are added later in the development process, so don't flag missing translation keys in non-English locale files when only the English locale has been updated.
Applied to files:
apps/web/public/static/locales/ca/common.json
| "translate_description_button": "Αυτόματη μετάφραση τίτλου και περιγραφής", | ||
| "translate_description_button_description": "Αυτόματη μετάφραση τίτλων και περιγραφών στη γλώσσα του προγράμματος περιήγησης του επισκέπτη χρησιμοποιώντας AI.", |
There was a problem hiding this comment.
Minor wording polish: spell out “AI” in Greek.
Prefer “τεχνητή νοημοσύνη” for clarity and consistency.
- "translate_description_button_description": "Αυτόματη μετάφραση τίτλων και περιγραφών στη γλώσσα του προγράμματος περιήγησης του επισκέπτη χρησιμοποιώντας AI.",
+ "translate_description_button_description": "Αυτόματη μετάφραση τίτλων και περιγραφών στη γλώσσα του προγράμματος περιήγησης του επισκέπτη χρησιμοποιώντας τεχνητή νοημοσύνη."📝 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.
| "translate_description_button": "Αυτόματη μετάφραση τίτλου και περιγραφής", | |
| "translate_description_button_description": "Αυτόματη μετάφραση τίτλων και περιγραφών στη γλώσσα του προγράμματος περιήγησης του επισκέπτη χρησιμοποιώντας AI.", | |
| "translate_description_button": "Αυτόματη μετάφραση τίτλου και περιγραφής", | |
| "translate_description_button_description": "Αυτόματη μετάφραση τίτλων και περιγραφών στη γλώσσα του προγράμματος περιήγησης του επισκέπτη χρησιμοποιώντας τεχνητή νοημοσύνη.", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/el/common.json around lines 3151 to 3152, the
Greek translation uses the abbreviation "AI"; update the value of
"translate_description_button_description" to replace "AI" with the spelled-out
Greek phrase "τεχνητή νοημοσύνη" so the string reads "...χρήσιμοποιώντας τεχνητή
νοημοσύνη.", preserving punctuation and surrounding text exactly.
| "guests_field_must_be_multiemail": "Külaliste väli peab olema tüüpi 'Mitu e-posti'", | ||
| "show_on_booking_page": "Näita broneerimislehel", |
There was a problem hiding this comment.
Keep field labels in escaped double quotes and tighten the copy.
UI copy elsewhere presents field labels in escaped double quotes; switching to straight single quotes breaks that convention and leaves the Estonian sentence slightly awkward. Please revert to escaped double quotes and match the label wording more closely.
Apply this diff:
- "guests_field_must_be_multiemail": "Külaliste väli peab olema tüüpi 'Mitu e-posti'",
+ "guests_field_must_be_multiemail": "Väli \"Külalised\" peab olema tüüpi \"Mitme e-posti aadressiga\"",📝 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.
| "guests_field_must_be_multiemail": "Külaliste väli peab olema tüüpi 'Mitu e-posti'", | |
| "show_on_booking_page": "Näita broneerimislehel", | |
| "guests_field_must_be_multiemail": "Väli \"Külalised\" peab olema tüüpi \"Mitme e-posti aadressiga\"", | |
| "show_on_booking_page": "Näita broneerimislehel", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/et/common.json around lines 2207-2208, the
value for "guests_field_must_be_multiemail" uses straight single quotes and
awkward wording; change it to use escaped double quotes and tighten the Estonian
to match the label wording, e.g. update the string to: Külaliste väli peab olema
tüüpi \"Mitu e-posti aadressi\" so it follows the project's escaping convention
and mirrors the UI label more closely.
| "attendees": "Participantes", | ||
| "add_attendees": "Adicionar Participantes", | ||
| "show_advanced_settings": "Mostrar Configurações Avançadas", | ||
| "hide_advanced_settings": "Ocultar configurações avançadas", |
There was a problem hiding this comment.
Match the paired label’s capitalization
The adjacent toggle label is “Mostrar Configurações Avançadas” (Title Case). Align this entry to “Ocultar Configurações Avançadas” for visual consistency.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/pt-BR/common.json around line 1023, the
translation value uses sentence case "Ocultar configurações avançadas"; change
it to Title Case "Ocultar Configurações Avançadas" to match the paired toggle
label’s capitalization for visual consistency.
| "locked_by_team_admin": "Bloqueado pelo administrador da equipa", | ||
| "app_not_connected": "Não associou uma conta {{appName}}.", | ||
| "connect_now": "Associar agora", | ||
| "connect_now_unavailable_tooltip": "Conectar agora está indisponível no momento. Por favor, reserve a partir dos horários acima ou tente novamente mais tarde.", |
There was a problem hiding this comment.
Align with “Associar agora” label and pt‑PT style.
- "connect_now_unavailable_tooltip": "Conectar agora está indisponível no momento. Por favor, reserve a partir dos horários acima ou tente novamente mais tarde.",
+ "connect_now_unavailable_tooltip": "Associar agora está indisponível de momento. Por favor, escolha um dos horários acima ou tente novamente mais tarde.",📝 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.
| "connect_now_unavailable_tooltip": "Conectar agora está indisponível no momento. Por favor, reserve a partir dos horários acima ou tente novamente mais tarde.", | |
| "connect_now_unavailable_tooltip": "Associar agora está indisponível de momento. Por favor, escolha um dos horários acima ou tente novamente mais tarde.", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/pt/common.json around line 2304, the tooltip
text uses "Conectar agora" and Brazilian phrasing; update it to match the
"Associar agora" label and pt‑PT style by replacing "Conectar agora" with
"Associar agora" and adjusting wording to pt‑PT (e.g., "indisponível de momento"
and "reserve a partir dos horários indicados acima ou tente novamente mais
tarde") so the label and regional style are consistent.
| "locked_by_team_admin": "Ekip yöneticisi tarafından kilitlendi", | ||
| "app_not_connected": "{{appName}} hesabı bağlamadınız.", | ||
| "connect_now": "Hemen bağlan", | ||
| "connect_now_unavailable_tooltip": "Şu anda hemen bağlan kullanılamıyor. Lütfen yukarıdaki zaman dilimlerinden rezervasyon yapın veya daha sonra tekrar deneyin.", |
There was a problem hiding this comment.
Polish the Connect Now tooltip copy
“hemen bağlan” burada özel ad gibi duruyor; küçük harfle ve nesnesiz bırakmak Türkçe’de kulağa takılıyor. Öneri: özelliği isim olarak vurgulayıp cümleyi akıcı hale getirelim.
- "connect_now_unavailable_tooltip": "Şu anda hemen bağlan kullanılamıyor. Lütfen yukarıdaki zaman dilimlerinden rezervasyon yapın veya daha sonra tekrar deneyin.",
+ "connect_now_unavailable_tooltip": "Şu anda Hemen Bağlan özelliği kullanılamıyor. Lütfen yukarıdaki zaman dilimlerinden rezervasyon yapın veya daha sonra tekrar deneyin.",📝 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.
| "connect_now_unavailable_tooltip": "Şu anda hemen bağlan kullanılamıyor. Lütfen yukarıdaki zaman dilimlerinden rezervasyon yapın veya daha sonra tekrar deneyin.", | |
| "connect_now_unavailable_tooltip": "Şu anda Hemen Bağlan özelliği kullanılamıyor. Lütfen yukarıdaki zaman dilimlerinden rezervasyon yapın veya daha sonra tekrar deneyin.", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/tr/common.json around line 2304, the tooltip
copy treats "hemen bağlan" as lowercase and objectless which reads awkward in
Turkish; update the string to highlight the feature name and smooth the sentence
flow, e.g. capitalize and quote the feature name (“Hemen Bağlan”) and rephrase
to something like: ““Hemen Bağlan” özelliği şu anda kullanılamıyor. Lütfen
yukarıdaki zaman dilimlerinden rezervasyon yapın veya daha sonra tekrar
deneyin.” Replace the existing value with this improved phrasing.
5214058 to
685f2c7
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (40)
apps/web/public/static/locales/fi/common.json (3)
2304-2304: Tooltip could be shorter for readability (optional)Consider a more concise phrasing.
- "connect_now_unavailable_tooltip": "Yhdistä nyt -toiminto ei ole tällä hetkellä käytettävissä. Varaa yllä olevista ajoista tai yritä myöhemmin uudelleen.", + "connect_now_unavailable_tooltip": "Yhdistä nyt -toiminto ei ole käytettävissä. Varaa yllä olevista ajoista tai yritä myöhemmin."
3348-3349: Polish phrasing for clarity (minor)"Varausliittymä" can read awkwardly; suggest more natural Finnish.
- "interface_language_description": "Aseta varausliittymän haluamasi kieli", + "interface_language_description": "Aseta varaussivun käyttöliittymän kieli",
3526-3534: PBAC action descriptions: prefer plural for consistencyElsewhere PBAC uses plural objects (e.g., “tapahtumatyyppejä”). Align availability/OOO to plural.
- "pbac_desc_create_availability": "Luo saatavuus", - "pbac_desc_view_availability": "Näytä saatavuus", - "pbac_desc_update_availability": "Päivitä saatavuus", - "pbac_desc_delete_availability": "Poista saatavuus", + "pbac_desc_create_availability": "Luo saatavuuksia", + "pbac_desc_view_availability": "Näytä saatavuudet", + "pbac_desc_update_availability": "Päivitä saatavuuksia", + "pbac_desc_delete_availability": "Poista saatavuuksia", - "pbac_desc_create_out_of_office": "Luo poissaolo", - "pbac_desc_view_out_of_office": "Näytä poissaolo", - "pbac_desc_update_out_of_office": "Päivitä poissaolo", - "pbac_desc_delete_out_of_office": "Poista poissaolo", + "pbac_desc_create_out_of_office": "Luo poissaoloja", + "pbac_desc_view_out_of_office": "Näytä poissaolot", + "pbac_desc_update_out_of_office": "Päivitä poissaoloja", + "pbac_desc_delete_out_of_office": "Poista poissaoloja",apps/web/public/static/locales/bg/common.json (2)
1236-1236: Unify action tone for “set_to_default”/“set_as_default”If used as a button/action, prefer imperative for both keys.
- "set_to_default": "Задаване по подразбиране", + "set_to_default": "Задай по подразбиране",Confirm usage context (button vs. label) and align “set_as_default” (Line 2071) accordingly.
2208-2208: Quote style consistencyPrefer Bulgarian quotes „…“ (or no quotes) over ASCII single quotes inside UI strings.
- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",apps/web/public/static/locales/he/common.json (5)
324-324: Prefer imperative for action labels (“Get started”).Use an actionable button label rather than an infinitive.
- "get_started": "להתחיל", + "get_started": "התחל",If you prefer gender‑neutral UI, consider: "התחל/י".
2304-2304: Minor tone/UX: make instruction gender‑neutral and natural.- "connect_now_unavailable_tooltip": "התחברות מיידית אינה זמינה כרגע. אנא הזמן מהמשבצות למעלה או נסה שוב מאוחר יותר.", + "connect_now_unavailable_tooltip": "התחברות מיידית אינה זמינה כרגע. אנא הזמן/י ממשבצות הזמן שמעל או נסה/י שוב מאוחר יותר.",
2929-2929: Crisper phrasing for rolling window description.- "always_show_x_days_description": "מזיז אוטומטית את חלון ההזמנות של {{x}} ימים קדימה בכל יום, ומבטיח שהלוח שלך תמיד מציג את {{x}} הימים הבאים של משבצות זמינות.", + "always_show_x_days_description": "שומר על חלון הזמנות מתגלגל של {{x}} ימים כך שתמיד יוצגו {{x}} הימים הקרובים.",
3151-3151: Button should be imperative.- "translate_description_button": "תרגום אוטומטי של כותרת ותיאור", + "translate_description_button": "תרגם/י אוטומטית כותרת ותיאור",
3348-3348: Minor stylistic nit (optional).- "interface_language_description": "הגדר את השפה המועדפת עליך לממשק ההזמנות", + "interface_language_description": "הגדר את השפה המועדפת עליך עבור ממשק ההזמנות",apps/web/public/static/locales/es-419/common.json (1)
2304-2305: Minor copy tweak for fluency.
“desde los espacios anteriores” suena poco natural; “en horarios anteriores” fluye mejor en el contexto de reservas.- "connect_now_unavailable_tooltip": "Conectar ahora no está disponible en este momento. Por favor, reserva desde los espacios anteriores o intenta más tarde.", + "connect_now_unavailable_tooltip": "Conectar ahora no está disponible en este momento. Reserva en horarios anteriores o inténtalo de nuevo más tarde.",apps/web/public/static/locales/ko/common.json (4)
1334-1334: Reword “multiple durations” for natural Korean현재: "여러 시간 옵션 허용"은 “많은 시간”으로 읽힐 수 있습니다. “기간/지속 시간”을 써 주세요.
- "allow_multiple_durations": "여러 시간 옵션 허용", + "allow_multiple_durations": "여러 기간 옵션 허용",
2207-2207: Confirm UI term for field type “multiemail”"여러 이메일"이 필드 유형 라벨과 일치하는지 확인 부탁드립니다. 제품 내 용어가 "다중 이메일" 또는 다른 명칭이면 동일하게 맞춰 주세요.
- "guests_field_must_be_multiemail": "게스트 필드는 '여러 이메일' 유형이어야 합니다", + "guests_field_must_be_multiemail": "게스트 필드는 '다중 이메일' 유형이어야 합니다"
2304-2304: Avoid layout‑relative wording (“위의”)작은 화면 등에서 “위의 시간대”가 어색할 수 있습니다. 위치 비의존 표현 제안.
- "connect_now_unavailable_tooltip": "지금 연결하기 기능을 사용할 수 없습니다. 위의 시간대에서 예약하거나 나중에 다시 시도해 주세요.", + "connect_now_unavailable_tooltip": "지금 연결하기 기능을 사용할 수 없습니다. 사용 가능한 시간대에서 예약하시거나 나중에 다시 시도해 주세요.",
3520-3529: Approve, but note “availability” glossary consistency"가용성" 용례가 일관되어 좋습니다. 파일 상단의 "availability": "유효성" 등 기존 키들과 용어를 추후 "가용성"으로 통일하면 검색성 향상됩니다. 변경 범위 밖이므로参考만 남깁니다.
apps/web/public/static/locales/fr/common.json (2)
2304-2304: Polish phrasing (optional).
More idiomatic and with proper typography.- "connect_now_unavailable_tooltip": "La connexion immédiate n'est pas disponible pour le moment. Veuillez réserver parmi les créneaux ci-dessus ou réessayer plus tard.", + "connect_now_unavailable_tooltip": "La connexion immédiate n’est pas disponible actuellement. Veuillez choisir un créneau ci‑dessus ou réessayer plus tard.",
3151-3152: Optional style tweak.
“à l’aide de l’IA” reads slightly more natural than “en utilisant l’IA”.- "translate_description_button_description": "Traduire automatiquement les titres et descriptions dans la langue du navigateur du visiteur en utilisant l'IA.", + "translate_description_button_description": "Traduire automatiquement les titres et descriptions dans la langue du navigateur du visiteur à l’aide de l’IA.",apps/web/public/static/locales/it/common.json (3)
2207-2208: Quote the field label for clarityPrefer quoting the UI field name to avoid ambiguity.
- "guests_field_must_be_multiemail": "Il campo ospiti deve essere di tipo 'Email multiple'", + "guests_field_must_be_multiemail": "Il campo \"Ospiti\" deve essere di tipo \"Email multiple\"",
2304-2305: Smoother tooltip phrasingMinor copy tweak for natural flow.
- "connect_now_unavailable_tooltip": "Connetti ora non è disponibile in questo momento. Prenota dagli slot sopra o riprova più tardi.", + "connect_now_unavailable_tooltip": "Connetti ora non è disponibile al momento. Seleziona uno degli slot disponibili sopra o riprova più tardi.",
3581-3582: Align “Ora/Orario” style with existing labelsElsewhere you use “Ora di …” (es. “Ora di inizio”, “Ora di fine”). Suggest aligning these two.
- "booking_creation_time": "Orario di creazione prenotazione", - "meeting_start_time": "Orario di inizio riunione", + "booking_creation_time": "Ora di creazione della prenotazione", + "meeting_start_time": "Ora di inizio riunione",apps/web/public/static/locales/tr/common.json (1)
3348-3348: LGTM (optional micro‑polish)Current is fine. Optional: “Rezervasyon arayüzünün dilini ayarlayın.”
apps/web/public/static/locales/hu/common.json (1)
324-324: Tone consistency: prefer formal imperative.- "get_started": "Kezdjük el", + "get_started": "Kezdje el",apps/web/public/static/locales/de/common.json (4)
324-324: Microcopy polish for CTAConsider “Jetzt loslegen” for a more button-like, actionable label and to align with similar phrasing elsewhere.
- "get_started": "Loslegen", + "get_started": "Jetzt loslegen",
2304-2305: Tooltip wording tweak (optional)Slightly smoother German and clarify selection action.
- "connect_now_unavailable_tooltip": "Sofortige Verbindung ist derzeit nicht verfügbar. Bitte buchen Sie aus den obigen Zeitfenstern oder versuchen Sie es später erneut.", + "connect_now_unavailable_tooltip": "Die Sofortverbindung ist derzeit nicht verfügbar. Bitte wählen Sie eine Zeit aus den oben angezeigten Zeitfenstern oder versuchen Sie es später erneut.",
3151-3153: Minor wording refinementKeep the button as-is; for the description, “mit KI” reads more idiomatic than “mittels KI”.
- "translate_description_button_description": "Titel und Beschreibungen automatisch in die Browsersprache des Besuchers mittels KI übersetzen.", + "translate_description_button_description": "Titel und Beschreibungen automatisch in die Browsersprache des Besuchers mit KI übersetzen.",
3182-3183: Natural phrasing for time label“Besprechungsstartzeit” is a bit clunky; suggest common phrasing.
- "meeting_start_time": "Besprechungsstartzeit", + "meeting_start_time": "Startzeit des Meetings",apps/web/public/static/locales/ru/common.json (2)
2304-2304: Consistent quotes and tighter tooltipSwitch to angle quotes; simplify sentence.
- "connect_now_unavailable_tooltip": "Функция \"Подключиться сейчас\" недоступна в данный момент. Пожалуйста, выберите время из доступных выше слотов или попробуйте позже.", + "connect_now_unavailable_tooltip": "Функция «Подключиться сейчас» недоступна. Выберите время из доступных слотов выше или попробуйте позже.",
2929-2929: Grammar tweak to avoid number declension pitfalls“на ближайшие {{x}} дней” reads well for any x.
- "always_show_x_days_description": "Автоматически сдвигает {{x}}-дневное окно бронирования вперед каждый день, чтобы ваш календарь всегда показывал следующие {{x}} дней доступных слотов.", + "always_show_x_days_description": "Автоматически сдвигает окно бронирования на {{x}} дней вперёд каждый день, чтобы в календаре всегда были видны ближайшие {{x}} дней.",apps/web/public/static/locales/ro/common.json (6)
324-324: Unify CTA tone: use singular imperativePrefer “Începe” for buttons to match common CTA style elsewhere.
- "get_started": "Începeți", + "get_started": "Începe"
1334-1334: Prefer singular imperative for settingsConsistent with other toggles.
- "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple",
2304-2304: Clarify tooltip by quoting the button labelUse natural phrasing and match UI label.
- "connect_now_unavailable_tooltip": "Conectarea acum nu este disponibilă momentan. Vă rugăm să rezervați din sloturile de mai sus sau să încercați din nou mai târziu.", + "connect_now_unavailable_tooltip": "„Conectează acum” nu este disponibil momentan. Selectează un interval de mai sus sau încearcă din nou mai târziu.",
2929-2929: Consistent person/tone (“tău” vs “dumneavoastră”)Most CTAs use informal second person; align here.
- "always_show_x_days_description": "Mută automat fereastra de rezervare de {{x}} zile înainte în fiecare zi, asigurându-se că calendarul dumneavoastră arată mereu următoarele {{x}} zile de sloturi disponibile.", + "always_show_x_days_description": "Mută automat fereastra de rezervare cu {{x}} zile înainte în fiecare zi, astfel încât calendarul tău să arate mereu următoarele {{x}} zile de intervale disponibile.",
3151-3152: Use clear imperative for button; align description toneShorter, natural Romanian.
- "translate_description_button": "Traduceți automat titlul și descrierea", - "translate_description_button_description": "Traduceți automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", + "translate_description_button": "Tradu automat titlul și descrierea", + "translate_description_button_description": "Tradu automat titlurile și descrierile în limba browserului vizitatorului, folosind AI.",
1-1: Operational: CLA not signed blocks mergeCLAassistant indicates the contributor hasn’t signed the CLA for PR #23991. Please resolve before merging: ensure commits map to a GitHub user and re-run the CLA check.
apps/web/public/static/locales/uk/common.json (1)
1236-1236: Consistency: prefer “Установити …” to match existing keys (e.g., Line 2071).- "set_to_default": "Встановити за замовчуванням", + "set_to_default": "Установити за замовчуванням",apps/web/public/static/locales/sr/common.json (2)
2304-2304: Wording tweak for clarityMore idiomatic instruction for users.
- "connect_now_unavailable_tooltip": "Povezivanje odmah trenutno nije dostupno. Molimo rezervišite iz gornjih termina ili pokušajte kasnije.", + "connect_now_unavailable_tooltip": "Povezivanje odmah trenutno nije dostupno. Molimo izaberite jedan od gornjih termina ili pokušajte kasnije.",
3348-3348: Minor grammar: genitive form reads better- "interface_language_description": "Postavite željeni jezik za interfejs za rezervacije", + "interface_language_description": "Postavite željeni jezik interfejsa za rezervacije",apps/web/public/static/locales/eu/common.json (1)
324-324: LGTM; tiny meta noteTranslation reads well. Before merging, ensure the CLA is signed for PR #23991 (CLAassistant flagged it).
apps/web/public/static/locales/el/common.json (2)
2304-2304: Tone consistency tweak (“Παρακαλούμε”).
Minor polish to match formal plural used across UI.- "connect_now_unavailable_tooltip": "Η άμεση σύνδεση δεν είναι διαθέσιμη αυτή τη στιγμή. Παρακαλώ κάντε κράτηση από τις παραπάνω διαθέσιμες ώρες ή δοκιμάστε ξανά αργότερα.", + "connect_now_unavailable_tooltip": "Η άμεση σύνδεση δεν είναι διαθέσιμη αυτή τη στιγμή. Παρακαλούμε κάντε κράτηση από τις παραπάνω διαθέσιμες ώρες ή δοκιμάστε ξανά αργότερα.",
1-3: Operational: CLA is currently unsigned for this PR.
Merging will likely be blocked until the contributor signs via CLAassistant.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(11 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 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(12 hunks)apps/web/public/static/locales/no/common.json(13 hunks)apps/web/public/static/locales/pl/common.json(13 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(14 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(11 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/web/public/static/locales/da/common.json
🚧 Files skipped from review as they are similar to previous changes (3)
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/pt-BR/common.json
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
📚 Learning: 2025-09-12T14:46:29.720Z
Learnt from: Udit-takkar
PR: calcom/cal.com#23761
File: packages/features/shell/navigation/Navigation.tsx:125-130
Timestamp: 2025-09-12T14:46:29.720Z
Learning: In calcom/cal.com, translations for other locales are added later in the development process, so don't flag missing translation keys in non-English locale files when only the English locale has been updated.
Applied to files:
apps/web/public/static/locales/ca/common.json
| "pbac_desc_delete_workflows": "លុបលំហូរការងារចេញពីប្រព័ន្ធ", | ||
| "pbac_resource_webhook": "Webhook", | ||
| "pbac_resource_availability": "ភាពអាចប្រើបាន", | ||
| "pbac_resource_out_of_office": "ក្រៅការិយាល័យ", |
There was a problem hiding this comment.
Unify OOO terminology with existing strings (“ចេញពីការិយាល័យ”).
Elsewhere in KM locale OOO = “ចេញពីការិយាល័យ”. Align PBAC entries to avoid mixed terms.
- "pbac_resource_out_of_office": "ក្រៅការិយាល័យ",
+ "pbac_resource_out_of_office": "ចេញពីការិយាល័យ",
- "pbac_desc_create_out_of_office": "បង្កើតស្ថានភាពក្រៅការិយាល័យ",
+ "pbac_desc_create_out_of_office": "បង្កើតស្ថានភាពចេញពីការិយាល័យ",
- "pbac_desc_view_out_of_office": "មើលស្ថានភាពក្រៅការិយាល័យ",
+ "pbac_desc_view_out_of_offિસ": "មើលស្ថានភាពចេញពីការិយាល័យ",
- "pbac_desc_update_out_of_office": "ធ្វើបច្ចុប្បន្នភាពស្ថានភាពក្រៅការិយាល័យ",
+ "pbac_desc_update_out_of_office": "ធ្វើបច្ចុប្បន្នភាពស្ថានភាពចេញពីការិយាល័យ",
- "pbac_desc_delete_out_of_office": "លុបស្ថានភាពក្រៅការិយាល័យ",
+ "pbac_desc_delete_out_of_office": "លុបស្ថានភាពចេញពីការិយាល័យ",Also applies to: 3531-3533
🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around lines 3521 and
3531-3533, the PBAC OOO string uses "ក្រៅការិយាល័យ" which is inconsistent with
the rest of the KM locale; update the value(s) for pbac_resource_out_of_office
(and the other PBAC OOO-related entries at lines 3531-3533) to use the
established term "ចេញពីការិយាល័យ" so all OOO translations are unified across the
file.
685f2c7 to
a594e77
Compare
There was a problem hiding this comment.
Actionable comments posted: 23
🧹 Nitpick comments (23)
apps/web/public/static/locales/sk-SK/common.json (2)
1-1: Heads‑up: CLA gate will block merge.CLAassistant reports the contributor hasn’t signed the CLA for PR #23991. Please ensure the commit author is a GitHub user and complete the CLA recheck before merging.
2304-2304: Natural phrasing for tooltip.Slight reword for idiomatic SK and clarity.
- "connect_now_unavailable_tooltip": "Pripojenie teraz je momentálne nedostupné. Prosím, rezervujte si termín z vyššie uvedených časových slotov alebo to skúste neskôr.", + "connect_now_unavailable_tooltip": "Funkcia „Pripojiť teraz“ je momentálne nedostupná. Vyberte si čas z dostupných slotov vyššie alebo to skúste neskôr.",apps/web/public/static/locales/pt-BR/common.json (3)
2304-2304: Slight tooltip polish for clarity.
Add quotes and tighten the sentence.- "connect_now_unavailable_tooltip": "Conectar agora está indisponível no momento. Por favor, agende nos horários acima ou tente novamente mais tarde.", + "connect_now_unavailable_tooltip": "O \"Conectar agora\" está indisponível no momento. Agende em um dos horários acima ou tente novamente mais tarde.",
3348-3348: Minor phrasing improvement.
Prefer “o idioma preferido da interface” for naturalness.- "interface_language_description": "Defina seu idioma preferido para a interface de agendamento", + "interface_language_description": "Defina o idioma preferido da interface de agendamento",
3581-3581: Unify “booking” terminology.
Elsewhere you use “reserva” (e.g., lines 3728–3729). Suggest “Horário de criação da reserva”.- "booking_creation_time": "Horário de criação do agendamento", + "booking_creation_time": "Horário de criação da reserva",apps/web/public/static/locales/km/common.json (1)
2208-2208: Minor copy check: quote style. Consider dropping the inner single quotes around អ៊ីមែលច្រើន to align with other validation messages, unless quotes are standard in KM locale here.apps/web/public/static/locales/pl/common.json (1)
3521-3533: Keep PBAC descriptions in noun-phrase style
Other PBAC descriptions use verbal nouns (“Tworzenie…”, “Wyświetlanie…”). These eight new entries revert to imperatives (“Utwórz…”, “Wyświetl…”), breaking consistency. Please resume the noun-phrase pattern (e.g., “Tworzenie dostępności”, “Wyświetlanie statusu poza biurem”).apps/web/public/static/locales/bn/common.json (3)
2304-2304: Polish tooltip for natural phrasingCurrent: “এখন সংযোগ করা অনুপলব্ধ।” Suggest smoother, user-facing copy.
- "connect_now_unavailable_tooltip": "এখন সংযোগ করা অনুপলব্ধ। অনুগ্রহ করে উপরের স্লট থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।", + "connect_now_unavailable_tooltip": "এই মুহূর্তে সংযোগ করা সম্ভব নয়। উপরের স্লট থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।",
2929-2930: Minor terminology tweak (optional)“উইন্ডো” → “সময়ের পরিসর” reads more native.
- "always_show_x_days_description": "প্রতিদিন স্বয়ংক্রিয়ভাবে {{x}}-দিনের বুকিং উইন্ডো সামনে সরিয়ে দেয়, যা নিশ্চিত করে যে আপনার ক্যালেন্ডার সর্বদা পরবর্তী {{x}} দিনের উপলব্ধ স্লট দেখায়।", + "always_show_x_days_description": "প্রতিদিন স্বয়ংক্রিয়ভাবে {{x}}‑দিনের বুকিং সময়ের পরিসর সামনে সরিয়ে দেয়, যাতে আপনার ক্যালেন্ডার সর্বদা পরবর্তী {{x}} দিনের উপলব্ধ স্লট দেখায়।",
3151-3152: Button copy consistency (optional)“এবং” → “ও” is slightly crisper in Bengali UI; description looks good.
- "translate_description_button": "শিরোনাম এবং বিবরণ স্বয়ংক্রিয়ভাবে অনুবাদ করুন", + "translate_description_button": "শিরোনাম ও বর্ণনা স্বয়ংক্রিয়ভাবে অনুবাদ করুন",apps/web/public/static/locales/zh-TW/common.json (1)
2304-2304: Unify verbs and booking term
- 與 2303「立即連結」一致,建議用「連結」。
- 本檔偏好「預約」而非「預訂」。
- "connect_now_unavailable_tooltip": "立即連接目前不可用。請從上方時段預訂或稍後再試。", + "connect_now_unavailable_tooltip": "目前無法立即連結。請從上方時段預約或稍後再試。",apps/web/public/static/locales/az/common.json (2)
1334-1334: Optional: align voice to other togglesConsider singular imperative (“… icazə ver”) to match labels like “Aktiv et/Deaktiv et”.
- "allow_multiple_durations": "Çoxsaylı müddətlərə icazə verin", + "allow_multiple_durations": "Çoxsaylı müddətlərə icazə ver",
2304-2304: Polish: avoid English loanword “slot”Prefer “vaxt aralığı”.
- "connect_now_unavailable_tooltip": "İndi qoşulmaq mümkün deyil. Zəhmət olmasa yuxarıdakı slotlardan rezervasiya edin və ya sonra yenidən cəhd edin.", + "connect_now_unavailable_tooltip": "İndi qoşulmaq mümkün deyil. Zəhmət olmasa yuxarıdakı vaxt aralıqlarından rezervasiya edin və ya sonra yenidən cəhd edin.",apps/web/public/static/locales/bg/common.json (3)
2208-2208: Use Bulgarian quotes for UI term.Stylistic polish.
- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",
2304-2304: Minor phrasing improvement.More natural BG word order.
- "connect_now_unavailable_tooltip": "Свързването сега не е налично в момента. Моля, резервирайте от горните слотове или опитайте отново по-късно.", + "connect_now_unavailable_tooltip": "В момента свързването не е налично. Моля, резервирайте от наличните слотове по‑горе или опитайте отново по‑късно.",
3348-3348: Tiny grammar tweak.Add “на” for natural phrasing.
- "interface_language_description": "Задайте предпочитания от вас език за интерфейса за резервации", + "interface_language_description": "Задайте предпочитания от вас език на интерфейса за резервации",apps/web/public/static/locales/de/common.json (6)
1334-1334: Use “Laufzeiten” for established terminology.Aligns with usage elsewhere (“verfügbare Laufzeiten”, “Standardlaufzeit”).
- "allow_multiple_durations": "Mehrere Dauern erlauben", + "allow_multiple_durations": "Mehrere Laufzeiten erlauben",
2929-2929: Prefer “Zeitslots” for consistency.Most of the file uses “Zeitslot/Zeitslots”.
- "always_show_x_days_description": "Verschiebt das {{x}}-Tage-Buchungsfenster automatisch jeden Tag nach vorne und stellt sicher, dass Ihr Kalender immer die nächsten {{x}} Tage mit verfügbaren Zeitfenstern anzeigt.", + "always_show_x_days_description": "Verschiebt das {{x}}-Tage-Buchungsfenster automatisch jeden Tag nach vorne und stellt sicher, dass Ihr Kalender immer die nächsten {{x}} Tage mit verfügbaren Zeitslots anzeigt.",
2304-2304: Polish tooltip phrasing.More idiomatic and clear in-product.
- "connect_now_unavailable_tooltip": "Sofortige Verbindung ist derzeit nicht verfügbar. Bitte buchen Sie aus den obigen Zeitfenstern oder versuchen Sie es später erneut.", + "connect_now_unavailable_tooltip": "Sofort verbinden ist derzeit nicht verfügbar. Bitte buchen Sie eines der oben angezeigten Zeitfenster oder versuchen Sie es später erneut.",
3151-3153: Minor wording tweak: “mithilfe von KI”.Reads more naturally in DE; button text can stay short.
- "translate_description_button_description": "Titel und Beschreibungen automatisch in die Browsersprache des Besuchers mittels KI übersetzen.", + "translate_description_button_description": "Titel und Beschreibungen automatisch in die Browsersprache des Besuchers mithilfe von KI übersetzen.",
3582-3583: Improve label readability for start time.“Beginn des Meetings” matches other labels like “Beginn”.
"booking_creation_time": "Erstellungszeit der Buchung", - "meeting_start_time": "Besprechungsstartzeit", + "meeting_start_time": "Beginn des Meetings",
324-324: Heads‑up: CLA gating for PR #23991.CLAassistant reports the contributor hasn’t signed the CLA. Please resolve before merging (ensure the commit email maps to a GitHub account and recheck).
apps/web/public/static/locales/pt/common.json (1)
1-1: Heads-up: CLA gate before mergePR shows CLA not signed for the contributor. Block merge until CLA check passes.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(11 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 hunks)apps/web/public/static/locales/km/common.json(11 hunks)apps/web/public/static/locales/ko/common.json(11 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(13 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(14 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(12 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/web/public/static/locales/fr/common.json
🚧 Files skipped from review as they are similar to previous changes (4)
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/eu/common.json
- apps/web/public/static/locales/ru/common.json
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
📚 Learning: 2025-09-12T14:46:29.720Z
Learnt from: Udit-takkar
PR: calcom/cal.com#23761
File: packages/features/shell/navigation/Navigation.tsx:125-130
Timestamp: 2025-09-12T14:46:29.720Z
Learning: In calcom/cal.com, translations for other locales are added later in the development process, so don't flag missing translation keys in non-English locale files when only the English locale has been updated.
Applied to files:
apps/web/public/static/locales/ca/common.json
🔇 Additional comments (161)
apps/web/public/static/locales/vi/common.json (1)
1236-1236: Clarify “set_to_default” translationGiá trị hiện tại “Đặt làm mặc định” trùng với “set_as_default”, khiến hai thao tác khác nhau hiển thị cùng một nhãn và dễ gây nhầm. Nên đổi thành “Đặt về mặc định” để phản ánh đúng hành động khôi phục.
apps/web/public/static/locales/sr/common.json (3)
961-963: Restore polite-plural CTA form forcreate_team.Line 962 slipped back to “Kreiraj tim”, but nearby CTAs keep the polite plural (“Kreirajte…”). Please revert to “Kreirajte tim” to stay consistent with the established voice.
2205-2209: Match locale quoting and terminology conventions.Line 2207 still reads
Polje za goste mora biti tipa 'Više e-mail adresa'. To follow the rest of the sr locale, wrap UI labels in Serbian quotes and use “imejl”:Polje „Gosti” mora biti tipa „Više imejl adresa”.
3526-3533: Align PBAC descriptions with established verbal-noun style.Lines 3526‑3533 use imperatives (“Kreiraj…”, “Pregledaj…”), whereas earlier PBAC entries were normalized to verbal nouns (“Kreiranje…”, “Pregled…”). Please update these new strings to match that pattern for consistency.
apps/web/public/static/locales/sk-SK/common.json (10)
324-324: LGTM: button label reads naturally.
1023-1023: LGTM: “Hide advanced settings” translation is clear.
1334-1334: LGTM: option name matches feature semantics.
2930-2930: LGTM: description is accurate and fluent.
3151-3152: LGTM: label + helper text are clear for users.
3318-3318: LGTM: “Saved filters” reads correctly.
3348-3348: LGTM: interface language description is concise.
3520-3534: LGTM: PBAC resources and action descriptors (Availability/Out of office).Terms and verbs are consistent with the rest of PBAC strings.
1236-1236: Fix regression: distinguish “set_to_default” vs “set_as_default”.Use “Nastaviť na predvolené” (revert to default), not “ako predvolené” (set as default).
- "set_to_default": "Nastaviť ako predvolené", + "set_to_default": "Nastaviť na predvolené",As per previous review and to keep parity with "set_as_default" at line 2071.
2207-2207: Consistency: prefer “email” without hyphen across locale.Replace “e‑mailov” with “emailov”.
- "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu 'Viacero e-mailov'", + "guests_field_must_be_multiemail": "Pole pre hostí musí byť typu 'Viacero emailov'",Based on learnings
apps/web/public/static/locales/pt-BR/common.json (12)
324-324: LGTM on new key “get_started”.
Translation reads well and matches existing “Começar” usage.
1023-1023: Match Title Case with the paired label.
Use Title Case to mirror “Mostrar Configurações Avançadas”.- "hide_advanced_settings": "Ocultar configurações avançadas", + "hide_advanced_settings": "Ocultar Configurações Avançadas",
1236-1236: LGTM on “set_to_default”.
“Definir como padrão” is correct and idiomatic.
1334-1334: LGTM on “allow_multiple_durations”.
Clear and aligned with existing terminology.
2207-2207: LGTM on hyphenation.
“E-mails” keeps the established hyphenation style.
2930-2930: LGTM on rolling window description.
Wording and variable usage look good.
3151-3153: LGTM on translate button and description.
Reads naturally and uses “IA” correctly.
3319-3319: LGTM on “saved_filters”.
Term fits existing Insights vocabulary.
3520-3520: LGTM on PBAC resource “Disponibilidade”.
Matches noun/plural pattern.
3522-3522: Use plural noun for PBAC label.
Align with other PBAC resource labels (“Reservas”, “Equipes”, “Funções”).- "pbac_resource_out_of_office": "Ausente", + "pbac_resource_out_of_office": "Ausências",
3527-3534: LGTM on PBAC descriptions for Availability/OOO.
Grammar and action verbs are correct.
962-962: Restore “time” terminology for consistency.
Project-wide we use “time” for “team”. Please change “Criar equipe” to “Criar time”.- "create_team": "Criar equipe", + "create_team": "Criar time",apps/web/public/static/locales/km/common.json (12)
324-324: LGTM: added “get_started”. Reads naturally and matches product tone.
1023-1023: LGTM: “hide_advanced_settings”. Consistent with “show_advanced_settings”.
1236-1236: LGTM: “set_to_default”. Matches wording used for “set_as_default”.
1334-1334: LGTM: “allow_multiple_durations”.
2304-2304: LGTM: “connect_now_unavailable_tooltip”.
2929-2929: LGTM: “always_show_x_days_description”.
3178-3178: LGTM: “saved_filters”.
3348-3348: LGTM: “interface_language_description”.
3520-3520: LGTM: PBAC “availability” resource label.
3526-3529: LGTM: PBAC availability descriptions.
3151-3152: Restore Khmer spacing around “និង” (regression). Please insert spaces around “និង” in both strings to match established KM style used elsewhere in this file.Apply this diff:
- "translate_description_button": "បកប្រែចំណងជើងនិងការពិពណ៌នាដោយស្វ័យប្រវត្តិ", + "translate_description_button": "បកប្រែចំណងជើង និង ការពិពណ៌នាដោយស្វ័យប្រវត្តិ", - "translate_description_button_description": "បកប្រែចំណងជើងនិងការពិពណ៌នាដោយស្វ័យប្រវត្តិទៅជាភាសាកម្មវិធីរុករករបស់អ្នកទស្សនាដោយប្រើ AI។", + "translate_description_button_description": "បកប្រែចំណងជើង និង ការពិពណ៌នាដោយស្វ័យប្រវត្តិទៅជាភាសាកម្មវិធីរុករករបស់អ្នកទស្សនាដោយប្រើ AI។",
3521-3521: Unify OOO terminology (“ចេញពីការិយាល័យ”). Elsewhere in KM locale OOO = “ចេញពីការិយាល័យ”. Update these entries to avoid mixed terms.Apply this diff:
- "pbac_resource_out_of_office": "ក្រៅការិយាល័យ", + "pbac_resource_out_of_office": "ចេញពីការិយាល័យ", - "pbac_desc_create_out_of_office": "បង្កើតស្ថានភាពក្រៅការិយាល័យ", + "pbac_desc_create_out_of_office": "បង្កើតស្ថានភាពចេញពីការិយាល័យ", - "pbac_desc_view_out_of_office": "មើលស្ថានភាពក្រៅការិយាល័យ", + "pbac_desc_view_out_of_office": "មើលស្ថានភាពចេញពីការិយាល័យ", - "pbac_desc_update_out_of_office": "ធ្វើបច្ចុប្បន្នភាពស្ថានភាពក្រៅការិយាល័យ", + "pbac_desc_update_out_of_office": "ធ្វើបច្ចុប្បន្នភាពស្ថានភាពចេញពីការិយាល័យ", - "pbac_desc_delete_out_of_office": "លុបស្ថានភាពក្រៅការិយាល័យ", + "pbac_desc_delete_out_of_office": "លុបស្ថានភាពចេញពីការិយាល័យ",Also applies to: 3530-3533
apps/web/public/static/locales/uk/common.json (2)
2207-2207: Restore field name and Ukrainian quotes in the guests message.This string was previously fixed to «Поле «Гості» має бути типу «Кілька електронних адрес»», but the current revision reverted to the old phrasing with straight quotes and without the field label. Please reinstate the corrected version for consistency with the design system.
2929-2929: Fix the accusative plural for {{x}} дні.The sentence ends with «наступні {{x}} днів…», which is grammatically incorrect in Ukrainian (should be «{{x}} дні» in the accusative). This regression reintroduces the issue we already cleaned up. Please restore «наступні {{x}} дні доступних слотів».
apps/web/public/static/locales/hu/common.json (12)
324-324: LGTM: new key reads naturally"Kezdjük el" fits UI usage and matches existing "getting_started".
1023-1023: LGTM: mirrors the “show_advanced_settings” labelWording is consistent and clear.
1334-1334: LGTM: clear and idiomatic“Több időtartam engedélyezése” is accurate.
2304-2304: LGTM: tooltip tone is formal and clearNo changes needed.
3151-3152: LGTM: button and description read wellNatural Hungarian phrasing; consistent with earlier copy polish.
3318-3318: LGTM: concise and correct“Mentett szűrők” is fine.
3520-3533: LGTM: PBAC resource/desc entriesTerminology (“Elérhetőség”, “Irodán kívül”) and CRUD descriptions are accurate and consistent.
3582-3582: LGTM: improved word choice“Megbeszélés kezdési ideje” is clearer than “Találkozó”.
2207-2207: Correct possessive + hyphenation in Hungarian- "guests_field_must_be_multiemail": "A vendégek mezőnek 'Több e-mail cím' típusúnak kell lennie", + "guests_field_must_be_multiemail": "A vendégek mezőjének 'Több e-mail-cím' típusúnak kell lennie",
2929-2929: Keep register formal (“Ön”): replace informal possessive- "always_show_x_days_description": "Automatikusan előrelépteti a {{x}} napos foglalási ablakot minden nap, így a naptárad mindig a következő {{x}} nap elérhető időpontjait mutatja.", + "always_show_x_days_description": "Automatikusan előrelépteti a {{x}} napos foglalási ablakot minden nap, biztosítva, hogy naptára mindig a következő {{x}} nap elérhető időpontjait mutassa.",
3348-3348: Use formal imperative to match locale tone- "interface_language_description": "Állítsd be a foglalási felület preferált nyelvét", + "interface_language_description": "Állítsa be a foglalási felület preferált nyelvét",
1236-1236: Fix semantic mismatch: “Set to default” ≠ “Set as default”Use “Visszaállítás alapértelmezettre” to indicate reverting to existing defaults.
- "set_to_default": "Beállítás alapértelmezettként", + "set_to_default": "Visszaállítás alapértelmezettre",apps/web/public/static/locales/nl/common.json (5)
1334-1334: Bring back the natural wording for multiple durations
We previously settled on “Meerdere duur‑opties toestaan” because “tijdsduren” is awkward Dutch. Let’s reapply that improved phrasing for consistency and readability.
2930-2930: Polish the “tijdslots” sentence again
The prior fix replaced the anglicism “tijdslots” with “tijdsloten” and dropped the superfluous “aan”. Please bring that version back for idiomatic Dutch: “…zodat je agenda altijd de komende {{x}} dagen beschikbare tijdsloten toont.”
1236-1236: Restore-default CTA still mistranslated
“Als standaard instellen” describes promoting the current choice to default, while the button in English reverts back to the predefined default. Please switch back to a phrasing like “Terugzetten naar standaard” so Dutch users understand it resets rather than promotes.
2207-2207: Field label mismatch (“Gastveld”)
This string should reuse the established label “Bezoekers” and the accepted noun “e‑mailadressen”; otherwise the UI message references a field name the user never sees. Restore the earlier text: “Het veld ‘Bezoekers’ moet van het type ‘Meerdere e‑mailadressen’ zijn.”
3521-3521: Resource label needs the noun form
Elsewhere in this block we use “Afwezigheid” (e.g. the create/update strings). Reverting to the adjective “Afwezig” makes the PBAC resource list inconsistent. Please switch back to “Afwezigheid”.apps/web/public/static/locales/pl/common.json (1)
3151-3153: CTA string should stay imperative
Button labels across this locale stay in the imperative (“Prześlij”, “Zapisz”), but here we regressed to a noun phrase. Please revert to an action-oriented form such as “Przetłumacz tytuł i opis” to match the established tone.apps/web/public/static/locales/ko/common.json (1)
3520-3533: Use the glossary term “자리 비움” for out-of-office PBAC strings.Elsewhere in the UI and glossary we translate out_of_office as “자리 비움”, but these keys reverted to “부재/부재중”, breaking consistency and searchability. Please align all four values with the established wording (e.g. “자리 비움 항목 생성/보기/업데이트/삭제”).
- "pbac_resource_out_of_office": "부재중", + "pbac_resource_out_of_office": "자리 비움", … - "pbac_desc_create_out_of_office": "부재 생성", - "pbac_desc_view_out_of_office": "부재 보기", - "pbac_desc_update_out_of_office": "부재 업데이트", - "pbac_desc_delete_out_of_office": "부재 삭제", + "pbac_desc_create_out_of_office": "자리 비움 항목 생성", + "pbac_desc_view_out_of_office": "자리 비움 항목 보기", + "pbac_desc_update_out_of_office": "자리 비움 항목 업데이트", + "pbac_desc_delete_out_of_office": "자리 비움 항목 삭제",apps/web/public/static/locales/no/common.json (1)
2207-2208: Refine “Gjester”-felt wording.Forslaget fra forrige runde ble ikke fullt ut fulgt. «Feltet «Gjester» må være av typen «Flere e‑poster»» leses mer naturlig enn «Gjestfeltet …». Vennligst bruk sitatsymbolet og substantivet slik:
- "guests_field_must_be_multiemail": "Gjestfeltet må være av typen 'Flere e-poster'", + "guests_field_must_be_multiemail": "Feltet \"Gjester\" må være av typen \"Flere e-poster\"",apps/web/public/static/locales/ja/common.json (1)
3527-3533: Add 「する」 for consistency in PBAC descriptionsOther PBAC descriptions end with 「〜する」; these still omit the verb and feel truncated. Please append 「する」 across the availability/out-of-office entries to keep tone consistent with the rest of the file.
apps/web/public/static/locales/zh-CN/common.json (1)
3521-3533: Keep “availability” terminology consistentExisting zh-CN strings translate “availability” as “可预约时间”(see Line 1008
"availability": "可预约时间"). These new PBAC entries switch to “可用性”, which breaks our terminology and may confuse users scanning related permissions.- "pbac_resource_availability": "可用性", + "pbac_resource_availability": "可预约时间", … - "pbac_desc_create_availability": "创建可用性", - "pbac_desc_view_availability": "查看可用性", - "pbac_desc_update_availability": "更新可用性", - "pbac_desc_delete_availability": "删除可用性", + "pbac_desc_create_availability": "创建可预约时间", + "pbac_desc_view_availability": "查看可预约时间", + "pbac_desc_update_availability": "更新可预约时间", + "pbac_desc_delete_availability": "删除可预约时间",apps/web/public/static/locales/bn/common.json (9)
324-324: LGTM: “get_started” translation reads naturalNo placeholders; tone and brevity fit button copy.
1023-1023: LGTM: “hide_advanced_settings”Consistent with “show_advanced_settings”; no grammatical issues.
1236-1236: Duplicate key with overlapping intent: set_to_default vs set_as_defaultBoth keys exist in this file (also see Line 2071 for set_as_default). Consolidate on one canonical key to avoid drift and redundant translations.
1334-1334: LGTM: “allow_multiple_durations”Accurate and concise.
3318-3318: LGTM: “saved_filters”Clear and idiomatic.
3349-3349: LGTM: “interface_language_description”Accurate description; no placeholders.
3520-3529: LGTM: PBAC availability resource and actions“প্রাপ্যতা …” set reads correctly and consistently across CRUD verbs.
Ensure these new keys are reflected in any PBAC permission UI mappings.
3530-3533: Clarify “out of office” action labelsReads like stepping outside rather than managing an entry. Prefer explicitly referencing an “এন্ট্রি/স্টেট”.
- "pbac_desc_create_out_of_office": "অফিসের বাইরে তৈরি করুন", - "pbac_desc_view_out_of_office": "অফিসের বাইরে দেখুন", - "pbac_desc_update_out_of_office": "অফিসের বাইরে আপডেট করুন", - "pbac_desc_delete_out_of_office": "অফিসের বাইরে মুছুন", + "pbac_desc_create_out_of_office": "অফিসের বাইরে এন্ট্রি তৈরি করুন", + "pbac_desc_view_out_of_office": "অফিসের বাইরে এন্ট্রি দেখুন", + "pbac_desc_update_out_of_office": "অফিসের বাইরে এন্ট্রি আপডেট করুন", + "pbac_desc_delete_out_of_office": "অফিসের বাইরে এন্ট্রি মুছুন",
2207-2207: No action needed – the entry already includes a trailing comma and the JSON parses correctly.Likely an incorrect or invalid review comment.
apps/web/public/static/locales/tr/common.json (1)
2304-2304: Polish Connect Now tooltip phrasingWe still use the lower-case “hemen bağlan” phrasing that was previously flagged. Please capitalize the feature name and tighten the sentence (e.g., “Şu anda Hemen Bağlan özelliği kullanılamıyor...”) so it reads naturally in Turkish.
apps/web/public/static/locales/zh-TW/common.json (11)
324-324: LGTM: natural addition「開始使用」讀起來自然,無需更動。
962-962: LGTM: matches surrounding copy「建立團隊」可接受,與本檔他處「新增團隊」並存不影響理解。若要極致一致,可後續批次統一。
1023-1023: LGTM: pair matches “顯示進階設定”翻譯對稱無誤。
1334-1334: Terminology: 用「時間長度」取代「時長」與本檔既有鍵一致(如 event_setup_multiple_duration_error)。
- "allow_multiple_durations": "允許多種時長", + "allow_multiple_durations": "允許多個時間長度",
2207-2207: Use 「賓客」 to match locale與 lines 292-293 一致性。
- "guests_field_must_be_multiemail": "訪客欄位必須是「多個電子郵件」類型", + "guests_field_must_be_multiemail": "賓客欄位必須是「多個電子郵件」類型",
2929-2929: Variables spacing + 「預約」用語為 {{x}} 兩側加空格,並將「預訂」改為「預約」。
- "always_show_x_days_description": "自動將{{x}}天的預訂視窗每天向前移動,確保您的日曆始終顯示接下來{{x}}天的可用時段。", + "always_show_x_days_description": "自動將 {{x}} 天的預約視窗每天向前移動,確保您的日曆始終顯示接下來的 {{x}} 天可用時段。",
3151-3152: Minor wording: 自然語序將「訪客瀏覽器的語言」改為更自然的「訪客的瀏覽器語言」。
"translate_description_button": "自動翻譯標題和描述", - "translate_description_button_description": "使用 AI 自動將標題和描述翻譯為訪客瀏覽器的語言。", + "translate_description_button_description": "使用 AI 自動將標題和描述翻譯為訪客的瀏覽器語言。",
3318-3318: Prefer 「篩選器」與 remove_filters 等鍵一致。
- "saved_filters": "已儲存的篩選條件", + "saved_filters": "已儲存的篩選器",
3348-3348: 用語一致:「預約」與全檔偏好一致。
- "interface_language_description": "設定預訂介面的偏好語言", + "interface_language_description": "設定預約介面的偏好語言",
3520-3533: PBAC terminology consistency
- availability → 「開放時間」
- Out of office 描述用「不在辦公室狀態」(避免「外出辦公」)
- "pbac_resource_availability": "可用性", + "pbac_resource_availability": "開放時間", - "pbac_desc_create_availability": "建立可用性", - "pbac_desc_view_availability": "查看可用性", - "pbac_desc_update_availability": "更新可用性", - "pbac_desc_delete_availability": "刪除可用性", + "pbac_desc_create_availability": "建立開放時間", + "pbac_desc_view_availability": "檢視開放時間", + "pbac_desc_update_availability": "更新開放時間", + "pbac_desc_delete_availability": "刪除開放時間", "pbac_resource_out_of_office": "不在辦公室", - "pbac_desc_create_out_of_office": "建立外出辦公", - "pbac_desc_view_out_of_office": "查看外出辦公", - "pbac_desc_update_out_of_office": "更新外出辦公", - "pbac_desc_delete_out_of_office": "刪除外出辦公", + "pbac_desc_create_out_of_office": "建立不在辦公室狀態", + "pbac_desc_view_out_of_office": "檢視不在辦公室狀態", + "pbac_desc_update_out_of_office": "更新不在辦公室狀態", + "pbac_desc_delete_out_of_office": "刪除不在辦公室狀態",
3581-3581: 用語一致:「預約」統一 booking 為「預約」。
- "booking_creation_time": "預訂建立時間", + "booking_creation_time": "預約建立時間",apps/web/public/static/locales/az/common.json (13)
324-324: LGTM: “Get started”“Başlayın” reads naturally for a primary CTA.
962-962: LGTM: “Create team”“Komanda yaradın” is consistent with other imperative labels.
2207-2207: LGTM: validation copyClear and specific.
2695-2695: LGTM: “Create org”“Təşkilat yaradın” matches the rest of the UI voice.
3348-3348: LGTM: interface language descriptionClear and idiomatic.
3526-3529: LGTM: availability permission descriptionsConsistent and complete.
3582-3582: LGTM: wording tweak“Görüşün başlama vaxtı” reads more natural than the bare noun phrase.
1023-1023: Fix imperative for “Hide advanced settings” (regression)Use imperative “gizlət”, not “gizlədin”.
- "hide_advanced_settings": "Ətraflı parametrləri gizlədin", + "hide_advanced_settings": "Ətraflı parametrləri gizlət",
2929-2929: Fix phrasing and terminology (regression)Use “{{x}} günlük” (no hyphen) and “mövcud vaxtlarını” instead of “slotlarını”; join clauses with “və” for flow.
- "always_show_x_days_description": "Avtomatik olaraq {{x}}-günlük rezervasiya pəncərəsini hər gün irəli aparır, təqviminizin həmişə növbəti {{x}} günün mövcud slotlarını göstərməsini təmin edir.", + "always_show_x_days_description": "Avtomatik olaraq {{x}} günlük rezervasiya pəncərəsini hər gün irəli aparır və təqviminizin həmişə növbəti {{x}} gün üçün mövcud vaxtlarını göstərməsini təmin edir.",
3151-3152: Replace “auto” with native “avtomatik” (regression)Button should avoid English fragment; description already uses “avtomatik”.
- "translate_description_button": "Başlıq və təsviri auto tərcümə et", + "translate_description_button": "Başlıq və təsviri avtomatik tərcümə et",
3318-3318: Typo: participle form (regression)Prefer “Saxlanmış”.
- "saved_filters": "Saxlanılmış filtrlər", + "saved_filters": "Saxlanmış filtrlər",
3520-3521: Resource labels: out‑of‑office noun phrase (regression on 3521)Use noun phrase “Ofisdən kənar” for labels.
"pbac_resource_availability": "Mövcudluq", - "pbac_resource_out_of_office": "Ofisdən kənarda", + "pbac_resource_out_of_office": "Ofisdən kənar",
3530-3533: Clarify out‑of‑office permission strings (regression)Explicitly reference “qeyd/qeydlər” for completeness and consistency.
- "pbac_desc_create_out_of_office": "Ofisdən kənar yaratmaq", - "pbac_desc_view_out_of_office": "Ofisdən kənara baxmaq", - "pbac_desc_update_out_of_office": "Ofisdən kənarı yeniləmək", - "pbac_desc_delete_out_of_office": "Ofisdən kənarı silmək", + "pbac_desc_create_out_of_office": "Ofisdən kənar qeydi yaratmaq", + "pbac_desc_view_out_of_office": "Ofisdən kənar qeydlərə baxmaq", + "pbac_desc_update_out_of_office": "Ofisdən kənar qeydləri yeniləmək", + "pbac_desc_delete_out_of_office": "Ofisdən kənar qeydləri silmək",apps/web/public/static/locales/cs/common.json (1)
3527-3533: Clarify PBAC availability/OOO descriptionsThese eight strings revert to the terse “Vytvořit…” / “Zobrazit…” forms that were previously corrected. To stay consistent with the surrounding PBAC texts (imperfective aspect + explicit mention of what’s being managed) we should use formulations like “Vytvářet dostupnost” and “Vytvářet záznamy o nepřítomnosti”. Otherwise the Czech reads as a one-off action or literally “create outside the office”. Please restore the longer phrasing:
- "pbac_desc_create_availability": "Vytvořit dostupnost", + "pbac_desc_create_availability": "Vytvářet dostupnost", - "pbac_desc_view_availability": "Zobrazit dostupnost", + "pbac_desc_view_availability": "Zobrazovat dostupnost", - "pbac_desc_update_availability": "Aktualizovat dostupnost", + "pbac_desc_update_availability": "Aktualizovat dostupnost", - "pbac_desc_delete_availability": "Smazat dostupnost", + "pbac_desc_delete_availability": "Mazat dostupnost", - "pbac_desc_create_out_of_office": "Vytvořit mimo kancelář", - "pbac_desc_view_out_of_office": "Zobrazit mimo kancelář", - "pbac_desc_update_out_of_office": "Aktualizovat mimo kancelář", - "pbac_desc_delete_out_of_office": "Smazat mimo kancelář", + "pbac_desc_create_out_of_office": "Vytvářet záznamy o nepřítomnosti", + "pbac_desc_view_out_of_office": "Zobrazovat záznamy o nepřítomnosti", + "pbac_desc_update_out_of_office": "Aktualizovat záznamy o nepřítomnosti", + "pbac_desc_delete_out_of_office": "Mazat záznamy o nepřítomnosti",apps/web/public/static/locales/he/common.json (3)
1023-1023: Keep the label in imperative voiceThe source key is a UI action (“Hide advanced settings”); the Hebrew text reverted to the noun form “הסתרת…”. Please switch back to the imperative “הסתר הגדרות מתקדמות” so the control reads as an actionable command.
1236-1236: Button copy should stay imperative“Set to default” is an action. The current phrasing “הגדרה כברירת מחדל” reads as a static noun. Please restore the imperative (e.g., “הגדר כברירת מחדל”) to keep button text consistent with the rest of the UI.
2207-2207: Revert to the locale-standard term for “email”Throughout the Hebrew locale we use “דוא״ל”. This line introduces “אימיילים”, which breaks terminology consistency. Please change it back to “דוא״ל” (e.g., “מספר כתובות דוא״ל”).
apps/web/public/static/locales/ca/common.json (3)
2008-2008: Clarify the “fora de l’oficina” PBAC strings.Les cadenes segueixen sense cap substantiu i queden estranyes (“Crear fora de l'oficina”). Afegim l'element implícit (“períodes”) per fer-les naturals:
- "pbac_desc_create_out_of_office": "Crear fora de l'oficina", + "pbac_desc_create_out_of_officina": "Crear períodes de fora de l'oficina",…i la mateixa adaptació per a view/update/delete.
Also applies to: 3531-3533
962-962: Restore the article in “Crea un equip”.La frase continua sense article i sona forçada (“Crea equip”). Recuperem “Crea un equip” per mantenir el català natural i coherent amb la resta de la interfície.
1334-1334: Align “duracions” with existing terminology.Aquest fitxer ja utilitza “durades” (“Durades disponibles”), però aquí hem passat a “duracions”. Si us plau, tornem a “Permet múltiples durades” per mantenir la coherència terminològica.
apps/web/public/static/locales/bg/common.json (8)
324-324: LGTM (new key)."get_started" reads naturally: "Започнете".
962-962: Tone consistency: prefer imperative if button.If "create_team" is a CTA, use “Създай екип” to match nearby CTAs.
- "create_team": "Създаване на екип", + "create_team": "Създай екип",
1023-1023: Mirror style of the paired “show” label.Drop the definite article to match 1022 (“Показване на разширени настройки”).
- "hide_advanced_settings": "Скриване на разширените настройки", + "hide_advanced_settings": "Скриване на разширени настройки",
2930-2930: LGTM (new description).Clear and idiomatic BG.
3151-3152: Unused keys? Confirm UI wiring or remove.Earlier scan showed no usages for these two keys. Please verify.
#!/bin/bash for k in translate_description_button translate_description_button_description; do echo "== Search usages for $k ==" rg -nP "t\\(['\"]$k['\"]\\)|<Trans[^>]+i18nKey=['\"]$k['\"]" -g "apps/web/**/*.{ts,tsx,js,jsx}" -C2 || true done
3318-3318: LGTM (new key).“Запазени филтри” fits Insights surface.
1334-1334: allow_multiple_durations key rename verified No stale references toallow_booker_to_select_duration; only the new key is used.
3520-3521: Approve PBAC JSON additions
Values are properly quoted with no unescaped inner quotes, and the file lint-checks clean.apps/web/public/static/locales/ar/common.json (10)
324-324: LGTM: concise CTACopy fits tone and space for the onboarding button.
1023-1023: LGTM: parity with advanced settings toggleComplements show_advanced_settings key.
1334-1334: LGTM: renamed permissionMatches UI behavior for multiple durations.
2304-2305: LGTM: clear tooltipWording is clear and consistent with “اتصل الآن”.
3151-3153: LGTM: translation feature stringsButton and description read naturally.
3318-3319: LGTM: “Saved filters”Terminology aligns with analytics UI.
3520-3533: Pluralize “create availability” to match other availability actions.Align with plural used in view/update/delete.
-"pbac_desc_create_availability": "إنشاء وقت متاح", +"pbac_desc_create_availability": "إنشاء الأوقات المتاحة",
1236-1236: Restore “to default” phrasing to avoid mismatch with “set_as_default”.Use “إلى الافتراضي” (to the default) here; keep “كافتراضي” for set_as_default (Line 2071).
-"set_to_default": "تعيين كافتراضي", +"set_to_default": "تعيين إلى الافتراضي",
2207-2208: Keep quoted field label in English to match UI copy.The builder shows the literal option “Multiple emails”. Keep the quoted label in English.
-"guests_field_must_be_multiemail": "يجب أن يكون حقل الضيوف من نوع 'بريد إلكتروني متعدد'", +"guests_field_must_be_multiemail": "يجب أن يكون حقل الضيوف من نوع 'Multiple emails'",
3348-3349: Minor semantic tweak: “interface language” ≠ “booking interface”.Prefer “واجهة المستخدم”.
-"interface_language_description": "اختر لغتك المفضلة لواجهة الحجز", +"interface_language_description": "اختر لغتك المفضلة لواجهة المستخدم",apps/web/public/static/locales/de/common.json (2)
324-324: LGTM on these new/updated keys.Translations read naturally and keep the formal Sie/Ihr voice.
Also applies to: 962-962, 1023-1023, 1236-1236, 2207-2207, 3318-3318, 3348-3348
3520-3534: PBAC resources and descriptions (Availability/Out-of-office).Terminology and grammar look correct and consistent.
If PBAC labels appear as end-user copy, confirm they’re hidden behind admin-only UI; otherwise consider adding articles for more natural end-user phrasing.
apps/web/public/static/locales/fi/common.json (1)
2207-2208: Restore the literal'multiEmail'identifierThe field type inside the quotes must stay
'multiEmail'for the validation/error copy to reference the actual literal value users must enter. Translating it to'Useita sähköposteja'will mislead users and break parity with the required identifier.- "guests_field_must_be_multiemail": "Vieraiden kentän täytyy olla tyyppiä 'Useita sähköposteja'", + "guests_field_must_be_multiemail": "Vieraiden kentän täytyy olla tyyppiä 'multiEmail'",apps/web/public/static/locales/pt/common.json (14)
324-324: LGTM: get_startedTranslation is correct and consistent with existing “Começar”.
962-962: LGTM: create_teamUses pt‑PT “equipa”; matches project terminology.
1334-1334: LGTM: allow_multiple_durationsClear and consistent phrasing.
2695-2695: LGTM: create_org“Criar organização” is correct and consistent.
3520-3528: LGTM: PBAC availability/out‑of‑office labelsResource names and CRUD texts read natural in pt‑PT.
Also applies to: 3530-3532
1023-1023: Match casing with paired toggleKeep title case to mirror “Mostrar Configurações Avançadas”.
- "hide_advanced_settings": "Ocultar configurações avançadas", + "hide_advanced_settings": "Ocultar Configurações Avançadas",
1236-1236: Use pt‑PT term for “default”Prefer “predefinição/predefinido” over BR “padrão”. Regression from earlier fix.
- "set_to_default": "Definir como padrão", + "set_to_default": "Definir como predefinição",
2207-2207: Use exact UI field/type labelsKeep the field label “Convidados” verbatim and the type label exactly as shown in the UI (don’t localize inside quotes). Regression from earlier fix.
Proposed (assuming the UI type string is “Multiple emails”):
- "guests_field_must_be_multiemail": "O campo de convidados deve ser do tipo 'Múltiplos emails'", + "guests_field_must_be_multiemail": "O campo 'Convidados' deve ser do tipo 'Multiple emails'"Verify the English source/type label to align precisely:
#!/bin/bash # Show the EN source for this key and nearby context rg -n -C2 '"guests_field_must_be_multiemail":' apps/web/public/static/locales/en/common.json
2304-2304: Align tooltip with UI label + pt‑PT phrasingUse “Associar agora” and pt‑PT wording.
- "connect_now_unavailable_tooltip": "Conectar agora está indisponível no momento. Por favor, reserve a partir dos horários acima ou tente novamente mais tarde.", + "connect_now_unavailable_tooltip": "Associar agora está indisponível de momento. Por favor, escolha um dos horários acima ou tente novamente mais tarde.",
2929-2929: pt‑PT phrasing and word orderSwitch BR‑PT “para frente / seu … sempre mostre” to pt‑PT “para a frente / o seu … mostre sempre”. Regression.
- "always_show_x_days_description": "Move automaticamente a janela de reservas de {{x}} dias para frente a cada dia, garantindo que seu calendário sempre mostre os próximos {{x}} dias de horários disponíveis.", + "always_show_x_days_description": "Move automaticamente a janela de reserva de {{x}} dias para a frente todos os dias, garantindo que o seu calendário mostre sempre os próximos {{x}} dias de horários disponíveis.",
3151-3152: Articles + pt‑PT “utilizando”Add articles and avoid BR “usando”. Regression.
- "translate_description_button": "Traduzir automaticamente título e descrição", - "translate_description_button_description": "Traduzir automaticamente títulos e descrições para o idioma do navegador do visitante usando IA.", + "translate_description_button": "Traduzir automaticamente o título e a descrição", + "translate_description_button_description": "Traduzir automaticamente o título e a descrição para o idioma do navegador do visitante, utilizando IA.",
3318-3318: Use pt‑PT “guardados”Saved → “guardados” in pt‑PT. Regression.
- "saved_filters": "Filtros salvos", + "saved_filters": "Filtros guardados",
3348-3348: Restore definite article for pt‑PTPrefer “o seu” here.
- "interface_language_description": "Defina seu idioma preferido para a interface de reservas", + "interface_language_description": "Defina o seu idioma preferido para a interface de reserva",
3529-3529: Use “Eliminar …” instead of BR “Excluir …”Align delete verbs with the rest of the locale.
- "pbac_desc_delete_availability": "Excluir disponibilidade", + "pbac_desc_delete_availability": "Eliminar disponibilidade", … - "pbac_desc_delete_out_of_office": "Excluir fora do escritório", + "pbac_desc_delete_out_of_office": "Eliminar fora do escritório",Also applies to: 3533-3533
apps/web/public/static/locales/es/common.json (3)
1023-1024: Mantén la simetría con “Mostrar Opciones Avanzadas”El toggle aparece como “Mostrar Opciones Avanzadas”, pero la cadena opuesta sigue usando “ajustes” y minúsculas. Esto deja el UI con textos distintos para la misma acción. Propongo alinear el copy:
- "hide_advanced_settings": "Ocultar ajustes avanzados", + "hide_advanced_settings": "Ocultar Opciones Avanzadas",
3151-3152: Pulir el CTA de traducción automáticaSe volvió a perder los artículos que dan naturalidad (“el título y la descripción”), dejando una frase telegráfica. Ajustemos ambos textos para sonar idiomáticos:
- "translate_description_button": "Traducir automáticamente título y descripción", - "translate_description_button_description": "Traduce automáticamente títulos y descripciones al idioma del navegador del visitante usando IA.", + "translate_description_button": "Traducir automáticamente el título y la descripción", + "translate_description_button_description": "Traduce automáticamente el título y la descripción al idioma del navegador del visitante usando IA.",
3527-3534: Mantener las descripciones PBAC en pluralEstas cadenas regresaron a la forma telegráfica singular (“Crear ausencia”, “Ver disponibilidad”). Para seguir el patrón del archivo (p. ej., “Crear webhooks”) y lo que se acordó antes, conviene hablar de gestionar entradas plurales:
- "pbac_desc_create_availability": "Crear disponibilidad", - "pbac_desc_view_availability": "Ver disponibilidad", - "pbac_desc_update_availability": "Actualizar disponibilidad", - "pbac_desc_delete_availability": "Eliminar disponibilidad", - "pbac_desc_create_out_of_office": "Crear ausencia", - "pbac_desc_view_out_of_office": "Ver ausencia", - "pbac_desc_update_out_of_office": "Actualizar ausencia", - "pbac_desc_delete_out_of_office": "Eliminar ausencia", + "pbac_desc_create_availability": "Crear entradas de disponibilidad", + "pbac_desc_view_availability": "Ver entradas de disponibilidad", + "pbac_desc_update_availability": "Actualizar entradas de disponibilidad", + "pbac_desc_delete_availability": "Eliminar entradas de disponibilidad", + "pbac_desc_create_out_of_office": "Crear entradas de ausencia", + "pbac_desc_view_out_of_office": "Ver entradas de ausencia", + "pbac_desc_update_out_of_office": "Actualizar entradas de ausencia", + "pbac_desc_delete_out_of_office": "Eliminar entradas de ausencia",apps/web/public/static/locales/es-419/common.json (4)
1023-1023: Restore plural form to match the toggle labelWe pair this with “Mostrar configuraciones avanzadas”, so we should keep the plural here as well. Revert the text to “Ocultar configuraciones avanzadas” for consistency.
- "hide_advanced_settings": "Ocultar configuración avanzada", + "hide_advanced_settings": "Ocultar configuraciones avanzadas",
2207-2207: Use escaped double quotes for the UI type nameElsewhere we quote UI labels with escaped double quotes; stick to the same convention here.
- "guests_field_must_be_multiemail": "El campo de invitados debe ser de tipo 'Múltiples correos electrónicos'", + "guests_field_must_be_multiemail": "El campo de invitados debe ser de tipo \"Múltiples correos electrónicos\"",
3527-3533: Align PBAC wording with the established “Fuera de la oficina” terminologyOther keys (e.g.,
pbac_resource_out_of_office) already use “Fuera de la oficina”. Swapping back to “ausencia” reintroduces mixed wording in the PBAC UI.- "pbac_desc_create_out_of_office": "Crear ausencia", - "pbac_desc_view_out_of_office": "Ver ausencia", - "pbac_desc_update_out_of_office": "Actualizar ausencia", - "pbac_desc_delete_out_of_office": "Eliminar ausencia", + "pbac_desc_create_out_of_office": "Crear entrada de fuera de la oficina", + "pbac_desc_view_out_of_office": "Ver entrada de fuera de la oficina", + "pbac_desc_update_out_of_office": "Actualizar entrada de fuera de la oficina", + "pbac_desc_delete_out_of_office": "Eliminar entrada de fuera de la oficina",
3151-3152: Reintroduce the definite articles for natural SpanishThe earlier fix added “el título y la descripción”, but this update dropped the articles again; please bring them back to keep the copy fluent.
- "translate_description_button": "Traducir automáticamente título y descripción", - "translate_description_button_description": "Traduce automáticamente títulos y descripciones al idioma del navegador del visitante usando IA.", + "translate_description_button": "Traducir automáticamente el título y la descripción", + "translate_description_button_description": "Traduce automáticamente el título y la descripción al idioma del navegador del visitante usando IA.",apps/web/public/static/locales/ro/common.json (3)
324-324: Standardize to singular imperative and fix missing articles in CTAsUse the commonly adopted singular imperative tone and include the indefinite article where natural. Apply the following updates:
- "get_started": "Începeți", + "get_started": "Începe", - "create_team": "Creați echipă", + "create_team": "Creează o echipă", - "hide_advanced_settings": "Ascundeți setările avansate", + "hide_advanced_settings": "Ascunde setările avansate", - "set_to_default": "Setați ca implicit", + "set_to_default": "Setează ca implicit", - "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple", - "create_org": "Creați organizație", + "create_org": "Creează o organizație", - "translate_description_button": "Traduceți automat titlul și descrierea", + "translate_description_button": "Tradu automat titlul și descrierea", - "translate_description_button_description": "Traduceți automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", + "translate_description_button_description": "Tradu automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", - "interface_language_description": "Setați limba preferată pentru interfața de rezervare", + "interface_language_description": "Setează limba preferată pentru interfața de rezervare"Also applies to: 962-962, 1023-1023, 1236-1236, 1334-1334, 2695-2695, 3151-3152, 3348-3348
3520-3533: PBAC Romanian phrasing sounds natural in plural/periphrastic formsSwitch from awkward singular to natural plural/periphrastic variants.
"pbac_resource_availability": "Disponibilitate", "pbac_resource_out_of_office": "În afara biroului", - "pbac_desc_create_availability": "Creați disponibilitate", - "pbac_desc_view_availability": "Vizualizați disponibilitatea", - "pbac_desc_update_availability": "Actualizați disponibilitatea", - "pbac_desc_delete_availability": "Ștergeți disponibilitatea", - "pbac_desc_create_out_of_office": "Creați absență de la birou", - "pbac_desc_view_out_of_office": "Vizualizați absența de la birou", - "pbac_desc_update_out_of_office": "Actualizați absența de la birou", - "pbac_desc_delete_out_of_office": "Ștergeți absența de la birou", + "pbac_desc_create_availability": "Creați disponibilități", + "pbac_desc_view_availability": "Vizualizați disponibilitățile", + "pbac_desc_update_availability": "Actualizați disponibilitățile", + "pbac_desc_delete_availability": "Ștergeți disponibilitățile", + "pbac_desc_create_out_of_office": "Creați perioade de absență de la birou", + "pbac_desc_view_out_of_office": "Vizualizați perioadele de absență de la birou", + "pbac_desc_update_out_of_office": "Actualizați perioadele de absență de la birou", + "pbac_desc_delete_out_of_office": "Ștergeți perioadele de absență de la birou",Based on learnings
2207-2207: Quote the field label and use standard Romanian phrasing/quotesMirror the English by quoting the field label and use „…”. Also prefer “adrese de e‑mail”.
- "guests_field_must_be_multiemail": "Câmpul pentru invitați trebuie să fie de tipul 'Emailuri multiple'" + "guests_field_must_be_multiemail": "Câmpul „Invitați” trebuie să fie de tipul „Mai multe adrese de e-mail”"apps/web/public/static/locales/sv/common.json (13)
324-324: LGTM: new “get_started” keyTranslation reads naturally.
1024-1024: LGTM: “hide_advanced_settings”Consistent pair to “show_advanced_settings.”
1334-1334: LGTM: “allow_multiple_durations”Clear and idiomatic.
2695-2695: LGTM: “create_org”Matches terminology elsewhere.
2930-2930: LGTM: rolling window descriptionClear explanation; placeholders look correct.
3151-3152: LGTM: translate-description button and help textNatural Swedish and accurate intent.
3319-3319: LGTM: “saved_filters”Terminology consistent with Insights UI.
3349-3349: LGTM: interface language descriptionConcise and understandable.
3526-3533: LGTM: PBAC descriptions for availability and OOOConsistent voice and correct Swedish.
3582-3582: LGTM: “booking_creation_time”Good noun phrase; matches related options below.
2207-2207: Polish phrasing and casing for guests field typeRemove quotes and align type casing with other labels.
- "guests_field_must_be_multiemail": "Fältet för gäster måste vara av typen 'Flera e-postadresser'", + "guests_field_must_be_multiemail": "Fältet Gäster måste vara av typen Flera e‑postadresser"
2304-2304: Simplify tooltip phrasingShorter and smoother Swedish.
- "connect_now_unavailable_tooltip": "Anslut nu är inte tillgängligt just nu. Boka från ovanstående tider eller försök igen senare.", + "connect_now_unavailable_tooltip": "Anslut nu är inte tillgängligt. Välj en tid ovan eller försök igen senare."
3520-3521: Unify “Out of office” terminology (“Frånvaro”)Keep PBAC resource label consistent with nearby strings (Lines 3530–3533 use “Frånvaro”).
"pbac_resource_availability": "Tillgänglighet", - "pbac_resource_out_of_office": "Inte på kontoret", + "pbac_resource_out_of_office": "Frånvaro",
| "locked_by_team_admin": "Bloquejat per l'administrador de l'equip", | ||
| "app_not_connected": "No has connectat cap compte de {{appName}}.", | ||
| "connect_now": "Connecta ara", | ||
| "connect_now_unavailable_tooltip": "Connectar ara no està disponible en aquest moment. Si us plau, reserva des dels espais disponibles anteriors o torna-ho a provar més tard.", |
There was a problem hiding this comment.
Name the referenced action in the tooltip.
“Connectar ara” en infinitiu no identifica clarament el botó. Proposo parlar de l’opció amb cometes o en imperatiu, p. ex. “L’opció «Connecta ara» no està disponible en aquest moment…”.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ca/common.json around line 2304, the tooltip
text references the action in infinitive ("Connectar ara") which is ambiguous;
update the string to name the action clearly by quoting the option or using the
imperative form (e.g., «Connecta ara» or “L'opció «Connecta ara» no està
disponible en aquest moment…”), and keep the rest of the sentence intact and
grammatically correct in Catalan.
| "you_cannot_see_team_members": "V soukromém týmu nelze vidět všechny členy týmu.", | ||
| "you_cannot_see_teams_of_org": "Nemůžete vidět týmy soukromé organizace.", | ||
| "allow_booker_to_select_duration": "Umožnit rezervující osobě vybrat dobu trvání", | ||
| "allow_multiple_durations": "Povolit více délek trvání", |
There was a problem hiding this comment.
Revert to consistent wording for durations
Previously we aligned this key with the rest of the file (“Dostupné doby trvání”) by using “Povolit více dob trvání”. The new “délky” wording breaks that consistency and reads awkwardly in Czech. Please switch back to “doby trvání”.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/cs/common.json around line 1334, the Czech
translation uses "Povolit více délek trvání" which is inconsistent and awkward
compared to the rest of the file; change the value back to "Povolit více dob
trvání" to match the established wording ("Dostupné doby trvání") and preserve
consistency across translations.
| "booking_confirmation_failed": "Potvrzení rezervace se nezdařilo", | ||
| "not_enough_seats": "Nedostatek míst", | ||
| "form_builder_field_already_exists": "Pole s tímto názvem již existuje", | ||
| "guests_field_must_be_multiemail": "Pole pro hosty musí být typu 'Více e-mailů'", |
There was a problem hiding this comment.
Keep literal labels quoted with double quotes
We had already updated this string to use escaped double quotes (“"Více e-mailů"”) so it matches other literal UI labels. The single quotes here are a regression—please restore the escaped double quotes.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/cs/common.json around line 2207, the value for
"guests_field_must_be_multiemail" uses single quotes around the literal label;
replace them with escaped double quotes (\"Více e-mailů\") so the string matches
the existing convention for quoted UI labels and preserves valid JSON escaping.
| "booking_confirmation_failed": "Broneeringu kinnitamine ebaõnnestus", | ||
| "not_enough_seats": "Pole piisavalt kohti", | ||
| "form_builder_field_already_exists": "Selle nimega väli on juba olemas", | ||
| "guests_field_must_be_multiemail": "Külaliste väli peab olema tüüpi 'Mitu e-posti'", |
There was a problem hiding this comment.
Fix quoting and wording for the “guests” validation message.
Estonian copy should mirror the UI field labels with escaped straight double quotes and natural phrasing. Please switch to the earlier corrected wording so it reads along the lines of Väli \"Külalised\" peab olema tüüpi \"Mitme e-posti aadressiga\".
🤖 Prompt for AI Agents
In apps/web/public/static/locales/et/common.json around line 2207, the
translation value uses incorrect quoting and phrasing for the "guests"
validation message; replace the current message with the corrected Estonian
phrasing using escaped straight double quotes so it reads: Väli \"Külalised\"
peab olema tüüpi \"Mitme e-posti aadressiga\".
| "not_enough_seats": "Yeterli yer yok", | ||
| "form_builder_field_already_exists": "Bu ada sahip bir alan zaten var", | ||
| "guests_field_must_be_multiemail": "Misafirler alanı 'Çoklu e-postalar' türünde olmalıdır", | ||
| "show_on_booking_page": "Rezervasyon sayfasında göster", |
There was a problem hiding this comment.
Align terminology for “guests” field hint
Elsewhere we standardize on “Davetliler” and say “birden fazla e‑posta” rather than the literal “Çoklu e-postalar”. Please adjust this string accordingly (e.g., “Davetliler alanının ‘Birden fazla e-posta’ türünde olması gerekir”) to match the established voice.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/tr/common.json around line 2208, the
translation for "show_on_booking_page" uses inconsistent terminology for
"guests"; replace the current string to align with project voice by using
"Davetliler" and the phrasing "Birden fazla e-posta" — e.g., change the value to
a sentence using “Davetliler” and “Birden fazla e-posta” (for example:
"Davetliler alanının 'Birden fazla e-posta' türünde olması gerekir") so it
matches other translations.
| "attendees": "Учасники", | ||
| "add_attendees": "Додати учасників", | ||
| "show_advanced_settings": "Показати додаткові параметри", | ||
| "hide_advanced_settings": "Приховати розширені налаштування", |
There was a problem hiding this comment.
Revert hide toggle wording to match the paired label.
Line 1022 already says «Показати додаткові параметри». The paired hide label should mirror that phrasing; the newly introduced «Приховати розширені налаштування» breaks the UX copy consistency we keep across locales. Please switch it back to «Приховати додаткові параметри».
🤖 Prompt for AI Agents
In apps/web/public/static/locales/uk/common.json around line 1023, the "hide"
label text is inconsistent with its paired "show" label; change the value for
the "hide_advanced_settings" key from "Приховати розширені налаштування" back to
"Приховати додаткові параметри" so it mirrors the phrasing used by the "show"
label and maintains UX copy consistency across locales.
a594e77 to
b70e591
Compare
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/web/public/static/locales/ar/common.json (1)
3208-3208: Keep quoted field label in English.هذا التنبيه يجب أن يُظهر اسم الحقل كما يظهر في واجهة المستخدم (
'Multiple emails'). استبدال العبارة الإنجليزية بكلمة عربية يكسر التطابق مع الـ UI.-"guests_field_must_be_multiemail": "يجب أن يكون حقل الضيوف من نوع 'بريد إلكتروني متعدد'", +"guests_field_must_be_multiemail": "يجب أن يكون حقل الضيوف من نوع 'Multiple emails'",
🧹 Nitpick comments (36)
apps/web/public/static/locales/vi/common.json (2)
2207-2207: Style nit: avoid quotes around field type (optional).To match surrounding error texts, consider dropping single quotes.
- "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu 'Nhiều email'", + "guests_field_must_be_multiemail": "Trường Khách mời phải có kiểu Nhiều email",Ensure “Nhiều email” is the exact UI type label in VI; keep as-is if product UI shows quotes.
2304-2304: Consistency: prefer “suất thời gian” over “khung giờ”.Other strings use “suất thời gian”. Suggest:
- "connect_now_unavailable_tooltip": "Kết nối ngay hiện không khả dụng. Vui lòng đặt lịch từ các khung giờ phía trên hoặc thử lại sau.", + "connect_now_unavailable_tooltip": "Kết nối ngay hiện không khả dụng. Vui lòng đặt lịch từ các suất thời gian phía trên hoặc thử lại sau.",apps/web/public/static/locales/et/common.json (1)
3520-3521: Keep “Kättesaadavus” terminology consistent.Elsewhere the UI uses “Kättesaadavus” (e.g., availability_settings). Align PBAC labels/descriptions accordingly.
- "pbac_resource_availability": "Saadavus", + "pbac_resource_availability": "Kättesaadavus", - "pbac_desc_create_availability": "Loo saadavus", + "pbac_desc_create_availability": "Loo kättesaadavus", - "pbac_desc_view_availability": "Vaata saadavust", + "pbac_desc_view_availability": "Vaata kättesaadavust", - "pbac_desc_update_availability": "Uuenda saadavust", + "pbac_desc_update_availability": "Uuenda kättesaadavust", - "pbac_desc_delete_availability": "Kustuta saadavus", + "pbac_desc_delete_availability": "Kustuta kättesaadavus",Also applies to: 3526-3529
apps/web/public/static/locales/nl/common.json (2)
2304-2304: Minor NL polish (“tijdslots” → “tijdsloten”; tighten sentence).- "connect_now_unavailable_tooltip": "Direct verbinden is momenteel niet beschikbaar. Boek alstublieft via bovenstaande tijdslots of probeer het later opnieuw.", + "connect_now_unavailable_tooltip": "Direct verbinden is momenteel niet beschikbaar. Boek via de bovenstaande tijdsloten of probeer het later opnieuw.",
3581-3583: Prefer genitive “van de …” for natural NL labels.- "booking_creation_time": "Aanmaaktijd boeking", + "booking_creation_time": "Aanmaaktijd van de boeking", - "meeting_start_time": "Starttijd vergadering", + "meeting_start_time": "Starttijd van de vergadering",apps/web/public/static/locales/he/common.json (4)
324-324: Prefer imperative for actionable “Get started”Recommend using an imperative label for buttons.
- "get_started": "להתחיל", + "get_started": "התחל/י",
2304-2304: Minor wording: neutral, clearer tooltipSmall tweak for neutrality and flow.
- "connect_now_unavailable_tooltip": "התחברות מיידית אינה זמינה כרגע. אנא הזמן מהמשבצות למעלה או נסה שוב מאוחר יותר.", + "connect_now_unavailable_tooltip": "התחברות מיידית אינה זמינה כעת. ניתן להזמין מהמשבצות למעלה או לנסות שוב מאוחר יותר.",
3151-3153: Align button to imperative voice; keep description as-isMake the button actionable to match prior locale conventions.
- "translate_description_button": "תרגום אוטומטי של כותרת ותיאור", + "translate_description_button": "תרגם/י אוטומטית את הכותרת והתיאור",
3349-3349: Neutral second‑person phrasingOptional: adopt gender‑neutral imperative as used elsewhere.
- "interface_language_description": "הגדר את השפה המועדפת עליך לממשק ההזמנות", + "interface_language_description": "הגדר/י את שפת ממשק ההזמנות המועדפת עליך",apps/web/public/static/locales/sv/common.json (2)
2207-2207: Polish the guests field messageThis string brings back the internal quotes we previously removed and uses the generic noun instead of the capitalized field label seen elsewhere. To match the other type descriptions, drop the quotes and capitalize Gäster.
- "guests_field_must_be_multiemail": "Fältet för gäster måste vara av typen 'Flera e-postadresser'", + "guests_field_must_be_multiemail": "Fältet Gäster måste vara av typen Flera e-postadresser"
2304-2304: Tighten the tooltip phrasing“Boka från ovanstående tider” reads awkwardly in Swedish. A smoother wording keeps the action clear and mirrors the earlier refinement.
- "connect_now_unavailable_tooltip": "Anslut nu är för närvarande inte tillgängligt. Boka från ovanstående tider eller försök igen senare.", + "connect_now_unavailable_tooltip": "Anslut nu är för närvarande inte tillgängligt. Välj en tid ovan eller försök igen senare.",apps/web/public/static/locales/ko/common.json (3)
1334-1334: Prefer “기간” over “시간” for clarity“여러 시간 옵션”은 모호합니다. “기간(duration)” 의미를 명확히 하세요.
- "allow_multiple_durations": "여러 시간 옵션 허용", + "allow_multiple_durations": "여러 기간 옵션 허용",
2304-2304: Polish tooltip phrasing더 자연스러운 어순으로 제안합니다.
- "connect_now_unavailable_tooltip": "지금 연결하기는 현재 사용할 수 없습니다. 위의 시간대에서 예약하거나 나중에 다시 시도해 주세요.", + "connect_now_unavailable_tooltip": "지금 연결하기는 현재 이용할 수 없습니다. 위의 시간대에서 예약하시거나 나중에 다시 시도해 주세요.",
2929-2930: Tighten description style의미는 맞지만 간결하게 다듬으면 읽기 쉬워집니다.
- "always_show_x_days_description": "매일 {{x}}일 예약 창을 자동으로 앞당겨 캘린더에 항상 다음 {{x}}일의 가용 시간대를 표시합니다.", + "always_show_x_days_description": "캘린더에 항상 향후 {{x}}일의 가용 시간을 표시하도록 예약 창을 매일 자동으로 앞당깁니다.",apps/web/public/static/locales/tr/common.json (2)
1334-1334: Unify “multiple” phrasingUse “Birden fazla” instead of “Çoklu” to match locale voice.
- "allow_multiple_durations": "Çoklu sürelere izin ver", + "allow_multiple_durations": "Birden fazla süreye izin ver",
3520-3533: Make OOO PBAC strings consistent and naturalPrefer noun+object phrasing and consistent casing.
"pbac_resource_availability": "Müsaitlik", - "pbac_resource_out_of_office": "Ofis Dışında", + "pbac_resource_out_of_office": "Ofis dışı", @@ - "pbac_desc_create_out_of_office": "Ofis dışı oluştur", - "pbac_desc_view_out_of_office": "Ofis dışını görüntüle", - "pbac_desc_update_out_of_office": "Ofis dışını güncelle", - "pbac_desc_delete_out_of_office": "Ofis dışını sil", + "pbac_desc_create_out_of_office": "Ofis dışı kaydı oluştur", + "pbac_desc_view_out_of_office": "Ofis dışı kaydını görüntüle", + "pbac_desc_update_out_of_office": "Ofis dışı kaydını güncelle", + "pbac_desc_delete_out_of_office": "Ofis dışı kaydını sil",apps/web/public/static/locales/it/common.json (6)
2208-2208: Minor phrasing for clarityQuote the field label and keep consistent casing.
- "guests_field_must_be_multiemail": "Il campo ospiti deve essere di tipo 'Email multiple'", + "guests_field_must_be_multiemail": "Il campo \"Ospiti\" deve essere di tipo \"Email multiple\"",
2304-2304: Improve tooltip toneMake it a bit more natural in Italian and clarify action.
- "connect_now_unavailable_tooltip": "Connetti ora è attualmente non disponibile. Prenota dagli slot sopra o riprova più tardi.", + "connect_now_unavailable_tooltip": "La funzione Connetti ora non è al momento disponibile. Prenota utilizzando gli slot qui sopra o riprova più tardi.",
3348-3348: Optional micro-tweak (style)Dropping “tua” is slightly crisper in UI copy; optional.
- "interface_language_description": "Imposta la tua lingua preferita per l'interfaccia di prenotazione", + "interface_language_description": "Imposta la lingua preferita per l'interfaccia di prenotazione",
3521-3522: Standardize “Out of office” terminologyCurrent file mixes “Assente”, “Fuori Ufficio” and “Fuori sede”. Suggest using “Fuori ufficio” consistently (lowercase second word).
"pbac_resource_availability": "Disponibilità", - "pbac_resource_out_of_office": "Fuori sede", + "pbac_resource_out_of_office": "Fuori ufficio",Please ensure other occurrences (e.g., 2893 “Voce Fuori Ufficio”, 2729 “Assente”) are aligned in a later sweep.
3526-3534: Align PBAC “out_of_office” descriptors with chosen termUse either “Assenza” nouns or “Fuori ufficio” consistently. Suggest concise nouns for actions below.
- "pbac_desc_create_out_of_office": "Crea fuori sede", - "pbac_desc_view_out_of_office": "Visualizza fuori sede", - "pbac_desc_update_out_of_office": "Aggiorna fuori sede", - "pbac_desc_delete_out_of_office": "Elimina fuori sede", + "pbac_desc_create_out_of_office": "Crea assenza", + "pbac_desc_view_out_of_office": "Visualizza assenze", + "pbac_desc_update_out_of_office": "Aggiorna assenza", + "pbac_desc_delete_out_of_office": "Elimina assenza",Confirm that “Assenza/Assenze” matches adjacent UI where users manage OOO entries.
3581-3583: Fix Italian phrasing; avoid anglicism “meeting”Add missing article and use “riunione”.
- "booking_creation_time": "Orario di creazione prenotazione", - "meeting_start_time": "Orario di inizio meeting", + "booking_creation_time": "Orario di creazione della prenotazione", + "meeting_start_time": "Orario di inizio riunione",apps/web/public/static/locales/bn/common.json (1)
2695-2695: Standardize term for “organization” in Bengali.This key uses “সংগঠন” while many adjacent strings use “সংস্থা”. For consistency, prefer one term repo‑wide; suggest aligning to “সংস্থা”.
- "create_org": "সংগঠন তৈরি করুন", + "create_org": "সংস্থা তৈরি করুন",apps/web/public/static/locales/es/common.json (4)
324-324: Align CTA with existing “Empezar” wordingTo keep CTA wording consistent with existing “getting_started”: "Empezar".
- "get_started": "Comenzar", + "get_started": "Empezar",
2208-2208: Tiny phrasing polish (“del tipo …”)More natural Spanish and consistent quoting.
- "guests_field_must_be_multiemail": "El campo de invitados debe ser de tipo 'Múltiples correos electrónicos'", + "guests_field_must_be_multiemail": "El campo de invitados debe ser del tipo \"Múltiples correos electrónicos\"",
2304-2304: Tooltip: “espacios” → “franjas” and use informal tone“Franjas” is the established term in the file; keep tuteo for consistency.
- "connect_now_unavailable_tooltip": "Conectar ahora no está disponible actualmente. Por favor, reserve desde los espacios anteriores o inténtelo más tarde.", + "connect_now_unavailable_tooltip": "Conectar ahora no está disponible actualmente. Por favor, reserva desde las franjas anteriores o inténtalo más tarde.",
2930-2930: Smoother ending (“días disponibles”)Avoids the slightly awkward “días de espacios disponibles”.
- "always_show_x_days_description": "Mueve automáticamente la ventana de reservas de {{x}} días hacia adelante cada día, asegurando que tu calendario siempre muestre los próximos {{x}} días de espacios disponibles.", + "always_show_x_days_description": "Mueve automáticamente la ventana de reservas de {{x}} días hacia adelante cada día, asegurando que tu calendario siempre muestre los próximos {{x}} días disponibles.",apps/web/public/static/locales/cs/common.json (1)
2304-2304: Minor copy polish for clarity and toneReference the action explicitly and keep the guidance fluent.
- "connect_now_unavailable_tooltip": "Připojit nyní je momentálně nedostupné. Prosím rezervujte si termín z výše uvedených slotů nebo to zkuste později.", + "connect_now_unavailable_tooltip": "Akce \"Připojit nyní\" není momentálně k dispozici. Zarezervujte si prosím termín z výše uvedených slotů nebo to zkuste později.",apps/web/public/static/locales/es-419/common.json (1)
2304-2304: Natural phrasing: “horarios” instead of “espacios”.
Minor clarity/idiom tweak.- "connect_now_unavailable_tooltip": "Conectar ahora no está disponible actualmente. Por favor, reserva desde los espacios anteriores o intenta más tarde.", + "connect_now_unavailable_tooltip": "Conectar ahora no está disponible actualmente. Por favor, reserva desde los horarios anteriores o intenta más tarde.",apps/web/public/static/locales/fr/common.json (3)
2304-2304: Polish tooltip for fluency.Smoother phrasing; avoids redundancy “pas disponible actuellement”.
- "connect_now_unavailable_tooltip": "La connexion immédiate n'est pas disponible actuellement. Veuillez réserver parmi les créneaux ci-dessus ou réessayer plus tard.", + "connect_now_unavailable_tooltip": "La connexion immédiate n’est pas disponible pour le moment. Réservez un créneau ci‑dessus ou réessayez plus tard.",
2930-2930: Clarify “always_show_x_days_description”.Current text is a bit heavy; propose a clearer, idiomatic sentence.
- "always_show_x_days_description": "Déplace automatiquement la fenêtre de réservation de {{x}} jours chaque jour, garantissant que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.", + "always_show_x_days_description": "Fait avancer chaque jour la fenêtre de réservation sur {{x}} jours afin d’afficher en permanence les {{x}} prochains jours de créneaux disponibles.",
3151-3153: Use an action verb for the button label.For buttons, imperative reads better; keep the description as is.
- "translate_description_button": "Traduction automatique du titre et de la description", + "translate_description_button": "Traduire le titre et la description",apps/web/public/static/locales/de/common.json (4)
324-324: Unify CTA with existing “Los geht’s”.Elsewhere you use “Los geht’s” for starting CTAs; suggest aligning.
- "get_started": "Loslegen", + "get_started": "Los geht's",
2304-2304: Smoother phrasing for tooltip.“Sich aus den obigen Zeitfenstern buchen” sounds off; suggest this wording.
- "connect_now_unavailable_tooltip": "Sofortige Verbindung ist derzeit nicht verfügbar. Bitte buchen Sie aus den obigen Zeitfenstern oder versuchen Sie es später erneut.", + "connect_now_unavailable_tooltip": "Sofortige Verbindung ist derzeit nicht verfügbar. Bitte wählen Sie eines der oben angezeigten Zeitfenster oder versuchen Sie es später erneut.",
3520-3533: PBAC resource names should be plural for consistency.Other PBAC resources use plurals (Ereignistypen, Buchungen, Teams). Align “Verfügbarkeit/Abwesenheit” accordingly, and pluralize the related action descriptions.
- "pbac_resource_availability": "Verfügbarkeit", - "pbac_resource_out_of_office": "Abwesenheit", + "pbac_resource_availability": "Verfügbarkeiten", + "pbac_resource_out_of_office": "Abwesenheiten", - "pbac_desc_create_availability": "Verfügbarkeit erstellen", - "pbac_desc_view_availability": "Verfügbarkeit anzeigen", - "pbac_desc_update_availability": "Verfügbarkeit aktualisieren", - "pbac_desc_delete_availability": "Verfügbarkeit löschen", + "pbac_desc_create_availability": "Verfügbarkeiten erstellen", + "pbac_desc_view_availability": "Verfügbarkeiten anzeigen", + "pbac_desc_update_availability": "Verfügbarkeiten aktualisieren", + "pbac_desc_delete_availability": "Verfügbarkeiten löschen", - "pbac_desc_create_out_of_office": "Abwesenheit erstellen", - "pbac_desc_view_out_of_office": "Abwesenheit anzeigen", - "pbac_desc_update_out_of_office": "Abwesenheit aktualisieren", - "pbac_desc_delete_out_of_office": "Abwesenheit löschen", + "pbac_desc_create_out_of_office": "Abwesenheiten erstellen", + "pbac_desc_view_out_of_office": "Abwesenheiten anzeigen", + "pbac_desc_update_out_of_office": "Abwesenheiten aktualisieren", + "pbac_desc_delete_out_of_office": "Abwesenheiten löschen",
3581-3582: Slightly clearer metric labels.These read more naturally in German and mirror parallel phrasing.
- "booking_creation_time": "Erstellungszeit der Buchung", - "meeting_start_time": "Besprechungsstartzeit", + "booking_creation_time": "Zeitpunkt der Buchungserstellung", + "meeting_start_time": "Startzeit des Meetings",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(13 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(12 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 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(13 hunks)apps/web/public/static/locales/no/common.json(13 hunks)apps/web/public/static/locales/pl/common.json(13 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(13 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(11 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/web/public/static/locales/ja/common.json
🚧 Files skipped from review as they are similar to previous changes (6)
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/zh-CN/common.json
- apps/web/public/static/locales/el/common.json
- apps/web/public/static/locales/eu/common.json
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
📚 Learning: 2025-09-12T14:46:29.720Z
Learnt from: Udit-takkar
PR: calcom/cal.com#23761
File: packages/features/shell/navigation/Navigation.tsx:125-130
Timestamp: 2025-09-12T14:46:29.720Z
Learning: In calcom/cal.com, translations for other locales are added later in the development process, so don't flag missing translation keys in non-English locale files when only the English locale has been updated.
Applied to files:
apps/web/public/static/locales/ca/common.json
| "secret_meeting": "Titkos megbeszélés", | ||
| "login_instead": "Jelentkezzen be helyette", | ||
| "create_account": "Fiók létrehozása", | ||
| "get_started": "Kezdjük el", |
There was a problem hiding this comment.
Keep tone formal in CTA.
Az állandóan használt magázó hangnemhez itt is „Kezdje el”-re kell váltani.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/hu/common.json around line 324, the CTA string
uses informal plural "Kezdjük el"; replace it with the formal singular "Kezdje
el" to match the app's consistent formal tone for addressing users.
| "booking_confirmation_failed": "預約確認失敗", | ||
| "not_enough_seats": "座位不足", | ||
| "form_builder_field_already_exists": "已存在使用此名稱的欄位", | ||
| "guests_field_must_be_multiemail": "訪客欄位必須為「多個電子郵件」類型", |
There was a problem hiding this comment.
Restore the established “賓客” terminology.
This string reverted back to「訪客」,but the rest of the zh-TW locale (e.g., keys guests, guest) standardizes on「賓客」. Please switch it to「賓客欄位必須為「多個電子郵件」類型」以 stay consistent.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around line 2207, the
translation uses 「訪客欄位必須為「多個電子郵件」類型」 which is inconsistent with the established
zh-TW terminology; change 「訪客」 to 「賓客」 so the string reads 「賓客欄位必須為「多個電子郵件」類型」
to match other keys like `guests` and `guest`.
| "always_show_x_days_description": "自動將{{x}}天的預約視窗每天向前移動,確保您的日曆始終顯示接下來{{x}}天的可用時段。", | ||
| "team_subscription_cancelled_successfully": "團隊訂閱已成功取消", |
There was a problem hiding this comment.
Keep our handlebars spacing and wording conventions.
We add spaces around templated variables in zh-TW (“{{x}}” → “ {{x}} ”) and favor「預約視窗」with that spacing. Please update the string to something like「自動將 {{x}} 天的預約視窗每天向前移動,確保您的日曆始終顯示接下來的 {{x}} 天可用時段。」
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around lines 2929-2930, the
translation string uses unspaced handlebars and slightly different wording;
update it to follow our zh-TW conventions by adding spaces around the templated
variable and adjusting phrasing to: use 「預約視窗」 with spacing and include the
particle 「的」 before the second {{x}} phrase—i.e., change the value to something
like "自動將 {{x}} 天的預約視窗每天向前移動,確保您的日曆始終顯示接下來的 {{x}} 天可用時段。"
| "recurring_event_seats_error": "重複活動不支援座位功能。請停用座位功能或將活動設為非重複活動。", | ||
| "segment": "區隔", | ||
| "saved_filters": "已儲存的篩選條件", | ||
| "rename": "重新命名", |
There was a problem hiding this comment.
Align filter vocabulary.
Nearby keys (e.g., remove_filters) use「篩選器」, but this line says「篩選條件」. Please change to「已儲存的篩選器」to keep terminology consistent.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around line 3319, the
translation value for the "rename" key uses 「重新命名」 but requires consistent
filter terminology; update the string value to 「已儲存的篩選器」 (keeping the existing
JSON key, quotes, and trailing comma intact) so the entry becomes "rename":
"已儲存的篩選器",.
b70e591 to
c370b30
Compare
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (54)
apps/web/public/static/locales/sv/common.json (1)
1-1: Operational: CLA not signed blocks mergeCLA Assistant indicates the contributor hasn’t signed the CLA; this will gate merging. Ensure commit email maps to a GitHub user and re-run the CLA check.
apps/web/public/static/locales/km/common.json (1)
2304-2304: Minor wording polish for clarity (optional).
Consider this slightly more natural phrasing for the tooltip.- "connect_now_unavailable_tooltip": "ការភ្ជាប់ឥឡូវនេះមិនអាចប្រើបានទេ។ សូមកក់ពីពេលវេលាខាងលើ ឬព្យាយាមម្តងទៀតនៅពេលក្រោយ។", + "connect_now_unavailable_tooltip": "មុខងារ «ភ្ជាប់ឥឡូវនេះ» មិនអាចប្រើបានទេ។ សូមជ្រើសពេលខាងលើ ឬសាកល្បងម្តងទៀតនៅពេលក្រោយ។",apps/web/public/static/locales/de/common.json (4)
2007-2007: Style: UI label quoting and clarity.
Prefer German quotes and spell out “E‑Mail‑Adressen”.- "guests_field_must_be_multiemail": "Das Gästefeld muss vom Typ 'Mehrere E-Mails' sein", + "guests_field_must_be_multiemail": "Das Feld „Gäste“ muss vom Typ „Mehrere E‑Mail‑Adressen“ sein",
2304-2304: Microcopy: more natural phrasing.
“Sofortige Verbindung” sounds productized; suggest verb phrase.- "connect_now_unavailable_tooltip": "Sofortige Verbindung ist derzeit nicht verfügbar. Bitte buchen Sie aus den obigen Zeitfenstern oder versuchen Sie es später erneut.", + "connect_now_unavailable_tooltip": "Sofort verbinden ist derzeit nicht verfügbar. Bitte wählen Sie eine Zeit aus den oben angezeigten Zeitfenstern oder versuchen Sie es später erneut.",
3581-3581: Prefer “Zeitpunkt” for precision.- "booking_creation_time": "Erstellungszeit der Buchung", + "booking_creation_time": "Erstellungszeitpunkt der Buchung",
3582-3582: Use “Termin” for consistency.
Locale generally uses “Termin”.- "meeting_start_time": "Startzeit des Meetings", + "meeting_start_time": "Startzeit des Termins",apps/web/public/static/locales/az/common.json (3)
1334-1334: Tone consistency: drop “-in” polite ending.Prefer imperative singular used elsewhere (e.g., “Gizlət”, “Yadda saxla”).
- "allow_multiple_durations": "Çoxsaylı müddətlərə icazə verin", + "allow_multiple_durations": "Çoxsaylı müddətlərə icazə ver",
2207-2207: Clarity: specify “e‑mail addresses”.More natural and precise phrasing in Azerbaijani.
- "guests_field_must_be_multiemail": "Qonaqlar sahəsi 'Çoxsaylı e-poçtlar' tipində olmalıdır", + "guests_field_must_be_multiemail": "Qonaqlar sahəsi \"Çoxsaylı e‑poçt ünvanları\" tipində olmalıdır",
2304-2304: Terminology polish and wording.Avoid “slot” loanword and redundant “İndi … hazırda”.
- "connect_now_unavailable_tooltip": "İndi qoşulmaq hazırda mövcud deyil. Zəhmət olmasa yuxarıdakı slotlardan rezervasiya edin və ya sonra yenidən cəhd edin.", + "connect_now_unavailable_tooltip": "'İndi qoşul' hazırda mövcud deyil. Zəhmət olmasa yuxarıdakı vaxtlardan rezervasiya edin və ya sonra yenidən cəhd edin.",apps/web/public/static/locales/zh-CN/common.json (4)
1236-1236: Disambiguate “set_to_default” vs “set_as_default”Both “set_to_default” (Line 1236) and existing “set_as_default” (Line 2071) translate to “设置为默认”, which conflates “revert to default” with “mark as default”. Recommend:
- "set_to_default": "设置为默认", + "set_to_default": "恢复默认",This keeps “set_as_default”: “设置为默认” unchanged and avoids user confusion.
1334-1334: Align wording with existing “多个时长” usageOther keys (e.g., Line 1621) use “多个时长”. For consistency:
- "allow_multiple_durations": "允许多种时长", + "allow_multiple_durations": "允许多个时长",
2304-2304: Unify “预订/预约” wording in tooltipMost UI uses “预约”. Suggest:
- "connect_now_unavailable_tooltip": "“立即连接”当前不可用。请从上方的时间段中预订或稍后再试。", + "connect_now_unavailable_tooltip": "“立即连接”当前不可用。请从上方的可用时间段中预约,或稍后再试。",
3348-3348: Prefer “预约界面” for consistencyReplace “预订界面” with “预约界面” to match terminology elsewhere:
- "interface_language_description": "设置预订界面的首选语言", + "interface_language_description": "设置预约界面的首选语言",apps/web/public/static/locales/he/common.json (2)
3151-3152: Make button label imperative; keep description as isUse an imperative verb on the button for actionability.
- "translate_description_button": "תרגום אוטומטי של כותרת ותיאור", + "translate_description_button": "תרגם אוטומטית את הכותרת והתיאור",
324-324: Optional: prefer actionable “התחל” for CTA“להתחיל” is acceptable, but “התחל” is more in line with other CTA buttons (actionable tone).
- "get_started": "להתחיל", + "get_started": "התחל",apps/web/public/static/locales/fi/common.json (1)
2304-2304: Optional: tighten tooltip phrasing.Current is fine; consider a crisper variant for UI brevity:
“Yhdistä nyt ei ole saatavilla. Varaa jokin yllä olevista ajoista tai yritä myöhemmin.”apps/web/public/static/locales/pt/common.json (1)
1-1: Block merge until CLA is signedCLAassistant reports contributor hasn’t signed the CLA. Please gate merge on a green CLA check or reassign authorship to a GitHub account that can sign.
apps/web/public/static/locales/no/common.json (2)
2695-2695: Consistency nit: capitalization.Consider aligning with sentence‑case used elsewhere (“Opprett organisasjon” vs “Opprett din Organisasjon” at Line 2694).
3348-3348: Scope phrasing for “interface_language_description”.If this affects the whole app UI (not only booking), drop “bestillings-”.
- "interface_language_description": "Angi ditt foretrukne språk for bestillingsgrensesnittet", + "interface_language_description": "Angi ditt foretrukne språk for grensesnittet",apps/web/public/static/locales/ja/common.json (1)
3151-3153: Shorten CTA labelButton text is long; keep it tight since the description below adds detail.
- "translate_description_button": "タイトルと説明を自動翻訳", + "translate_description_button": "説明を自動翻訳",apps/web/public/static/locales/bn/common.json (2)
2304-2304: Smoother Bengali for tooltip.Minor phrasing tweak and remove directional “উপরের” dependency.
- "connect_now_unavailable_tooltip": "এখন সংযোগ করা বর্তমানে অনুপলব্ধ। অনুগ্রহ করে উপরের স্লট থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।", + "connect_now_unavailable_tooltip": "এই মুহূর্তে সংযুক্ত হওয়া সম্ভব নয়। অনুগ্রহ করে উপলব্ধ সময় থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।",
2929-2929: Naturalize “{{x}}‑দিনের” construction.Drop hyphen and simplify wording.
- "always_show_x_days_description": "প্রতিদিন স্বয়ংক্রিয়ভাবে {{x}}-দিনের বুকিং উইন্ডো সামনে সরিয়ে দেয়, যা নিশ্চিত করে যে আপনার ক্যালেন্ডার সর্বদা পরবর্তী {{x}} দিনের উপলব্ধ স্লট দেখায়।", + "always_show_x_days_description": "প্রতিদিন স্বয়ংক্রিয়ভাবে বুকিং উইন্ডোটি {{x}} দিন সামনে এগিয়ে দেয়, যাতে আপনার ক্যালেন্ডার সর্বদা পরবর্তী {{x}} দিনের উপলব্ধ স্লট দেখায়।",apps/web/public/static/locales/vi/common.json (1)
2207-2207: Quote style consistency for UI type.Elsewhere UI terms are quoted with escaped double quotes. Prefer:
- "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu 'Nhiều email'", + "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu \"Nhiều email\"",apps/web/public/static/locales/zh-TW/common.json (1)
1-3753: Optional consistency sweep
The grep results show numerous occurrences of:
- “預訂” (94 matches) → consider using “預約” where appropriate (e.g. 除了「電子郵件預訂」等專有詞彙)
- “訪客”/“來賓” (12 matches) → unify to “賓客”
- “可用性” (4 matches) → replace with “開放時間” in UI copy
- Handlebars tags without spaces (e.g.
{{count}}) → normalize to{{ count }}spacingapps/web/public/static/locales/pt-BR/common.json (1)
1023-1024: Match the paired toggle’s Title Case.O rótulo ativado é “Mostrar Configurações Avançadas”; esta versão deve usar o mesmo Title Case para ficar visualmente equilibrado.
- "hide_advanced_settings": "Ocultar configurações avançadas", + "hide_advanced_settings": "Ocultar Configurações Avançadas",apps/web/public/static/locales/nl/common.json (2)
2304-2304: Polish wording (“tijdslots” → “tijdsloten”; lighter tone).- "connect_now_unavailable_tooltip": "Direct verbinden is momenteel niet beschikbaar. Boek alstublieft via bovenstaande tijdslots of probeer het later opnieuw.", + "connect_now_unavailable_tooltip": "Direct verbinden is momenteel niet beschikbaar. Boek via de bovenstaande tijdsloten of probeer het later opnieuw.",
3349-3349: Tiny style tweak (optional).Neutral article reads a bit smoother.
- "interface_language_description": "Stel je voorkeurstaal in voor de boekingsinterface", + "interface_language_description": "Stel de voorkeurstaal in voor de boekingsinterface",apps/web/public/static/locales/cs/common.json (3)
2304-2304: Clarify tooltip; name the feature and smooth phrasing.- "connect_now_unavailable_tooltip": "Připojit nyní je momentálně nedostupné. Prosím rezervujte si termín z výše uvedených slotů nebo to zkuste později.", + "connect_now_unavailable_tooltip": "Možnost „Připojit se nyní“ není momentálně k dispozici. Vyberte prosím čas z dostupných časových slotů výše nebo to zkuste později.",
2929-2929: Consistency: prefer “časové sloty”.- "always_show_x_days_description": "Automaticky posouvá {{x}}-denní rezervační okno každý den dopředu, což zajišťuje, že váš kalendář vždy zobrazuje dostupné sloty na příštích {{x}} dní.", + "always_show_x_days_description": "Automaticky posouvá {{x}}‑denní rezervační okno každý den dopředu, což zajišťuje, že váš kalendář vždy zobrazuje dostupné časové sloty na příštích {{x}} dní.",
3348-3348: Minor clarity tweak.- "interface_language_description": "Nastavte preferovaný jazyk pro rezervační rozhraní", + "interface_language_description": "Nastavte preferovaný jazyk rozhraní pro rezervace",apps/web/public/static/locales/uk/common.json (1)
2304-2304: Polish tooltip and align with “Під’єднати”.Use “Під’єднання” and a more natural CTA.
Apply:
- "connect_now_unavailable_tooltip": "Підключення зараз недоступне. Будь ласка, забронюйте з доступних слотів вище або спробуйте пізніше.", + "connect_now_unavailable_tooltip": "Під’єднання наразі недоступне. Будь ласка, забронюйте один із доступних слотів вище або спробуйте пізніше.",apps/web/public/static/locales/el/common.json (3)
2929-2930: Smoother phrasing for label.“Πάντα διαθέσιμες {{x}} ημέρες” reads more naturally.
- "always_show_x_days": "Πάντα {{x}} διαθέσιμες ημέρες", + "always_show_x_days": "Πάντα διαθέσιμες {{x}} ημέρες",(Description is good as‑is.)
2208-2208: Minor wording: prefer “email” (indeclinable) over “emails”.- "guests_field_must_be_multiemail": "Το πεδίο επισκεπτών πρέπει να είναι τύπου 'Πολλαπλά emails'", + "guests_field_must_be_multiemail": "Το πεδίο επισκεπτών πρέπει να είναι τύπου «Πολλαπλά email»"
324-324: LGTM on translations; JSON valid.
Two style nits remain in apps/web/public/static/locales/el/common.json:
- Multiple “AI” occurrences (e.g. lines 824, 1506, 1581, 2721, 3152, 3743)
- Mixed casing of “Εκτός γραφείου” vs “Εκτός Γραφείου” (lines 2729, 3521)
Recommend standardizing these terms across the Greek locale for consistency.apps/web/public/static/locales/it/common.json (5)
2304-2304: Refine tooltip phrasing for natural Italian“Prenota dagli slot sopra” suona innaturale. Proposta più scorrevole:
- "connect_now_unavailable_tooltip": "Connetti ora è attualmente non disponibile. Prenota dagli slot sopra o riprova più tardi.", + "connect_now_unavailable_tooltip": "«Connetti ora» non è al momento disponibile. Prenota uno degli slot sopra o riprova più tardi.",
2930-2930: Allinea il termine “slot” a “fasce orarie” usato nel resto del fileCoerenza terminologica con le altre stringhe (es. “fascia oraria”):
- "always_show_x_days_description": "Sposta automaticamente avanti ogni giorno la finestra di prenotazione di {{x}} giorni, assicurando che il tuo calendario mostri sempre i prossimi {{x}} giorni di slot disponibili.", + "always_show_x_days_description": "Sposta automaticamente ogni giorno la finestra di prenotazione a {{x}} giorni, assicurando che il tuo calendario mostri sempre i prossimi {{x}} giorni di fasce orarie disponibili.",
2208-2208: Chiarezza e coerenza su nome campo e tipoAggiungi articolo/virgolette e mantieni “Email” come negli altri testi.
- "guests_field_must_be_multiemail": "Il campo ospiti deve essere di tipo 'Email multiple'", + "guests_field_must_be_multiemail": "Il campo \"Ospiti\" deve essere di tipo \"Email multiple\"",
3520-3533: PBAC “Fuori sede”: rendi naturale la forma d’azione“Crea/Visualizza/Aggiorna/Elimina fuori sede” suona tronco. Proposta più naturale e coerente con altre stringhe (“voce” fuori sede).
"pbac_resource_availability": "Disponibilità", "pbac_resource_out_of_office": "Fuori sede", "pbac_desc_create_availability": "Crea disponibilità", "pbac_desc_view_availability": "Visualizza disponibilità", "pbac_desc_update_availability": "Aggiorna disponibilità", "pbac_desc_delete_availability": "Elimina disponibilità", - "pbac_desc_create_out_of_office": "Crea fuori sede", - "pbac_desc_view_out_of_office": "Visualizza fuori sede", - "pbac_desc_update_out_of_office": "Aggiorna fuori sede", - "pbac_desc_delete_out_of_office": "Elimina fuori sede", + "pbac_desc_create_out_of_office": "Crea voce fuori sede", + "pbac_desc_view_out_of_office": "Visualizza voci fuori sede", + "pbac_desc_update_out_of_office": "Aggiorna voce fuori sede", + "pbac_desc_delete_out_of_office": "Elimina voce fuori sede",
3581-3583: Migliora grammatica italiana per le etichette tempoAggiungi “della” e traduci “meeting” in “riunione” per coerenza.
- "booking_creation_time": "Orario di creazione prenotazione", - "meeting_start_time": "Orario di inizio meeting", + "booking_creation_time": "Orario di creazione della prenotazione", + "meeting_start_time": "Orario di inizio della riunione",apps/web/public/static/locales/ro/common.json (3)
324-324: Prefer singular imperative for CTAUse “Începe” for consistency with other CTAs.
- "get_started": "Începeți", + "get_started": "Începe",
1334-1334: Tone consistency: singular imperativeMatch the rest of settings toggles.
- "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple",
3151-3152: Use singular imperative (“Tradu”)Keep button/description consistent with app tone.
- "translate_description_button": "Traduceți automat titlul și descrierea", - "translate_description_button_description": "Traduceți automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", + "translate_description_button": "Tradu automat titlul și descrierea", + "translate_description_button_description": "Tradu automat titlurile și descrierile în limba browserului vizitatorului folosind AI.",apps/web/public/static/locales/es-419/common.json (1)
1-1: Process note: CLA currently blocking mergeCLAassistant indicates the contributor hasn’t signed the CLA for PR #23991. Ensure CLA is signed/linked before merging.
apps/web/public/static/locales/bg/common.json (3)
2207-2207: Minor typography: prefer Bulgarian quotes.
For UI text, „…“ reads more native than straight quotes.- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",
3348-3348: Tiny style polish (optional).
“за интерфейса на резервациите” reads a bit smoother.- "interface_language_description": "Задайте предпочитания от вас език за интерфейса за резервации", + "interface_language_description": "Задайте предпочитания от вас език на интерфейса на резервациите",
3530-3533: JSON now valid; consider native quotes for style.
Escaped ASCII quotes are fine; Bulgarian „…“ would be more idiomatic.- "pbac_desc_create_out_of_office": "Създаване на статус \"Извън офиса\"", - "pbac_desc_view_out_of_office": "Преглед на статус \"Извън офиса\"", - "pbac_desc_update_out_of_office": "Актуализиране на статус \"Извън офиса\"", - "pbac_desc_delete_out_of_office": "Изтриване на статус \"Извън офиса\"", + "pbac_desc_create_out_of_office": "Създаване на статус „Извън офиса“", + "pbac_desc_view_out_of_office": "Преглед на статус „Извън офиса“", + "pbac_desc_update_out_of_office": "Актуализиране на статус „Извън офиса“", + "pbac_desc_delete_out_of_office": "Изтриване на статус „Извън офиса“",apps/web/public/static/locales/sr/common.json (2)
2304-2304: Slightly smoother, user-facing phrasing for tooltip.- "connect_now_unavailable_tooltip": "Povezivanje odmah trenutno nije dostupno. Molimo rezervišite iz gornjih termina ili pokušajte kasnije.", + "connect_now_unavailable_tooltip": "Povezivanje odmah trenutno nije dostupno. Molimo izaberite jedan od termina iznad ili pokušajte kasnije.",
3348-3348: Tiny grammar tweak for fluency.- "interface_language_description": "Postavite željeni jezik za interfejs za rezervacije", + "interface_language_description": "Postavite željeni jezik interfejsa za rezervacije",apps/web/public/static/locales/fr/common.json (3)
2304-2304: Optional: tighten the tooltip phrasing.
More natural and concise in FR.- "connect_now_unavailable_tooltip": "La connexion immédiate n'est pas disponible actuellement. Veuillez réserver parmi les créneaux ci-dessus ou réessayer plus tard.", + "connect_now_unavailable_tooltip": "La connexion immédiate est indisponible pour le moment. Réservez un créneau ci-dessus ou réessayez plus tard.",
2930-2930: Avoid “jours … chaque jour” repetition.
Smoother wording while keeping meaning.- "always_show_x_days_description": "Déplace automatiquement la fenêtre de réservation de {{x}} jours chaque jour, garantissant que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.", + "always_show_x_days_description": "Décale chaque jour la fenêtre de réservation de {{x}} jours afin que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.",
3348-3348: Optional: simplify phrasing.
Shorter and a bit more natural.- "interface_language_description": "Définissez votre langue préférée pour l'interface de réservation", + "interface_language_description": "Définissez la langue de l'interface de réservation",apps/web/public/static/locales/da/common.json (3)
2304-2304: Slightly smoother Danish phrasingMore idiomatic and specific to “vælg tidsrum” on the page.
- "connect_now_unavailable_tooltip": "Forbind nu er i øjeblikket ikke tilgængelig. Book venligst fra ovenstående tidsrum eller prøv igen senere.", + "connect_now_unavailable_tooltip": "Forbind nu er i øjeblikket ikke tilgængelig. Vælg venligst et tidsrum ovenfor eller prøv igen senere.",
2929-2929: Minor grammar polish (“bookingvindue på {{x}} dage”)This reads more naturally than “{{x}}-dages bookingvinduet”.
- "always_show_x_days_description": "Flytter automatisk {{x}}-dages bookingvinduet frem hver dag, så din kalender altid viser de næste {{x}} dages tilgængelige tidsrum.", + "always_show_x_days_description": "Flytter automatisk bookingvinduet på {{x}} dage frem hver dag, så din kalender altid viser de næste {{x}} dages tilgængelige tidsrum.",
315-315: Optional: align casing across similar CTAsCurrent file has “getting_started”: “Kom I Gang” (Line 315) but new “get_started”: “Kom i gang” (Line 324). Consider normalizing to sentence case for both for brand voice consistency.
- "getting_started": "Kom I Gang", + "getting_started": "Kom i gang",Also applies to: 324-324
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(11 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 hunks)apps/web/public/static/locales/km/common.json(11 hunks)apps/web/public/static/locales/ko/common.json(11 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(13 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(13 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(12 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/ru/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
| "error_404": "ত্রুটি 404", | ||
| "default": "ডিফল্ট", | ||
| "set_to_default": "ডিফল্ট সেট", | ||
| "set_to_default": "ডিফল্ট হিসাবে সেট করুন", |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
🧩 Analysis chain
Unify duplicate translation keys: set_to_default vs set_as_default.
Both keys exist; keep one canonical key to avoid drift and dead strings. Recommend consolidating on set_as_default and updating usages; then remove set_to_default across locales. Based on learnings
Run to audit usages and plan the consolidation:
Also applies to: 2071-2071
🏁 Script executed:
#!/bin/bash
# Find occurrences in code and locales
rg -n --no-ignore -S '\b(set_to_default|set_as_default)\b' -C2Length of output: 38444
Consolidate translation keys: use only set_as_default
- In
packages/platform/atoms/availability/AvailabilitySettings.tsx(lines 433 & 534), replacet("set_to_default")witht("set_as_default"). - In every locale’s
common.json, remove the"set_to_default"entries (around line 1236) and rely solely on the existing"set_as_default"key (around line 2071).
🤖 Prompt for AI Agents
In apps/web/public/static/locales/bn/common.json around line 1236, remove the
redundant "set_to_default" key and its value ("ডিফল্ট হিসাবে সেট করুন") so the
locale relies on the existing "set_as_default" entry; then update the code in
packages/platform/atoms/availability/AvailabilitySettings.tsx (near lines 433
and 534) to replace calls to t("set_to_default") with t("set_as_default") so all
locales consistently use the single key.
| "locked_by_team_admin": "Låst av teamadministrator", | ||
| "app_not_connected": "Du har ikke koblet til en {{appName}}-konto.", | ||
| "connect_now": "Koble til nå", | ||
| "connect_now_unavailable_tooltip": "Koble til nå er for øyeblikket utilgjengelig. Vennligst bestill fra tilgjengelige tider ovenfor eller prøv igjen senere.", |
There was a problem hiding this comment.
Clarify button reference in tooltip.
Quote the button label; small tone tweak.
- "connect_now_unavailable_tooltip": "Koble til nå er for øyeblikket utilgjengelig. Vennligst bestill fra tilgjengelige tider ovenfor eller prøv igjen senere.",
+ "connect_now_unavailable_tooltip": "\"Koble til nå\" er for øyeblikket utilgjengelig. Vennligst bestill fra tilgjengelige tider ovenfor eller prøv igjen senere.",📝 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.
| "connect_now_unavailable_tooltip": "Koble til nå er for øyeblikket utilgjengelig. Vennligst bestill fra tilgjengelige tider ovenfor eller prøv igjen senere.", | |
| "connect_now_unavailable_tooltip": "\"Koble til nå\" er for øyeblikket utilgjengelig. Vennligst bestill fra tilgjengelige tider ovenfor eller prøv igjen senere.", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/no/common.json around line 2304, the tooltip
text refers to the button label without quoting it and the tone can be softened;
update the string so the button label is wrapped in quotes (e.g. "Koble til nå")
and adjust the sentence to sound slightly less abrupt—suggest using a softer
phrasing that points users to select an available time above or try again later
while explicitly quoting the button label.
| "locked_by_team_admin": "Blocat de administratorul echipei", | ||
| "app_not_connected": "Nu ați conectat un cont {{appName}}.", | ||
| "connect_now": "Conectați-l acum", | ||
| "connect_now_unavailable_tooltip": "Conectarea acum nu este disponibilă momentan. Vă rugăm să rezervați din sloturile de mai sus sau să încercați din nou mai târziu.", |
There was a problem hiding this comment.
Improve tooltip naturalness
Use a neutral construction and reference the option name.
- "connect_now_unavailable_tooltip": "Conectarea acum nu este disponibilă momentan. Vă rugăm să rezervați din sloturile de mai sus sau să încercați din nou mai târziu.",
+ "connect_now_unavailable_tooltip": "Opțiunea „Conectați-l acum” nu este disponibilă momentan. Alegeți un interval de mai sus sau încercați din nou mai târziu.",📝 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.
| "connect_now_unavailable_tooltip": "Conectarea acum nu este disponibilă momentan. Vă rugăm să rezervați din sloturile de mai sus sau să încercați din nou mai târziu.", | |
| "connect_now_unavailable_tooltip": "Opțiunea „Conectați-l acum” nu este disponibilă momentan. Alegeți un interval de mai sus sau încercați din nou mai târziu.", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ro/common.json around line 2304, the tooltip
text should use a neutral construction and explicitly reference the option name;
update the value to mention the option (e.g., "Opțiunea 'Conectare acum' nu este
disponibilă momentan. Vă rugăm să selectați un slot de mai sus sau încercați din
nou mai târziu.") so it reads naturally and refers to the option by name.
| "booking_confirmation_failed": "预约确认失败", | ||
| "not_enough_seats": "位置不足", | ||
| "form_builder_field_already_exists": "具有此名称的字段已存在", | ||
| "guests_field_must_be_multiemail": "访客字段必须为“多个邮箱”类型", |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
🧩 Analysis chain
Guest term fixed—thanks. Quick scan for lingering variants
“guests_field_must_be_multiemail” now uses 访客 (consistent). Suggest a quick repo scan for 嘉宾/来宾 leftovers to keep the locale uniform.
🏁 Script executed:
#!/bin/bash
# Find inconsistent guest terms in zh-CN locale
rg -n --type=json -C2 '嘉宾|来宾' apps/web/public/static/locales/zh-CN/common.jsonLength of output: 1178
Replace remaining “嘉宾” with “访客” in zh-CN locale
In apps/web/public/static/locales/zh-CN/common.json, update these keys to use 访客 instead of 嘉宾:
- new_guests_added (line 1339)
- guests_added_event_type_subject (line 1341)
- guests_added (line 1354)
- after_guests_cal_video_no_show (line 1431)
- how_long_after_guests_no_show (line 1921)
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-CN/common.json around lines 1339, 1341,
1354, 1431, 1921 and the shown line 2207, replace occurrences of the word "嘉宾"
with "访客" for the specified keys (new_guests_added,
guests_added_event_type_subject, guests_added, after_guests_cal_video_no_show,
how_long_after_guests_no_show and the guests_field_must_be_multiemail entry),
ensuring the JSON string values remain valid and preserve surrounding
punctuation and wording.
c370b30 to
7be2a57
Compare
There was a problem hiding this comment.
Actionable comments posted: 13
🧹 Nitpick comments (38)
apps/web/public/static/locales/uk/common.json (2)
2304-2304: Consistency: “Під’єднання” vs “Підключення”Elsewhere “Під’єднати/Під’єднання” is used (e.g., Line 2303). Align the tooltip.
- "connect_now_unavailable_tooltip": "Підключення зараз недоступне. Будь ласка, забронюйте з доступних слотів вище або спробуйте пізніше.", + "connect_now_unavailable_tooltip": "Під’єднання зараз недоступне. Будь ласка, забронюйте з доступних слотів вище або спробуйте пізніше.",
3348-3348: Tighten wordingMinor style: drop “для” for smoother Ukrainian.
- "interface_language_description": "Встановіть бажану мову для інтерфейсу бронювання", + "interface_language_description": "Встановіть бажану мову інтерфейсу бронювання",apps/web/public/static/locales/bn/common.json (2)
1-1: Process note: CLA must be signed before mergeThe PR shows the CLA is unsigned; ensure the committing identity is linked to a GitHub user and re-run the CLA check.
1236-1236: Unify translation key to “set_as_default”
- In packages/platform/atoms/availability/AvailabilitySettings.tsx, replace both t("set_to_default") calls (around lines 431–435 and 530–536) with t("set_as_default").
- In all common.json locale files, remove the “set_to_default” entries (≈line 1236) and ensure each has a single “set_as_default” entry (≈line 2071).
- Audit for any remaining uses:
rg -n '\bset_to_default\b' -C2apps/web/public/static/locales/ru/common.json (3)
1236-1236: Clarify “set_to_default” action (reset vs. choose).Differentiate from "set_as_default" (2071) by using the reset nuance.
- "set_to_default": "Установить по умолчанию", + "set_to_default": "Сбросить к значению по умолчанию",
2930-2930: Align with existing terminology (“временные интервалы”) and tighten phrasing.- "always_show_x_days_description": "Автоматически сдвигает {{x}}-дневное окно бронирования вперед каждый день, чтобы ваш календарь всегда показывал следующие {{x}} дней доступных слотов.", + "always_show_x_days_description": "Автоматически сдвигает {{x}}-дневное окно бронирования вперед каждый день, чтобы календарь всегда показывал ближайшие {{x}} дней доступных временных интервалов.",
3349-3349: Minor copy tweak for clarity.- "interface_language_description": "Установите предпочитаемый язык интерфейса бронирования", + "interface_language_description": "Установите предпочитаемый язык интерфейса страниц бронирования",apps/web/public/static/locales/bg/common.json (2)
962-962: Tone consistency for button copy.If “create_team” is a button, prefer imperative to match nearby “create_new_team”.
- "create_team": "Създаване на екип", + "create_team": "Създай екип",If it’s a heading, current text is fine—please confirm context.
2208-2208: Optional: typographic quotes for consistency.Consider Bulgarian „…“ quotes around the field type name for consistency with other strings.
- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",apps/web/public/static/locales/az/common.json (2)
1334-1334: Consistency: use singular imperative (“icazə ver”)Align with locale’s action verbs (e.g., “Redaktə et”, “Sil”).
- "allow_multiple_durations": "Çoxsaylı müddətlərə icazə verin", + "allow_multiple_durations": "Çoxsaylı müddətlərə icazə ver",
2304-2304: Polish tooltip wording; avoid “slot” anglicism and redundancyMore natural and consistent with prior guidance (“vaxt aralığı”, not “slot”).
- "connect_now_unavailable_tooltip": "İndi qoşulmaq hazırda əlçatan deyil. Zəhmət olmasa yuxarıdakı slotlardan rezervasiya edin və ya sonra yenidən cəhd edin.", + "connect_now_unavailable_tooltip": "“İndi qoşul” hazırda əlçatan deyil. Zəhmət olmasa yuxarıdakı vaxt aralıqlarından rezervasiya edin və ya sonra yenidən cəhd edin.",apps/web/public/static/locales/ro/common.json (4)
324-324: Prefer singular imperative for CTAUse “Începe” to match CTA tone elsewhere.
- "get_started": "Începeți", + "get_started": "Începe",
1334-1334: Align imperative styleUse singular imperative.
- "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple",
2929-2929: Clarify and unify person (“tău” vs. “dumneavoastră”)Keep tone consistent and more concise.
- "always_show_x_days_description": "Mută automat fereastra de rezervare de {{x}} zile înainte în fiecare zi, asigurându-se că calendarul dumneavoastră arată mereu următoarele {{x}} zile cu intervale disponibile.", + "always_show_x_days_description": "Mută zilnic fereastra de rezervare înainte cu {{x}} zile, astfel încât calendarul tău să arate mereu următoarele {{x}} zile cu intervale disponibile.",
3151-3152: Unify voice: prefer indicative for descriptions; imperative for buttonsButton: “Tradu…”. Description: “Tradu…”.
- "translate_description_button": "Traduceți automat titlul și descrierea", - "translate_description_button_description": "Traduceți automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", + "translate_description_button": "Tradu automat titlul și descrierea", + "translate_description_button_description": "Tradu automat titlurile și descrierile în limba browserului vizitatorului folosind AI.",apps/web/public/static/locales/ko/common.json (2)
2304-2304: Polish tooltip phrasing.버튼 라벨 인용과 어미를 다듬으면 자연스럽습니다.
- "connect_now_unavailable_tooltip": "지금 연결하기는 현재 사용할 수 없습니다. 위의 슬롯에서 예약하거나 나중에 다시 시도하세요.", + "connect_now_unavailable_tooltip": "\"지금 연결하기\" 기능은 현재 사용할 수 없습니다. 위의 슬롯에서 예약하시거나 나중에 다시 시도해 주세요.",
2929-2929: Clarify “always show X days” description.어순을 다듬어 읽기 흐름을 개선합니다.
- "always_show_x_days_description": "매일 {{x}}일 예약 창을 자동으로 앞으로 이동하여 캘린더에 항상 다음 {{x}}일의 사용 가능한 슬롯을 표시합니다.", + "always_show_x_days_description": "예약 창을 매일 자동으로 앞당겨, 캘린더에 항상 향후 {{x}}일의 사용 가능한 슬롯을 표시합니다.",apps/web/public/static/locales/vi/common.json (2)
2207-2207: Polish phrasing for field/type clarity.Suggest referencing the field label, not the type, in quotes:
- "guests_field_must_be_multiemail": "Trường khách mời phải có kiểu 'Nhiều email'", + "guests_field_must_be_multiemail": "Trường \"Khách mời\" phải là kiểu Nhiều email",
3348-3349: Broaden scope of “interface_language_description”.This likely controls the app interface, not just booking pages. Consider:
- "interface_language_description": "Đặt ngôn ngữ ưa thích cho giao diện đặt lịch", + "interface_language_description": "Đặt ngôn ngữ ưa thích cho giao diện",apps/web/public/static/locales/he/common.json (6)
324-324: CTA should be imperativePrefer an actionable label for buttons. Suggest using a neutral imperative.
- "get_started": "להתחיל", + "get_started": "התחל/י"
2304-2305: Tooltip tone and gender neutralityUse neutral imperative and consistent booking terminology.
- "connect_now_unavailable_tooltip": "התחברות מיידית אינה זמינה כרגע. אנא הזמן מהמשבצות למעלה או נסה שוב מאוחר יותר.", + "connect_now_unavailable_tooltip": "התחברות מיידית אינה זמינה כרגע. בחר/י משבצת זמן למעלה או נסה/י שוב מאוחר יותר."
3151-3151: Make the button label imperative and gender‑neutralCurrent phrasing is a noun phrase; prefer an action.
- "translate_description_button": "תרגום אוטומטי של כותרת ותיאור", + "translate_description_button": "תרגם/י את הכותרת ואת התיאור אוטומטית"
3152-3153: Align description with neutral imperativeMinor tone tweak for consistency with UI style.
- "translate_description_button_description": "תרגם אוטומטית כותרות ותיאורים לשפת הדפדפן של המבקר באמצעות בינה מלאכותית.", + "translate_description_button_description": "תרגם/י אוטומטית כותרות ותיאורים לשפת הדפדפן של המבקר/ת באמצעות בינה מלאכותית."
3348-3349: Broaden scope and neutralize genderThis likely applies to the whole interface, not only booking pages, and should be gender‑neutral.
- "interface_language_description": "הגדר את השפה המועדפת עליך לממשק ההזמנות", + "interface_language_description": "הגדר/י את שפת הממשק המועדפת שלך"
3520-3533: PBAC additions look consistentResource/action labels read well and match the existing PBAC style. Optional: consider “רשומת 'מחוץ למשרד'” for extra clarity, but current phrasing is acceptable.
apps/web/public/static/locales/ca/common.json (1)
1022-1024: Align “Show/Hide advanced settings” to infinitive form.
Other toggles use infinitive (“Mostrar …”). Prefer “Amagar …” for consistency.- "hide_advanced_settings": "Amaga la configuració avançada", + "hide_advanced_settings": "Amagar la configuració avançada",apps/web/public/static/locales/pt-BR/common.json (2)
2304-2304: Improve tooltip phrasing for clarity.Current reads a bit literal. Suggest:
- "connect_now_unavailable_tooltip": "Conectar agora está indisponível no momento. Por favor, agende nos horários acima ou tente novamente mais tarde.", + "connect_now_unavailable_tooltip": "A opção \"Conectar agora\" está indisponível no momento. Agende em um dos horários acima ou tente novamente mais tarde.",
3581-3581: Keep “reserva” terminology consistent.Elsewhere “booking” is “reserva”. Suggest reverting:
- "booking_creation_time": "Horário de criação do agendamento", + "booking_creation_time": "Horário de criação da reserva",apps/web/public/static/locales/sk-SK/common.json (1)
2304-2304: Polish tooltip phrasing for clarity.Slightly clearer, aligns with UI control name.
- "connect_now_unavailable_tooltip": "Pripojenie teraz je momentálne nedostupné. Prosím, rezervujte si termín z vyššie uvedených časov alebo to skúste neskôr.", + "connect_now_unavailable_tooltip": "Možnosť „Pripojiť sa teraz“ je momentálne nedostupná. Rezervujte si prosím termín z dostupných časov vyššie alebo to skúste neskôr.",apps/web/public/static/locales/nl/common.json (2)
1-1: Please resolve CLA gating before merging.CLAassistant reports the contributor isn’t recognized as a GitHub user. Ensure commits map to a GH user (email added to account) and recheck CLA. Merge only after green.
2304-2304: Minor NL polish (“tijdslots” → “tijdsloten”).
Align with preferred Dutch plural.- "connect_now_unavailable_tooltip": "Direct verbinden is momenteel niet beschikbaar. Boek alstublieft via bovenstaande tijdslots of probeer het later opnieuw.", + "connect_now_unavailable_tooltip": "Direct verbinden is momenteel niet beschikbaar. Boek alstublieft via bovenstaande tijdsloten of probeer het later opnieuw.",apps/web/public/static/locales/da/common.json (1)
324-324: Meta: CLA check blocks mergeCLA assistant flagged the contributor. Please resolve CLA before merging this i18n PR; otherwise automation will stay red.
apps/web/public/static/locales/it/common.json (2)
2304-2304: Polish tooltip phrasing for fluencySuggested smoother Italian and clearer instruction.
- "connect_now_unavailable_tooltip": "Connetti ora è attualmente non disponibile. Prenota dagli slot sopra o riprova più tardi.", + "connect_now_unavailable_tooltip": "Connetti ora non è al momento disponibile. Prenota da uno degli slot sopra o riprova più tardi.",
3530-3533: Clarify “fuori sede” PBAC descriptionsAdd “voce/voci” to sound natural and precise in Italian.
- "pbac_desc_create_out_of_office": "Crea fuori sede", - "pbac_desc_view_out_of_office": "Visualizza fuori sede", - "pbac_desc_update_out_of_office": "Aggiorna fuori sede", - "pbac_desc_delete_out_of_office": "Elimina fuori sede", + "pbac_desc_create_out_of_office": "Crea voce fuori sede", + "pbac_desc_view_out_of_office": "Visualizza voci fuori sede", + "pbac_desc_update_out_of_office": "Aggiorna voci fuori sede", + "pbac_desc_delete_out_of_office": "Elimina voci fuori sede",apps/web/public/static/locales/fr/common.json (4)
2304-2304: Smoother phrasing for tooltip.- "connect_now_unavailable_tooltip": "La connexion immédiate n'est pas disponible actuellement. Veuillez réserver parmi les créneaux ci-dessus ou réessayer plus tard.", + "connect_now_unavailable_tooltip": "La connexion immédiate n’est pas disponible pour le moment. Veuillez choisir un créneau ci‑dessus ou réessayer plus tard.",
2929-2929: Clarify rolling window behavior.- "always_show_x_days_description": "Déplace automatiquement la fenêtre de réservation de {{x}} jours chaque jour, garantissant que votre calendrier affiche toujours les {{x}} prochains jours de créneaux disponibles.", + "always_show_x_days_description": "Décale chaque jour la fenêtre de réservation pour afficher en permanence les {{x}} prochains jours de créneaux disponibles.",
3151-3151: Shorter button label for UI fit.- "translate_description_button": "Traduction automatique du titre et de la description", + "translate_description_button": "Traduire le titre et la description",
3526-3529: Availability actions: use singular for create/update/delete to match item semantics.- "pbac_desc_create_availability": "Créer des disponibilités", - "pbac_desc_view_availability": "Voir les disponibilités", - "pbac_desc_update_availability": "Mettre à jour les disponibilités", - "pbac_desc_delete_availability": "Supprimer des disponibilités", + "pbac_desc_create_availability": "Créer une disponibilité", + "pbac_desc_view_availability": "Voir les disponibilités", + "pbac_desc_update_availability": "Mettre à jour une disponibilité", + "pbac_desc_delete_availability": "Supprimer une disponibilité",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(11 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 hunks)apps/web/public/static/locales/km/common.json(11 hunks)apps/web/public/static/locales/ko/common.json(11 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(13 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(13 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(12 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/zh-CN/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
| "you_cannot_see_team_members": "Du kan ikke se alle teammedlemmer i et privat team.", | ||
| "you_cannot_see_teams_of_org": "Du kan ikke se teams i en privat organisation.", | ||
| "allow_booker_to_select_duration": "Tillad bookeren at vælge varighed", | ||
| "allow_multiple_durations": "Tillad flere varigheder", |
There was a problem hiding this comment.
🧩 Analysis chain
Key rename risk: allow_multiple_durations
New key is fine linguistically. Please verify all code and locales stopped using the old key (allow_booker_to_select_duration) to avoid dead references.
Run to check repo-wide usage and locale presence:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Search for old/new keys in source:"
rg -nP --type=ts --type=tsx --type=js --type=json '\ballow_(booker_to_select_duration|multiple_durations)\b' -C2 || true
echo -e "\nValidate locale JSON files and ensure new key exists in all locales:"
fd -a 'common.json' apps/web/public/static/locales | while read -r f; do
jq -e . "$f" >/dev/null || { echo "Invalid JSON: $f"; exit 1; }
jq -e 'has("allow_multiple_durations")' "$f" >/dev/null || echo "Missing allow_multiple_durations in: $f"
done
echo -e "\nCheck English source value for comparison:"
jq -r '.allow_multiple_durations // empty' apps/web/public/static/locales/en/common.json || trueLength of output: 915
#!/bin/bash
set -euo pipefail
echo "Search for old key in code:"
rg -n 'allow_booker_to_select_duration' -C2 -g '*.{ts,tsx,js,jsx,json,html}' || echo "No occurrences of old key found"
echo -e "\nSearch for new key usage in code:"
rg -n 'allow_multiple_durations' -C2 -g '*.{ts,tsx,js,jsx,json,html}' || echo "No occurrences of new key usage found"#!/bin/bash
set -euo pipefail
echo "Searching for old key occurrences..."
rg -n 'allow_booker_to_select_duration' -g '*.{ts,tsx,js,jsx,html,json}' || echo "No occurrences of old key found"
echo -e "\nSearching for new key occurrences..."
rg -n 'allow_multiple_durations' -g '*.{ts,tsx,js,jsx,html,json}' || echo "No occurrences of new key found"
echo -e "\nChecking locales for new key presence..."
for f in apps/web/public/static/locales/*/common.json; do
jq -e 'has("allow_multiple_durations")' "$f" >/dev/null || echo "Missing allow_multiple_durations in: $f"
done
echo -e "\nChecking locales for old key presence..."
for f in apps/web/public/static/locales/*/common.json; do
jq -e 'has("allow_booker_to_select_duration")' "$f" >/dev/null && echo "Found old key in: $f"
done
echo -e "\nEnglish reference value:"
jq -r '.allow_multiple_durations // empty' apps/web/public/static/locales/en/common.json || true
#!/bin/bash
set -euo pipefail
echo "🔍 Searching for old key in codebase (ts, tsx, js, jsx, html, json):"
rg -n 'allow_booker_to_select_duration' -g '*.{ts,tsx,js,jsx,html,json}' || echo "✅ No occurrences of old key found"
echo -e "\n🔍 Searching for new key in codebase (ts, tsx, js, jsx, html, json):"
rg -n 'allow_multiple_durations' -g '*.{ts,tsx,js,jsx,html,json}' || echo "
echo -e "\n🌐 Verifying locale files for key presence:"
for f in apps/web/public/static/locales/*/common.json; do
new_key=$(jq 'has("allow_multiple_durations")' "$f")
old_key=$(jq 'has("allow_booker_to_select_duration")' "$f")
echo "$(basename "$(dirname "$f")"): new=$new_key old=$old_key"
done
echo -e "\n📝 English reference value:"
jq -r '.allow_multiple_durations // empty' apps/web/public/static/locales/en/common.json || true
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "🔍 Searching for old key usage in code:"
rg -n 'allow_booker_to_select_duration' -g '*.{ts,tsx,js,jsx,html,json}' || echo "✅ No old key references found"
echo -e "\n🔍 Searching for new key usage in code:"
rg -n 'allow_multiple_durations' -g '*.{ts,tsx,js,jsx,html,json}' || echo "⚠️ No new key references found in code"
echo -e "\n🌐 Checking each locale for the new key:"
for f in apps/web/public/static/locales/*/common.json; do
if ! jq -e 'has("allow_multiple_durations")' "$f" >/dev/null; then
echo "Missing in locale: $(basename "$(dirname "$f")")"
fi
doneLength of output: 6267
Missing translations for allow_multiple_durations
No occurrences of allow_booker_to_select_duration remain and code/tests reference allow_multiple_durations, but this key is absent in the following common.json locales: hr, id, iw, lv, sk, ta, th. Add these translations to avoid missing keys at runtime.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/{hr,id,iw,lv,sk,ta,th}/common.json (add near
where other booking/duration keys live), the key "allow_multiple_durations" is
missing causing runtime/test failures; add "allow_multiple_durations":
"<translated text>" to each of those locale files (use accurate translations for
"Allow multiple durations"), place the entry in the same section/order as
similar keys, ensure valid JSON (commas, quotes), run i18n/lint/tests to verify
no missing-key errors.
| "set_to_default": "Als Standard festlegen", | ||
| "new_schedule_btn": "Neuer Verfügbarkeitsplan", |
There was a problem hiding this comment.
Restore the revert semantics for “set_to_default”.
set_to_default now reads “Als Standard festlegen”, but that phrasing already belongs to set_as_default (see Line 2072) and means “designate as default”. The English source (“Set to default”) refers to resetting a value back to its default state, so users will see the opposite action. Please revert to something like “Auf Standardwert zurücksetzen” to keep the command accurate and distinct.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/de/common.json around lines 1236 to 1237, the
translation for "set_to_default" incorrectly uses the same phrasing as
"set_as_default" (Als Standard festlegen) which designates something as the
default; change it to a phrase that restores a value to its default such as "Auf
Standardwert zurücksetzen" to preserve the original "Set to default" (reset)
semantics and keep it distinct from "set_as_default".
| "attendees": "Asistentes", | ||
| "add_attendees": "Agregar asistentes", | ||
| "show_advanced_settings": "Mostrar configuraciones avanzadas", | ||
| "hide_advanced_settings": "Ocultar configuración avanzada", |
There was a problem hiding this comment.
Mantén el plural para el toggle.
show_advanced_settings sigue en plural (“Mostrar configuraciones avanzadas”), pero este valor volvió al singular. Ajusta a “Ocultar configuraciones avanzadas” para que el toggle muestre textos simétricos.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/es-419/common.json around line 1023, the
translation for "hide_advanced_settings" is singular ("Ocultar configuración
avanzada") while the matching "show_advanced_settings" uses plural; update this
value to the plural form "Ocultar configuraciones avanzadas" so the toggle texts
are symmetrical and use consistent pluralization.
| "translate_description_button": "Traducir automáticamente título y descripción", | ||
| "translate_description_button_description": "Traduce automáticamente títulos y descripciones al idioma del navegador del visitante usando IA.", |
There was a problem hiding this comment.
Añade los artículos definidos para fluidez.
En español natural necesitamos “el título y la descripción”. Por favor actualiza a:
Traducir automáticamente el título y la descripciónTraduce automáticamente el título y la descripción al idioma del navegador del visitante usando IA.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/es-419/common.json around lines 3151 to 3152,
the Spanish strings for translate_description_button and
translate_description_button_description are missing the definite article “el”;
update the values to include it: change "Traducir automáticamente título y
descripción" to "Traducir automáticamente el título y la descripción" and change
"Traduce automáticamente títulos y descripciones al idioma del navegador del
visitante usando IA." to "Traduce automáticamente el título y la descripción al
idioma del navegador del visitante usando IA.", preserving JSON property names
and punctuation.
| "pbac_resource_out_of_office": "ក្រៅការិយាល័យ", | ||
| "pbac_desc_create_webhooks": "បង្កើត webhooks", | ||
| "pbac_desc_view_webhooks": "មើល webhooks", | ||
| "pbac_desc_update_webhooks": "ធ្វើបច្ចុប្បន្នភាព webhooks", | ||
| "pbac_desc_delete_webhooks": "លុប webhooks", | ||
| "pbac_desc_create_availability": "បង្កើតភាពអាចប្រើបាន", | ||
| "pbac_desc_view_availability": "មើលភាពអាចប្រើបាន", | ||
| "pbac_desc_update_availability": "ធ្វើបច្ចុប្បន្នភាពភាពអាចប្រើបាន", | ||
| "pbac_desc_delete_availability": "លុបភាពអាចប្រើបាន", | ||
| "pbac_desc_create_out_of_office": "បង្កើតស្ថានភាពក្រៅការិយាល័យ", | ||
| "pbac_desc_view_out_of_office": "មើលស្ថានភាពក្រៅការិយាល័យ", | ||
| "pbac_desc_update_out_of_office": "ធ្វើបច្ចុប្បន្នភាពស្ថានភាពក្រៅការិយាល័យ", | ||
| "pbac_desc_delete_out_of_office": "លុបស្ថានភាពក្រៅការិយាល័យ", |
There was a problem hiding this comment.
Align OOO terminology with existing locale usage.
Elsewhere in the KM locale we standardized “out of office” as “ចេញពីការិយាល័យ”; these new PBAC entries slip back to “ក្រៅការិយាល័យ”. Please update all affected keys in this hunk to the established wording so the UI stays consistent.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around lines 3521 to 3533 the
PBAC entries use the inconsistent phrase "ក្រៅការិយាល័យ"; update all affected
values in this hunk to the standardized term "ចេញពីការិយាល័យ" so they match the
existing KM locale usage (replace occurrences in pbac_resource_out_of_office and
the create/view/update/delete out_of_office description keys).
| "booking_confirmation_failed": "예약 확인 실패", | ||
| "not_enough_seats": "좌석이 부족합니다", | ||
| "form_builder_field_already_exists": "이 이름을 가진 필드가 이미 존재합니다", | ||
| "guests_field_must_be_multiemail": "게스트 필드는 '여러 이메일' 유형이어야 합니다", |
There was a problem hiding this comment.
Quote UI term with escaped double quotes; keep glossary clean.
내부 인용부호는 프로젝트 전반에서 큰따옴표를 사용합니다.
- "guests_field_must_be_multiemail": "게스트 필드는 '여러 이메일' 유형이어야 합니다",
+ "guests_field_must_be_multiemail": "게스트 필드는 \"여러 이메일\" 유형이어야 합니다",(대안: “복수 이메일”)
📝 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.
| "guests_field_must_be_multiemail": "게스트 필드는 '여러 이메일' 유형이어야 합니다", | |
| "guests_field_must_be_multiemail": "게스트 필드는 \"여러 이메일\" 유형이어야 합니다", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ko/common.json around line 2207, the inner
quote uses single quotes around '여러 이메일' but the project standard is to use
double quotes; replace the single quotes with escaped double quotes so the JSON
string reads with \"여러 이메일\" and leave the glossary unchanged.
| "locked_by_team_admin": "Заблокировано администратором команды", | ||
| "app_not_connected": "Вы не подключили аккаунт {{appName}}.", | ||
| "connect_now": "Подключить", | ||
| "connect_now_unavailable_tooltip": "Функция \"Подключиться сейчас\" в данный момент недоступна. Пожалуйста, выберите время из доступных выше слотов или попробуйте позже.", |
There was a problem hiding this comment.
RU quotes and terminology ("интервалы" vs. "слоты").
- "connect_now_unavailable_tooltip": "Функция \"Подключиться сейчас\" в данный момент недоступна. Пожалуйста, выберите время из доступных выше слотов или попробуйте позже.",
+ "connect_now_unavailable_tooltip": "Функция «Подключиться сейчас» временно недоступна. Выберите время из доступных выше интервалов или попробуйте позже.",📝 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.
| "connect_now_unavailable_tooltip": "Функция \"Подключиться сейчас\" в данный момент недоступна. Пожалуйста, выберите время из доступных выше слотов или попробуйте позже.", | |
| "connect_now_unavailable_tooltip": "Функция «Подключиться сейчас» временно недоступна. Выберите время из доступных выше интервалов или попробуйте позже.", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json around line 2304, the Russian
string uses English-style escaped quotes and the word "слотов"; replace the
quotes with Russian quotation marks and change "слотов" to "интервалов" to match
Russian terminology and style—e.g. use «Подключиться сейчас» and adjust
surrounding grammar so the sentence reads naturally with «» and "интервалов".
| "booking_confirmation_failed": "Rezervasyon onayı yapılamadı", | ||
| "not_enough_seats": "Yeterli yer yok", | ||
| "form_builder_field_already_exists": "Bu ada sahip bir alan zaten var", | ||
| "guests_field_must_be_multiemail": "Misafirler alanı 'Çoklu e-postalar' türünde olmalıdır", |
There was a problem hiding this comment.
Standardize the guests-field copy
Elsewhere we refer to guests as “Davetliler” and use the phrase “birden fazla e-posta” for the multi-email option. Update this string to match that voice—for example: “Davetliler alanının ‘Birden fazla e-posta’ türünde olması gerekir.” Based on learnings.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/tr/common.json around line 2207, the
translation for "guests_field_must_be_multiemail" should be standardized to
match existing voice; update the value to use "Davetliler" and the phrase
"Birden fazla e-posta" — e.g. replace the current string with "Davetliler
alanının 'Birden fazla e-posta' türünde olması gerekir." ensuring punctuation
and casing match surrounding entries.
| "enterprise_description": "Organizasyonunuzu oluşturmak için Enterprise'a yükseltin", | ||
| "create_your_org": "Organizasyonunuzu Oluşturun", | ||
| "create_org": "Kuruluş Oluştur", | ||
| "create_org": "Organizasyon oluştur", |
There was a problem hiding this comment.
Keep “Kuruluş” terminology consistent
We standardize “organization” as “Kuruluş” across the TR locale. Please revert this string to “Kuruluş oluştur” so the UI stays consistent. Based on learnings.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/tr/common.json around line 2695, the Turkish
translation uses "Organizasyon oluştur" but our standard term for "organization"
is "Kuruluş"; update the value to "Kuruluş oluştur" to maintain consistent
terminology across the TR locale.
7be2a57 to
f35dd02
Compare
There was a problem hiding this comment.
Actionable comments posted: 20
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
apps/web/public/static/locales/et/common.json (1)
2067-2067: Restore double‑quoted field labels in Estonian copyThe value now uses straight single quotes and drops the explicit field label, deviating from the established UI convention of escaped double quotes. Please revert to the previously accepted phrasing with escaped doubles (e.g.
Väli \"Külalised\" peab olema tüüpi \"Mitme e-posti aadressiga\").apps/web/public/static/locales/el/common.json (1)
2952-2953: Match casing with existing “Εκτός γραφείου” copy.Line 2953 reintroduces “Εκτός Γραφείου”, but the established phrasing elsewhere in the same file (e.g., key
out_of_office) is “Εκτός γραφείου”. Please switch back to the lower-case variant for consistency and to avoid duplicate translations for the same concept.
🧹 Nitpick comments (20)
apps/web/public/static/locales/sv/common.json (1)
2207-2207: Polish wording for the “guests” field validationTo match the tone of the other field-type strings, consider removing the quotes and referring to the field name directly.
- "guests_field_must_be_multiemail": "Fältet för gäster måste vara av typen 'Flera e-postadresser'", + "guests_field_must_be_multiemail": "Fältet Gäster måste vara av typen Flera e-postadresser",apps/web/public/static/locales/cs/common.json (1)
2304-2304: Optional: clarify tooltip subjectConsider “Tlačítko ‚Připojit se nyní‘…” if this refers to a button; otherwise current text is acceptable.
apps/web/public/static/locales/hu/common.json (2)
2304-2304: Polish tooltip phrasing.More idiomatic Hungarian.
- "connect_now_unavailable_tooltip": "A Csatlakozás most funkció jelenleg nem elérhető. Kérjük, foglaljon időpontot a fenti időpontokból, vagy próbálja újra később.", + "connect_now_unavailable_tooltip": "A Csatlakozás most funkció jelenleg nem elérhető. Kérjük, válasszon időpontot a fenti lehetőségek közül, vagy próbálja meg később.",
3182-3182: Term consistency: prefer “Találkozó” across locale.Most strings use “Találkozó”; align this key for consistency.
- "meeting_start_time": "Megbeszélés kezdési ideje", + "meeting_start_time": "Találkozó kezdési ideje",apps/web/public/static/locales/ro/common.json (5)
324-324: Unify CTA tone: prefer singular imperativeRecommend aligning with other CTAs (e.g., „Încearcă”, „Creează”): use „Începe”.
- "get_started": "Începeți", + "get_started": "Începe",
1334-1334: Consistent tone for togglesPrefer singular imperative: „Permite durate multiple”.
- "allow_multiple_durations": "Permiteți durate multiple", + "allow_multiple_durations": "Permite durate multiple",
2929-2929: Make description clearer and consistent in toneSimplify and switch to singular „tu”.
- "always_show_x_days_description": "Mută automat fereastra de rezervare de {{x}} zile înainte în fiecare zi, asigurându-se că calendarul dumneavoastră arată mereu următoarele {{x}} zile de sloturi disponibile.", + "always_show_x_days_description": "Mută automat fereastra de rezervare înainte cu {{x}} zile, astfel încât pagina ta de rezervare să afișeze mereu următoarele {{x}} zile de intervale disponibile.",
3151-3152: Unify button/description voice (singular imperative) and numberUse „Tradu” for button; keep plural nouns in description.
- "translate_description_button": "Traduceți automat titlul și descrierea", - "translate_description_button_description": "Traduceți automat titlurile și descrierile în limba browserului vizitatorului folosind AI.", + "translate_description_button": "Tradu automat titlul și descrierea", + "translate_description_button_description": "Tradu automat titlurile și descrierile în limba browserului vizitatorului folosind AI.",
3520-3522: Align resource names with terminology used elsewhereKeep „Disponibilitate”; change OOO to „Absență de la birou” for consistency with related strings.
- "pbac_resource_availability": "Disponibilitate", - "pbac_resource_out_of_office": "În afara biroului", + "pbac_resource_availability": "Disponibilitate", + "pbac_resource_out_of_office": "Absență de la birou",apps/web/public/static/locales/bn/common.json (3)
2207-2207: Use UI field type naming consistently (“MultiEmail”)Current: “'একাধিক ইমেইল' ধরনের” may confuse users if the UI shows the literal field type. Prefer referencing the actual type name or a cleaner Bengali phrasing.
Option A (keep UI term):
- "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'একাধিক ইমেইল' ধরনের হতে হবে", + "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'MultiEmail' ধরনের হতে হবে",Option B (fully Bengali):
- "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'একাধিক ইমেইল' ধরনের হতে হবে", + "guests_field_must_be_multiemail": "অতিথি ক্ষেত্রটি অবশ্যই 'একাধিক ইমেল' ধরনের হতে হবে",
2304-2304: Polish tooltip copy; remove redundancy“এখন সংযোগ করা বর্তমানে” repeats “now/currently”.
- "connect_now_unavailable_tooltip": "এখন সংযোগ করা বর্তমানে অনুপলব্ধ। অনুগ্রহ করে উপরের স্লট থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।", + "connect_now_unavailable_tooltip": "এখন সংযুক্ত করা সম্ভব নয়। অনুগ্রহ করে উপরের স্লট থেকে বুক করুন অথবা পরে আবার চেষ্টা করুন।",
1236-1236: Consolidate duplicate translation keys
The keys"set_to_default"(used in AvailabilitySettings.tsx and locale entries at line 1236) and"set_as_default"(used in ScheduleListItem.tsx, AppList.tsx, AppConnectionItem.tsx and locale entries at line 2071) should be unified. Standardize on"set_as_default", update all code references and locale files accordingly, then remove"set_to_default".apps/web/public/static/locales/tr/common.json (1)
3348-3348: Slightly broaden scope of interface-language description (optional).- "interface_language_description": "Rezervasyon arayüzü için tercih ettiğiniz dili ayarlayın", + "interface_language_description": "Arayüz için tercih ettiğiniz dili ayarlayın",apps/web/public/static/locales/bg/common.json (2)
2208-2208: Minor wording tweak (optional).Consider Bulgarian quotes for the field type label.
- "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип 'Множество имейли'", + "guests_field_must_be_multiemail": "Полето за гости трябва да бъде от тип „Множество имейли“",
3348-3348: Optional grammar polish.“език на интерфейса” reads more naturally.
- "interface_language_description": "Задайте предпочитания от вас език за интерфейса за резервации", + "interface_language_description": "Задайте предпочитания от вас език на интерфейса за резервации",apps/web/public/static/locales/pl/common.json (1)
3151-3152: CTA can be shorter; keep description as-is.Button labels should be concise imperatives. Suggest trimming “Automatycznie”.
- "translate_description_button": "Automatycznie przetłumacz tytuł i opis", + "translate_description_button": "Przetłumacz tytuł i opis",Description line looks fine and can remain unchanged.
apps/web/public/static/locales/ar/common.json (1)
1-1: Block merge on CLA until resolved (non-code).CLA bot shows the contributor hasn’t signed; avoid merging until the CLA check passes or commits are re-authored to a GitHub user who can sign.
apps/web/public/static/locales/da/common.json (3)
1-1: Heads-up: CLA must be resolved before merge.CLAassistant shows the contributor hasn’t signed; please clear that check before merging this XL i18n update.
2208-2208: Minor copy tweak (optional).Consider removing inner quotes for consistency with other labels: Gæstefeltet skal være af typen Flere e-mails.
2304-2304: Microcopy clarity (optional).Suggestion: “Forbind nu er i øjeblikket ikke tilgængelig. Book venligst fra de ledige tidsrum ovenfor eller prøv igen senere.”
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ 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(13 hunks)apps/web/public/static/locales/bg/common.json(12 hunks)apps/web/public/static/locales/bn/common.json(12 hunks)apps/web/public/static/locales/ca/common.json(12 hunks)apps/web/public/static/locales/cs/common.json(10 hunks)apps/web/public/static/locales/da/common.json(12 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(12 hunks)apps/web/public/static/locales/es/common.json(12 hunks)apps/web/public/static/locales/et/common.json(12 hunks)apps/web/public/static/locales/eu/common.json(12 hunks)apps/web/public/static/locales/fi/common.json(10 hunks)apps/web/public/static/locales/fr/common.json(10 hunks)apps/web/public/static/locales/he/common.json(11 hunks)apps/web/public/static/locales/hu/common.json(12 hunks)apps/web/public/static/locales/it/common.json(13 hunks)apps/web/public/static/locales/ja/common.json(10 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(13 hunks)apps/web/public/static/locales/no/common.json(13 hunks)apps/web/public/static/locales/pl/common.json(13 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(13 hunks)apps/web/public/static/locales/ru/common.json(11 hunks)apps/web/public/static/locales/sk-SK/common.json(11 hunks)apps/web/public/static/locales/sr/common.json(12 hunks)apps/web/public/static/locales/sv/common.json(12 hunks)apps/web/public/static/locales/tr/common.json(13 hunks)apps/web/public/static/locales/uk/common.json(11 hunks)apps/web/public/static/locales/vi/common.json(12 hunks)apps/web/public/static/locales/zh-CN/common.json(12 hunks)apps/web/public/static/locales/zh-TW/common.json(12 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/es-419/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/pt-BR/common.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
| "attendees": "İştirakçılar", | ||
| "add_attendees": "İştirakçı əlavə et", | ||
| "show_advanced_settings": "Ətraflı parametrləri göstər", | ||
| "hide_advanced_settings": "Ətraflı parametrləri gizlədin", |
There was a problem hiding this comment.
Restore imperative form for “Hide advanced settings”
“Ətraflı parametrləri gizlədin” slips back into the polite plural; the UI copy previously used the imperative “gizlət”, which matches the English string and the “Show advanced settings” pair. Please revert to “Ətraflı parametrləri gizlət”.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/az/common.json around line 1023, the
Azerbaijani translation for "Hide advanced settings" uses the polite plural form
"Ətraflı parametrləri gizlədin" but should be the imperative "Ətraflı
parametrləri gizlət" to match the English and the paired "Show advanced
settings" string; update the value to "Ətraflı parametrləri gizlət" keeping JSON
syntax intact (replace the current string while preserving surrounding quotes
and the trailing comma).
| "error_404": "Грешка 404", | ||
| "default": "По подразбиране", | ||
| "set_to_default": "Задай по подразбиране", | ||
| "set_to_default": "Задаване по подразбиране", |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
🧩 Analysis chain
Likely unused duplicate key; keep only set_as_default.
Repo typically uses set_as_default. Remove set_to_default to avoid redundancy.
If no runtime usages, delete this entry here and across other locale files.
🏁 Script executed:
#!/bin/bash
# Verify references across code and locales
rg -nF "set_to_default"
rg -nF "set_as_default"Length of output: 7689
Migrate usages of set_to_default to set_as_default, then remove the duplicate key
- In
packages/platform/atoms/availability/AvailabilitySettings.tsx(around lines 433 & 534), replacet("set_to_default")witht("set_as_default"). - After updating code, delete all
set_to_defaultentries fromapps/web/public/static/locales/*/common.jsonand the correspondingset_to_defaultentry ini18n.lock.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/bg/common.json around line 1236, the key
"set_to_default" is a duplicate that should be migrated to "set_as_default";
update usages in packages/platform/atoms/availability/AvailabilitySettings.tsx
(around lines 433 and 534) by replacing t("set_to_default") with
t("set_as_default"), then remove all "set_to_default" entries from
apps/web/public/static/locales/*/common.json files and delete the corresponding
"set_to_default" entry from i18n.lock to avoid leftover translations.
| "attendees": "Assistents", | ||
| "add_attendees": "Afegir assistents", | ||
| "show_advanced_settings": "Mostrar configuració avançada", | ||
| "hide_advanced_settings": "Amaga la configuració avançada", |
There was a problem hiding this comment.
Align style with “Mostrar configuració avançada”.
Use the same noun-phrase pattern (not imperative) for symmetry with Line 1022.
- "hide_advanced_settings": "Amaga la configuració avançada",
+ "hide_advanced_settings": "Amagar la configuració avançada",Also applies to: 1022-1023
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ca/common.json around lines 1022-1023, the
"hide" string is in the imperative and uses an article while the "show" string
uses an infinitive noun-phrase; change the hide entry to the matching
noun-phrase/infinitive form to mirror line 1022 (e.g., replace the imperative
"Amaga la configuració avançada" with "Amagar configuració avançada") so both
entries use the same grammatical pattern.
| "always_show_x_days_description": "Mou automàticament la finestra de reserva de {{x}} dies cap endavant cada dia, assegurant que el teu calendari sempre mostri els propers {{x}} dies d'espais disponibles.", | ||
| "team_subscription_cancelled_successfully": "Subscripció d'equip cancel·lada amb èxit", |
There was a problem hiding this comment.
Prefer “franges horàries” over “espais” for consistency.
Matches many keys using “franges (horàries)”.
- "always_show_x_days_description": "Mou automàticament la finestra de reserva de {{x}} dies cap endavant cada dia, assegurant que el teu calendari sempre mostri els propers {{x}} dies d'espais disponibles.",
+ "always_show_x_days_description": "Mou automàticament la finestra de reserva de {{x}} dies cap endavant cada dia, assegurant que el teu calendari sempre mostri els propers {{x}} dies de franges horàries disponibles.",📝 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.
| "always_show_x_days_description": "Mou automàticament la finestra de reserva de {{x}} dies cap endavant cada dia, assegurant que el teu calendari sempre mostri els propers {{x}} dies d'espais disponibles.", | |
| "team_subscription_cancelled_successfully": "Subscripció d'equip cancel·lada amb èxit", | |
| "always_show_x_days_description": "Mou automàticament la finestra de reserva de {{x}} dies cap endavant cada dia, assegurant que el teu calendari sempre mostri els propers {{x}} dies de franges horàries disponibles.", | |
| "team_subscription_cancelled_successfully": "Subscripció d'equip cancel·lada amb èxit", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ca/common.json around lines 2929 to 2930, the
translation string uses "espais" but the project prefers "franges horàries";
update the value of "always_show_x_days_description" to replace "espais
disponibles" with "franges horàries disponibles" (keeping the rest of the
sentence and interpolation {{x}} intact) so it reads consistently with other
keys.
| "locked_by_team_admin": "Meeskonna administraatori poolt lukustatud", | ||
| "app_not_connected": "Te pole rakenduse {{appName}} kontot ühendanud.", | ||
| "connect_now": "Ühenda kohe", | ||
| "connect_now_unavailable_tooltip": "Funktsioon 'Ühenda kohe' ei ole praegu saadaval. Palun broneerige ülaltoodud ajavahemikest või proovige hiljem uuesti.", |
There was a problem hiding this comment.
Align tooltip copy with quote convention and natural Estonian
This string still wraps Ühenda kohe in single quotes and the latter clause is unidiomatic (“broneerige ülaltoodud ajavahemikest”). Please rewrite using escaped double quotes and smoother Estonian, e.g. Funktsioon \"Ühenda kohe\" ei ole praegu saadaval. Palun valige mõni ülaltoodud ajavahemik broneerimiseks või proovige hiljem uuesti.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/et/common.json around line 2304, the tooltip
text uses single quotes around Ühenda kohe and contains unidiomatic Estonian;
update the string to use escaped double quotes and smoother phrasing — for
example: replace "Funktsioon 'Ühenda kohe' ei ole praegu saadaval. Palun
broneerige ülaltoodud ajavahemikest või proovige hiljem uuesti." with a version
like "Funktsioon \"Ühenda kohe\" ei ole praegu saadaval. Palun valige mõni
ülaltoodud ajavahemik broneerimiseks või proovige hiljem uuesti." to fix quoting
and improve naturalness.
| "translate_description_button": "自動翻譯標題和描述", | ||
| "translate_description_button_description": "使用 AI 自動將標題和描述翻譯為訪客瀏覽器的語言。", |
There was a problem hiding this comment.
Use the natural phrasing (“訪客的瀏覽器語言”)
Earlier corrections aligned on「訪客的瀏覽器語言」. Please revert to that phrasing to keep the sentence natural.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around lines 3151-3152,
change the phrasing in the value for "translate_description_button_description"
from "使用 AI 自動將標題和描述翻譯為訪客瀏覽器的語言。" to the natural phrasing "使用 AI
自動將標題和描述翻譯為訪客的瀏覽器語言。" preserving surrounding quotes and the trailing comma/JSON
syntax.
| "seats_doesnt_support_recurring": "座位功能不支援重複活動。請停用座位功能以設為重複活動。", | ||
| "recurring_event_seats_error": "重複活動不支援座位功能。請停用座位功能或將活動設為非重複活動。", | ||
| "segment": "區隔", | ||
| "saved_filters": "已儲存的篩選條件", |
There was a problem hiding this comment.
Stay consistent with “篩選器”
Nearby keys (e.g., remove_filters) use「篩選器」. Please update this value to「已儲存的篩選器」。
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around line 3318, the
translation value for "saved_filters" uses "已儲存的篩選條件" which is inconsistent with
nearby keys that use "篩選器"; update the value to "已儲存的篩選器" so it matches the
established terminology, ensuring you only change the string value and keep JSON
formatting and surrounding commas intact.
| "picklist": "選項清單", | ||
| "most_cancelled_bookings": "最多取消的預約", | ||
| "interface_language": "介面語言", | ||
| "interface_language_description": "設定預訂介面的偏好語言", |
There was a problem hiding this comment.
Align booking vocabulary
We prefer「預約」in this locale. Please change to「設定預約介面的偏好語言」。
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around line 3348, the string
uses 「預訂」 but the locale prefers 「預約」; update the value from "設定預訂介面的偏好語言" to
"設定預約介面的偏好語言" so the vocabulary matches the locale preference.
| "pbac_resource_availability": "可用性", | ||
| "pbac_resource_out_of_office": "不在辦公室", | ||
| "pbac_desc_create_webhooks": "建立 Webhook", | ||
| "pbac_desc_view_webhooks": "查看 Webhook", | ||
| "pbac_desc_update_webhooks": "更新 Webhooks", | ||
| "pbac_desc_delete_webhooks": "刪除 Webhooks", | ||
| "pbac_desc_create_availability": "建立可用性", | ||
| "pbac_desc_view_availability": "檢視可用性", | ||
| "pbac_desc_update_availability": "更新可用性", | ||
| "pbac_desc_delete_availability": "刪除可用性", | ||
| "pbac_desc_create_out_of_office": "建立外出辦公", | ||
| "pbac_desc_view_out_of_office": "檢視外出辦公", | ||
| "pbac_desc_update_out_of_office": "更新外出辦公", | ||
| "pbac_desc_delete_out_of_office": "刪除外出辦公", |
There was a problem hiding this comment.
Match PBAC terminology (“開放時間” / “不在辦公室狀態”)
Existing copy translates “availability” as「開放時間」and “out of office” as「不在辦公室」(狀態). Please update these PBAC values accordingly (e.g.,「開放時間」、「建立不在辦公室狀態」等) so the permissions surface stays aligned.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around lines 3520 to 3533,
the PBAC translations use 「可用性」 and inconsistent “不在辦公室” terms; update them to
match PBAC terminology by replacing "可用性" with "開放時間" for
pbac_resource_availability and change "不在辦公室" to "不在辦公室狀態" for
pbac_resource_out_of_office, and adjust the related description keys
(pbac_desc_create_availability, pbac_desc_view_availability,
pbac_desc_update_availability, pbac_desc_delete_availability) to use 「開放時間」 and
the out_of_office description keys (pbac_desc_create_out_of_office,
pbac_desc_view_out_of_office, pbac_desc_update_out_of_office,
pbac_desc_delete_out_of_office) to use 「不在辦公室狀態」 so all permission labels and
action descriptions consistently use the specified terminology.
| "round_robin_settings_updated_successfully": "輪詢設定已成功更新", | ||
| "booking_creation_time": "預約建立時間", | ||
| "booking_creation_time": "預訂建立時間", | ||
| "meeting_start_time": "會議開始時間", |
There was a problem hiding this comment.
Keep using “預約”
Elsewhere we use「預約建立時間」. Please switch back from「預訂」→「預約」。
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around line 3582, the
translation value for "meeting_start_time" uses 「預訂」 elsewhere we standardized
on 「預約」; update the string to use 「會議開始時間」 with 「預約」 where appropriate (replace
any occurrence of 「預訂」 in this entry with 「預約」 to match the established
phrasing).
Hey team,
Lingo.dev here with fresh translations!
In this update
Next Steps