feat: update translations via @LingoDotDev#23699
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. |
WalkthroughThis PR updates many locale files under apps/web/public/static/locales/*/common.json. It adds i18n keys for recording/transcription (record, transcribe, transcription_powered_by_ai, start_or_stop_recording), guest join flow (join_as_guest, ideal_for_one_time_calls), meeting/scheduling and call-join messages (track_meetings_and_manage_schedule, failed_to_join_call, choose_how_you_like_to_appear_on_the_call), and renames or replaces some existing keys in certain locales. It also changes the value of sign_in_to_cal_com across multiple locales. All changes are translation string additions/edits inside JSON files; no runtime logic changes. Possibly related PRs
Pre-merge checks (3 passed)✅ 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: 10
🧹 Nitpick comments (99)
apps/web/public/static/locales/ar/common.json (3)
1427-1427: Minor style: prefer “الجدول” over “الجدول الزمني” for consistencyNearby strings use “إدارة جدولك”. Align wording.
-"track_meetings_and_manage_schedule": "تتبع اجتماعاتك وإدارة جدولك الزمني بشكل أكثر فعالية", +"track_meetings_and_manage_schedule": "تتبع اجتماعاتك وإدارة جدولك بشكل أكثر فعالية",
1429-1429: Consistency: reuse “مجددًا” phrasing used elsewhereUnify retry phrasing.
-"failed_to_join_call": "فشل الانضمام إلى المكالمة. يرجى المحاولة مرة أخرى.", +"failed_to_join_call": "فشل الانضمام إلى المكالمة. يرجى المحاولة مجددًا.",
1431-1431: Match deictic usage with adjacent key1420s copy often uses “هذه المكالمة”. Add demonstrative for consistency.
-"choose_how_you_d_like_to_appear_on_the_call": "اختر كيف ترغب في الظهور في المكالمة", +"choose_how_you_d_like_to_appear_on_the_call": "اختر كيف ترغب في الظهور في هذه المكالمة",apps/web/public/static/locales/az/common.json (1)
1427-1431: Minor punctuation consistency (optional).Mixed use of trailing periods in adjacent strings. Either add periods to 1427 and 1431 or drop from 1428 for uniformity.
Suggested (one option):
- "track_meetings_and_manage_schedule": "Görüşlərinizi izləyin və cədvəlinizi daha effektiv idarə edin", + "track_meetings_and_manage_schedule": "Görüşlərinizi izləyin və cədvəlinizi daha effektiv idarə edin.", - "choose_how_you_d_like_to_appear_on_the_call": "Zəngdə necə görünmək istədiyinizi seçin", + "choose_how_you_d_like_to_appear_on_the_call": "Zəngdə necə görünmək istədiyinizi seçin.",apps/web/public/static/locales/he/common.json (5)
128-135: Recording/transcription phrasing: verify button vs. label contextIf these are button labels, "הקלט" and "תמלל" are fine. If they’re menu items/labels, prefer nouns for consistency with the file’s style (e.g., "הקלטה", "תמלול").
668-670: Use infinitive form for consistency and gender neutralityMost CTAs in this locale use infinitive ("להצטרף..."). Suggest aligning "join_as_guest".
Apply this diff:
- "join_as_guest": "הצטרף כאורח", + "join_as_guest": "להצטרף כאורח",
1424-1424: Neutralize “sign in” CTAElsewhere you use noun/infinitive forms ("כניסה", "להיכנס"). Prefer neutral over masculine imperative.
- "sign_in_to_cal_com": "התחבר ל-Cal.com", + "sign_in_to_cal_com": "כניסה ל-Cal.com",
1427-1429: Make error copy gender-neutralAvoid "נסה" (masculine). This locale already uses neutral phrasing like "נא לנסות שוב".
- "failed_to_join_call": "ההצטרפות לשיחה נכשלה. אנא נסה שוב.", + "failed_to_join_call": "ההצטרפות לשיחה נכשלה. נא לנסות שוב.",
1431-1431: Gender-neutral “choose how to appear”Use "בחר/י" and avoid "תרצה" (masculine). This matches patterns like "בחר/י" elsewhere in the file.
- "choose_how_you_d_like_to_appear_on_the_call": "בחר כיצד תרצה להופיע בשיחה", + "choose_how_you_d_like_to_appear_on_the_call": "בחר/י כיצד ברצונך להופיע בשיחה",apps/web/public/static/locales/km/common.json (1)
668-670: Minor tone tweak for “one-time calls”.“ការហៅទូរស័ព្ទតែម្តង” narrows to phone; consider generic “call.”
"join_as_guest": "ចូលរួមជាភ្ញៀវ", - "ideal_for_one_time_calls": "ល្អបំផុតសម្រាប់ការហៅទូរស័ព្ទតែម្តង", + "ideal_for_one_time_calls": "ល្អសម្រាប់ការហៅតែម្តង",apps/web/public/static/locales/zh-TW/common.json (3)
134-135: Polish wording for zh-TW tone and brevity.
- Prefer 「支援」 over 「提供支持」 in zh-TW.
- Slash form reads better for button/CTA copy.
Apply:
- "transcription_powered_by_ai": "轉錄由 AI 提供支持", + "transcription_powered_by_ai": "由 AI 技術支援的轉錄", - "start_or_stop_recording": "開始或停止錄製", + "start_or_stop_recording": "開始/停止錄製",
668-670: Locale consistency (“身分” vs “身份”) and more natural phrasing.
- zh-TW: 「身分」優於「身份」。
- 「單次通話」比「一次性通話」更自然。
- "join_as_guest": "以訪客身份加入", + "join_as_guest": "以訪客身分加入", - "ideal_for_one_time_calls": "適合一次性通話", + "ideal_for_one_time_calls": "適合單次通話",
1430-1431: Avoid near-duplicate intent and refine phrasing.
- 1430 (“加入此通話的方式”) and 1431 (“在通話中顯示的方式”) may overlap semantically; confirm both are needed.
- If 1431 is about avatar/video appearance, 「呈現方式」 is more precise than 「顯示的方式」.
- "choose_how_you_d_like_to_appear_on_the_call": "選擇您希望在通話中顯示的方式", + "choose_how_you_d_like_to_appear_on_the_call": "選擇您在通話中的呈現方式",Please verify that both keys are used in distinct contexts; if not, consider deprecating one to avoid translator drift.
apps/web/public/static/locales/el/common.json (4)
134-135: Prefer shorter, brand-consistent phrasing for AI transcription.
“με τη δύναμη της τεχνητής νοημοσύνης” is verbose vs. our existing “Cal AI” phrasing.- "transcription_powered_by_ai": "Απομαγνητοφώνηση με τη δύναμη της τεχνητής νοημοσύνης", + "transcription_powered_by_ai": "Απομαγνητοφώνηση με AI",
668-670: Use “Συμμετοχή” (join) instead of “Σύνδεση” (log in).
Aligns with existing “join_meeting” = “Συμμετοχή στη συνάντηση” and avoids login connotation.- "join_as_guest": "Σύνδεση ως επισκέπτης", + "join_as_guest": "Συμμετοχή ως επισκέπτης",
1424-1424: Normalize “Sign in” wording across keys.
Elsewhere “sign_in” = “Είσοδος”. Suggest aligning this key to avoid mixed “Είσοδος/Σύνδεση.”- "sign_in_to_cal_com": "Σύνδεση στο Cal.com", + "sign_in_to_cal_com": "Είσοδος στο Cal.com",Would you like me to also align “log_in_to_cal_com” or keep it as-is?
1427-1431: Minor consistency tweaks for call-join copy.
- Use “συμμετοχής” to match “join_meeting” phrasing.
- Other strings look good.
- "failed_to_join_call": "Αποτυχία σύνδεσης στην κλήση. Παρακαλώ δοκιμάστε ξανά.", + "failed_to_join_call": "Αποτυχία συμμετοχής στην κλήση. Παρακαλώ δοκιμάστε ξανά.",apps/web/public/static/locales/ja/common.json (7)
128-129: Verify button label tone (noun vs verb).If these appear on action buttons, consider verb-ish labels for consistency (e.g., 「録音する」「文字起こし」). Otherwise current nouns are acceptable—just keep it consistent with other action labels in ja.
135-135: More natural phrasing for toggle action.「録音の開始または停止」→「録音を開始/停止」の方が短く自然です。
Apply this diff:
- "start_or_stop_recording": "録音の開始または停止", + "start_or_stop_recording": "録音を開始/停止",
668-670: Unify terminology: 通話/会議/ミーティングの表記揺れ。同画面周辺で「会議」「ミーティング」「通話」が混在しています。ここは「ミーティング」に合わせるのが無難です(657行目は「一度きりの会議」)。どちらに統一するか決めて一括置換を。
Apply this diff if choosing “ミーティング”:
- "ideal_for_one_time_calls": "一回限りの通話に最適", + "ideal_for_one_time_calls": "1回限りのミーティングに最適",
1424-1424: Consistency: ログイン vs サインイン。本ファイルでは「ログイン」を多用しています(例: 1426, 342)。「Cal.comにサインイン」も「ログイン」に揃えると一貫します。
Apply this diff:
- "sign_in_to_cal_com": "Cal.comにサインイン", + "sign_in_to_cal_com": "Cal.comにログイン",
1428-1428: Sentence feels truncated; add ending.末尾に「しましょう。」を補うと自然です。表記も「会議」に合わせるなら下記の通り。
Apply this diff:
- "track_meetings_and_manage_schedule": "ミーティングを追跡し、スケジュールをより効果的に管理", + "track_meetings_and_manage_schedule": "会議を追跡し、スケジュールをより効果的に管理しましょう。",
1431-1431: Smoother Japanese for “appear on the call”.簡潔に「通話での表示方法を選択してください」の方が自然です。
Apply this diff:
- "choose_how_you_d_like_to_appear_on_the_call": "通話でどのように表示されたいかを選択してください", + "choose_how_you_d_like_to_appear_on_the_call": "通話での表示方法を選択してください",
134-134: Unify “文字起こし” and “トランスクリプト” terminology
apps/web/public/static/locales/ja/common.json currently mixes “文字起こし” (lines 27–69, 129–134, 1713–1714) and “トランスクリプト” (lines 168–171, 544, 1715–1717). Choose one term per the product glossary and update all related keys accordingly.apps/web/public/static/locales/de/common.json (2)
128-135: Minor wording tweak for naturalness (“powered by AI”).“Transkription mit KI‑Unterstützung” reads a bit more idiomatic in German.
- "transcription_powered_by_ai": "Transkription unterstützt durch KI", + "transcription_powered_by_ai": "Transkription mit KI-Unterstützung",
1428-1431: Unify formal address (“Sie”) with adjacent strings.These lines switch to informal “du/du/versuche,” while surrounding auth/join strings are formal (“Wählen Sie …”, “Bitte versuchen Sie …”). Align for consistency.
- "track_meetings_and_manage_schedule": "Verfolge deine Meetings und verwalte deinen Zeitplan effektiver", - "failed_to_join_call": "Beitritt zum Anruf fehlgeschlagen. Bitte versuche es erneut.", + "track_meetings_and_manage_schedule": "Verfolgen Sie Ihre Meetings und verwalten Sie Ihren Zeitplan effektiver", + "failed_to_join_call": "Beitritt zum Anruf fehlgeschlagen. Bitte versuchen Sie es erneut.", - "choose_how_you_d_like_to_appear_on_the_call": "Wähle, wie du im Anruf erscheinen möchtest", + "choose_how_you_d_like_to_appear_on_the_call": "Wählen Sie, wie Sie im Anruf dargestellt werden möchten",apps/web/public/static/locales/no/common.json (3)
134-136: Small wording tweak for more natural control label“Start eller stopp opptaket” reads a bit more idiomatic when referring to the specific recording.
Apply:
- "start_or_stop_recording": "Start eller stopp opptak", + "start_or_stop_recording": "Start eller stopp opptaket",
668-670: Align “join” phrasing with existing “Bli med …” usageMost call-join strings use “Bli med …”. Also mirror phrasing used in continue_as_guest_description (“Perfekt for engangsmøter.”).
- "join_as_guest": "Delta som gjest", - "ideal_for_one_time_calls": "Ideelt for engangsmøter", + "join_as_guest": "Bli med som gjest", + "ideal_for_one_time_calls": "Perfekt for engangsmøter",
1427-1431: Standardize “Bli med” in call-join strings
Use “bli med” instead of “delta” in call-related translations to match existing “Bli med i møte”:- "failed_to_join_call": "Kunne ikke delta i samtalen. Vennligst prøv igjen.", + "failed_to_join_call": "Kunne ikke bli med i samtalen. Vennligst prøv igjen.", - "join_video_call": "Delta i videosamtalen", + "join_video_call": "Bli med i videosamtalen", - "choose_how_you_d_like_to_join_call": "Velg hvordan du vil delta i denne samtalen", + "choose_how_you_d_like_to_join_call": "Velg hvordan du vil bli med i denne samtalen",apps/web/public/static/locales/ko/common.json (3)
128-135: Unify “transcription” wording; tighten toggle phrasing.
- Use “전사” consistently (matches existing keys like “전사 기능이 …”).
- Use concise “시작/중지” for button copy.
- "transcribe": "텍스트 변환", + "transcribe": "전사", - "transcription_powered_by_ai": "AI 기반 텍스트 변환", + "transcription_powered_by_ai": "AI 기반 전사", - "start_or_stop_recording": "녹음 시작 또는 중지", + "start_or_stop_recording": "녹음 시작/중지",
668-670: Polish guest-join copy for natural Korean and UI consistency.
- Action labels elsewhere use “…하기”; mirror that here.
- “적합” reads more natural than “이상적”.
- "join_as_guest": "게스트로 참여", + "join_as_guest": "게스트로 참여하기", - "ideal_for_one_time_calls": "일회성 통화에 이상적", + "ideal_for_one_time_calls": "일회성 통화에 적합",
1424-1431: Minor phrasing fix for “appear on the call”.More natural as “어떻게 표시할지”.
- "choose_how_you_d_like_to_appear_on_the_call": "통화에서 어떻게 표시되고 싶은지 선택하세요", + "choose_how_you_d_like_to_appear_on_the_call": "통화에서 어떻게 표시할지 선택하세요",apps/web/public/static/locales/fr/common.json (3)
134-134: Prefer “propulsée” for brand consistency with existing “propulsé par”.Apply:
- "transcription_powered_by_ai": "Transcription alimentée par l'IA", + "transcription_powered_by_ai": "Transcription propulsée par l'IA",
135-135: Slightly tighter phrasing for button copy.Optional:
- "start_or_stop_recording": "Démarrer ou arrêter l'enregistrement", + "start_or_stop_recording": "Démarrer/arrêter l'enregistrement",
1428-1428: Align with existing error tone (“Impossible de …”).Consider:
- "failed_to_join_call": "Échec de la connexion à l'appel. Veuillez réessayer.", + "failed_to_join_call": "Impossible de rejoindre l'appel. Veuillez réessayer.",apps/web/public/static/locales/cs/common.json (2)
128-129: Use “Přepis” instead of “Přepsat” for clarity and consistency.“Přepsat” commonly means “overwrite” in Czech; elsewhere you use “přepis” (e.g., download_transcript). Prefer the noun for a generic action/label.
Apply this diff:
- "transcribe": "Přepsat", + "transcribe": "Přepis",
1427-1431: Verify key usage and de-duplication for new/renamed strings.
- You now have both track_your_meetings (1426) and track_meetings_and_manage_schedule (1427). Confirm callers use the intended key and deprecate/clean up the other if obsolete.
- Similarly, keep choose_how_you_d_like_to_join_call (1430) vs choose_how_you_d_like_to_appear_on_the_call (1431) straight in the UI; ensure the correct one is wired.
If helpful, I can scan en/common.json and usages to produce a list of references to these keys for cleanup.
apps/web/public/static/locales/bn/common.json (3)
128-135: Polish terminology for recording/transcription actions
- Prefer native verbs for action labels and keep noun/verb usage consistent with the rest of bn locale (e.g., “ডাউনলোড করুন”, “ইনস্টল করুন”).
Apply this diff if you agree:
- "record": "রেকর্ড", - "transcribe": "트ান্সক্রাইব", + "record": "রেকর্ড করুন", + "transcribe": "প্রতিলিপি করুন", "payment": "অর্থ প্রদান", "missing_card_fields": "অনুপস্থিত কার্ড ক্ষেত্রগুলি", "pay_now": "এখনই প্রদান করুন", "general_prompt": "সাধারণ প্রম্পট", - "transcription_powered_by_ai": "এআই দ্বারা চালিত ট্রান্সক্রিপশন", + "transcription_powered_by_ai": "এআই দ্বারা চালিত প্রতিলিপি", "start_or_stop_recording": "রেকর্ডিং শুরু বা বন্ধ করুন",
668-669: Make “one-time” phrasing idiomatic“একবার কল” reads literal. “এককালীন কল” is the usual Bengali construct.
"continue_as_guest": "অতিথি হিসাবে চালিয়ে যান", "join_as_guest": "অতিথি হিসেবে যোগ দিন", - "ideal_for_one_time_calls": "একবার কলের জন্য আদর্শ", + "ideal_for_one_time_calls": "এককালীন কলের জন্য আদর্শ",
1427-1431: Refine Bengali translation strings for clarity"track_meetings_and_manage_schedule": "আপনার মিটিংগুলি ট্র্যাক করুন এবং আপনার সময়সূচী আরও কার্যকরভাবে পরিচালনা করুন", - "failed_to_join_call": "কলে যোগ দিতে ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "failed_to_join_call": "কলে যোগদান ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", "choose_how_you_d_like_to_join_call": "আপনি কিভাবে এই কলে যোগ দিতে চান তা বেছে নিন", - "choose_how_you_d_like_to_appear_on_the_call": "কলে আপনি কীভাবে দেখাতে চান তা বেছে নিন", + "choose_how_you_d_like_to_appear_on_the_call": "কলে কীভাবে উপস্থিত হতে চান তা বেছে নিন",apps/web/public/static/locales/sr/common.json (3)
134-135: Optional: refine phrasing and tone consistency.Consider:
- “Transkripcija uz podršku veštačke inteligencije”
- “Pokrenite ili zaustavite snimanje” (formal tone)
Apply this diff if you prefer the formal tone and phrasing:
- "transcription_powered_by_ai": "Transkripcija pokrenuta veštačkom inteligencijom", - "start_or_stop_recording": "Pokreni ili zaustavi snimanje", + "transcription_powered_by_ai": "Transkripcija uz podršku veštačke inteligencije", + "start_or_stop_recording": "Pokrenite ili zaustavite snimanje",
1427-1431: Make tone consistent within this block.Align 1427 with formal tone used in 1430–1431.
Apply:
- "track_meetings_and_manage_schedule": "Prati svoje sastanke i efikasnije upravljaj svojim rasporedom", + "track_meetings_and_manage_schedule": "Pratite svoje sastanke i efikasnije upravljajte svojim rasporedom",“Neuspešno pridruživanje pozivu...” and “Izaberite kako želite...” look good.
1424-1424: Formalize sign_in_to_cal_com translation
Replace the informal imperative with the formal imperative to matchlog_in_to_cal_com:- "sign_in_to_cal_com": "Prijavi se na Cal.com", + "sign_in_to_cal_com": "Prijavite se na Cal.com",apps/web/public/static/locales/sv/common.json (2)
128-136: Polish recording phrasing (definite form).Prefer “inspelningen” for natural Swedish.
- "start_or_stop_recording": "Starta eller stoppa inspelning", + "start_or_stop_recording": "Starta eller stoppa inspelningen",
1427-1431: Replace “framstå” with “visas/synas” for call appearance.“Framstå” implies perception, not camera/mode. Use “visas” for clarity.
- "choose_how_you_d_like_to_appear_on_the_call": "Välj hur du vill framstå i samtalet", + "choose_how_you_d_like_to_appear_on_the_call": "Välj hur du vill visas i samtalet",apps/web/public/static/locales/eu/common.json (3)
134-134: Minor phrasing tweak for clarity.
Consider a more natural Basque phrasing.- "transcription_powered_by_ai": "Transkripzioa adimen artifizialak bultzatuta", + "transcription_powered_by_ai": "Adimen artifizialaren bidezko transkripzioa",
668-670: Unify “join” wording with existing Basque strings.
Elsewhere we use “batu” (e.g., “Bilerara batu”). Align “join_as_guest”.- "join_as_guest": "Sartu gonbidatu gisa", + "join_as_guest": "Batu gonbidatu gisa",
1431-1431: Optional: slightly more idiomatic “on the call”.- "choose_how_you_d_like_to_appear_on_the_call": "Aukeratu nola agertu nahi duzun deian", + "choose_how_you_d_like_to_appear_on_the_call": "Aukeratu nola agertu nahi duzun dei honetan",apps/web/public/static/locales/pt/common.json (3)
134-135: Tiny copy fix: add article “a” for natural PT phrasing.Apply:
- "start_or_stop_recording": "Iniciar ou parar gravação", + "start_or_stop_recording": "Iniciar ou parar a gravação",
1424-1424: Inconsistent sign-in voice (“Entrar” vs “Iniciar sessão”).
- Most PT strings use “Iniciar sessão”. Consider standardizing this key for consistency:
- "sign_in_to_cal_com": "Entrar no Cal.com", + "sign_in_to_cal_com": "Iniciar sessão no Cal.com",If the product intentionally prefers the shorter CTA “Entrar”, consider updating other sign-in strings to match for consistency.
1428-1431: Unify pt/common.json to EU PT and remove unused key
In apps/web/public/static/locales/pt/common.json apply:- "track_meetings_and_manage_schedule": "Acompanhe suas reuniões e gerencie sua agenda com mais eficácia", + "track_meetings_and_manage_schedule": "Acompanhe as suas reuniões e gere a sua agenda com mais eficácia", - "choose_how_you_d_like_to_appear_on_the_call": "Escolha como você gostaria de aparecer na chamada", + "choose_how_you_d_like_to_appear_on_the_call": "Escolha como gostaria de aparecer na chamada", - "choose_how_you_d_like_to_join_call": "Escolha como gostaria de se juntar a esta chamada", + *(remove unused)*apps/web/public/static/locales/pt-BR/common.json (3)
134-135: Minor PT-BR polish: add article and consider more natural AI phrasing.
- Add the article in recording: “Iniciar ou parar a gravação”.
- Optional: “Transcrição com tecnologia de IA” tends to read more naturally than “alimentada por IA”.
Apply:
- "transcription_powered_by_ai": "Transcrição alimentada por IA", - "start_or_stop_recording": "Iniciar ou parar gravação", + "transcription_powered_by_ai": "Transcrição com tecnologia de IA", + "start_or_stop_recording": "Iniciar ou parar a gravação",
668-669: Optional wording tweak for tone consistency.“Ideal para chamadas pontuais” is a bit more idiomatic than “chamadas únicas” in pt-BR; current text is acceptable though.
Optional:
- "ideal_for_one_time_calls": "Ideal para chamadas únicas", + "ideal_for_one_time_calls": "Ideal para chamadas pontuais",
1428-1431: Confirm translation key usage and punctuation consistency
- “choose_how_you_d_like_to_appear_on_the_call” is actively used in apps/web/modules/videos/views/videos-single-view.tsx (line 358); “choose_how_you_d_like_to_join_call” has no code references and can be deprecated if no longer needed.
- In apps/web/public/static/locales/pt-BR/common.json, append a period to the value of
track_meetings_and_manage_scheduleto mirror surrounding entries.apps/web/public/static/locales/da/common.json (2)
128-129: Use imperative accent for consistency with other UI verbsAcross this file you use accented imperatives (e.g., “Redigér”, “Opdatér”). Align “Transskriber” with that style.
- "transcribe": "Transskriber", + "transcribe": "Transskribér",
668-670: Prefer “opkald” over “samtaler” for terminology consistencyElsewhere “call” is translated as “opkald” (e.g., failed_to_join_call). Keep it uniform.
- "ideal_for_one_time_calls": "Ideel til engangssamtaler", + "ideal_for_one_time_calls": "Ideel til engangsopkald",apps/web/public/static/locales/ro/common.json (3)
134-135: AI wording is fine; optional: consider “IA” vs “AI”Romanian often uses “IA”, but this file consistently uses “AI” elsewhere (Cal AI). Keeping “AI” is okay.
668-670: Harmonize “guest” terminology in Romanian translations
Use “invitat” (singular) / “invitați” (plural) consistently instead of mixing “oaspete” and “vizitatori”; update keys such asguest,guests,continue_as_guest,additional_guests, anddisable_gueststo use “invitat/invitați”.
1424-1424: Align tone for all authentication strings
Choose a single imperative form (either singular informal or plural/formal) and apply it consistently across all auth-related keys in apps/web/public/static/locales/ro/common.json. For example, either:
- Informal singular: “Conectează-te la Cal.com”, “Autentifică-te”
- Formal plural: “Conectați-vă la Cal.com”, “Autentificați-vă”
Update keys such assign_in_to_cal_com,log_in_to_cal_com,sign_in,signin_with_google,signin_with_saml*, etc., to match the chosen tone.apps/web/public/static/locales/pl/common.json (4)
134-136: Polish style tweak for AI phrasing (optional).
Consider “Transkrypcja z wykorzystaniem AI” for a slightly more native tone.- "transcription_powered_by_ai": "Transkrypcja wspierana przez AI", + "transcription_powered_by_ai": "Transkrypcja z wykorzystaniem AI",
668-670: Minor idiom improvement for “ideal for one-time calls”.
“na jednorazowe rozmowy” sounds more idiomatic than “do jednorazowych rozmów”.- "ideal_for_one_time_calls": "Idealne do jednorazowych rozmów", + "ideal_for_one_time_calls": "Idealne na jednorazowe rozmowy",
1427-1429: Tighten comparative form in Polish.
Use “efektywniej” instead of “bardziej efektywnie”.- "track_meetings_and_manage_schedule": "Śledź swoje spotkania i zarządzaj harmonogramem bardziej efektywnie", + "track_meetings_and_manage_schedule": "Śledź swoje spotkania i zarządzaj harmonogramem efektywniej",The error message is clear as is.
1431-1431: Clarify “appear on the call” intent.
“zaprezentować” suggests performance; “być widoczny” matches video appearance settings.- "choose_how_you_d_like_to_appear_on_the_call": "Wybierz, jak chcesz się zaprezentować podczas rozmowy", + "choose_how_you_d_like_to_appear_on_the_call": "Wybierz sposób, w jaki chcesz być widoczny podczas rozmowy",apps/web/public/static/locales/fi/common.json (4)
128-129: Use “Nauhoita” instead of “Tallenna” for call recording“Tallenna” reads as “Save” in Finnish UI. For recording media, “Nauhoita” is the unambiguous verb.
- "record": "Tallenna", + "record": "Nauhoita", "transcribe": "Litteroi",
668-670: Fix typo: “kertaluonteisiin”Correct Finnish inflection.
"join_as_guest": "Liity vieraana", - "ideal_for_one_time_calls": "Ihanteellinen kertaluontoisiin puheluihin", + "ideal_for_one_time_calls": "Ihanteellinen kertaluonteisiin puheluihin",
134-136: Standardize Finnish transcription terminology
Replace the “transcription_powered_by_ai” value with a more idiomatic phrasing and, optionally, unify all legacy variants in this locale file:- "transcription_powered_by_ai": "Litterointi tekoälyn avulla", + "transcription_powered_by_ai": "Tekoälyn tuottama litterointi",Optional refactor: replace other “tekstilitys”/“transskriptio” keys with “litterointi” variants (e.g. send_cal_video_transcription_emails, download_transcript_email_subject, download_your_transcripts, transcription_enabled, transcription_stopped, download_transcript, transcript_from_previous_call).
1430-1431: Refine Finnish translation and remove unused key
- Update translation for
choose_how_you_d_like_to_appear_on_the_callinapps/web/public/static/locales/fi/common.jsonto include “video”:- "choose_how_you_d_like_to_appear_on_the_call": "Valitse, miten haluat näkyä puhelussa", + "choose_how_you_d_like_to_appear_on_the_call": "Valitse, miten haluat näkyä videopuhelussa",
- Remove unused key
choose_how_you_d_like_to_join_callfrom bothapps/web/public/static/locales/en/common.jsonandapps/web/public/static/locales/fi/common.jsonto prevent drift.apps/web/public/static/locales/vi/common.json (3)
128-129: Unify “transcription” terminology (“Phiên âm” vs “Chép lời”).Elsewhere this file favors “Chép lời” (e.g., Lines 1714–1719). Recommend aligning these new keys for consistency.
- "transcribe": "Phiên âm", + "transcribe": "Chép lời",
134-135: Consistency: prefer “Chép lời” and consider “ghi hình” vs “ghi âm”.
- Align “transcription” with “Chép lời” (see Lines 1714–1719).
- Minor: elsewhere “recording” sometimes uses “ghi hình”. If recordings are video, consider standardizing in future passes.
- "transcription_powered_by_ai": "Phiên âm được hỗ trợ bởi AI", + "transcription_powered_by_ai": "Chép lời được hỗ trợ bởi AI",
1431-1431: LGTM — natural phrasing for “appear on the call.”Optional: “xuất hiện khi tham gia cuộc gọi” is slightly more idiomatic, but current is fine.
apps/web/public/static/locales/uk/common.json (1)
128-129: Standardize “transcription” terminology across keys.“Транскрибувати” aligns with many keys that use “транскрипція/транскрипт”, but elsewhere the file uses “розшифровка”. Consider a follow-up sweep to unify on one term set for brand consistency (recommended: “транскрипція/транскрибувати”).
I can prep a repo-wide diff that normalizes these terms if you want.
apps/web/public/static/locales/hu/common.json (3)
128-129: Check button-vs-label intent for “record” and “transcribe”.If these are action buttons, consider more natural verb-style Hungarian:
- record → “Rögzítés”
- transcribe → “Átirat készítése”
If they’re status labels, current nouns are fine. Please confirm usage.
134-134: More natural phrasing for AI attribution.“Az átiratot mesterséges intelligencia készíti” reads more idiomatically.
- "transcription_powered_by_ai": "Az átírást mesterséges intelligencia biztosítja", + "transcription_powered_by_ai": "Az átiratot mesterséges intelligencia készíti",
1427-1427: Minor grammar polish for fluency.Add the definite article for a smoother read (optional comma before “és” per house style).
- "track_meetings_and_manage_schedule": "Kövesse nyomon megbeszéléseit és kezelje hatékonyabban időbeosztását", + "track_meetings_and_manage_schedule": "Kövesse nyomon megbeszéléseit, és kezelje hatékonyabban az időbeosztását",apps/web/public/static/locales/tr/common.json (2)
128-135: Casing/terminology consistency for "transcribe".Prefer sentence case like the rest of the file; also aligns with action labels.
Apply:
- "transcribe": "Yazıya Dök", + "transcribe": "Yazıya dök",
1428-1431: Grammar fix and clearer error phrasing.
- Add “bir şekilde” for correct Turkish grammar.
- Make error copy more natural for users.
Apply:
- "track_meetings_and_manage_schedule": "Toplantılarınızı takip edin ve programınızı daha etkili yönetin", + "track_meetings_and_manage_schedule": "Toplantılarınızı takip edin ve programınızı daha etkili bir şekilde yönetin", - "failed_to_join_call": "Görüşmeye katılınamadı. Lütfen tekrar deneyin.", + "failed_to_join_call": "Görüşmeye katılamadık. Lütfen tekrar deneyin.",apps/web/public/static/locales/ru/common.json (3)
128-129: Polish AI/recording strings for more natural RU phrasing.
- “Транскрипция с использованием ИИ” → “Транскрипция на базе ИИ” reads more idiomatic.
- “Транскрибировать” is acceptable; if this is a CTA, consider “Сделать транскрипцию”.
- "transcription_powered_by_ai": "Транскрипция с использованием ИИ", + "transcription_powered_by_ai": "Транскрипция на базе ИИ",Optional:
- "transcribe": "Транскрибировать", + "transcribe": "Сделать транскрипцию",Also applies to: 134-135
668-670: Tweak guest-join helper copy.“Идеально для разовых звонков” → “Подходит для разовых звонков” sounds slightly more neutral in RU UI copy.
- "ideal_for_one_time_calls": "Идеально для разовых звонков", + "ideal_for_one_time_calls": "Подходит для разовых звонков",
1427-1431: Refine appearance-choice phrasing; optional style tweak.
- “как вы хотите появляться на звонке” → “как вы хотите присутствовать на звонке” is more natural for choosing audio/video/avatar.
- Optional: “более эффективно” → “эффективнее”.
- "choose_how_you_d_like_to_appear_on_the_call": "Выберите, как вы хотите появляться на звонке", + "choose_how_you_d_like_to_appear_on_the_call": "Выберите, как вы хотите присутствовать на звонке",Optional:
- "track_meetings_and_manage_schedule": "Отслеживайте встречи и управляйте расписанием более эффективно", + "track_meetings_and_manage_schedule": "Отслеживайте встречи и управляйте расписанием эффективнее",apps/web/public/static/locales/sk-SK/common.json (1)
128-129: Use “Prepisovať” instead of “Prepísať” for clarity“Prepísať” can read as “overwrite.” For the ongoing action “Transcribe,” “Prepisovať” is clearer and matches “Nahrávať”.
"record": "Nahrávať", - "transcribe": "Prepísať", + "transcribe": "Prepisovať",apps/web/public/static/locales/ca/common.json (5)
128-129: Use imperative for CTA labels: "Enregistra" / "Transcriu".Matches the tone used elsewhere (e.g., "Puja", "Desa").
- "record": "Enregistrar", - "transcribe": "Transcriure", + "record": "Enregistra", + "transcribe": "Transcriu",
134-135: Prefer imperative: "Inicia o atura l'enregistrament".Consistent with other action strings.
- "start_or_stop_recording": "Iniciar o aturar l'enregistrament", + "start_or_stop_recording": "Inicia o atura l'enregistrament",
668-670: Guest CTA consistency: "Uneix-te com a convidat".Aligns with "Uneix-te a la reunió" used elsewhere.
- "join_as_guest": "Unir-se com a convidat", + "join_as_guest": "Uneix-te com a convidat",
1424-1424: Align sign-in phrasing with existing imperative style.Other keys use "Inicia sessió"; recommend the same here.
- "sign_in_to_cal_com": "Iniciar sessió a Cal.com", + "sign_in_to_cal_com": "Inicia sessió a Cal.com",
1427-1431: Second-person error message for clarity.Use direct second person to match surrounding UX tone.
- "failed_to_join_call": "No s'ha pogut unir a la trucada. Si us plau, torna-ho a provar.", + "failed_to_join_call": "No t'has pogut unir a la trucada. Si us plau, torna-ho a provar.","track_meetings_and_manage_schedule" and "choose_how_you_d_like_to_appear_on_the_call" look good.
apps/web/public/static/locales/it/common.json (2)
134-135: Wording nit: “alimentata” → “basata” sounds more idiomatic.
Optional tweak for smoother Italian. Keep 135 as-is.Apply:
- "transcription_powered_by_ai": "Trascrizione alimentata dall'IA", + "transcription_powered_by_ai": "Trascrizione basata sull'IA",
1427-1429: Consistency nit: align “vuoi” vs “desideri”.
Nearby key 1430 uses “vuoi”. For consistency, prefer “vuoi” here too. Others look good.Apply:
- "choose_how_you_d_like_to_appear_on_the_call": "Scegli come desideri apparire nella chiamata", + "choose_how_you_d_like_to_appear_on_the_call": "Scegli come vuoi apparire nella chiamata",Also applies to: 1431-1431
apps/web/public/static/locales/es/common.json (2)
128-136: Tiny copy tweaks: add article and align phrasing with house style.
- Add “la” in “grabación”.
- Consider “con tecnología de IA” to match existing “powered_by: con tecnología de”.
Apply:
- "transcription_powered_by_ai": "Transcripción impulsada por IA", + "transcription_powered_by_ai": "Transcripción con tecnología de IA", - "start_or_stop_recording": "Iniciar o detener grabación", + "start_or_stop_recording": "Iniciar o detener la grabación",
668-670: Unify guest CTA copy.You already use “Continuar como invitado” on Line 667; consider reusing it for consistency. Also prefer “de una sola vez” over “únicas”.
- "join_as_guest": "Unirse como invitado", - "ideal_for_one_time_calls": "Ideal para llamadas únicas", + "join_as_guest": "Continuar como invitado", + "ideal_for_one_time_calls": "Ideal para llamadas de una sola vez",apps/web/public/static/locales/zh-CN/common.json (2)
128-129: Terminology consistency: “录制/转录” vs. existing stringsNew keys look good. For consistency with existing zh-CN strings:
- Keep “录制” for record actions (matches 1624 “录制”).
- Ensure “转录” is used uniformly (a few older strings say “记录/记录文件”). Consider aligning those later.
134-135: Minor typography fix: add space around “AI”Chinese + Latin mixing usually inserts a space around “AI”.
Apply:
- "transcription_powered_by_ai": "转录由AI提供支持", + "transcription_powered_by_ai": "转录由 AI 提供支持",apps/web/public/static/locales/bg/common.json (1)
134-135: Use “AI” (brand token) instead of “ИИ” for consistency.
Many existing keys keep “AI” untranslated (e.g., “Cal AI”). Prefer: “Транскрипцията е осъществена от AI”. Minor style tweak: “Започване/спиране на записа” is a bit tighter than “Стартиране или спиране на записа”.Apply:
- "transcription_powered_by_ai": "Транскрипцията се осъществява чрез ИИ", + "transcription_powered_by_ai": "Транскрипцията е осъществена от AI", - "start_or_stop_recording": "Стартиране или спиране на записа", + "start_or_stop_recording": "Започване/спиране на записа",apps/web/public/static/locales/nl/common.json (3)
128-129: Recording/transcription additions look good; tiny phrasing nit on AI tagline
- Keys and casing are consistent; Dutch reads naturally.
- Nit: “Transcriptie aangedreven door AI” is understandable but more idiomatic as “mogelijk gemaakt door AI”.
Apply:
- "transcription_powered_by_ai": "Transcriptie aangedreven door AI", + "transcription_powered_by_ai": "Transcriptie mogelijk gemaakt door AI",Also applies to: 134-135
668-670: Guest-join copy is clear; check consistency with existing “continue_as_guest”“Deelnemen als gast” and “Ideaal voor eenmalige gesprekken” read well. Ensure UX intentionally differentiates “Deelnemen als gast” (join call) from existing “Doorgaan als gast” (booking flow), or harmonize if they refer to the same action.
1428-1431: New call-join and tracking strings: OK; minor consistency nit with earlier phrasing
- “Kon niet deelnemen aan het gesprek. Probeer het opnieuw.” and “Kies hoe je wilt verschijnen in het gesprek” are solid.
- For consistency with line 1426 (“Houd je afspraken bij…”), consider mirroring that phrasing.
Apply:
- "track_meetings_and_manage_schedule": "Volg je afspraken en beheer je agenda effectiever", + "track_meetings_and_manage_schedule": "Houd je afspraken bij en beheer je agenda effectiever",apps/web/public/static/locales/es-419/common.json (4)
128-135: Minor UX copy polish for recording/transcription strings
- Prefer adding the article in Spanish: “la grabación”.
- Optional: “con tecnología de IA” often reads more natural than “impulsada por IA”.
- "transcription_powered_by_ai": "Transcripción impulsada por IA", - "start_or_stop_recording": "Iniciar o detener grabación", + "transcription_powered_by_ai": "Transcripción con tecnología de IA", + "start_or_stop_recording": "Iniciar o detener la grabación",
1428-1428: Grammar tweak for error messageSlightly smoother Spanish for impersonal error.
- "failed_to_join_call": "No se pudo unir a la llamada. Por favor, inténtalo de nuevo.", + "failed_to_join_call": "No se pudo unir a la llamada. Inténtalo de nuevo.",
1431-1431: Mirror style with “te gustaría” used in adjacent join stringKeeps tone consistent with Line 1430.
- "choose_how_you_d_like_to_appear_on_the_call": "Elige cómo quieres aparecer en la llamada", + "choose_how_you_d_like_to_appear_on_the_call": "Elige cómo te gustaría aparecer en la llamada",
1427-1427: Align Spanish phrasing: use “Rastrea” instead of “Haz seguimiento”Replace in apps/web/public/static/locales/es-419/common.json (line 1427):
- "track_meetings_and_manage_schedule": "Haz seguimiento de tus reuniones y administra tu agenda de manera más efectiva", + "track_meetings_and_manage_schedule": "Rastrea tus reuniones y administra tu agenda de manera más efectiva",Since
track_your_meetingsis no longer referenced in code, consider removing its key from the locale files if it’s fully replaced.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- 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(3 hunks)apps/web/public/static/locales/az/common.json(3 hunks)apps/web/public/static/locales/bg/common.json(3 hunks)apps/web/public/static/locales/bn/common.json(3 hunks)apps/web/public/static/locales/ca/common.json(3 hunks)apps/web/public/static/locales/cs/common.json(3 hunks)apps/web/public/static/locales/da/common.json(3 hunks)apps/web/public/static/locales/de/common.json(3 hunks)apps/web/public/static/locales/el/common.json(3 hunks)apps/web/public/static/locales/es-419/common.json(3 hunks)apps/web/public/static/locales/es/common.json(3 hunks)apps/web/public/static/locales/et/common.json(3 hunks)apps/web/public/static/locales/eu/common.json(3 hunks)apps/web/public/static/locales/fi/common.json(3 hunks)apps/web/public/static/locales/fr/common.json(3 hunks)apps/web/public/static/locales/he/common.json(3 hunks)apps/web/public/static/locales/hu/common.json(3 hunks)apps/web/public/static/locales/it/common.json(3 hunks)apps/web/public/static/locales/ja/common.json(3 hunks)apps/web/public/static/locales/km/common.json(3 hunks)apps/web/public/static/locales/ko/common.json(3 hunks)apps/web/public/static/locales/nl/common.json(3 hunks)apps/web/public/static/locales/no/common.json(3 hunks)apps/web/public/static/locales/pl/common.json(3 hunks)apps/web/public/static/locales/pt-BR/common.json(3 hunks)apps/web/public/static/locales/pt/common.json(3 hunks)apps/web/public/static/locales/ro/common.json(3 hunks)apps/web/public/static/locales/ru/common.json(3 hunks)apps/web/public/static/locales/sk-SK/common.json(3 hunks)apps/web/public/static/locales/sr/common.json(3 hunks)apps/web/public/static/locales/sv/common.json(3 hunks)apps/web/public/static/locales/tr/common.json(3 hunks)apps/web/public/static/locales/uk/common.json(3 hunks)apps/web/public/static/locales/vi/common.json(3 hunks)apps/web/public/static/locales/zh-CN/common.json(3 hunks)apps/web/public/static/locales/zh-TW/common.json(3 hunks)
🧰 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-08-21T05:55:35.187Z
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.
Applied to files:
apps/web/public/static/locales/ca/common.json
🔇 Additional comments (84)
apps/web/public/static/locales/et/common.json (5)
128-129: LGTM: new recording/transcription verbs look correct and concise.
134-135: LGTM: phrasing reads naturally in Estonian.
668-670: LGTM: guest-join copy fits the flow and matches “continue_as_guest.”
1424-1424: LGTM: sign-in phrasing updated consistently with brand.
1427-1431: Align informal tone for join-call translation
- apps/web/public/static/locales/et/common.json:1429 update:
- "choose_how_you_d_like_to_join_call": "Valige, kuidas soovite selle kõnega liituda", + "choose_how_you_d_like_to_join_call": "Vali, kuidas soovid selle kõnega liituda",- Confirm that the front-end references these exact keys (no typos or variants)
Optional: to harmonize tone across this section, consider updating
"track_meetings_and_manage_schedule"to
“Jälgi oma kohtumisi, saa teavitusi ja halda oma ajakava tõhusamalt”.apps/web/public/static/locales/ar/common.json (2)
668-670: LGTM: guest-join copy reads naturally“الانضمام كضيف” and “مثالي للمكالمات لمرة واحدة” fit the join flow and are consistent with nearby “المتابعة كضيف”.
1424-1424: LGTM: consistent ‘sign in’ usage
Onlysign_in_to_cal_comis rendered in this view—nolog_in_to_cal_comduplicate detected.apps/web/public/static/locales/az/common.json (2)
668-670: Guest-join strings read well.Clear and consistent with “Qonaq kimi davam et.” No changes needed.
1424-1424: Sign-in phrasing consistency LGTM.“Cal.com-a daxil ol” matches the informal imperative used elsewhere (e.g., “Daxil ol”).
apps/web/public/static/locales/km/common.json (2)
1427-1428: LGTM for meeting/schedule strings.Clear, natural Khmer; placeholders unaffected.
1431-1431: LGTM for call appearance string.Wording is accurate and consistent with UI tone.
apps/web/public/static/locales/zh-TW/common.json (3)
128-129: LGTM on new action labels ("錄製", "轉錄").Terms are idiomatic for zh-TW and match existing usage elsewhere in the file.
1424-1424: LGTM: concise sign-in copy.Matches style used for “log_in_to_cal_com” and brand capitalization.
1428-1429: LGTM: clear, natural phrasing.Both strings read well in zh-TW and fit UI context.
apps/web/public/static/locales/el/common.json (1)
128-129: LGTM for recording/transcription labels.
Short, accurate, and consistent with prior usage.apps/web/public/static/locales/de/common.json (2)
668-670: LGTM: guest join strings.Clear, concise, and consistent with the product tone.
1424-1424: LGTM: sign-in copy simplification.“Bei Cal.com anmelden” is concise and consistent with other auth strings.
apps/web/public/static/locales/no/common.json (2)
128-129: New recording/transcription keys read naturally in NorwegianTranslations look correct and consistent with existing terms (“Opptak”, “Bli med i møte” elsewhere).
1424-1424: Shortened sign-in copy is goodConcise and consistent with neighboring “Logg inn på Cal.com”.
apps/web/public/static/locales/fr/common.json (5)
128-129: LGTM — action labels read well in FR (verb form).
668-669: LGTM — guest CTA and helper text are natural.
1424-1424: LGTM — matches button-style infinitive used elsewhere (“Se connecter”).
1427-1427: LGTM — concise and clear.
1431-1431: Two similar keys exist (join vs appear) — confirm intended contexts.You now have:
- choose_how_you_d_like_to_join_call (Line 1430, existing)
- choose_how_you_d_like_to_appear_on_the_call (Line 1431, new)
Please confirm both are used by different UI states; otherwise consider deprecating one to avoid duplicate copy drift.
apps/web/public/static/locales/cs/common.json (3)
134-135: LGTM: new recording/transcription labels read well.Wording matches brand tone and context.
668-670: LGTM: guest join flow strings are natural and concise.No issues found.
1424-1424: LGTM: sign-in copy aligns with brand naming.“Přihlásit se do Cal.com” matches other locales and keeps wording concise.
apps/web/public/static/locales/bn/common.json (1)
1424-1424: LGTM: succinct sign-in copyThe updated “Cal.com-এ সাইন ইন করুন” aligns with adjacent strings and brand style.
apps/web/public/static/locales/sr/common.json (2)
128-129: Recording action labels look good."Snimi" and "Transkribuj" are clear and consistent with nearby action verbs.
668-670: Guest-join additions read well.“Pridruži se kao gost” and “Idealno za jednokratne pozive” are accurate.
apps/web/public/static/locales/sv/common.json (2)
668-670: LGTM: Guest-join strings read naturally.“Gå med som gäst” and “Perfekt för engångssamtal” are clear and idiomatic.
1424-1424: LGTM: Brand usage consistent.“Logga in på Cal.com” matches product style and existing strings.
apps/web/public/static/locales/eu/common.json (3)
128-129: LGTM: Added voice/video actions read naturally.
No issues with "Grabatu" / "Transkribatu".
135-135: LGTM: Recording toggle string is clear.
1424-1424: LGTM: Brand voice refinement for sign-in.
Shorter “Hasi saioa Cal.com-en” looks good.apps/web/public/static/locales/pt/common.json (2)
128-129: LGTM: new recording/transcription labels read well in PT.
668-669: LGTM: guest join strings are clear.apps/web/public/static/locales/pt-BR/common.json (2)
128-129: LGTM: recording/transcription actions translated clearly."Gravar" / "Transcrever" read well for pt-BR CTAs.
1424-1424: CTA reads well in pt-BR.“Entrar no Cal.com” matches common CTA style (“Entrar”). No issues spotted.
apps/web/public/static/locales/da/common.json (3)
134-135: LGTM: clear and idiomatic phrasingBoth strings read well in Danish and match existing tone.
1424-1424: LGTM: shorter sign-in copy is fineMatches tone of sibling key log_in_to_cal_com.
1427-1431: LGTM: natural, concise, and consistent with existing vocabularyNo issues with grammar or tone; “i opkaldet” aligns with other strings.
apps/web/public/static/locales/ro/common.json (2)
128-129: Recording/transcription action labels read wellImperative voice is correct and consistent with nearby UI. No issues.
1427-1431: Translation keys correctly wired Verified that all new keys are in use and the deprecatedtrack_your_meetingskey is absent.apps/web/public/static/locales/pl/common.json (2)
128-129: LGTM: Recording/transcription verbs read naturally.
1424-1424: Sign-in copy looks good; confirm key duplication intent.
Both sign_in_to_cal_com and log_in_to_cal_com are translated identically (“Zaloguj się do Cal.com”). Ensure both keys are expected in en/common.json and used distinctly.apps/web/public/static/locales/fi/common.json (2)
1424-1424: LGTM: updated sign-in phrasing“Kirjaudu Cal.comiin” is concise and natural. Matches brand style.
1428-1429: LGTM: clarity improvementsBoth strings read well; adding “Yritä uudelleen.” improves guidance.
apps/web/public/static/locales/vi/common.json (3)
668-670: LGTM — guest join flow strings read naturally.
1424-1424: LGTM — shorter “Sign in” matches brand voice and pairs with log_in_to_cal_com.
1427-1429: LGTM — clear, natural Vietnamese; no placeholder/punctuation issues.apps/web/public/static/locales/uk/common.json (5)
134-136: LGTM — clear and natural phrasing.“Транскрипція на основі ШІ” and “Почати або зупинити запис” read well in UI.
668-670: LGTM — guest-join copy is idiomatic.“Приєднатися як гість” and “Ідеально для одноразових дзвінків” fit the context.
1424-1424: LGTM — button-style infinitive is consistent.“Увійти в Cal.com” matches the established button voice and aligns with the neighboring “log_in_to_cal_com”.
1427-1429: LGTM — concise and accurate.Both strings are clear and match product tone.
1431-1431: LGTM — context-appropriate wording.“Виберіть, як ви хочете виглядати під час дзвінка” is natural for video appearance settings.
apps/web/public/static/locales/hu/common.json (5)
135-135: LGTM.“Felvétel indítása vagy leállítása” is clear and correct.
668-670: LGTM.“Csatlakozás vendégként” and “Ideális egyszeri hívásokhoz” are natural and on-brand.
1424-1424: LGTM.“Bejelentkezés a Cal.com-ba” is concise and consistent with other nominal menu items.
1429-1429: LGTM.Polite tone and punctuation are correct.
1431-1431: LGTM.“Válassza ki, hogyan szeretne megjelenni a hívásban” is clear and idiomatic.
apps/web/public/static/locales/tr/common.json (2)
668-670: LGTM: guest-join strings read naturally.Translations are clear and idiomatic.
1424-1424: LGTM: sign-in phrasing.Shorter imperative “Cal.com'a giriş yap” matches UI tone.
apps/web/public/static/locales/ru/common.json (1)
1424-1424: Confirm tone for sign-in string.Current “Войти в Cal.com” (infinitive) is great for buttons. If this is a headline/title, “Войдите в Cal.com” (imperative) may read better. Please verify usage context.
apps/web/public/static/locales/sk-SK/common.json (5)
134-135: LGTM: AI transcription and recording toggle strings read wellWording is natural and consistent with the rest of the locale.
668-669: LGTM: Guest-join flow phrasing is idiomaticBoth strings are clear and idiomatic in Slovak.
1424-1424: LGTM: Shortened sign-in header is appropriate“Prihlásiť sa do Cal.com” works well as a header and matches the concise brand style.
1428-1428: LGTM: Error copy is clear and actionable“Nepodarilo sa pripojiť k hovoru. Skúste to znova.” is concise and user-friendly.
1427-1431: Make “appear on the call” phrasing gender-neutral- "choose_how_you_d_like_to_appear_on_the_call": "Vyberte si, ako chcete byť zobrazený počas hovoru", + "choose_how_you_d_like_to_appear_on_the_call": "Vyberte si, ako sa chcete zobraziť počas hovoru",
- Confirm both
track_your_meetingsandtrack_meetings_and_manage_scheduleare intended, referenced in code, and have matching entries inen/common.json.apps/web/public/static/locales/ca/common.json (1)
134-134: LGTM — new strings read naturally in Catalan."Transcripció impulsada per IA" and "Fes un seguiment de les teves reunions..." are clear and idiomatic.
Also applies to: 1427-1427
apps/web/public/static/locales/it/common.json (3)
128-129: LGTM: New voice/recording actions read naturally in Italian.
"Registra" and "Trascrivi" are concise and consistent with the rest of the UI.
668-670: LGTM: Guest-join strings fit tone and context.
Translations are clear and on-brand.
1424-1424: Sanity-check duplication with log_in_to_cal_com.
Both “sign_in_to_cal_com” and “log_in_to_cal_com” read “Accedi a Cal.com”. If both appear in proximity, consider differentiating or confirm they’re never shown together.apps/web/public/static/locales/es/common.json (2)
1424-1424: LGTM: clearer, shorter sign-in copy.“Iniciar sesión en Cal.com” is concise and consistent with UI tone.
1427-1431: Polish Spanish message and confirm key usage
- Apply the nitpick:
- "failed_to_join_call": "No se pudo unir a la llamada. Por favor, inténtalo de nuevo.", + "failed_to_join_call": "No fue posible unirse a la llamada. Inténtalo de nuevo.",
- Manually verify which of
"choose_how_you_d_like_to_join_call"vs"choose_how_you_d_like_to_appear_on_the_call""track_your_meetings"vs"track_meetings_and_manage_schedule"
are actually referenced in code and deprecate the unused keys.apps/web/public/static/locales/zh-CN/common.json (3)
668-670: Guest join strings read well“以访客身份加入 / 适合一次性通话” are clear and natural. No changes needed.
1424-1424: Shortened sign-in copy LGTM“登录 Cal.com” aligns with the shorter brand copy used elsewhere.
1427-1428: New call/track strings LGTMWording is concise and idiomatic. No action.
apps/web/public/static/locales/bg/common.json (4)
128-129: LGTM — new recording/transcription keys read well in BG.
668-669: LGTM — guest join flow strings look natural and match tone elsewhere.
1424-1424: Shorter “Sign in” copy is fine; check UI consistency with the adjacent “Log in” key.
We now have noun-form “Вход в Cal.com” and verb-form “Влезте в Cal.com”. Ensure each screen uses the intended tone.
1427-1428: LGTM — new tracking/join error strings read clearly.apps/web/public/static/locales/nl/common.json (1)
1424-1424: Signin copy change is fine“Inloggen bij Cal.com” matches tone and aligns with “log_in_to_cal_com”. No issues.
apps/web/public/static/locales/es-419/common.json (1)
668-670: Confirm intent vs. existing “Continuar como invitado” copyWe now have both “Continuar como invitado” (Line 667) and “Unirse como invitado” here. If these are different contexts (scheduling vs. call join), keep; otherwise unify to one verb for consistency.
| "record": "تسجيل", | ||
| "transcribe": "نسخ", |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Unify “transcription” terminology with the rest of the file
Current strings mix “نسخ” vs “التفريغ النصي” (see later keys like 1713–1716). Suggest aligning to “تفريغ/التفريغ النصي”.
Apply:
"record": "تسجيل",
-"transcribe": "نسخ",
+"transcribe": "تفريغ",📝 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.
| "record": "تسجيل", | |
| "transcribe": "نسخ", | |
| "record": "تسجيل", | |
| "transcribe": "تفريغ", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ar/common.json around lines 128–129, the
"transcribe" key uses "نسخ" which is inconsistent with later keys that use
"التفريغ النصي"; change the value to "التفريغ النصي" (e.g. "transcribe":
"التفريغ النصي") and then search the file for other occurrences of "نسخ" or
"تفريغ" variants and standardize them to the chosen phrase so terminology is
consistent across all keys.
| "transcription_powered_by_ai": "النسخ مدعوم بالذكاء الاصطناعي", | ||
| "start_or_stop_recording": "بدء أو إيقاف التسجيل", | ||
| "begin_message": "رسالة البداية", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Keep noun phrase consistent: use “التفريغ النصي”
Match existing usage elsewhere (“التفريغ النصي مفعّل الآن/متوقف الآن”).
-"transcription_powered_by_ai": "النسخ مدعوم بالذكاء الاصطناعي",
+"transcription_powered_by_ai": "التفريغ النصي مدعوم بالذكاء الاصطناعي",
"start_or_stop_recording": "بدء أو إيقاف التسجيل",Run to spot remaining inconsistencies in Arabic locale:
🏁 Script executed:
#!/bin/bash
rg -n 'نسخ|تفريغ' apps/web/public/static/locales/ar/common.json -C2Length of output: 13855
Use “التفريغ النصي” for all transcription-related strings
- In common.json line 134, change
"transcription_powered_by_ai": "النسخ مدعوم بالذكاء الاصطناعي"→"التفريغ النصي مدعوم بالذكاء الاصطناعي". - Replace “النسخ النصي” with “التفريغ النصي” in
send_cal_video_transcription_emailsand its description (lines 27–28). - In
enable_automatic_transcription(line 50), replace “النسخ التلقائي” with “التفريغ النصي التلقائي”. - In
disable_transcription_for_guestsanddisable_transcription_for_organizer(lines 68–69), replace “نسخ” with “التفريغ النصي”.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ar/common.json around lines 27–28, 50, 68–69,
and 134–136, update all transcription-related Arabic phrases to use "التفريغ
النصي" consistently: change line 134 value from "النسخ مدعوم بالذكاء الاصطناعي"
to "التفريغ النصي مدعوم بالذكاء الاصطناعي"; in lines 27–28 replace occurrences
of "النسخ النصي" with "التفريغ النصي" for send_cal_video_transcription_emails
and its description; in line 50 replace "النسخ التلقائي" with "التفريغ النصي
التلقائي"; and in lines 68–69 replace any instances of "نسخ" with "التفريغ
النصي" for disable_transcription_for_guests and
disable_transcription_for_organizer, ensuring grammatical consistency and
preserving punctuation/keys.
| "record": "Qeyd et", | ||
| "transcribe": "Transkripsiya et", | ||
| "payment": "Ödəniş", | ||
| "missing_card_fields": "Kart məlumatları çatışmır", | ||
| "pay_now": "İndi ödə", | ||
| "general_prompt": "Ümumi sorğu", | ||
| "transcription_powered_by_ai": "Transkripsiya süni intellekt tərəfindən təmin edilir", | ||
| "start_or_stop_recording": "Qeydiyyatı başlat və ya dayandır", | ||
| "begin_message": "Mesaja başla", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Fix mistranslation for “recording” + align terminology.
- “Qeydiyyatı başlat...” uses “registration,” not “recording.” Suggest “Qeydi başla və ya dayandır.”
- Consider standardizing “record/recording” as “qeyd/qeydi” (not “yazı”) for consistency with 1624/1628.
Apply:
- "record": "Qeyd et",
- "transcription_powered_by_ai": "Transkripsiya süni intellekt tərəfindən təmin edilir",
- "start_or_stop_recording": "Qeydiyyatı başlat və ya dayandır",
+ "record": "Qeyd et",
+ "transcription_powered_by_ai": "Transkripsiya süni intellektlə dəstəklənir",
+ "start_or_stop_recording": "Qeydi başla və ya dayandır",Optionally follow up by changing “Yazını yüklə/Yazınızı yükləyin” (lines 167, 169) to “Qeydi/Qeydinizi” in a separate pass for full consistency.
🏁 Script executed:
#!/bin/bash
set -e
# Locate the Azerbaijani common.json file
AZ_FILE=$(find . -type f -path "*/apps/web/public/static/locales/az/common.json")
echo "File: $AZ_FILE"
# Display lines 100–200 with line numbers for context
sed -n '100,200p' "$AZ_FILE" | nl -baLength of output: 94
🏁 Script executed:
#!/bin/bash
set -e
# Locate the Azerbaijani common.json file
AZ_FILE=$(find . -type f -path "*/apps/web/public/static/locales/az/common.json")
echo "Inspecting file at: $AZ_FILE"
# Display lines 120–140 for context
sed -n '120,140p' "$AZ_FILE"Length of output: 1296
Fix mistranslation of “recording” and update AI transcription phrasing
- Replace
start_or_stop_recordingvalue with “Qeydi başla və ya dayandır” (avoid “qeydiyyat” which means registration). - Replace
transcription_powered_by_aivalue with “Transkripsiya süni intellektlə dəstəklənir” for a more idiomatic rendering.
- "transcription_powered_by_ai": "Transkripsiya süni intellekt tərəfindən təmin edilir",
- "start_or_stop_recording": "Qeydiyyatı başlat və ya dayandır",
+ "transcription_powered_by_ai": "Transkripsiya süni intellektlə dəstəklənir",
+ "start_or_stop_recording": "Qeydi başla və ya dayandır",Optionally standardize upload keys (“Yazını yüklə” / “Yazınızı yükləyin”) to “Qeydi…” for full consistency.
📝 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.
| "record": "Qeyd et", | |
| "transcribe": "Transkripsiya et", | |
| "payment": "Ödəniş", | |
| "missing_card_fields": "Kart məlumatları çatışmır", | |
| "pay_now": "İndi ödə", | |
| "general_prompt": "Ümumi sorğu", | |
| "transcription_powered_by_ai": "Transkripsiya süni intellekt tərəfindən təmin edilir", | |
| "start_or_stop_recording": "Qeydiyyatı başlat və ya dayandır", | |
| "begin_message": "Mesaja başla", | |
| "record": "Qeyd et", | |
| "transcribe": "Transkripsiya et", | |
| "payment": "Ödəniş", | |
| "missing_card_fields": "Kart məlumatları çatışmır", | |
| "pay_now": "İndi ödə", | |
| "general_prompt": "Ümumi sorğu", | |
| "transcription_powered_by_ai": "Transkripsiya süni intellektlə dəstəklənir", | |
| "start_or_stop_recording": "Qeydi başla və ya dayandır", | |
| "begin_message": "Mesaja başla", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/az/common.json around lines 128 to 136, two
translations are incorrect or non-idiomatic: change the value of
"start_or_stop_recording" from "Qeydiyyatı başlat və ya dayandır" to "Qeydi
başla və ya dayandır" (replace "qeydiyyat" with "qeydi"), and update
"transcription_powered_by_ai" from "Transkripsiya süni intellekt tərəfindən
təmin edilir" to "Transkripsiya süni intellektlə dəstəklənir"; optionally review
related upload labels and standardize them to use "Qeydi…" (e.g., "Yazını
yüklə"/"Yazınızı yükləyin" → "Qeydi yüklə"/"Qeydinizi yükləyin") for
consistency.
| "choose_how_you_d_like_to_appear_on_the_call": "Изберете как искате да се появите в разговора", | ||
| "new_event_trigger": "когато е резервирано ново събитие", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Two similar keys exist; confirm which one the UI uses and avoid drift.
Both “choose_how_you_d_like_to_join_call” and “choose_how_you_d_like_to_appear_on_the_call” are present. Verify call-sites so we don’t ship dead keys or mismatched copy.
Run:
🏁 Script executed:
#!/bin/bash
# Find usages of both keys across the repo with context
rg -n -C2 -S "\bchoose_how_you_d_like_to_join_call\b|\bchoose_how_you_d_like_to_appear_on_the_call\b" --type ts --type tsx --type js --type jsx --type go --type pyLength of output: 27
🏁 Script executed:
#!/bin/bash
# Retry searching for translation key usages using filename globs instead of rg types
rg -n -C2 -S "choose_how_you_d_like_to_join_call|choose_how_you_d_like_to_appear_on_the_call" -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx' -g '*.go' -g '*.py'Length of output: 532
Remove unused translation key choose_how_you_d_like_to_join_call. The only key referenced in apps/web/modules/videos/views/videos-single-view.tsx (line 358) is choose_how_you_d_like_to_appear_on_the_call, so drop the dead entry from apps/web/public/static/locales/bg/common.json.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/bg/common.json around lines 1430-1431, there
is an unused translation key choose_how_you_d_like_to_join_call that is not
referenced anywhere (the code uses choose_how_you_d_like_to_appear_on_the_call);
remove the dead entry from this JSON file, ensuring the file remains valid JSON
(delete the key and its value, and adjust trailing commas if needed).
| "after_guests_cal_video_no_show": "Después de que los invitados no se unieron a la videollamada", | ||
| "join_video_call": "Unirse a la videollamada", | ||
| "sign_in_to_cal_com": "Inicia sesión en tu cuenta de Cal.com", | ||
| "sign_in_to_cal_com": "Iniciar sesión en Cal.com", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Double-check key usage overlap with log_in_to_cal_com
Both sign_in_to_cal_com (this line) and log_in_to_cal_com (Line 1425) resolve to identical strings. Verify callers use the intended key and that neither becomes dead/duplicated.
Run to locate usages and spot duplicates:
🏁 Script executed:
#!/bin/bash
rg -nP "sign_in_to_cal_com|log_in_to_cal_com" -C3 --type ts --type tsx --type js --type jsx --type jsonLength of output: 27
🏁 Script executed:
#!/bin/bash
# Search for both keys across JS/TS/JSON files without relying on ripgrep file-type detection
rg -nP "sign_in_to_cal_com|log_in_to_cal_com" -C3 -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx' -g '*.json'Length of output: 38407
Remove duplicate log_in_to_cal_com key
sign_in_to_cal_com is the only key referenced in code (e.g. videos-single-view.tsx line 400) and both entries resolve to the same string—drop log_in_to_cal_com from common.json across all locales to eliminate dead/duplicated translation keys.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/es-419/common.json around line 1424, there is
a duplicate translation key `log_in_to_cal_com` that mirrors
`sign_in_to_cal_com`; remove the `log_in_to_cal_com` entry from this file and
then delete the same duplicate key from the common.json files in all other
locale folders, leaving only `sign_in_to_cal_com` (the key referenced in code,
e.g. videos-single-view.tsx line 400); after removal run the i18n
lint/extraction or unit tests to ensure no code references the removed key and
commit the cleaned locale files.
| "failed_to_join_call": "Ezin izan da deira batu. Saiatu berriro.", | ||
| "choose_how_you_d_like_to_join_call": "Aukeratu nola nahi duzun dei honetara batzea", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Confirm app uses the new keys.
New key added alongside legacy ones; verify callsites migrated to avoid dead strings.
🏁 Script executed:
#!/bin/bash
# Verify usage of renamed/new i18n keys vs legacy ones
rg -n --color=never -S "track_meetings_and_manage_schedule|track_your_meetings" -g '!**/dist/**' -g '!**/build/**'
rg -n --color=never -S "choose_how_you_d_like_to_appear_on_the_call|choose_how_you_d_like_to_join_call" -g '!**/dist/**' -g '!**/build/**'
rg -n --color=never -S "failed_to_join_call|join_as_guest|ideal_for_one_time_calls" -g '!**/dist/**' -g '!**/build/**'Length of output: 446
🏁 Script executed:
#!/bin/bash
# Verify usage of new i18n keys and removal of legacy ones
rg -n --color=never "choose_how_you_d_like_to_join_call" --ignore-dir dist --ignore-dir build
rg -n --color=never "choose_how_you_d_like_to_appear_on_the_call" --ignore-dir dist --ignore-dir build
rg -n --color=never "failed_to_join_call" --ignore-dir dist --ignore-dir build
rg -n --color=never "join_as_guest" --ignore-dir dist --ignore-dir build
rg -n --color=never "ideal_for_one_time_calls" --ignore-dir dist --ignore-dir buildLength of output: 2214
🏁 Script executed:
#!/bin/bash
# Inspect top-level directories
find . -maxdepth 2 -type d
# Search for new/legacy i18n key usage across source (excluding build/dist)
rg -F "choose_how_you_d_like_to_join_call" -n --glob '!dist/**' --glob '!build/**'
rg -F "choose_how_you_d_like_to_appear_on_the_call" -n --glob '!dist/**' --glob '!build/**'
rg -F "failed_to_join_call" -n --glob '!dist/**' --glob '!build/**'
rg -F "join_as_guest" -n --glob '!dist/**' --glob '!build/**'
rg -F "ideal_for_one_time_calls" -n --glob '!dist/**' --glob '!build/**'Length of output: 1762
🏁 Script executed:
#!/bin/bash
# Search for legacy vs new i18n key usage in code (excluding common non-source dirs)
for key in choose_how_you_d_like_to_join_call choose_how_you_d_like_to_appear_on_the_call failed_to_join_call join_as_guest ideal_for_one_time_calls; do
echo "=== Searching for $key ==="
grep -Rsn --exclude-dir=node_modules --exclude-dir=dist --exclude-dir=build --exclude-dir=.git \
--include=*.js --include=*.jsx --include=*.ts --include=*.tsx "t(['\"]$key['\"]" .
echo
doneLength of output: 810
Migrate call-join prompt to new i18n key
In apps/web/modules/videos/views/videos-single-view.tsx at line 358 you’re still using the legacy key
description={t("choose_how_you_d_like_to_appear_on_the_call")}Update it to
description={t("choose_how_you_d_like_to_join_call")}then remove the old “choose_how_you_d_like_to_appear_on_the_call” entry from common.json once no references remain.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/eu/common.json around lines 1428-1429, the new
key "choose_how_you_d_like_to_join_call" exists but the code still references
the legacy key; update apps/web/modules/videos/views/videos-single-view.tsx
(around line 358) to use t("choose_how_you_d_like_to_join_call") for the
description, then search the repo for any remaining references to
"choose_how_you_d_like_to_appear_on_the_call" and remove that entry from
common.json only after confirming there are no usages left.
| "record": "ថត", | ||
| "transcribe": "ចម្លង", |
There was a problem hiding this comment.
Fix inaccurate term for “Transcribe”.
“ចម្លង” means “copy,” not “transcribe.” Suggest using a voice-to-text phrasing.
"record": "ថត",
- "transcribe": "ចម្លង",
+ "transcribe": "បម្លែងសំឡេងជាអត្ថបទ",📝 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.
| "record": "ថត", | |
| "transcribe": "ចម្លង", | |
| "record": "ថត", | |
| "transcribe": "បម្លែងសំឡេងជាអត្ថបទ", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around lines 128-129, the Khmer
value for "transcribe" is incorrect ("ចម្លង" means "copy"); update the
"transcribe" entry to a voice-to-text phrasing such as "បម្លែងសំឡេងទៅជាអត្ថបទ"
(or another approved Khmer voice-to-text phrase) so the key accurately reflects
transcribing audio to text.
| "transcription_powered_by_ai": "ការចម្លងដោយប្រើបញ្ញាសិប្បនិម្មិត", | ||
| "start_or_stop_recording": "ចាប់ផ្តើម ឬបញ្ឈប់ការថត", |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Improve “Transcription powered by AI” phrasing.
Use wording that clearly denotes voice-to-text; current string implies generic copying.
- "transcription_powered_by_ai": "ការចម្លងដោយប្រើបញ្ញាសិប្បនិម្មិត",
+ "transcription_powered_by_ai": "ការបម្លែងសំឡេងជាអត្ថបទដោយបញ្ញាសិប្បនិម្មិត",
"start_or_stop_recording": "ចាប់ផ្តើម ឬបញ្ឈប់ការថត",📝 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.
| "transcription_powered_by_ai": "ការចម្លងដោយប្រើបញ្ញាសិប្បនិម្មិត", | |
| "start_or_stop_recording": "ចាប់ផ្តើម ឬបញ្ឈប់ការថត", | |
| "transcription_powered_by_ai": "ការបម្លែងសំឡេងជាអត្ថបទដោយបញ្ញាសិប្បនិម្មិត", | |
| "start_or_stop_recording": "ចាប់ផ្តើម ឬបញ្ឈប់ការថត", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around lines 134–135, the value
for "transcription_powered_by_ai" is ambiguous and should explicitly denote
voice-to-text; replace the current string with one that clearly says
"voice-to-text powered by AI" in Khmer (for example:
"ការប្រែសំឡេងទៅអត្ថបទដោយបញ្ញាសិប្បនិម្មិត") and ensure punctuation/spacing
matches project i18n style.
| "after_guests_cal_video_no_show": "បន្ទាប់ពីភ្ញៀវមិនបានចូលរួមក្នុងវីដេអូ Cal", | ||
| "join_video_call": "ចូលរួមការហៅវីដេអូ", | ||
| "sign_in_to_cal_com": "ចូលគណនី Cal.com របស់អ្នក", | ||
| "sign_in_to_cal_com": "ចូលគណនីទៅកាន់ Cal.com", |
There was a problem hiding this comment.
Grammar fix: “Sign in to Cal.com”.
“ចូលគណនីទៅកាន់ Cal.com” is ungrammatical. Use natural imperative.
- "sign_in_to_cal_com": "ចូលគណនីទៅកាន់ Cal.com",
+ "sign_in_to_cal_com": "ចូលទៅកាន់ Cal.com",📝 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.
| "sign_in_to_cal_com": "ចូលគណនីទៅកាន់ Cal.com", | |
| "sign_in_to_cal_com": "ចូលទៅកាន់ Cal.com", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around line 1424, the Khmer
translation value for "sign_in_to_cal_com" is ungrammatical; replace the current
value "ចូលគណនីទៅកាន់ Cal.com" with a natural imperative phrasing such as
"ចូលទៅកាន់ Cal.com" (remove the extra "គណនី" and use the natural imperative
form).
| "choose_how_you_d_like_to_appear_on_the_call": "选择您希望在通话中显示的方式", | ||
| "new_event_trigger": "预约新活动时", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Key overlap + micro copy tweak
-
Both keys now exist: choose_how_you_d_like_to_join_call and choose_how_you_d_like_to_appear_on_the_call. If the product migrated to the new key, ensure old usages are removed or mapped to avoid drift.
-
Micro copy reads a bit stiff. Suggest a smoother phrasing.
Apply:
- "choose_how_you_d_like_to_appear_on_the_call": "选择您希望在通话中显示的方式",
+ "choose_how_you_d_like_to_appear_on_the_call": "选择您在通话中的显示方式",To verify usages and spot dead keys, run:
🏁 Script executed:
#!/bin/bash
# Find all occurrences of the old/new keys across the repo
rg -nP "choose_how_you_d_like_to_(join|appear)_on_the_call" -g '!**/node_modules/**' -C2
# Check en/common.json to confirm intended canonical key
fd common.json apps packages | rg -n "choose_how_you_d_like_to_"Length of output: 148
🏁 Script executed:
#!/bin/bash
# Search all JSON locale files for both keys
rg -n "choose_how_you_d_like_to_(join|appear)_on_the_call" -g '*.json' --no-ignore
# Search codebase (JS/TS/JSX/TSX) for usages of these keys via i18n calls
rg -nP "t\(['\"]choose_how_you_d_like_to_(join|appear)_on_the_call['\"]" -t js -t ts -t jsx -t tsx --no-ignore
# Locate all common.json under locales and show key occurrences
find . -path "*/locales/*" -type f -name "common.json" -exec rg -n "choose_how_you_d_like_to_" {} +Length of output: 15941
🏁 Script executed:
#!/bin/bash
# Search JS/TS code for usages of the translation keys
rg -n "choose_how_you_d_like_to_join_call" --glob "*.{js,jsx,ts,tsx}" --no-ignore
rg -n "choose_how_you_d_like_to_appear_on_the_call" --glob "*.{js,jsx,ts,tsx}" --no-ignoreLength of output: 127
Remove dead key & refine zh-CN microcopy
choose_how_you_d_like_to_join_callis not referenced in the code (videos-single-view.tsx uses only…_appear_on_the_call)—remove it from allcommon.jsonlocale files.- Apply the microcopy tweak in
apps/web/public/static/locales/zh-CN/common.json:
- "choose_how_you_d_like_to_appear_on_the_call": "选择您希望在通话中显示的方式",
+ "choose_how_you_d_like_to_appear_on_the_call": "选择您在通话中的显示方式",🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-CN/common.json around lines 1430-1431,
remove the dead key choose_how_you_d_like_to_join_call from all common.json
locale files (it's unused) and in the zh-CN file update the microcopy for the
active key choose_how_you_d_like_to_appear_on_the_call to the revised phrasing
requested by product; ensure only the appear key remains and delete the unused
join_call key everywhere.
6e1c382 to
e2f5582
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (4)
apps/web/public/static/locales/bg/common.json (1)
1427-1430: Remove dead key to avoid drift (already flagged previously).Only
choose_how_you_d_like_to_appear_on_the_callis referenced; dropchoose_how_you_d_like_to_join_call.- "choose_how_you_d_like_to_join_call": "Изберете как искате да се присъедините към този разговор", "choose_how_you_d_like_to_appear_on_the_call": "Изберете как искате да се появите в разговора",Run to confirm repo usages before removal:
#!/bin/bash rg -n -C2 -S "choose_how_you_d_like_to_join_call|choose_how_you_d_like_to_appear_on_the_call" -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx'apps/web/public/static/locales/az/common.json (2)
134-134: Prefer more idiomatic “powered by AI” phrasing.
“təmin edilir” is service-like; “dəstəklənir” reads better in UI copy.Apply:
- "transcription_powered_by_ai": "Transkripsiya süni intellekt tərəfindən təmin edilir", + "transcription_powered_by_ai": "Transkripsiya süni intellektlə dəstəklənir",
135-135: Fix mistranslation: “Qeydiyyat” = registration, not recording.
Use “Qeyd” to avoid meaning drift.Apply:
- "start_or_stop_recording": "Qeydiyyatı başlat və ya dayandır", + "start_or_stop_recording": "Qeydi başla və ya dayandır",apps/web/public/static/locales/eu/common.json (1)
1431-1431: Deprecate legacy key after migrating callsites.Both keys exist:
- choose_how_you_d_like_to_join_call (preferred)
- choose_how_you_d_like_to_appear_on_the_call (legacy)
Confirm all callsites use the new key, then remove the legacy entry.
#!/bin/bash # Verify no remaining source references to the legacy key rg -nPI --glob '!**/public/static/locales/**' --type-add 'web:*.{ts,tsx,js,jsx}' --type web \ $'t\\([\'"]choose_how_you_d_like_to_appear_on_the_call[\'"]\\)'If zero results, apply:
- "choose_how_you_d_like_to_appear_on_the_call": "Aukeratu nola agertu nahi duzun deian",
🧹 Nitpick comments (25)
apps/web/public/static/locales/bg/common.json (2)
128-135: Recording/transcription strings look good; minor tone polish optional.
- Consider “Транскрипцията се осъществява от ИИ” (slightly more idiomatic than “чрез ИИ”).
- If this is a button/CTA, a shorter “Стартирай/спри записа” may fit better than the nominal form.
- "transcription_powered_by_ai": "Транскрипцията се осъществява чрез ИИ", + "transcription_powered_by_ai": "Транскрипцията се осъществява от ИИ", - "start_or_stop_recording": "Стартиране или спиране на записа", + "start_or_stop_recording": "Стартирай/спри записа"
668-669: Align voice with adjacent CTAs.Nearby strings use imperative (“Продължи като гост”, “Присъединяване към срещата” as CTA). Suggest imperative here too for consistency.
- "join_as_guest": "Присъединяване като гост", + "join_as_guest": "Присъединете се като гост",apps/web/public/static/locales/ru/common.json (4)
128-129: Polish “transcribe”; keep an eye on “record” usage.
- Suggest a more natural verb for a button/action: “Расшифровать” instead of “Транскрибировать”.
- “record” currently equals the noun “Запись”. If UI uses it as a verb, consider “Записывать” or rely on the explicit action key at Line 135.
Apply:
- "transcribe": "Транскрибировать", + "transcribe": "Расшифровать",
134-135: Minor wording improvement for brand tone.“на базе ИИ” reads a bit smoother in RU.
- "transcription_powered_by_ai": "Транскрипция с использованием ИИ", + "transcription_powered_by_ai": "Транскрипция на базе ИИ",
1428-1428: Tighten phrasing.“эффективнее” is shorter and natural.
- "track_meetings_and_manage_schedule": "Отслеживайте встречи и управляйте расписанием более эффективно", + "track_meetings_and_manage_schedule": "Отслеживайте встречи и эффективнее управляйте расписанием",
1431-1431: Clarify “appear on the call”.“Отображаться” better conveys camera/avatar presence than “появляться”.
- "choose_how_you_d_like_to_appear_on_the_call": "Выберите, как вы хотите появляться на звонке", + "choose_how_you_d_like_to_appear_on_the_call": "Выберите, как вы хотите отображаться в звонке",apps/web/public/static/locales/vi/common.json (2)
128-129: Use “Chép lời” consistently (matches existing keys like 1713–1716).Other strings in this locale use “Chép lời” for transcription. Align these two for consistency.
- "transcribe": "Phiên âm", + "transcribe": "Chép lời",
134-135: Align “transcription_powered_by_ai” with chosen terminology.Keep terminology consistent with “Chép lời”.
- "transcription_powered_by_ai": "Phiên âm được hỗ trợ bởi AI", + "transcription_powered_by_ai": "Chép lời được hỗ trợ bởi AI",apps/web/public/static/locales/az/common.json (2)
128-129: LGTM: new “record/transcribe” keys read naturally in AZ.
No issues; consistent with “qeyd/transkripsiya” terminology.Optional: For full consistency with “qeyd”, consider updating existing “Yazını…” strings (e.g., lines 167, 169) to “Qeydi…”.
1424-1424: Unify tone with neighboring key.
“sign_in_to_cal_com” is informal (“daxil ol”), while “log_in_to_cal_com” (Line 1425) is formal (“daxil olun”). Pick one tone per brand voice.If informal is desired (matches many CTAs here), align 1425 accordingly:
"log_in_to_cal_com": "Cal.com-a daxil ol"apps/web/public/static/locales/he/common.json (3)
128-135: Make labels consistent and gender-inclusive for recording/transcriptionUse nouns for button/label parity (consistent with “הקלטה”, “הורדת ההקלטה”) and add /י for inclusivity.
Apply:
- "record": "הקלט", - "transcribe": "תמלל", + "record": "הקלטה", + "transcribe": "תמלול", ... - "start_or_stop_recording": "התחל או הפסק הקלטה", + "start_or_stop_recording": "התחל/י או הפסק/י הקלטה",
668-670: Inclusive phrasing for guest join CTAAdd /י and mark guest gender with /ת for Hebrew UX consistency.
- "join_as_guest": "הצטרף כאורח", + "join_as_guest": "הצטרף/י כאורח/ת",(Optional: consider mirroring 667 “continue_as_guest” to “המשך/י כאורח/ת” for consistency.)
1424-1431: Polish sign-in and call-join texts (inclusivity + tone alignment)
- Make “Sign in” inclusive.
- Prefer neutral retry copy (“נא לנסות שוב.” used elsewhere).
- Make appearance choice inclusive with neutral phrasing.
- "sign_in_to_cal_com": "התחבר ל-Cal.com", + "sign_in_to_cal_com": "התחבר/י ל-Cal.com", ... - "failed_to_join_call": "ההצטרפות לשיחה נכשלה. אנא נסה שוב.", + "failed_to_join_call": "ההצטרפות לשיחה נכשלה. נא לנסות שוב.", ... - "choose_how_you_d_like_to_appear_on_the_call": "בחר כיצד תרצה להופיע בשיחה", + "choose_how_you_d_like_to_appear_on_the_call": "בחר/י כיצד ברצונך להופיע בשיחה",Note: For full consistency, you may also update Line 1425 (“log_in_to_cal_com”) to “התחבר/י ל‑Cal.com”.
apps/web/public/static/locales/zh-TW/common.json (2)
134-136: Use zh-TW phrasing for “AI powered” and align transcript terminology.
- “轉錄由 AI 提供支持” is PRC-flavored. Prefer “AI 支援的轉錄” for zh-TW.
- Optional: unify transcript wording across the file (e.g., 逐字稿/轉錄/文字稿 are mixed). Recommend choosing one and standardizing in nearby strings in a follow-up.
- "transcription_powered_by_ai": "轉錄由 AI 提供支持", + "transcription_powered_by_ai": "AI 支援的轉錄",
1431-1431: Polish phrasing for better fluency.
“選擇您希望在通話中顯示的方式” → 「選擇您在通話中的呈現方式」 reads more naturally.- "choose_how_you_d_like_to_appear_on_the_call": "選擇您希望在通話中顯示的方式", + "choose_how_you_d_like_to_appear_on_the_call": "選擇您在通話中的呈現方式",apps/web/public/static/locales/el/common.json (4)
128-129: Recording/transcription labels look correct (minor UX check)."Εγγραφή" and "Απομαγνητοφώνηση" read well. If these are action buttons, consider imperative (“Απομαγνητοφωνήστε”) for consistency with verb-style CTAs elsewhere. Otherwise, keep as is.
134-135: Polish “powered by AI” phrasing for concision and brand consistency.Prefer “AI” over the spelled-out phrase and mirror existing “powered_by” tone.
Apply:
- "transcription_powered_by_ai": "Απομαγνητοφώνηση με τη δύναμη της τεχνητής νοημοσύνης", + "transcription_powered_by_ai": "Απομαγνητοφώνηση με υποστήριξη AI",
668-670: Use “Συμμετοχή” (join) instead of “Σύνδεση” (sign in).Everywhere else “join” → “Συμμετοχή στη συνάντηση”. Align this CTA.
Apply:
- "join_as_guest": "Σύνδεση ως επισκέπτης", + "join_as_guest": "Συμμετοχή ως επισκέπτης",
1427-1431: Add terminal punctuation for consistency and keep tone aligned with adjacent copy.Line 1427 lacks a period; 1426 has one.
Apply:
- "track_meetings_and_manage_schedule": "Παρακολουθήστε τις συναντήσεις σας και διαχειριστείτε το πρόγραμμά σας πιο αποτελεσματικά", + "track_meetings_and_manage_schedule": "Παρακολουθήστε τις συναντήσεις σας και διαχειριστείτε το πρόγραμμά σας πιο αποτελεσματικά.",apps/web/public/static/locales/no/common.json (3)
128-136: Small wording tweaks for natural Norwegian (optional).
- Consider “Start eller stopp opptaket” (definite form) for clarity.
- “Transkripsjon drevet av AI” is fine; alternatively “AI-drevet transkripsjon” is a bit tighter.
Apply if you agree:
- "start_or_stop_recording": "Start eller stopp opptak", + "start_or_stop_recording": "Start eller stopp opptaket" - "transcription_powered_by_ai": "Transkripsjon drevet av AI", + "transcription_powered_by_ai": "AI-drevet transkripsjon",
668-670: Align “join” phrasing across UI.Elsewhere “join” is translated as “Bli med …”. Recommend consistency here.
- "join_as_guest": "Delta som gjest", + "join_as_guest": "Bli med som gjest", - "ideal_for_one_time_calls": "Ideelt for engangsmøter", + "ideal_for_one_time_calls": "Ideelt for engangssamtaler",
1424-1431: Key naming matches English base; no rename needed
Englishen/common.jsonuses the contracted keys (choose_how_you_d_like_to_*), so your Norwegian keys are correct.Optionally refine the error copy for more natural phrasing:
- "failed_to_join_call": "Kunne ikke delta i samtalen. Vennligst prøv igjen.", + "failed_to_join_call": "Kunne ikke bli med i samtalen. Prøv igjen.",apps/web/public/static/locales/eu/common.json (1)
1424-1424: Confirmed onlysign_in_to_cal_comis referenced in code; remove the unusedlog_in_to_cal_comkeys from the locale JSONs.apps/web/public/static/locales/ro/common.json (2)
134-135: Prefer a tighter, more natural phrasing for AI attribution"Transcriere asistată de AI" reads cleaner on UI than "realizată cu ajutorul AI".
Apply:
-"transcription_powered_by_ai": "Transcriere realizată cu ajutorul AI", +"transcription_powered_by_ai": "Transcriere asistată de AI",
1431-1431: Optional: slightly crisper CTA“Alege cum vrei să apari în apel” is shorter and friendlier; keep if you standardize on informal tone.
Apply:
-"choose_how_you_d_like_to_appear_on_the_call": "Alege cum dorești să apari în apel", +"choose_how_you_d_like_to_appear_on_the_call": "Alege cum vrei să apari în apel",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- 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(3 hunks)apps/web/public/static/locales/az/common.json(3 hunks)apps/web/public/static/locales/bg/common.json(3 hunks)apps/web/public/static/locales/bn/common.json(3 hunks)apps/web/public/static/locales/ca/common.json(3 hunks)apps/web/public/static/locales/cs/common.json(3 hunks)apps/web/public/static/locales/da/common.json(3 hunks)apps/web/public/static/locales/de/common.json(3 hunks)apps/web/public/static/locales/el/common.json(3 hunks)apps/web/public/static/locales/es-419/common.json(3 hunks)apps/web/public/static/locales/es/common.json(3 hunks)apps/web/public/static/locales/et/common.json(3 hunks)apps/web/public/static/locales/eu/common.json(3 hunks)apps/web/public/static/locales/fi/common.json(3 hunks)apps/web/public/static/locales/fr/common.json(3 hunks)apps/web/public/static/locales/he/common.json(3 hunks)apps/web/public/static/locales/hu/common.json(3 hunks)apps/web/public/static/locales/it/common.json(3 hunks)apps/web/public/static/locales/ja/common.json(3 hunks)apps/web/public/static/locales/km/common.json(3 hunks)apps/web/public/static/locales/ko/common.json(3 hunks)apps/web/public/static/locales/nl/common.json(3 hunks)apps/web/public/static/locales/no/common.json(3 hunks)apps/web/public/static/locales/pl/common.json(3 hunks)apps/web/public/static/locales/pt-BR/common.json(3 hunks)apps/web/public/static/locales/pt/common.json(3 hunks)apps/web/public/static/locales/ro/common.json(3 hunks)apps/web/public/static/locales/ru/common.json(3 hunks)apps/web/public/static/locales/sk-SK/common.json(3 hunks)apps/web/public/static/locales/sr/common.json(3 hunks)apps/web/public/static/locales/sv/common.json(3 hunks)apps/web/public/static/locales/tr/common.json(3 hunks)apps/web/public/static/locales/uk/common.json(3 hunks)apps/web/public/static/locales/vi/common.json(3 hunks)apps/web/public/static/locales/zh-CN/common.json(3 hunks)apps/web/public/static/locales/zh-TW/common.json(3 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/web/public/static/locales/es-419/common.json
🚧 Files skipped from review as they are similar to previous changes (25)
- apps/web/public/static/locales/ja/common.json
- apps/web/public/static/locales/it/common.json
- apps/web/public/static/locales/ko/common.json
- apps/web/public/static/locales/fr/common.json
- apps/web/public/static/locales/km/common.json
- apps/web/public/static/locales/bn/common.json
- apps/web/public/static/locales/hu/common.json
- apps/web/public/static/locales/nl/common.json
- apps/web/public/static/locales/ca/common.json
- apps/web/public/static/locales/et/common.json
- apps/web/public/static/locales/pl/common.json
- apps/web/public/static/locales/de/common.json
- apps/web/public/static/locales/ar/common.json
- apps/web/public/static/locales/cs/common.json
- apps/web/public/static/locales/pt/common.json
- apps/web/public/static/locales/sk-SK/common.json
- apps/web/public/static/locales/sv/common.json
- apps/web/public/static/locales/uk/common.json
- apps/web/public/static/locales/fi/common.json
- apps/web/public/static/locales/pt-BR/common.json
- apps/web/public/static/locales/es/common.json
- apps/web/public/static/locales/sr/common.json
- apps/web/public/static/locales/da/common.json
- apps/web/public/static/locales/tr/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.
📚 Learning: 2025-08-21T05:55:35.187Z
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.
Applied to files:
apps/web/public/static/locales/el/common.json
🔇 Additional comments (19)
apps/web/public/static/locales/bg/common.json (1)
1424-1424: Brand voice update LGTM.apps/web/public/static/locales/ru/common.json (3)
668-669: LGTM: guest join flow strings read naturally.
1424-1424: LGTM: concise, consistent sign-in phrasing.
1429-1429: LGTM: clear error copy.apps/web/public/static/locales/vi/common.json (3)
668-670: LGTM — guest join CTAs read naturally.
1424-1424: LGTM — sign-in copy is concise and on-brand.
1427-1431: LGTM — call-join strings are clear; no placeholders to validate.apps/web/public/static/locales/az/common.json (2)
668-669: LGTM: guest join strings.
Clear and natural.
1427-1428: LGTM: meeting/call strings.
Wording is correct and consistent with existing style.Also applies to: 1431-1431
apps/web/public/static/locales/zh-TW/common.json (3)
128-129: LGTM — translations read naturally for zh-TW.
1424-1424: LGTM — concise and consistent branding.
1427-1429: LGTM — phrasing is clear and consistent with nearby strings.apps/web/public/static/locales/el/common.json (1)
1424-1424: LGTM on “Sign in to Cal.com” simplification.“Σύνδεση στο Cal.com” is concise and matches the header use-case. Ensure it’s not clashing with button text where an imperative (“Συνδεθείτε”) might be expected.
apps/web/public/static/locales/eu/common.json (3)
128-129: LGTM: new recording/transcription keys translated correctly.Translations look accurate and consistent with nearby strings.
134-135: LGTM: transcription-related copy reads well in Basque.No placeholders or punctuation issues.
668-670: Verified usage of new locale keys
All new keys (join_as_guest,ideal_for_one_time_calls,any_location) are referenced in the code; no dead strings remain.apps/web/public/static/locales/ro/common.json (3)
128-129: LGTM: action labels read well"Înregistrează" / "Transcrie" are clear and idiomatic for buttons.
1424-1424: Tone consistency: informal vs formal sign-in stringsThis line switches to informal (“Conectează-te”), while the adjacent "log_in_to_cal_com" (Line 1425) remains formal (“Autentificați-vă”). Pick one tone for Romanian and apply consistently.
If you choose informal (recommended by brand voice in this PR), update 1425 to:
- "Autentifică-te pe Cal.com"
1427-1428: LGTM with minor tone noteCopy reads well. It’s informal (“Urmărește… gestionează-ți…”, “Te rugăm…”), which matches the new sign-in tone but conflicts with many formal strings elsewhere. Ensure global alignment in a follow-up sweep.
| "track_meetings_and_manage_schedule": "Jarraitu zure bilerak eta kudeatu zure egutegia modu eraginkorragoan", | ||
| "failed_to_join_call": "Ezin izan da deira batu. Saiatu berriro.", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Migrate from legacy “track_your_meetings” if still present.
If the codebase still references “track_your_meetings”, swap to “track_meetings_and_manage_schedule” and then remove the legacy key across locales.
🏁 Script executed:
#!/bin/bash
# Find old vs new usage in source
rg -nPI --glob '!**/public/static/locales/**' --type-add 'web:*.{ts,tsx,js,jsx}' --type web \
-e $'t\\([\'"]track_your_meetings[\'"]\\)' \
-e $'t\\([\'"]track_meetings_and_manage_schedule[\'"]\\)'Length of output: 148
🏁 Script executed:
#!/bin/bash
# Search for legacy and new translation keys in code files under apps/web excluding locales
rg -n -e "track_your_meetings" --glob 'apps/web/**/*.{ts,tsx,js,jsx}' --glob '!apps/web/public/static/locales/**'
rg -n -e "track_meetings_and_manage_schedule" --glob 'apps/web/**/*.{ts,tsx,js,jsx}' --glob '!apps/web/public/static/locales/**'Length of output: 114
🏁 Script executed:
#!/bin/bash
# Search for legacy translation key in locale JSON files
rg -n -e '"track_your_meetings"' --glob 'apps/web/public/static/locales/**/*.json'Length of output: 5975
Remove legacy track_your_meetings translation keys
All code now uses track_meetings_and_manage_schedule; delete the "track_your_meetings" entries (around line 1426) from each apps/web/public/static/locales/*/common.json.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/eu/common.json around lines 1426-1428, there's
a legacy "track_your_meetings" translation key that is no longer used; remove
the "track_your_meetings" entry (and any duplicate legacy variants) from this
file and similarly delete that same legacy key from each
apps/web/public/static/locales/*/common.json so only the current
"track_meetings_and_manage_schedule" key remains.
| "join_as_guest": "Alătură-te ca invitat", | ||
| "ideal_for_one_time_calls": "Ideal pentru apeluri unice", |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Unify “guest” terminology across locale (oaspete vs vizitator vs invitat)
File already uses “Oaspete” (singular) and “Vizitatori” (plural). Avoid introducing a third variant (“invitat”). Also align “one-time calls” with existing “întâlniri ocazionale”.
Apply:
-"join_as_guest": "Alătură-te ca invitat",
-"ideal_for_one_time_calls": "Ideal pentru apeluri unice",
+"join_as_guest": "Alătură-te ca oaspete",
+"ideal_for_one_time_calls": "Ideal pentru apeluri ocazionale",📝 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.
| "join_as_guest": "Alătură-te ca invitat", | |
| "ideal_for_one_time_calls": "Ideal pentru apeluri unice", | |
| "join_as_guest": "Alătură-te ca oaspete", | |
| "ideal_for_one_time_calls": "Ideal pentru apeluri ocazionale", |
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ro/common.json around lines 668-669, unify
terminology by replacing the new "invitat" and "apeluri unice" strings with the
existing locale terms: change "join_as_guest" value to use the same singular
"Oaspete" form (e.g., "Alătură-te ca Oaspete") and change
"ideal_for_one_time_calls" to match the established phrasing "întâlniri
ocazionale" (e.g., "Ideal pentru întâlniri ocazionale"), ensuring capitalization
matches surrounding entries.
| "ideal_for_one_time_calls": "適合一次性通話", | ||
| "any_location": "任何位置", |
There was a problem hiding this comment.
Fix zh-TW character set for “身分” and consider a more idiomatic phrase.
- zh-TW uses「身分」not「身份」.
- Optional: 「一次性通話」→「單次通話」更口語自然。
- "join_as_guest": "以訪客身份加入",
+ "join_as_guest": "以訪客身分加入",
- "ideal_for_one_time_calls": "適合一次性通話",
+ "ideal_for_one_time_calls": "適合單次通話",Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around lines 669–670, update
the phrase for one-time calls to use the more idiomatic zh-TW wording: replace
"適合一次性通話" with "適合單次通話"; also scan this file for any occurrences of the
simplified-character form "身份" and replace them with the traditional zh-TW form
"身分" to ensure consistent character set usage.
Hey team,
Lingo.dev here with fresh translations!
In this update
Next Steps