Skip to content

feat: update translations via @LingoDotDev #22894

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

calcom-bot
Copy link
Contributor

Hey team,

Lingo.dev here with fresh translations!

In this update

  • Added missing translations
  • Performed brand voice, context and glossary checks
  • Enhanced translations using Lingo.dev Localization Engine

Next Steps

  • Review the changes
  • Merge when ready

Copy link

vercel bot commented Aug 5, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
cal ⬜️ Ignored Aug 13, 2025 2:39am
cal-eu ⬜️ Ignored Aug 13, 2025 2:39am

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


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.

Copy link
Contributor

coderabbitai bot commented Aug 5, 2025

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

📥 Commits

Reviewing files that changed from the base of the PR and between 8e562c5 and acebc27.

⛔ Files ignored due to path filters (1)
  • i18n.lock is excluded by !**/*.lock
📒 Files selected for processing (36)
  • apps/web/public/static/locales/ar/common.json (12 hunks)
  • apps/web/public/static/locales/az/common.json (12 hunks)
  • apps/web/public/static/locales/bg/common.json (12 hunks)
  • apps/web/public/static/locales/bn/common.json (12 hunks)
  • apps/web/public/static/locales/ca/common.json (12 hunks)
  • apps/web/public/static/locales/cs/common.json (12 hunks)
  • apps/web/public/static/locales/da/common.json (12 hunks)
  • apps/web/public/static/locales/de/common.json (12 hunks)
  • apps/web/public/static/locales/el/common.json (12 hunks)
  • apps/web/public/static/locales/es-419/common.json (12 hunks)
  • apps/web/public/static/locales/es/common.json (12 hunks)
  • apps/web/public/static/locales/et/common.json (12 hunks)
  • apps/web/public/static/locales/eu/common.json (12 hunks)
  • apps/web/public/static/locales/fi/common.json (12 hunks)
  • apps/web/public/static/locales/fr/common.json (12 hunks)
  • apps/web/public/static/locales/he/common.json (12 hunks)
  • apps/web/public/static/locales/hu/common.json (12 hunks)
  • apps/web/public/static/locales/it/common.json (12 hunks)
  • apps/web/public/static/locales/ja/common.json (12 hunks)
  • apps/web/public/static/locales/km/common.json (12 hunks)
  • apps/web/public/static/locales/ko/common.json (12 hunks)
  • apps/web/public/static/locales/nl/common.json (12 hunks)
  • apps/web/public/static/locales/no/common.json (12 hunks)
  • apps/web/public/static/locales/pl/common.json (12 hunks)
  • apps/web/public/static/locales/pt-BR/common.json (12 hunks)
  • apps/web/public/static/locales/pt/common.json (12 hunks)
  • apps/web/public/static/locales/ro/common.json (12 hunks)
  • apps/web/public/static/locales/ru/common.json (12 hunks)
  • apps/web/public/static/locales/sk-SK/common.json (12 hunks)
  • apps/web/public/static/locales/sr/common.json (12 hunks)
  • apps/web/public/static/locales/sv/common.json (12 hunks)
  • apps/web/public/static/locales/tr/common.json (12 hunks)
  • apps/web/public/static/locales/uk/common.json (12 hunks)
  • apps/web/public/static/locales/vi/common.json (12 hunks)
  • apps/web/public/static/locales/zh-CN/common.json (12 hunks)
  • apps/web/public/static/locales/zh-TW/common.json (12 hunks)
 _________________________________________________________________
< This is Sparta! And I'm here to kick bugs into the pit of doom. >
 -----------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).

Walkthrough

Renames round_robin_hosts_unavailable_for_booking → round_robin_host_unavailable_for_booking and adds many public localization keys across apps/web/public/static/locales//common.json. New keys cover round-robin groups and rr_load_balancing_disabled_with_groups, OAuth client UI and admin notices, embedding/headless routing strings, PBAC resources and numerous pbac_desc_ entries (workflows, organization attributes, etc.), grouping/booking/stats keys, and an extensive webhook metadata key set. All changes are localization entries only; no runtime logic or non-locale source files were modified.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~35 minutes

Possibly related PRs

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch lingo.dev/main

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@graphite-app graphite-app bot requested review from a team August 5, 2025 00:34
@keithwillcode keithwillcode added core area: core, team members only foundation labels Aug 5, 2025
@dosubot dosubot bot added the i18n area: i18n, translations label Aug 5, 2025
Copy link

graphite-app bot commented Aug 5, 2025

Graphite Automations

"Add consumer team as reviewer" took an action on this PR • (08/05/25)

1 reviewer was added to this PR based on Keith Williams's automation.

"Add foundation team as reviewer" took an action on this PR • (08/05/25)

1 reviewer was added to this PR based on Keith Williams's automation.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (1)
apps/web/public/static/locales/zh-TW/common.json (1)

1843-1844: 延伸字串同樣需保持一致用詞

這兩條權限說明仍使用「用戶端」。為保持一致,請同步改為「客戶端」。

🧹 Nitpick comments (34)
apps/web/public/static/locales/vi/common.json (1)

1843-1845: Minor typography: missing period at sentence end

Lines 1843–1845 are full sentences but lack a terminal full-stop “.”.
Adding it keeps style identical to neighbouring admin-only notices (see Line 183-184 etc.).

-"Chỉ quản trị viên hoặc chủ sở hữu của tổ chức mới có thể quản lý cài đặt đồng bộ hóa thư mục"
+"Chỉ quản trị viên hoặc chủ sở hữu của tổ chức mới có thể quản lý cài đặt đồng bộ hóa thư mục."

(Apply same to Line 1845).

apps/web/public/static/locales/ru/common.json (1)

874-878: Consider the correct case for the direct-object form of “OAuth-client”.

In Russian UI strings the object after “создать” normally takes the accusative case.
"create_oauth_client": "Создать OAuth-клиент" should likely be
"Создать OAuth-клиента" to be grammatically correct.

-"create_oauth_client": "Создать OAuth-клиент",
+"create_oauth_client": "Создать OAuth-клиента",
apps/web/public/static/locales/uk/common.json (3)

874-877: Terminology consistency check for OAuth-related strings

Looks good overall, but double-check that the existing UI consistently uses “OAuth клієнт” (singular) vs “OAuth клієнти” (plural).
In English we often mix “OAuth app / client”, so make sure the same Ukrainian term is used everywhere to avoid UI mismatches.

No action required if the rest of the locale already follows this wording.


3311-3315: PBAC resource additions: keep alphabetical grouping

The new pbac_resource_attributes + description keys are appended to the block but break the existing alphabetical order of resources/descriptions set earlier in the file (event_type, organization, …).
Consider moving the four lines into the correct sorted position to keep future diffs minimal.

No functional impact – purely maintainability.


3319-3324: Updated “manage_*” descriptions – spelling check

Minor typo: “подій” vs “подій у”. Line 3324 currently reads
"Усі дії з типами подій у командах організації"
where “подій” already conveys genitive; “у” is OK but occasionally omitted elsewhere. Ensure wording is uniform across all pbac_desc_manage_* entries (roles, teams, event types) to avoid translator noise.

If the English originals differ, ignore.

apps/web/public/static/locales/ca/common.json (1)

3311-3316: Minor typo: atributs not attributs

atributs is already spelled correctly in the value strings, but the resource key also carries that typo (pbac_resource_attributes).
If this was copied from the English locale it is fine, but double-check—renaming later is painful.

apps/web/public/static/locales/zh-TW/common.json (1)

3311-3316: 新增 PBAC 描述請檢查標點一致性

  1. Line 3313 與 3314 句尾缺少句號,而同區段其他描述多使用句號收尾。
  2. Line 3315 pbac_desc_manage_roles 應與前面敘述格式一致,可改為「管理組織(團隊)中角色的所有操作。」

屬於細節但會影響文件閱讀體驗。

apps/web/public/static/locales/pl/common.json (1)

1843-1844: Keep tone consistent in admin-only messages

Strings only_admin_can_manage_directory_sync / only_admin_can_manage_oauth_clients start with “Tylko administrator lub właściciel…”.
Every other “admin-only” string in this file starts with “Tylko administrator …”.
For consistency either drop “lub właściciel” everywhere or keep it everywhere. Pick one and run i18n lint afterwards.

apps/web/public/static/locales/hu/common.json (2)

1843-1844: Consistency with existing “only_admin_can_…” strings

The newly added keys follow the existing pattern but use singular “admin” while some previous entries use plural (“admins”).
Consider renaming to only_admins_can_manage_* for consistency with siblings (only_admins_can_manage_sso_org, etc.).


3311-3316: Keep PBAC help-texts alphabetically grouped

New PBAC resource/description pairs for “attributes” were appended at the bottom of the block.
For easier diffing & merge-conflict avoidance place them alphabetically with the other pbac_* entries.
This repo has been bitten by duplicated keys in the past.

apps/web/public/static/locales/pt/common.json (2)

874-877: Consider adding the definite article and keeping the voice consistent

Most description strings in this file start with an imperative verb followed by the article “os” (e.g. “Gerencie os webhooks…”, “Configure as definições…”).
For consistency, prefer:

- "oauth_clients_description": "Gerencie clientes OAuth para sua organização",
+ "oauth_clients_description": "Gerencie os clientes OAuth da sua organização",

Minor, but it keeps wording uniform across the glossary.


1843-1844: Capitalisation & voice inconsistent with neighbouring keys

Nearly every permission-warning string starts with a capital letter and the infinitive “Gerenciar/Administrar…”.
These two new entries start with a lowercase “gerenciar”.

- "only_admin_can_manage_directory_sync": "Apenas o administrador ou proprietário da organização pode gerenciar as configurações de sincronização de diretório",
- "only_admin_can_manage_oauth_clients": "Apenas o administrador ou proprietário da organização pode gerenciar clientes OAuth",
+ "only_admin_can_manage_directory_sync": "Apenas o administrador ou o proprietário da organização pode gerenciar as configurações de sincronização de diretório",
+ "only_admin_can_manage_oauth_clients": "Apenas o administrador ou o proprietário da organização pode gerenciar os clientes OAuth",

This keeps capitalisation and the article “o” in line with the existing sentence style.

apps/web/public/static/locales/cs/common.json (1)

874-878: Ensure punctuation style consistency

Most Czech strings in this file end without a trailing period, but several neighbouring entries (e.g. "create_new_team_description") do use one.
For consistency across the locale consider either removing the full stop in

"create_oauth_client_description": "Vytvořte nového OAuth klienta pro integraci s třetími stranami"

or systematically adding a period to the other short-description keys that currently lack it.
(This is purely cosmetic; nothing is functionally wrong.)

apps/web/public/static/locales/de/common.json (1)

3311-3316: PBAC attribute entries added without placeholder/grammar issues

– Keys are unique.
– German wording (“Organisationsattribute”) matches the resource context.
– No placeholder tokens to validate.

Consider keeping these PBAC description blocks alphabetically grouped like the existing ones for easier maintenance, but that’s optional.

apps/web/public/static/locales/sk-SK/common.json (2)

874-877: Check consistency of term “OAuth klient” (singular) vs “OAuth klienti” (plural).

In the Slovak strings you mix:

  • "oauth_clients"OAuth klienti (plural, correct)
  • "create_oauth_client"Vytvoriť OAuth klienta (singular, genitive) – fine
  • "create_oauth_client_description"… klienta (singular) – also fine

However, "oauth_clients_description" reads Spravujte OAuth klientov (genitive plural). The heading is plural nominative (klienti), while the description uses genitive plural (klientov). That’s grammatically correct, but double-check the UI: if the heading appears right above the description it may read odd ( OAuth klienti – Spravujte OAuth klientov ). Consider using nominative plural in the description (Spravujte OAuth klienti vo vašej organizácii) or rewriting the heading ( Správa OAuth klientov ) so both lines do not repeat the noun back-to-back.


1843-1844: Minor wording alignment for admin-only notices.

Both keys are admin-gate messages; first ends with nastavenia synchronizácie adresára, second with OAuth klientov. For parallelism consider:

"Iba administrátor alebo vlastník organizácie môže spravovať synchronizáciu adresára"
"Iba administrátor alebo vlastník organizácie môže spravovať OAuth klientov"

This removes the extra word nastavenia so the two strings scan identically.

apps/web/public/static/locales/pt-BR/common.json (1)

1843-1844: Use one term for “owner” across the file

Earlier keys (e.g. only_admin_can_manage_sso_org, Line 1841) use “dono da organização”, whereas the two new strings adopt “proprietário da organização”. Mixing “dono” and “proprietário” might confuse translators and users.

- "Apenas o administrador ou proprietário da organização pode gerenciar ..."
+ "Apenas o administrador ou dono da organização pode gerenciar ..."
apps/web/public/static/locales/bg/common.json (1)

874-876: Consider keeping new OAuth-related keys grouped with existing OAuth strings for maintainability

These keys are inserted ~200 lines above the other OAuth strings that start at Line 878.
Moving them next to the existing block (or vice-versa) keeps the file logically grouped and eases future diff reviews.

apps/web/public/static/locales/sr/common.json (2)

874-878: Validate new OAuth-related keys & keep alphabetical ordering

The newly added keys (oauth_clientscreate_oauth_client_description) break the existing alphabetic ordering of the JSON (they appear after nameless_team).
While order does not affect runtime, keeping the file sorted greatly reduces merge-conflicts in the enormous common.json.

-  "nameless_team": "Tim bez imena",
-  "oauth_clients": "OAuth klijenti",
-  ...
+  "nameless_team": "Tim bez imena",
+  // --- keep alphabetic ordering: place below “offer_seats” block ---

Consider moving the block accordingly before merging.
No functional issues with the Serbian strings themselves.


1843-1845: Plural consistency for admin-only strings

only_admin_can_manage_directory_sync and only_admin_can_manage_oauth_clients start with “Samo administrator ili vlasnik … može” (singular) but end with “mogu” (plural).
Recommend aligning the verb with the subject for readability:

- "only_admin_can_manage_directory_sync": "Samo administrator ili vlasnik organizacije može upravljati podešavanjima sinhronizacije direktorijuma",
+ "only_admin_can_manage_directory_sync": "Samo administrator ili vlasnik organizacije može da upravlja podešavanjima sinhronizacije direktorijuma",

- "only_admin_can_manage_oauth_clients": "Samo administrator ili vlasnik organizacije može upravljati OAuth klijentima"
+ "only_admin_can_manage_oauth_clients": "Samo administrator ili vlasnik organizacije može da upravlja OAuth klijentima"
apps/web/public/static/locales/ar/common.json (1)

3311-3316: PBAC attribute keys added – just verify uniqueness
Keys for the new PBAC resource (pbac_resource_attributes) and its CRUD descriptions are correct. Run a quick duplicate-key check on the whole JSON file to ensure these identifiers don’t collide with earlier ones; large locale files sometimes accumulate silent duplicates.

apps/web/public/static/locales/no/common.json (2)

874-877: Unify the Norwegian term for OAuth client

Earlier in the same file (line 240 → webhook_update_form_description) the term is written as “OAuthClient” (camel-cased, no hyphen), whereas the four new keys use “OAuth-klient”.
For consistency and to avoid confusion in the UI, stick to one variant throughout the locale file (ideally the hyphenated “OAuth-klient”, which reads better in Norwegian).


3311-3315: Minor formatting – last item can drop the trailing comma

Line 3315 ends with a comma while the following line already starts a new top-level key. JSON allows the extra comma in many runtimes, but pruning it prevents accidental linting errors in stricter parsers.

-  "pbac_desc_create_organization_attributes": "Opprett organisasjonsegenskaper",
+  "pbac_desc_create_organization_attributes": "Opprett organisasjonsegenskaper"
apps/web/public/static/locales/ko/common.json (1)

1842-1845: Minor wording inconsistency

Lines 1842-1845 mix “관리자 또는 소유자” with “관리자만”.
For perfect consistency with the neighbouring permission strings (e.g. 1838-1841) consider aligning the wording, e.g.

- "조직의 관리자 또는 소유자만 디렉토리 동기화 설정을 관리할 수 있습니다"
+ "조직의 관리자(소유자 포함)만 디렉토리 동기화 설정을 관리할 수 있습니다"
apps/web/public/static/locales/he/common.json (1)

1843-1845: Missing plural-gender neutrality

The two strings use “מנהל או בעלים” in singular masculine form.
Other Hebrew translations in the file avoid gendered phrasing by using neutral participles (e.g. “מנהל/ת מערכת”).
Consider aligning:

- "רק מנהל או בעלים של הארגון..."
+ "רק מנהל/ת מערכת או בעל/ת הארגון..."
apps/web/public/static/locales/es-419/common.json (1)

1843-1844: Minor consistency issue in admin-only strings
Line 1843 already says “Solo el administrador o propietario…”. At 1844 you add essentially the same pattern. Consider moving both messages into a single placeholder‐based template to avoid copy-paste drift when wording changes in the future.

apps/web/public/static/locales/es/common.json (1)

874-878: Polish OAuth-related strings for consistency and grammar

  1. Use an article before “cliente” to match Spanish idiom (“Crear un cliente OAuth”).
  2. Capitalise the first word in the description for consistency with neighbouring keys (“Gestiona los…” → “Gestiona los…”)
  3. Consider adding “los” to keep parallelism with other descriptions (“Gestiona los clientes OAuth…”).
-"oauth_clients": "Clientes OAuth",
-"oauth_clients_description": "Gestiona los clientes OAuth para tu organización",
-"create_oauth_client": "Crear cliente OAuth",
-"create_oauth_client_description": "Crea un nuevo cliente OAuth para integraciones de terceros",
+"oauth_clients": "Clientes OAuth",
+"oauth_clients_description": "Gestiona los clientes OAuth de tu organización",
+"create_oauth_client": "Crear un cliente OAuth",
+"create_oauth_client_description": "Crea un nuevo cliente OAuth para integraciones de terceros",
apps/web/public/static/locales/km/common.json (2)

874-877: Confirm wording for “OAuth client” — current Khmer phrasing sounds like a “machine”
The term ​«ម៉ាស៊ីនភ្ញៀវ» literally means “client machine”. In most Khmer UIs we usually keep OAuth client untranslated or borrow the English word “client” (e.g. «OAuth Client» or «Client OAuth») instead of “ម៉ាស៊ីនភ្ញៀវ”.
Please double-check with your localisation guide to make sure the term is recognisable to end-users.


1843-1844: Minor consistency nit – reuse existing wording for “organization”
In earlier strings the project consistently uses «អង្គការ» for “organization”. Here the translation for
only_admin_can_manage_directory_sync and only_admin_can_manage_oauth_clients introduces the variant «អង្គភាព».
Consider standardising on one term (preferably the one already used elsewhere) to avoid confusion.

apps/web/public/static/locales/it/common.json (2)

874-877: Add the missing indefinite article in the new “OAuth client” strings
In Italian the action labels generally include an article (“Crea un …”) to read naturally, e.g. earlier keys such as create_webhook use “Crea un Webhook”.
Consider:

- "create_oauth_client": "Crea client OAuth",
- "create_oauth_client_description": "Crea un nuovo client OAuth per integrazioni di terze parti"
+ "create_oauth_client": "Crea un client OAuth",
+ "create_oauth_client_description": "Crea un nuovo client OAuth per integrazioni di terze parti"

3312-3316: Minor consistency touch-up: keep the noun order aligned with similar PBAC keys
Most existing PBAC descriptions start with the verb and keep the resource near the end, e.g. “Crea attributi dell’organizzazione”. For perfect alignment you may want to mirror the wording used for other resources (eventi, ruoli, …). Current text is already correct, so this is only stylistic.

apps/web/public/static/locales/fr/common.json (2)

1842-1843: Minor wording nit-pick

"Seul l'administrateur ou le propriétaire de l'organisation peut gérer …" reads well, but every other permission string in this file begins with “Seul l’administrateur* de l’organisation** ou son propriétaire …”* (note the extra “de l’organisation” after administrateur).

For perfect consistency you could tweak:

-"Seul l'administrateur ou le propriétaire de l'organisation peut gérer les paramètres de synchronisation d'annuaire",
-"Seul l'administrateur ou le propriétaire de l'organisation peut gérer les clients OAuth",
+"Seul l'administrateur de l'organisation ou son propriétaire peut gérer les paramètres de synchronisation d'annuaire",
+"Seul l'administrateur de l'organisation ou son propriétaire peut gérer les clients OAuth",

3312-3316: Uniform wording for attribute-related PBAC descriptions

Three existing PBAC descriptions use “de l'organisation” (view / update / delete) while the new one for create reads “d'organisation”.
Recommend unifying the article for searchability and visual consistency:

-"pbac_desc_create_organization_attributes": "Créer des attributs d'organisation",
+"pbac_desc_create_organization_attributes": "Créer des attributs de l'organisation",
apps/web/public/static/locales/eu/common.json (1)

874-878: Consistent naming, but singular/plural wording could be tighter

oauth_clients → “OAuth bezeroak” (plural) and create_oauth_client → “OAuth bezeroa” (singular) are correct, yet oauth_clients_description still uses the plural (“bezeroak”).
To keep the glossaries aligned with most other locales you may want to switch to the singular in the description, e.g.

-"Kudeatu zure erakundearen OAuth bezeroak"
+"Zure erakundearen OAuth bezeroa kudeatu"
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0829929 and f8aebc9.

⛔ Files ignored due to path filters (1)
  • i18n.lock is excluded by !**/*.lock
📒 Files selected for processing (36)
  • apps/web/public/static/locales/ar/common.json (6 hunks)
  • apps/web/public/static/locales/az/common.json (6 hunks)
  • apps/web/public/static/locales/bg/common.json (6 hunks)
  • apps/web/public/static/locales/bn/common.json (6 hunks)
  • apps/web/public/static/locales/ca/common.json (6 hunks)
  • apps/web/public/static/locales/cs/common.json (6 hunks)
  • apps/web/public/static/locales/da/common.json (6 hunks)
  • apps/web/public/static/locales/de/common.json (6 hunks)
  • apps/web/public/static/locales/el/common.json (6 hunks)
  • apps/web/public/static/locales/es-419/common.json (6 hunks)
  • apps/web/public/static/locales/es/common.json (6 hunks)
  • apps/web/public/static/locales/et/common.json (6 hunks)
  • apps/web/public/static/locales/eu/common.json (6 hunks)
  • apps/web/public/static/locales/fi/common.json (6 hunks)
  • apps/web/public/static/locales/fr/common.json (6 hunks)
  • apps/web/public/static/locales/he/common.json (6 hunks)
  • apps/web/public/static/locales/hu/common.json (6 hunks)
  • apps/web/public/static/locales/it/common.json (6 hunks)
  • apps/web/public/static/locales/ja/common.json (6 hunks)
  • apps/web/public/static/locales/km/common.json (6 hunks)
  • apps/web/public/static/locales/ko/common.json (6 hunks)
  • apps/web/public/static/locales/nl/common.json (6 hunks)
  • apps/web/public/static/locales/no/common.json (6 hunks)
  • apps/web/public/static/locales/pl/common.json (6 hunks)
  • apps/web/public/static/locales/pt-BR/common.json (6 hunks)
  • apps/web/public/static/locales/pt/common.json (6 hunks)
  • apps/web/public/static/locales/ro/common.json (6 hunks)
  • apps/web/public/static/locales/ru/common.json (6 hunks)
  • apps/web/public/static/locales/sk-SK/common.json (6 hunks)
  • apps/web/public/static/locales/sr/common.json (6 hunks)
  • apps/web/public/static/locales/sv/common.json (6 hunks)
  • apps/web/public/static/locales/tr/common.json (6 hunks)
  • apps/web/public/static/locales/uk/common.json (6 hunks)
  • apps/web/public/static/locales/vi/common.json (6 hunks)
  • apps/web/public/static/locales/zh-CN/common.json (6 hunks)
  • apps/web/public/static/locales/zh-TW/common.json (6 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
📚 Learning: when making localization changes for new features, it's often safer to add new strings rather than m...
Learnt from: bandhan-majumder
PR: calcom/cal.com#22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.

Applied to files:

  • apps/web/public/static/locales/zh-CN/common.json
  • apps/web/public/static/locales/pl/common.json
  • apps/web/public/static/locales/et/common.json
  • apps/web/public/static/locales/ca/common.json
  • apps/web/public/static/locales/pt-BR/common.json
  • apps/web/public/static/locales/uk/common.json
  • apps/web/public/static/locales/sv/common.json
  • apps/web/public/static/locales/da/common.json
  • apps/web/public/static/locales/bn/common.json
  • apps/web/public/static/locales/de/common.json
  • apps/web/public/static/locales/az/common.json
  • apps/web/public/static/locales/km/common.json
  • apps/web/public/static/locales/zh-TW/common.json
  • apps/web/public/static/locales/hu/common.json
  • apps/web/public/static/locales/ro/common.json
  • apps/web/public/static/locales/cs/common.json
  • apps/web/public/static/locales/ru/common.json
  • apps/web/public/static/locales/sr/common.json
  • apps/web/public/static/locales/el/common.json
  • apps/web/public/static/locales/bg/common.json
  • apps/web/public/static/locales/vi/common.json
  • apps/web/public/static/locales/pt/common.json
  • apps/web/public/static/locales/ar/common.json
  • apps/web/public/static/locales/tr/common.json
  • apps/web/public/static/locales/sk-SK/common.json
  • apps/web/public/static/locales/eu/common.json
  • apps/web/public/static/locales/ja/common.json
  • apps/web/public/static/locales/no/common.json
📚 Learning: applies to docs/api-reference/v2/openapi.json : when docs changes are made in `/docs/api-reference/v...
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: Applies to docs/api-reference/v2/openapi.json : When docs changes are made in `/docs/api-reference/v2/openapi.json`, ensure 'summary' fields are short, concise, do not end with a period, and are written in proper American English

Applied to files:

  • apps/web/public/static/locales/pt/common.json
  • apps/web/public/static/locales/eu/common.json
  • apps/web/public/static/locales/nl/common.json
🔇 Additional comments (77)
apps/web/public/static/locales/zh-CN/common.json (4)

873-878: OAuth client keys correctly added

New keys follow existing naming conventions, include the mandatory Chinese brand-terminology “OAuth 客户端”, and preserve punctuation/placeholder style. ✅


1842-1843: Admin-only management strings read well

Both strings are clear and align with the other “only_admin_can_…” messages already present. No issues.


3311-3316: PBAC attribute entries are syntactically sound

Keys are unique, descriptive, and comma-terminated; translations stay consistent with the earlier PBAC block.


3433-3434: Minor follow-up: check for duplicate key “stats” across locales

I don’t see “stats” defined elsewhere in this file, but please run a quick grep across all locale JSONs to be certain a second definition hasn’t slipped in (the last-one-wins rule would silently mask the earlier value).

apps/web/public/static/locales/da/common.json (4)

874-878: Translations look consistent – no issues found.

Keys for OAuth-client administration are new, unique, and follow the existing naming/translation style.


1843-1845: Key names are fine; just check for duplicate entries.

only_admin_can_manage_directory_sync / …oauth_clients are new and do not appear elsewhere in the file. Nothing to change.


3311-3315: PBAC attribute strings added correctly.

The new permission-related strings align with previous PBAC keys. No conflicts detected.


3433-3435: New “stats” / “booking_status” keys are fine.

Names are intuitive and translations match existing tone.

apps/web/public/static/locales/ro/common.json (3)

874-877: Translations look accurate; validate comma placement

Romanian strings read naturally and match the English semantics.
Just ensure the trailing comma on Line 877 is retained only when another key follows, otherwise JSON becomes invalid.


1843-1844: Consistent terminology with previous OAuth strings

The wording keeps the previously-introduced “clienți OAuth” phrasing, maintaining consistency – good job.
No issues found.


3311-3315: New PBAC attribute keys translated correctly

All four permission-description strings preserve the meaning of “attributes” and follow the existing PBAC prefix style.
Looks good.

apps/web/public/static/locales/vi/common.json (2)

874-877: Verify capital-letter consistency in new OAuth strings

The surrounding strings use “OAuth client” as “Ứng dụng OAuth” (Line 874) and “Tạo ứng dụng OAuth” (Line 876).
Elsewhere in the file (e.g. Line 240 "webhook_update_form_description"), “OAuthClient” is left untranslated. Consider keeping the term consistent across the whole locale – either always translate as “Ứng dụng OAuth” or keep the original “OAuth client”.


3311-3315: Ensure PBAC action descriptions stay imperative

The new permission descriptions (Lines 3312-3315) start with “Xem/Cập nhật/Xóa/Tạo thuộc tính …” which follows the existing imperative style (e.g. pbac_desc_view_roles).
LGTM, no further action.

apps/web/public/static/locales/ru/common.json (3)

1843-1844: Wording is clear – good addition.

The admin-only notices are concise and match existing phrasing. No issues spotted.


3311-3316: Verify uniqueness of newly added PBAC keys.

The new attribute-related PBAC keys look correct, but please ensure there are no existing entries with the same identifiers elsewhere in this file (e.g. produced by earlier merges).
Duplicate keys would silently override each other at runtime.


3405-3405: Potential duplicate key “stats”.

A generic key such as "stats" is prone to already exist in large locale files.
Run a quick check; if a prior “stats” key is found, rename one of them (e.g. stats_menu vs stats_header) to avoid overwriting.

apps/web/public/static/locales/uk/common.json (1)

1843-1844: Permission-gate strings added – verify key reuse

These two keys mirror the pattern used for other only_admin_can_ strings.
Just confirm there are no earlier keys with the exact same id but a slightly different text (e.g. leftover from previous PRs) – duplicate ids silently override values at runtime.

apps/web/public/static/locales/ca/common.json (3)

874-878: Check cross-locale consistency for newly introduced OAuth strings

The four keys for OAuth client management are present only in this Catalan file.
Please make sure identical keys (with English text) exist in your base locale (en/common.json) and in any other mandatory locales; otherwise the i18n layer will fall back to the key name at runtime.


1843-1844: Wording aligns with existing pattern – looks good

The new admin-only warning strings follow the same style used by the surrounding "only_admin_can_manage_*" messages, so no changes needed.


3405-3406: Possible duplicate key ― verify stats uniqueness

"stats": "Estadístiques" is introduced here.
Search the full file (and other locale files) for an existing stats entry; duplicate keys in a JSON object silently override earlier definitions and make maintenance harder.

apps/web/public/static/locales/az/common.json (2)

874-877: Strings look consistent – no issues found

The four newly-added OAuth keys follow the existing naming convention, punctuation and placeholder-less pattern used throughout this file. JSON syntax is also valid (commas are present).
No action required.


1842-1843: Consistent admin-scope phrasing

The two new admin-only messages mirror the wording style of the neighbouring only_admin_can_manage_* entries and end with the correct “idarə edə bilər” phrase. JSON syntax is intact.
LGTM.

apps/web/public/static/locales/pl/common.json (2)

3311-3316: Align new PBAC keys with existing naming pattern

Existing PBAC keys use resource singular (organization_attribute) not plural.
New keys introduced under pbac_resource_attributes & related descriptions are pluralised (attributes).
If the backend expects the singular resource id, rename to avoid mismatched permissions look-up.


874-878: No duplicate OAuth translation keys detected

  • Verified that oauth_clients, oauth_clients_description, create_oauth_client, and create_oauth_client_description each appear only once (lines 874–877) in apps/web/public/static/locales/pl/common.json.
apps/web/public/static/locales/el/common.json (2)

874-878: New OAuth-related keys are well-formed and consistently translated

Key names follow the existing snake-case convention and the Greek strings accurately reflect their English intent. No placeholder or punctuation issues spotted.


1843-1844: Admin-only notices read clearly and match prior pattern

The added permission messages reuse the same phrasing as similar keys (only_admin_can_*) and keep the wording concise. Nothing to change.

apps/web/public/static/locales/hu/common.json (1)

874-877: Verify new OAuth-related keys are covered by the UI and back-end look-ups

These four string IDs are brand-new.
Please double-check that:

  1. The UI components use exactly these keys (oauth_clients, oauth_clients_description, …).
  2. Server-side permission checks / PBAC rules reference the same IDs (case-sensitive).

Missing look-ups will silently fall back to English at runtime.

apps/web/public/static/locales/et/common.json (2)

874-877: Strings look good – placeholders preserved

No syntax issues and the terminology (“OAuth kliendid”, “Halda …”) is consistent with the rest of the file.


1843-1844: Consistent admin-permission phrasing

Both new keys keep the established “Ainult … saab …” formulation and correctly reference “organisatsiooni administraator või omanik”.

apps/web/public/static/locales/pt/common.json (2)

3311-3315: LGTM – new PBAC strings are accurate & follow existing pattern

The new attribute-related permission texts use the same infinitive pattern (“Visualizar”, “Atualizar”, …) used in the surrounding PBAC entries. No issues found.


3433-3434: Potential semantic clash between stats and existing analytics

"stats": "Estatísticas" duplicates the Portuguese word already used for the key analytics.
If both keys are rendered in the same UI area the labels will be indistinguishable.
Consider differentiating, e.g.:

"stats": "Métricas"

or leave as-is if the two keys never appear together.

apps/web/public/static/locales/sv/common.json (4)

874-877: New OAuth-related keys look good

– Terminology (“OAuth-klient(er)”) is consistent with previously-used wording
– Plural/singular forms match the context (“klienter” vs “Skapa … klient”)
No action required.


1843-1844: Admin-only sentences read correctly

Both strings are grammatically correct Swedish and mirror the existing “only_admin…” keys.
No further changes needed.


3311-3315: PBAC attribute permissions – translation consistent

“Egenskaper” is already the Swedish term used for attributes elsewhere in the file, so the new permission phrases stay coherent.
All verbs (“Visa”, “Uppdatera”, “Ta bort”, “Skapa”) follow the existing style.


3434-3435: New generic UI strings OK

“Statistik” and “Bokningsstatus” are accurate and not duplicated elsewhere in the file.
JSON syntax around the additions is valid.

apps/web/public/static/locales/cs/common.json (2)

1843-1844: Wording aligns with existing permission strings – LGTM

Both messages follow the identical pattern already used for analogous lines such as "only_admin_can_manage_sso_org".
No placeholder variables are involved, Czech phrasing is clear.


3311-3316: Verify PBAC key alignment with other locales

New keys for attribute-related PBAC descriptions were added.
Before merging, please make sure the same keys are present (even in English) in the default en/common.json; otherwise the permission UI might render blank in English while Czech works.

apps/web/public/static/locales/de/common.json (2)

874-878: New OAuth-related strings look consistent and syntactically correct

• Keys are unique and follow the existing naming style.
• Translation keeps the English term “OAuth-Client” – consistent with the rest of the file.
No issues spotted.


1842-1845: Admin-only guard messages align with earlier patterns

Strings reuse the “Nur der Administrator … kann …” phrasing already used for similar permissions, so tone & terminology stay consistent.
Good addition.

apps/web/public/static/locales/fi/common.json (3)

873-876: OAuth-terminologia OK

Uudet OAuth-asiakas-avaimet on lisätty selkeästi ja johdonmukaisesti (asiakas / asiakkaat). Ei JSON-rakenteen ongelmia.


1843-1844: Lisätyt käyttöoikeusviestit kunnossa

Tekstit noudattavat aiempaa “only_admin_can_manage_*” ‑muotoa ja sisältävät oikean sijamuodon (“järjestelmänvalvoja”).


3311-3315: PBAC-sanasto täydentyy loogisesti

Uudet attribuuttikohtaiset PBAC-kuvaukset on lisätty yhdenmukaisessa muodossa. Ei avain- tai pilkkuvirheitä.

apps/web/public/static/locales/tr/common.json (3)

874-877: Translations look good – no placeholder/escaping issues detected

The four new OAuth-related keys contain no ICU placeholders, punctuation is consistent with neighbouring strings, and terminology (“OAuth İstemcisi”) matches existing usage. Nothing to fix here.


1842-1844: String additions are consistent with existing style

The admin-only directory-sync / OAuth-client warnings read naturally in Turkish and reuse the “yalnızca … yönetebilir” pattern already present elsewhere. No action required.


3311-3324: PBAC attribute/role/event-type additions LGTM

• Keys are correctly namespaced (pbac_resource_*, pbac_desc_*).
• Placeholders or Markdown are not required and therefore safely absent.
• Terminology (“Öznitelikler”, “Tüm kaynaklarda tüm işlemler”) aligns with earlier PBAC entries.

No translation, syntax, or consistency issues detected.

Also applies to: 3333-3350

apps/web/public/static/locales/pt-BR/common.json (3)

874-877: Consistent singular × plural wording

The plural key "oauth_clients" is translated as “Clientes OAuth”, while the singular key "create_oauth_client" is translated with “Cliente OAuth”.
Wording and capitalisation are consistent and no interpolation variables are involved – looks good.


3311-3316: New PBAC strings look correct

The newly-added PBAC resource & description entries follow the same style and terminology as existing permission strings. Pluralisation and capitalisation match previous entries.


3433-3435: Check for duplicate keys

Keys "stats" and "booking_status" are appended here.
Before merging, quickly grep for these keys in the other locale files to ensure they are not already defined; duplicate keys silently overwrite previous values during the build.

If they already exist, remove the duplicates or merge the translations intentionally.

apps/web/public/static/locales/bg/common.json (2)

1843-1844: Key names follow the pattern but introduce a small duplication risk

only_admin_can_manage_directory_sync and only_admin_can_manage_oauth_clients mirror previously-defined only_admin_can_manage_sso_org.
Double-check the whole file for accidental duplicates of these two new keys—JSON won’t complain but the last one wins at runtime.


3311-3316: PBAC permission keys added – verify consistency with server side enums

The new attribute-related permission strings (pbac_resource_attributes, pbac_desc_*_organization_attributes) look fine.
Ensure that corresponding constants / enums exist in the RBAC/PBAC backend; otherwise UI will render labels for permissions that the API doesn’t recognise.

apps/web/public/static/locales/sr/common.json (1)

3311-3316: Check PBAC translations for domain accuracy

The newly introduced PBAC keys map technical RBAC concepts (e.g. pbac_resource_attributes, pbac_desc_create_organization_attributes).
Current translations (“Atributi”, “Kreiranje atributa organizacije”) look correct, but please verify with the product/legal team that:

  1. “Atribut” is indeed the chosen term in the Serbian governance UI (some teams use “svojstvo”).
  2. The plural/singular forms match the in-app phrasing (e.g. “Kreiranje atributa” vs “Kreiranje atributa organizacije”).

No code change required if confirmed.

apps/web/public/static/locales/ar/common.json (2)

874-878: OAuth-related strings look correct
New keys for OAuth client management are well-formed, use consistent naming, keep the English placeholders intact, and the Arabic wording is clear.


1842-1845: Admin-only guard strings are fine
Translations read naturally and the placeholders match the key names. No issues spotted.

apps/web/public/static/locales/ko/common.json (3)

874-877: Verify new OAuth-client strings are included in all locales

The newly-added keys (oauth_clients*) look correct here, but remember to add the same keys to common.json for every other supported locale (at least en, since it is used as the fallback).
If they are missing the UI will silently fall back to the key name.


3311-3316: Duplicate-key risk

The PBAC description keys you added (pbac_desc_*_organization_attributes) are fine, but make sure the same keys are not present earlier in this file.
JSON does not forbid duplicate keys – whichever appears last wins – and that is extremely hard to notice at runtime.
Run a quick duplicate-key check before merging.


3433-3434: Potential key collision

"stats" and "booking_status" are very generic identifiers; do a quick grep to be certain they don’t already exist elsewhere in the file (or in other locale files).
A silent overwrite would break previously translated text.

apps/web/public/static/locales/nl/common.json (3)

874-878: Translation keys add proper OAuth-client context — looks good

New keys align with existing naming conventions (oauth_clients*), translations are clear, and no interpolation placeholders are required.
No issues spotted.


1843-1845: Admin-only guard strings consistent

The two only_admin_can_manage_* entries reuse the same sentence pattern already established for earlier keys, keeping UX wording uniform.
Good addition.


3311-3316: PBAC attribute strings added correctly

New PBAC-related keys (pbac_resource_attributes, view/update/delete/create) follow the existing permission-string scheme and pluralisation.
No JSON or placeholder issues detected.

apps/web/public/static/locales/ja/common.json (3)

874-877: Ensure newly-added OAuth client strings exist in the source locale

Four keys (oauth_clients*) are introduced here.
Please confirm that the same keys are present in the reference/​default locale (usually en/common.json).
If they are missing, the UI will fall back to the raw key names for every other language.


3433-3434: Verify key uniqueness for "stats" and "booking_status"

These appear late in the file.
If the same keys were defined earlier, JSON-parsing will keep only the last occurrence, shadowing the first and causing hard-to-trace i18n bugs.
A quick rip-grep across the repo is recommended.


3311-3315: Wire up PBAC “attributes” resource end-to-end

I see the new locale keys and registry entries for pbac_resource_attributes, but I couldn’t find a static resources list or seed script that pulls in “attributes.” Please verify and, if missing, update:

• packages/features/pbac/domain/types/permission-registry.ts
– Ensure the pbac_resource_attributes block with its CRUD actions is present (it appears at lines 360–384).

• UI matrix component (e.g. packages/features/pbac/components/PermissionMatrix.tsx)
– Add “attributes” to the resources array so the grid renders the new column.

• Seed data script (e.g. packages/features/pbac/seed/permissions.ts or backend migration)
– Include the “attributes” resource and its actions so new installs don’t show “unknown permission.”

apps/web/public/static/locales/he/common.json (2)

874-878: Ensure placeholder consistency with other locales

For the newly-added OAuth strings, verify that the key set (oauth_clients, …_description, create_oauth_client, …_description) exists in the reference/​source locale and that parameter placeholders (e.g. {{clientName}}, {{appName}}) are preserved 1-for-1.
If the English originals contain interpolation tokens that are missing here, runtime rendering will explode.


3311-3316: Double-check PBAC attribute descriptions

The PBAC entries are duplicated for “organization attributes”, yet the Hebrew wording refers to “מאפייני הארגון” four times; that is correct but easy to mix up with team-level wording.
Confirm that you really want the org-level strings here and not the team-level ones.
No code change needed if intentional.

apps/web/public/static/locales/es-419/common.json (3)

3311-3315: PBAC attribute keys look fine, but validate cross-locale coverage
The five new pbac_*attributes strings are translated correctly. Make sure the same keys exist in the fallback (en) locale; otherwise permission screens will show raw keys for users whose language falls back to English.


3405-3406: Watch out for key collisions: "failed_bookings", "stats" & "booking_status"
stats is a very generic identifier and is frequently present in other locale segments. Ensure this is not re-declared earlier (it was in several other locales). Duplicate keys break translators’ tooling and may hide older strings.

Also applies to: 3433-3435


874-877: No conflicts within es-419/common.json or across locale files – duplicates across languages are expected
The four new keys only appear once in es-419/common.json. Having the same identifiers in other language files (including the fallback es/common.json) is intentional: each locale implements the same key structure, and es-419 overrides the Spanish defaults as expected. There are no silent overwrites within a single file and no need to rename or merge keys.

Likely an incorrect or invalid review comment.

apps/web/public/static/locales/es/common.json (1)

3311-3316: Looks good – matches existing PBAC phrasing
Las nuevas descripciones siguen el mismo patrón (“Ver …”, “Actualizar …”) que el resto de claves PBAC.

apps/web/public/static/locales/it/common.json (2)

1842-1845: Looks good – translation keeps style & terminology consistent
No issues spotted with these permission-warning strings.


3433-3435: Double-check for duplicate keys before merge
"stats" and "booking_status" are appended very close to the end of the file.
Search the file (and other locale files) to be sure these keys are not already defined earlier; JSON duplicates silently overwrite and are painful to track at runtime.

apps/web/public/static/locales/fr/common.json (3)

874-877: Looks good – consistent terminology for OAuth strings

The four newly-added keys follow the existing naming pattern (oauth_*) and the French phrasing is concise and accurate. No action required.


3405-3405: Key added but headline translation duplicates existing vocabulary

"failed_bookings": "Réservations échouées" is technically correct, yet earlier keys use “annulées” (cancelled) and “non confirmées” for negative states. Double-check with product to ensure "échouées" conveys the intended nuance (payment failure vs. user cancel). If alignment is desired, consider “Réservations échouées” → “Réservations en échec”.


3433-3434: Potential collision with existing ‘stats’ key

A quick grep shows stats already added here; confirm this key does not exist in other locale files (e.g. en/common.json). Duplicate keys with divergent casing break i18n extraction tools. If the key already exists, reuse it rather than redefining.

apps/web/public/static/locales/eu/common.json (1)

1843-1844: JSON validity looks good, but mind the trailing comma

Both newly-added keys end with a comma even though only_admin_can_manage_oauth_clients is the last key inside that logical block. While JSON5 tolerates it, the project still ships pure JSON.
Double-check that the next line (1845) is indeed another key; otherwise remove the trailing comma to keep the file strictly valid.

apps/web/public/static/locales/bn/common.json (3)

874-878: Placeholders & context look correct – no action needed

The newly-added OAuth-related strings accurately preserve terminology (“OAuth ক্লায়েন্ট”) and contain no dynamic placeholders that could break formatting.


1843-1844: Consistent admin-only phrasing – good work

Both permission warnings follow the existing convention (“শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক …”), so end-user messaging will stay uniform across the UI.


3311-3316: PBAC attribute translations align with peer keys

The added PBAC strings (“বৈশিষ্ট্য”) fit the permission taxonomy and don’t introduce placeholder/grammar issues.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
apps/web/public/static/locales/bn/common.json (1)

1843-1845: Nit: finish sentences with the same punctuation as neighbours

Most neighbouring strings in this block end with a full-stop (“।”), but these two lines do not. Add the period for visual consistency.

-  "only_admin_can_manage_directory_sync": "শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক ডিরেক্টরি সিঙ্ক সেটিংস পরিচালনা করতে পারেন",
-  "only_admin_can_manage_oauth_clients": "শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক OAuth ক্লায়েন্ট পরিচালনা করতে পারেন",
+  "only_admin_can_manage_directory_sync": "শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক ডিরেক্টরি সিঙ্ক সেটিংস পরিচালনা করতে পারেন।",
+  "only_admin_can_manage_oauth_clients": "শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক OAuth ক্লায়েন্ট পরিচালনা করতে পারেন।",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 96c1192 and 3af470e.

⛔ Files ignored due to path filters (1)
  • i18n.lock is excluded by !**/*.lock
📒 Files selected for processing (36)
  • apps/web/public/static/locales/ar/common.json (6 hunks)
  • apps/web/public/static/locales/az/common.json (6 hunks)
  • apps/web/public/static/locales/bg/common.json (6 hunks)
  • apps/web/public/static/locales/bn/common.json (6 hunks)
  • apps/web/public/static/locales/ca/common.json (6 hunks)
  • apps/web/public/static/locales/cs/common.json (6 hunks)
  • apps/web/public/static/locales/da/common.json (6 hunks)
  • apps/web/public/static/locales/de/common.json (6 hunks)
  • apps/web/public/static/locales/el/common.json (6 hunks)
  • apps/web/public/static/locales/es-419/common.json (6 hunks)
  • apps/web/public/static/locales/es/common.json (6 hunks)
  • apps/web/public/static/locales/et/common.json (6 hunks)
  • apps/web/public/static/locales/eu/common.json (6 hunks)
  • apps/web/public/static/locales/fi/common.json (6 hunks)
  • apps/web/public/static/locales/fr/common.json (6 hunks)
  • apps/web/public/static/locales/he/common.json (6 hunks)
  • apps/web/public/static/locales/hu/common.json (6 hunks)
  • apps/web/public/static/locales/it/common.json (6 hunks)
  • apps/web/public/static/locales/ja/common.json (6 hunks)
  • apps/web/public/static/locales/km/common.json (6 hunks)
  • apps/web/public/static/locales/ko/common.json (6 hunks)
  • apps/web/public/static/locales/nl/common.json (6 hunks)
  • apps/web/public/static/locales/no/common.json (6 hunks)
  • apps/web/public/static/locales/pl/common.json (6 hunks)
  • apps/web/public/static/locales/pt-BR/common.json (6 hunks)
  • apps/web/public/static/locales/pt/common.json (6 hunks)
  • apps/web/public/static/locales/ro/common.json (6 hunks)
  • apps/web/public/static/locales/ru/common.json (6 hunks)
  • apps/web/public/static/locales/sk-SK/common.json (6 hunks)
  • apps/web/public/static/locales/sr/common.json (6 hunks)
  • apps/web/public/static/locales/sv/common.json (6 hunks)
  • apps/web/public/static/locales/tr/common.json (6 hunks)
  • apps/web/public/static/locales/uk/common.json (6 hunks)
  • apps/web/public/static/locales/vi/common.json (6 hunks)
  • apps/web/public/static/locales/zh-CN/common.json (6 hunks)
  • apps/web/public/static/locales/zh-TW/common.json (6 hunks)
✅ Files skipped from review due to trivial changes (2)
  • apps/web/public/static/locales/bg/common.json
  • apps/web/public/static/locales/cs/common.json
🚧 Files skipped from review as they are similar to previous changes (33)
  • apps/web/public/static/locales/da/common.json
  • apps/web/public/static/locales/zh-CN/common.json
  • apps/web/public/static/locales/pt-BR/common.json
  • apps/web/public/static/locales/eu/common.json
  • apps/web/public/static/locales/sv/common.json
  • apps/web/public/static/locales/ro/common.json
  • apps/web/public/static/locales/az/common.json
  • apps/web/public/static/locales/pt/common.json
  • apps/web/public/static/locales/hu/common.json
  • apps/web/public/static/locales/vi/common.json
  • apps/web/public/static/locales/zh-TW/common.json
  • apps/web/public/static/locales/fi/common.json
  • apps/web/public/static/locales/tr/common.json
  • apps/web/public/static/locales/sr/common.json
  • apps/web/public/static/locales/el/common.json
  • apps/web/public/static/locales/nl/common.json
  • apps/web/public/static/locales/he/common.json
  • apps/web/public/static/locales/ru/common.json
  • apps/web/public/static/locales/ja/common.json
  • apps/web/public/static/locales/ca/common.json
  • apps/web/public/static/locales/es-419/common.json
  • apps/web/public/static/locales/it/common.json
  • apps/web/public/static/locales/ko/common.json
  • apps/web/public/static/locales/pl/common.json
  • apps/web/public/static/locales/ar/common.json
  • apps/web/public/static/locales/sk-SK/common.json
  • apps/web/public/static/locales/es/common.json
  • apps/web/public/static/locales/no/common.json
  • apps/web/public/static/locales/km/common.json
  • apps/web/public/static/locales/et/common.json
  • apps/web/public/static/locales/uk/common.json
  • apps/web/public/static/locales/fr/common.json
  • apps/web/public/static/locales/de/common.json
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.
📚 Learning: when making localization changes for new features, it's often safer to add new strings rather than m...
Learnt from: bandhan-majumder
PR: calcom/cal.com#22359
File: packages/lib/server/locales/en/common.json:1336-1339
Timestamp: 2025-07-14T16:31:45.233Z
Learning: When making localization changes for new features, it's often safer to add new strings rather than modify existing ones to avoid breaking existing functionality that depends on the original strings. This approach allows for feature-specific customization while maintaining backward compatibility.

Applied to files:

  • apps/web/public/static/locales/bn/common.json
🔇 Additional comments (2)
apps/web/public/static/locales/bn/common.json (2)

874-878: Translations look good – no action needed

The added OAuth-related keys are translated consistently, preserve the original technical term “OAuth”, and contain no missing placeholders.


3311-3316: Confirm no key duplication

The new PBAC “attributes” keys are useful additions. Double-check that these IDs (pbac_resource_attributes, pbac_desc_*_organization_attributes) are not already present elsewhere in the same file to avoid JSON-object key collisions at runtime.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

🔭 Outside diff range comments (2)
apps/web/public/static/locales/ru/common.json (1)

73-74: Standardize RU terminology in common.json

We’ve identified inconsistent translations across the file:

  • Host/Organizer: mixed “хост” vs “организатор”
  • Round Robin: lowercase “round robin” vs title-case “Round Robin”
  • Webhook: “вебхук” vs “веб-хук”
  • OAuth client: “OAuth клиент” vs “OAuth-клиент”

Please confirm we settle on the following conventions and batch-apply them:

• Use “организатор” (replace all “хост”)
• Use title-case “Round Robin”
• Use hyphenated “веб-хук”
• Use hyphenated “OAuth-клиент”

Suggested one-shot fix script:

#!/bin/bash
FILE="apps/web/public/static/locales/ru/common.json"
sed -E -i \
  -e 's/\bхост\b/организатор/g' \
  -e 's/\bRound[[:space:]-]?Robin\b/Round Robin/g' \
  -e 's/\bround[[:space:]-]?robin\b/Round Robin/g' \
  -e 's/вебхук/веб-хук/g' \
  -e 's/\bOAuth[[:space:]-]?клиент\b/OAuth-клиент/g' \
  "$FILE"

Then rerun your consistency scan to confirm no leftovers.

apps/web/public/static/locales/nl/common.json (1)

2555-2556: Hyphenation + register + style: “headless routing‑API”

Prefer hyphenation, avoid repetition, and use formal “uw”.

-  "use_my_own_form": "Mijn eigen formulier gebruiken",
-  "use_our_headless_routing_api": "Gebruik onze headless routing API en gebruik je eigen formulier voor inzendingen.",
+  "use_my_own_form": "Mijn eigen formulier gebruiken",
+  "use_our_headless_routing_api": "Gebruik onze headless routing-API met uw eigen formulier voor inzendingen.",
♻️ Duplicate comments (75)
apps/web/public/static/locales/bn/common.json (1)

123-123: Fix BN possessive: “বুকিংয়ের” (duplicate of prior suggestion)

Use the contracted possessive to match standard BN usage and nearby strings.

-  "round_robin_host_unavailable_for_booking": "রাউন্ড রবিন হোস্ট বুকিং এর জন্য অনুপলব্ধ।",
+  "round_robin_host_unavailable_for_booking": "রাউন্ড রবিন হোস্ট বুকিংয়ের জন্য অনুপলব্ধ।",
apps/web/public/static/locales/ko/common.json (2)

875-878: Use “타사” instead of “서드파티” + ensure OAuth keys exist across locales

Prior guidance prefers “타사” for brand voice. Also validate these OAuth keys are present in all locales to avoid fallback-to-English.

-  "create_oauth_client_description": "서드파티 통합을 위한 새 OAuth 클라이언트 생성",
+  "create_oauth_client_description": "타사 통합을 위한 새 OAuth 클라이언트 생성",

3446-3451: Unify “이벤트 유형” → “이벤트 타입” in webhook labels (consistency)

Keep terminology consistent with the rest of the UI.

-  "webhook_type": "이벤트 유형 슬러그",
+  "webhook_type": "이벤트 타입 슬러그",
-  "webhook_title": "이벤트 유형 이름",
+  "webhook_title": "이벤트 타입 이름",
-  "webhook_description": "이벤트 유형 설정에 설명된 이벤트 설명",
+  "webhook_description": "이벤트 타입 설정에 설명된 이벤트 설명",
apps/web/public/static/locales/zh-CN/common.json (1)

3366-3366: Replace English “Round Robin” with “轮流”

Keep terminology in Chinese.

-  "rr_load_balancing_disabled_with_groups": "负载均衡在 Round Robin 组中不可用",
+  "rr_load_balancing_disabled_with_groups": "轮流组中不支持负载均衡",
apps/web/public/static/locales/hu/common.json (3)

123-123: Unify Round‑Robin term and fix grammar

Keep Round‑Robin untranslated in HU UI and prefer “nem érhető el” over “nem elérhető”.

-  "round_robin_host_unavailable_for_booking": "A körforgó házigazda nem elérhető foglalásra.",
+  "round_robin_host_unavailable_for_booking": "A Round‑Robin házigazda nem érhető el foglalásra."

875-878: Use formal address and consistent phrasing in OAuth client section

Switch to formal “Kezelje… szervezete…”, and use “OAuth‑kliens” with hyphen.

-  "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
-  "create_oauth_client": "OAuth kliens létrehozása",
-  "create_oauth_client_description": "Új OAuth kliens létrehozása harmadik féltől származó integrációkhoz",
+  "oauth_clients": "OAuth‑kliensek",
+  "oauth_clients_description": "Kezelje szervezete OAuth‑klienseit",
+  "create_oauth_client": "OAuth‑kliens létrehozása",
+  "create_oauth_client_description": "Új OAuth‑kliens létrehozása harmadik féltől származó integrációk számára"

2255-2256: Formalize and clarify headless routing copy

Use formal address and clearer sentence; avoid double “használd”.

-  "use_my_own_form": "Saját űrlap használata",
-  "use_our_headless_routing_api": "Használd a headless routing API-nkat és használd saját űrlapodat a beküldésekhez.",
+  "use_my_own_form": "Saját űrlap használata",
+  "use_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és küldje be saját űrlapjáról."
apps/web/public/static/locales/da/common.json (4)

123-123: Danish phrasing tweak: “til booking” reads more naturally

Use “til booking” instead of “for booking” for idiomatic Danish.

-  "round_robin_host_unavailable_for_booking": "Round Robin-værten er ikke tilgængelig for booking.",
+  "round_robin_host_unavailable_for_booking": "Round Robin-værten er ikke tilgængelig til booking.",

3416-3417: “failed_bookings” present in DA

Good. Ensure this key exists across all locales to avoid runtime fallbacks (prior verification found gaps).

#!/bin/bash
set -euo pipefail
base_dir="apps/web/public/static/locales"

echo "1) Validate JSON"
fd -H --glob 'common.json' "$base_dir" | xargs -n1 jq -e >/dev/null

echo "2) Report locales missing 'failed_bookings'"
missing=0
while read -r f; do
  if ! rg -q --fixed-strings '"failed_bookings"' "$f"; then
    echo "Missing failed_bookings in: $f"
    missing=1
  fi
done < <(fd -H --glob 'common.json' "$base_dir")

if [ $missing -eq 0 ]; then
  echo "✔ All locales include 'failed_bookings'."
fi

1844-1845: Fix mistranslation of “Directory Sync”

“synkronisering af mapper” implies filesystem folders. Use the product term “Directory Sync” for consistency with other entries (e.g., lines 2453+).

-  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for synkronisering af mapper",
+  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for Directory Sync",

3315-3320: Standardize PBAC “attributes” terminology to “Attributter”

Align PBAC block with consistent wording (“Attribut/Attributter”) used elsewhere. This avoids mixing “Egenskaber” with “organisationsattributter”.

-  "pbac_resource_attributes": "Egenskaber",
-  "pbac_desc_view_organization_attributes": "Se organisationens egenskaber",
-  "pbac_desc_update_organization_attributes": "Opdater organisationens egenskaber",
-  "pbac_desc_delete_organization_attributes": "Slet organisationens egenskaber",
-  "pbac_desc_create_organization_attributes": "Opret organisationens egenskaber",
+  "pbac_resource_attributes": "Attributter",
+  "pbac_desc_view_organization_attributes": "Se organisationens attributter",
+  "pbac_desc_update_organization_attributes": "Opdater organisationens attributter",
+  "pbac_desc_delete_organization_attributes": "Slet organisationens attributter",
+  "pbac_desc_create_organization_attributes": "Opret organisationens attributter",
apps/web/public/static/locales/bg/common.json (3)

123-123: Unify “Round‑Robin” branding in message

Use the project’s hyphenated branding in BG. Proposed tweak:

-  "round_robin_host_unavailable_for_booking": "Домакинът на ротационния принцип не е наличен за резервация.",
+  "round_robin_host_unavailable_for_booking": "Round-Robin домакинът не е наличен за резервация.",

Run to confirm usage of new key and detect inconsistent spellings:

#!/bin/bash
# Key usage
rg -n --hidden --glob '!*node_modules*' $'round_robin_host_unavailable_for_booking'

# Check inconsistent Round Robin spellings in BG locale
rg -n --hidden --glob 'apps/web/public/static/locales/bg/common.json' $'Round Robin|Round-?Robin|Round‑Robin'

352-352: Grammar: pluralize “групи” and tighten phrasing

Align number agreement and make the sentence more natural in BG. Suggested:

-  "round_robin_groups_helper": "Хората в групата се редуват, един човек от всяка група ще се появи на събитието.",
+  "round_robin_groups_helper": "Хората в групите се редуват; по един човек от всяка група ще присъства на събитието.",

3444-3473: Webhook metadata: improve natural BG and fix singular/plural

Refine a few labels for clarity and idiomatic BG; align singular “show variable”.

-  "webhook_created_at": "Времето на уебхука",
+  "webhook_created_at": "Време на създаване на уебхука",
-  "webhook_type": "Слъгът на типа събитие",
+  "webhook_type": "Идентификатор (slug) на типа събитие",
-  "webhook_description": "Описанието на събитието, както е описано в настройките на типа събитие",
+  "webhook_description": "Описанието на събитието, както е зададено в настройките на типа събитие",
-  "webhook_show_variable": "Покажи наличните променливи",
+  "webhook_show_variable": "Покажи променлива",

Optional: If UI context prefers shorter labels, consider “Създаден на” for webhook_created_at.

apps/web/public/static/locales/eu/common.json (2)

3292-3357: PBAC symmetry: add missing “manage organization attributes” descriptor

For attributes, you added view/update/delete/create, but the manage variant is still absent. Downstream UIs that compute labels for “manage” will show a blank/undefined string.

Add the missing key:

   "pbac_desc_view_organization_attributes": "Ikusi erakundearen atributuak",
   "pbac_desc_update_organization_attributes": "Eguneratu erakundearen atributuak",
   "pbac_desc_delete_organization_attributes": "Ezabatu erakundearen atributuak",
   "pbac_desc_create_organization_attributes": "Sortu erakundearen atributuak",
+  "pbac_desc_manage_organization_attributes": "Erakundeko atributuetan ekintza guztiak",

875-879: Namespace mismatch: oauth_ keys won’t resolve if components expect oAuth_ (camelCase)**

Components across the app reference oAuth_* keys (e.g., select_oAuth_client, admin_oAuth_description), not oauth_*. Keep the namespace consistent to avoid untranslated labels.

Suggested fix (rename the new keys to match existing oAuth_* convention):

-"oauth_clients": "OAuth bezeroak",
-"oauth_clients_description": "Kudeatu zure erakundearen OAuth bezeroak",
-"create_oauth_client": "Sortu OAuth bezeroa",
-"create_oauth_client_description": "Sortu OAuth bezero berri bat hirugarrenen integrazioetarako"
+"oAuth_clients": "OAuth bezeroak",
+"oAuth_clients_description": "Kudeatu zure erakundearen OAuth bezeroak",
+"create_oAuth_client": "Sortu OAuth bezeroa",
+"create_oAuth_client_description": "Sortu OAuth bezero berri bat hirugarrenen integrazioetarako"

Additionally, update the deletion message key to match the same namespace:

-"oauth_client_deletion_message": "OAuth bezeroa behar bezala ezabatu da"
+"oAuth_client_deletion_message": "OAuth bezeroa behar bezala ezabatu da"

Verification helper:

#!/bin/bash
# Expect usages for oAuth_* and none for oauth_* unless code was updated intentionally
rg -n --fixed-strings 'oAuth_clients|create_oAuth_client|oAuth_client_deletion_message' apps packages
rg -n --fixed-strings 'oauth_clients|create_oauth_client|oauth_client_deletion_message' apps packages
apps/web/public/static/locales/km/common.json (9)

875-878: Use “អង្គការ” instead of “អង្គភាព” in OAuth clients description

This locale uses “អង្គការ” consistently. Update the OAuth block accordingly.

 "oauth_clients": "កម្មវិធី OAuth",
-"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គការរបស់អ្នក",
 "create_oauth_client": "បង្កើតកម្មវិធី OAuth",
 "create_oauth_client_description": "បង្កើតកម្មវិធី OAuth ថ្មីសម្រាប់ការតភ្ជាប់ជាមួយកម្មវិធីភាគីទីបី",

To catch remaining inconsistencies in this file:

#!/bin/bash
# Find undesired term "អង្គភាព" where "អង្គការ" is expected
rg -n $'អង្គភាព' apps/web/public/static/locales/km/common.json

1844-1845: Admin-only notices: “អង្គភាព” → “អង្គការ”

Keep organization terminology consistent.

-"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
-"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",
+"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
+"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",

2255-2256: Don’t translate “Headless” literally

Keep “Headless” in English for clarity.

 "use_my_own_form": "ប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់ខ្ញុំ",
-"use_our_headless_routing_api": "ប្រើ API ដឹកនាំដោយគ្មានចំណងជើងរបស់យើង និងប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",
+"use_our_headless_routing_api": "ប្រើ API Routing (Headless) របស់យើង ហើយប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",

3315-3319: Attributes descriptors: “អង្គភាព” → “អង្គការ”

Align with established term for Organization.

 "pbac_resource_attributes": "គុណលក្ខណៈ",
-"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គភាព",
+"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គការ",
-"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គភាព",
+"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គការ",
-"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គភាព",
+"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គការ",
-"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គភាព",
+"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គការ",

3323-3323: PBAC roles descriptor: org scope phrasing

Replace “ក្នុងក្រុមអង្គភាព” with “ក្នុងអង្គការ”.

-"pbac_desc_manage_roles": "សកម្មភាពទាំងអស់លើតួនាទីក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_roles": "សកម្មភាពទាំងអស់លើតួនាទីក្នុងអង្គការ",

3333-3333: PBAC event types descriptor: org scope phrasing

Remove “ក្រុមអង្គភាព”; use “ក្នុងអង្គការ”.

-"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងអង្គការ",

3341-3341: PBAC teams descriptor: org scope phrasing

Keep “អង្គការ” consistent.

-"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ",

3356-3356: PBAC bookings descriptor: org scope phrasing

Use “ក្នុងអង្គការ”.

-"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",

352-352: Khmer phrasing for “take turns” — replace “លើកដៃ”

Use “វេនគ្នា” instead of “លើកដៃ”.

-  "round_robin_groups_helper": "មនុស្សក្នុងក្រុមនឹងលើកដៃជាបន្តបន្ទាប់ ហើយមនុស្សម្នាក់ពីក្រុមនីមួយៗនឹងចូលរួមក្នុងព្រឹត្តិការណ៍។",
+  "round_robin_groups_helper": "មនុស្សក្នុងក្រុមនឹងវេនគ្នា ហើយមនុស្សម្នាក់ពីក្រុមនីមួយៗនឹងចូលរួមក្នុងព្រឹត្តិការណ៍។",
apps/web/public/static/locales/it/common.json (2)

123-123: Normalize “round robin” and match existing Italian term for host

Use “organizzatore round robin” for consistency with the rest of the file and prior guidance.

-  "round_robin_host_unavailable_for_booking": "L'host Round Robin non è disponibile per la prenotazione.",
+  "round_robin_host_unavailable_for_booking": "L'organizzatore round robin non è disponibile per la prenotazione.",

3367-3367: Uniformare “Round Robin” → “round robin”

Maintain internal consistency; use lowercase “round robin”.

-  "rr_load_balancing_disabled_with_groups": "Il bilanciamento del carico non è disponibile con i gruppi Round Robin",
+  "rr_load_balancing_disabled_with_groups": "Il bilanciamento del carico non è disponibile con i gruppi round robin",
apps/web/public/static/locales/pt-BR/common.json (8)

352-352: Clareza e fluidez na ajuda de grupos de round-robin

Ajuste melhora fluidez e remove ambiguidade.

-  "round_robin_groups_helper": "As pessoas em um grupo se revezam, uma pessoa de cada grupo aparecerá para o evento.",
+  "round_robin_groups_helper": "As pessoas de cada grupo se revezam; uma pessoa por grupo será selecionada para o evento."

2255-2256: Aprimorar copy de “formulário próprio” e “headless routing”

Evita repetição de “formulário” e soa mais natural em pt-BR.

-  "use_my_own_form": "Usar meu próprio formulário",
-  "use_our_headless_routing_api": "Use nossa API de roteamento headless e utilize seu próprio formulário para envios.",
+  "use_my_own_form": "Usar formulário próprio",
+  "use_our_headless_routing_api": "Use nossa API de roteamento headless com seu próprio formulário para os envios."

3324-3334: PBAC: padronizar estilo das descrições “manage_*” e reduzir redundância

Ajustes deixam os textos mais naturais e consistentes (evitar “em ... nas ...”, harmonizar “Gerenciar/Todas as ações nas ...”).

-  "pbac_desc_manage_roles": "Todas as ações em funções nas equipes da organização",
+  "pbac_desc_manage_roles": "Todas as ações nas funções das equipes da organização",
-  "pbac_desc_create_workflows": "Criar e configurar novos fluxos de trabalho",
+  "pbac_desc_create_workflows": "Criar e configurar fluxos de trabalho",
-  "pbac_desc_manage_workflows": "Acesso completo de gerenciamento a todos os fluxos de trabalho",
+  "pbac_desc_manage_workflows": "Gerenciar todos os fluxos de trabalho",
-  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos nas equipes da organização",
+  "pbac_desc_manage_event_types": "Todas as ações nos tipos de evento das equipes da organização"

3341-3341: PBAC teams: remover repetição “em equipes nas equipes”

Simplificação corrige a construção repetitiva.

-  "pbac_desc_manage_teams": "Todas as ações em equipes nas equipes da organização",
+  "pbac_desc_manage_teams": "Todas as ações nas equipes da organização"

3356-3356: Padronizar “Reservas” (evitar “agendamentos”)

O arquivo usa largamente “Reservas”.

-  "pbac_desc_manage_bookings": "Todas as ações em agendamentos nas equipes da organização",
+  "pbac_desc_manage_bookings": "Todas as ações em reservas nas equipes da organização"

3416-3416: “Reservas falhas” → “Reservas com falha”

Forma padrão em pt-BR com adjetivo posposto.

-  "failed_bookings": "Reservas falhas",
+  "failed_bookings": "Reservas com falha",

3444-3474: Webhook metadata: padronizar rótulos, remover artigos e usar “E‑mail”

  • Remover “O ” inicial para rótulos curtos.
  • Usar “E‑mail” (com hífen).
  • Tornar descrições mais específicas.
  • Padronizar “Evento e reserva”, “Equipes”.
-  "webhook_trigger_event": "O nome do evento de gatilho (ex.: BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "O horário do webhook",
-  "webhook_type": "O slug do tipo de evento",
-  "webhook_title": "O nome do tipo de evento",
-  "webhook_start_time": "O horário de início do evento",
-  "webhook_end_time": "O horário de término do evento",
-  "webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
-  "webhook_location": "Local do evento",
-  "webhook_uid": "O UID da reserva",
-  "webhook_reschedule_uid": "O UID para reagendamento",
+  "webhook_trigger_event": "Nome do evento de gatilho (ex.: BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Criado em",
+  "webhook_type": "Slug do tipo de evento",
+  "webhook_title": "Nome do tipo de evento",
+  "webhook_start_time": "Horário de início do evento",
+  "webhook_end_time": "Horário de término do evento",
+  "webhook_description": "Descrição do evento (conforme o tipo de evento)",
+  "webhook_location": "Local do evento",
+  "webhook_uid": "UID da reserva",
+  "webhook_reschedule_uid": "UID de reagendamento",
@@
-  "webhook_organizer_email": "Email do organizador",
-  "webhook_organizer_timezone": "Fuso horário do organizador (ex.: 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Idioma do organizador (ex.: 'en', 'fr')",
+  "webhook_organizer_email": "E‑mail do organizador",
+  "webhook_organizer_timezone": "Fuso horário do organizador (ex.: 'America/New_York', 'Asia/Kolkata')",
+  "webhook_organizer_locale": "Idioma do organizador (ex.: 'pt-BR', 'en')",
@@
-  "webhook_attendee_email": "Email do primeiro participante",
+  "webhook_attendee_email": "E‑mail do primeiro participante",
@@
-  "webhook_team_name": "Nome da equipe reservada",
-  "webhook_team_members": "Membros da equipe reservada",
-  "webhook_video_call_url": "URL da chamada de vídeo para a reunião",
+  "webhook_team_name": "Nome da equipe (reserva)",
+  "webhook_team_members": "Membros da equipe (reserva)",
+  "webhook_video_call_url": "URL da chamada de vídeo",
@@
-  "webhook_event_and_booking": "Evento e Agendamento",
+  "webhook_event_and_booking": "Evento e reserva",
@@
-  "webhook_teams": "Times",
+  "webhook_teams": "Equipes",
@@
-  "booking_status": "Status do agendamento",
+  "booking_status": "Status da reserva",

1844-1845: Unificar “proprietário” vs. “dono” para consistência

Estas linhas já usam “proprietário”. Ajuste as linhas adjacentes (1842–1843) para padronizar terminologia.

-  "only_admin_can_see_members_of_org": "Esta Organização é privada, e apenas o administrador ou dono da organização podem ver seus membros.",
+  "only_admin_can_see_members_of_org": "Esta Organização é privada, e apenas o administrador ou proprietário da organização podem ver seus membros.",
-  "only_admin_can_manage_sso_org": "Apenas o administrador ou dono da organização podem gerenciar configurações de SSO",
+  "only_admin_can_manage_sso_org": "Apenas o administrador ou proprietário da organização podem gerenciar configurações de SSO",
apps/web/public/static/locales/et/common.json (4)

3324-3324: Improve PBAC scope phrasing; drop clunky “organisatsiooni meeskondades”.

More natural Estonian: use “organisatsioonis” or “organisatsiooni meeskondadega” as appropriate.

-  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsiooni meeskondades",
+  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsioonis",
-  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsiooni meeskondades",
+  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsioonis",
-  "pbac_desc_manage_teams": "Kõik toimingud meeskondadega organisatsiooni meeskondades",
+  "pbac_desc_manage_teams": "Kõik toimingud organisatsiooni meeskondadega",
-  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsiooni meeskondades",
+  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsioonis"

Also applies to: 3334-3334, 3342-3342, 3357-3357


121-123: Use “võõrustaja” instead of “host” for consistency.

Normalize host terminology across this cluster.

Apply:

-  "fixed_hosts_unavailable_for_booking": "Mõned fikseeritud hostid ei ole broneerimiseks saadaval.",
+  "fixed_hosts_unavailable_for_booking": "Mõned fikseeritud võõrustajad ei ole broneerimiseks saadaval.",
-  "round_robin_host_unavailable_for_booking": "Round Robin'i host ei ole broneerimiseks saadaval.",
+  "round_robin_host_unavailable_for_booking": "Round Robin'i võõrustaja ei ole broneerimiseks saadaval."

To audit remaining “host/hostid” occurrences:

#!/bin/bash
rg -n '"[^"]*host[^"]*":\s*"[^"]*host[^"]*"' apps/web/public/static/locales/et/common.json -A0 -B0
rg -n 'võõrustaj' apps/web/public/static/locales/et/common.json -A0 -B0

2255-2256: Normalize “routing” to “marsruutimine”.

Use “marsruutimine/marsruutimise” across the locale; “suunamine” is inconsistent with the rest of the file.

-  "use_our_headless_routing_api": "Kasuta meie peata suunamise API-t ja omaenda vormi esitamiseks.",
+  "use_our_headless_routing_api": "Kasuta meie peata marsruutimise API‑t ja oma vormi esitamiseks.",

3445-3463: Standardize webhook terminology and fix nouns.

Use “veebihaak/veebihaagi”, “lühinimi” for slug, “Ümberajastamise”, and “lokaat” for locale.

-  "webhook_created_at": "Veebikonksu loomise aeg",
+  "webhook_created_at": "Veebihaagi loomise aeg",
-  "webhook_type": "Sündmuse tüübi slug",
+  "webhook_type": "Sündmuse tüübi lühinimi",
-  "webhook_reschedule_uid": "Ümberplaneerimise UID",
+  "webhook_reschedule_uid": "Ümberajastamise UID",
-  "webhook_organizer_locale": "Korraldaja lokaad (nt 'en', 'fr')",
+  "webhook_organizer_locale": "Korraldaja lokaat (nt 'en', 'fr')",
-  "webhook_attendee_locale": "Esimese osaleja lokaad",
+  "webhook_attendee_locale": "Esimese osaleja lokaat",
apps/web/public/static/locales/ru/common.json (3)

3324-3324: PBAC scope wording should be “в организации”, not “в командах организации”

This contradicts the stated scope update and past suggestion. Update to organization scope.

-  "pbac_desc_manage_roles": "Все действия с ролями в командах организации",
+  "pbac_desc_manage_roles": "Все действия с ролями в организации",

3356-3356: PBAC bookings scope: adjust to organization

Same scope correction as roles: organization-level, not teams-in-organization.

-  "pbac_desc_manage_bookings": "Все действия с бронированиями в командах организации",
+  "pbac_desc_manage_bookings": "Все действия с бронированиями в организации",

123-123: Standardize “host” terminology in Round Robin context

Prefer “организатор” over “хост” to align with the rest of RU locale and avoid mixing terms.

-  "round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
+  "round_robin_host_unavailable_for_booking": "Организатор Round Robin недоступен для бронирования.",
apps/web/public/static/locales/pt/common.json (8)

123-123: PT-PT consistency: prefer “reserva” (and “de Round Robin”).

Normalize away from pt-BR “agendamento”.

-  "round_robin_host_unavailable_for_booking": "O anfitrião do Round Robin não está disponível para agendamento.",
+  "round_robin_host_unavailable_for_booking": "O anfitrião de Round Robin não está disponível para reserva.",

352-352: Round-robin groups helper: PT-PT phrasing.

Avoid Brazilianisms (“em um”, “se revezam”). Use PT-PT.

-  "round_robin_groups_helper": "As pessoas em um grupo se revezam, uma pessoa de cada grupo aparecerá no evento.",
+  "round_robin_groups_helper": "As pessoas num grupo revezam‑se; uma pessoa de cada grupo aparecerá no evento.",

875-879: OAuth clients: normalize to PT-PT and style/casing.

Use “Gerir”, sentence-case, and “eliminado”.

-  "oauth_clients": "Clientes OAuth",
-  "oauth_clients_description": "Gerencie clientes OAuth para sua organização",
-  "create_oauth_client": "Criar Cliente OAuth",
-  "create_oauth_client_description": "Crie um novo cliente OAuth para integrações de terceiros",
-  "oauth_client_deletion_message": "Cliente OAuth excluído com sucesso",
+  "oauth_clients": "Clientes OAuth",
+  "oauth_clients_description": "Gerir clientes OAuth da sua organização",
+  "create_oauth_client": "Criar cliente OAuth",
+  "create_oauth_client_description": "Criar um novo cliente OAuth para integrações de terceiros",
+  "oauth_client_deletion_message": "Cliente OAuth eliminado com sucesso",

1844-1845: Admin-only notices: PT-PT (“gerir”, “do diretório”).

Replace “gerenciar” and adjust preposition.

-  "only_admin_can_manage_directory_sync": "Apenas o administrador ou proprietário da organização pode gerenciar as configurações de sincronização de diretório",
-  "only_admin_can_manage_oauth_clients": "Apenas o administrador ou proprietário da organização pode gerenciar clientes OAuth",
+  "only_admin_can_manage_directory_sync": "Apenas o administrador ou o proprietário da organização pode gerir as configurações de sincronização do diretório",
+  "only_admin_can_manage_oauth_clients": "Apenas o administrador ou o proprietário da organização pode gerir clientes OAuth",

2255-2256: Routing/embedding copy: align with “encaminhamento” and PT-PT.

Use “o meu”, “a nossa”, and clarify headless.

-  "use_my_own_form": "Usar meu próprio formulário",
-  "use_our_headless_routing_api": "Use nossa API de roteamento headless e utilize seu próprio formulário para envios.",
+  "use_my_own_form": "Usar o meu próprio formulário",
+  "use_our_headless_routing_api": "Use a nossa API de encaminhamento sem interface (headless) e use o seu próprio formulário para envios.",

3315-3334: PBAC descriptions: normalize to PT-PT (Ver/Eliminar/Gestão/Equipas/Reservas).

Replace pt-BR forms and literal “gerenciamento”.

-  "pbac_resource_attributes": "Atributos",
-  "pbac_desc_view_organization_attributes": "Visualizar atributos da organização",
+  "pbac_resource_attributes": "Atributos",
+  "pbac_desc_view_organization_attributes": "Ver atributos da organização",
   "pbac_desc_update_organization_attributes": "Atualizar atributos da organização",
-  "pbac_desc_delete_organization_attributes": "Excluir atributos da organização",
+  "pbac_desc_delete_organization_attributes": "Eliminar atributos da organização",
   "pbac_desc_create_organization_attributes": "Criar atributos da organização",
-  "pbac_desc_manage_roles": "Todas as ações em funções nas equipes da organização",
+  "pbac_desc_manage_roles": "Todas as ações em funções nas equipas da organização",
   "pbac_desc_create_workflows": "Criar e configurar novos fluxos de trabalho",
-  "pbac_desc_view_workflows": "Visualizar fluxos de trabalho existentes e suas configurações",
+  "pbac_desc_view_workflows": "Ver fluxos de trabalho existentes e as suas configurações",
   "pbac_desc_update_workflows": "Editar e modificar configurações de fluxos de trabalho",
-  "pbac_desc_delete_workflows": "Remover fluxos de trabalho do sistema",
+  "pbac_desc_delete_workflows": "Eliminar fluxos de trabalho do sistema",
-  "pbac_desc_manage_workflows": "Acesso completo de gerenciamento a todos os fluxos de trabalho",
+  "pbac_desc_manage_workflows": "Acesso completo de gestão a todos os fluxos de trabalho",
-  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos nas equipes da organização",
+  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos nas equipas da organização",
-  "pbac_desc_manage_teams": "Todas as ações em equipes da organização",
+  "pbac_desc_manage_teams": "Todas as ações em equipas da organização",
-  "pbac_desc_manage_bookings": "Todas as ações em agendamentos nas equipes da organização",
+  "pbac_desc_manage_bookings": "Todas as ações em reservas nas equipas da organização",

Also applies to: 3341-3341, 3356-3356


3416-3416: Grammar: “Reservas falhadas”.

Fix plural adjective agreement in PT-PT.

-  "failed_bookings": "Reservas falhas",
+  "failed_bookings": "Reservas falhadas",

3445-3474: Webhooks + booking status: fix “equipe”→“equipa”, prefer “Data de criação…”, and use “reserva”.

Align with project conventions (“equipa”, “reserva”, PT-PT phrasing).

-  "webhook_created_at": "A hora do webhook",
+  "webhook_created_at": "Data de criação do webhook",
@@
-  "webhook_event_and_booking": "Evento e agendamento",
+  "webhook_event_and_booking": "Evento e reserva",
@@
-  "webhook_team_name": "Nome da equipe reservada",
-  "webhook_team_members": "Membros da equipe reservada",
+  "webhook_team_name": "Nome da equipa reservada",
+  "webhook_team_members": "Membros da equipa reservada",
@@
-  "booking_status": "Status do agendamento",
+  "booking_status": "Estado da reserva",
apps/web/public/static/locales/fr/common.json (2)

123-123: Standardize “round-robin” casing/hyphenation

Use the lowercase, hyphenated form for consistency with other occurrences (e.g., “Hôtes round-robin” Line 1951).

-  "round_robin_host_unavailable_for_booking": "L'hôte Round Robin n'est pas disponible pour la réservation.",
+  "round_robin_host_unavailable_for_booking": "L'hôte round-robin n'est pas disponible pour la réservation.",

3444-3474: Webhook metadata terminology consistency (E‑mail, “p. ex.”, Horodatage, Locale)

Apply consistent French terminology and example formatting. Also prefer “Langue (locale)” to clarify “locale” for FR readers.

-  "webhook_trigger_event": "Le nom de l'événement déclencheur (par ex., BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "L'heure du webhook",
+  "webhook_trigger_event": "Nom de l'événement déclencheur (p. ex. BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Horodatage du webhook",

-  "webhook_organizer_email": "Email de l'organisateur",
-  "webhook_organizer_timezone": "Fuseau horaire de l'organisateur (par ex., 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Locale de l'organisateur (par ex., 'en', 'fr')",
+  "webhook_organizer_email": "E‑mail de l'organisateur",
+  "webhook_organizer_timezone": "Fuseau horaire de l'organisateur (p. ex. « America/New_York », « Asia/Kolkka »)",
+  "webhook_organizer_locale": "Langue (locale) de l'organisateur (p. ex. « en », « fr »)",

-  "webhook_attendee_email": "Email du premier participant",
-  "webhook_attendee_timezone": "Fuseau horaire du premier participant",
-  "webhook_attendee_locale": "Locale du premier participant",
+  "webhook_attendee_email": "E‑mail du premier participant",
+  "webhook_attendee_timezone": "Fuseau horaire du premier participant (p. ex. « Europe/Paris »)",
+  "webhook_attendee_locale": "Langue (locale) du premier participant",

Optional: also replace straight single quotes in examples with French guillemets « » (as shown) for typographic consistency.

apps/web/public/static/locales/no/common.json (2)

123-123: Revert to Norwegian style (“bestilling” instead of “booking”)

This regressed from the previously suggested style consistency.

Apply:

-  "round_robin_host_unavailable_for_booking": "Round Robin-vert er ikke tilgjengelig for booking.",
+  "round_robin_host_unavailable_for_booking": "Round Robin-vert er ikke tilgjengelig for bestilling.",

3324-3324: Align PBAC phrasing and event type terminology

Re-apply earlier phrasing for consistency: use “organisasjonens team” and “hendelsestyper”.

-  "pbac_desc_manage_roles": "Alle handlinger på roller på tvers av organisasjonsteam",
+  "pbac_desc_manage_roles": "Alle handlinger på roller på tvers av organisasjonens team",
-  "pbac_desc_manage_event_types": "Alle handlinger på arrangementstyper på tvers av organisasjonsteam",
+  "pbac_desc_manage_event_types": "Alle handlinger på hendelsestyper på tvers av organisasjonens team",
-  "pbac_desc_manage_teams": "Alle handlinger på team på tvers av organisasjonsteam",
+  "pbac_desc_manage_teams": "Alle handlinger på team på tvers av organisasjonens team",
-  "pbac_desc_manage_bookings": "Alle handlinger på bookinger på tvers av organisasjonsteam",
+  "pbac_desc_manage_bookings": "Alle handlinger på bookinger på tvers av organisasjonens team",

Also applies to: 3334-3334, 3342-3342, 3356-3356

apps/web/public/static/locales/de/common.json (6)

123-123: Standardize Round‑Robin term and host role; hyphenate and use “Veranstalter”.

Use the established “Round‑Robin‑Veranstalter” wording (see prior feedback).

-  "round_robin_host_unavailable_for_booking": "Round Robin-Gastgeber ist für Buchungen nicht verfügbar.",
+  "round_robin_host_unavailable_for_booking": "Round‑Robin‑Veranstalter ist für Buchungen nicht verfügbar.",

3324-3324: PBAC scope phrasing: prefer “innerhalb der Organisation”.

Use the simpler, previously suggested phrasing for consistency.

-  "pbac_desc_manage_roles": "Alle Aktionen für Rollen über Organisationsteams hinweg",
+  "pbac_desc_manage_roles": "Alle Aktionen für Rollen innerhalb der Organisation",

3334-3334: PBAC scope phrasing: prefer “innerhalb der Organisation”.

-  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen über Organisationsteams hinweg",
+  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen innerhalb der Organisation",

3342-3342: PBAC scope phrasing: prefer “innerhalb der Organisation”.

-  "pbac_desc_manage_teams": "Alle Aktionen für Teams über Organisationsteams hinweg",
+  "pbac_desc_manage_teams": "Alle Aktionen für Teams innerhalb der Organisation",

3356-3356: PBAC scope phrasing: prefer “innerhalb der Organisation”.

-  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen über Organisationsteams hinweg",
+  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen innerhalb der Organisation",

3367-3367: Localize “Load Balancing” and hyphenate Round‑Robin‑Gruppen.

Matches earlier recommendation.

-  "rr_load_balancing_disabled_with_groups": "Load Balancing ist mit Round Robin Gruppen nicht verfügbar",
+  "rr_load_balancing_disabled_with_groups": "Lastverteilung ist mit Round‑Robin‑Gruppen nicht verfügbar",
apps/web/public/static/locales/ro/common.json (4)

3445-3475: Webhook labels: clarity + polite tone + “rezervare” term

  • Prefer timestamp label “Creat la” over “Ora webhook‑ului”.
  • Use polite imperatives (“Ascundeți/Afișați”).
  • Avoid “programare”; use “rezervare” to match the rest of the file.
  • “Statistici” is fine; prefer “Starea rezervării” over “Status programare”.
-  "webhook_created_at": "Ora webhook-ului",
+  "webhook_created_at": "Creat la",
@@
-  "webhook_hide_variables": "Ascunde variabilele",
-  "webhook_show_variable": "Afișează variabilele disponibile",
+  "webhook_hide_variables": "Ascundeți variabilele",
+  "webhook_show_variable": "Afișați variabilele disponibile",
@@
-  "webhook_event_and_booking": "Eveniment și programare",
+  "webhook_event_and_booking": "Eveniment și rezervare",
@@
-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",

875-878: Switch to polite/plural tone (“dvs.”) for OAuth UI

These entries use informal “Gestionează/Creează … organizația ta”. The Romanian UI elsewhere uses polite/plural.

-  "oauth_clients_description": "Gestionează clienții OAuth pentru organizația ta",
-  "create_oauth_client": "Creează un client OAuth",
-  "create_oauth_client_description": "Creează un nou client OAuth pentru integrări terțe",
+  "oauth_clients_description": "Gestionați clienții OAuth pentru organizația dvs.",
+  "create_oauth_client": "Creați un client OAuth",
+  "create_oauth_client_description": "Creați un nou client OAuth pentru integrări terțe",

2255-2256: Revert regression to informal tone; prefer polite/plural

These were previously updated to polite (“Folosiți … dvs.”). Current strings reverted to informal “Folosește … meu/tău”.

-  "use_my_own_form": "Folosește propriul meu formular",
-  "use_our_headless_routing_api": "Folosește API-ul nostru de rutare fără interfață și propriul tău formular pentru trimitere.",
+  "use_my_own_form": "Folosiți propriul dvs. formular",
+  "use_our_headless_routing_api": "Folosiți API‑ul nostru de rutare fără interfață și propriul dvs. formular pentru trimitere.",

3316-3334: PBAC descriptors: unify to polite/plural verbs

Use “Vizualizați/Actualizați/Ștergeți/Creați/Eliminați/Editați” for consistency with UI tone.

-  "pbac_desc_view_organization_attributes": "Vizualizează atributele organizației",
-  "pbac_desc_update_organization_attributes": "Actualizează atributele organizației",
-  "pbac_desc_delete_organization_attributes": "Șterge atributele organizației",
-  "pbac_desc_create_organization_attributes": "Creează atribute pentru organizație",
+  "pbac_desc_view_organization_attributes": "Vizualizați atributele organizației",
+  "pbac_desc_update_organization_attributes": "Actualizați atributele organizației",
+  "pbac_desc_delete_organization_attributes": "Ștergeți atributele organizației",
+  "pbac_desc_create_organization_attributes": "Creați atribute pentru organizație",
@@
-  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
+  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
@@
-  "pbac_desc_create_workflows": "Creează și configurează fluxuri de lucru noi",
-  "pbac_desc_view_workflows": "Vizualizează fluxurile de lucru existente și configurațiile acestora",
-  "pbac_desc_update_workflows": "Editează și modifică setările fluxurilor de lucru",
-  "pbac_desc_delete_workflows": "Elimină fluxurile de lucru din sistem",
-  "pbac_desc_manage_workflows": "Acces complet pentru gestionarea tuturor fluxurilor de lucru",
+  "pbac_desc_create_workflows": "Creați și configurați fluxuri de lucru noi",
+  "pbac_desc_view_workflows": "Vizualizați fluxurile de lucru existente și configurațiile acestora",
+  "pbac_desc_update_workflows": "Editați și modificați setările fluxurilor de lucru",
+  "pbac_desc_delete_workflows": "Eliminați fluxurile de lucru din sistem",
+  "pbac_desc_manage_workflows": "Acces complet de gestionare pentru toate fluxurile de lucru",
@@
-  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",
+  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",
@@
-  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",
+  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",
@@
-  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",
+  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",

Also applies to: 3342-3342, 3356-3356

apps/web/public/static/locales/es/common.json (3)

123-123: Spanish phrasing tweak for renamed round-robin key

More natural with definite article.

-"round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+"round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para la reserva.",

875-878: Optional tone consistency (“Administra” vs “Gestiona”)

Spanish in this file often uses “Administra…”; consider aligning.

 "oauth_clients": "Clientes OAuth",
-"oauth_clients_description": "Gestiona los clientes OAuth para tu organización",
+"oauth_clients_description": "Administra los clientes OAuth para tu organización",
 "create_oauth_client": "Crear cliente OAuth",
 "create_oauth_client_description": "Crea un nuevo cliente OAuth para integraciones de terceros",

3325-3329: Unify PBAC workflow wording (singular “configuración” and clearer order)

Apply consistent phrasing used across permissions.

-"pbac_desc_view_workflows": "Ver flujos de trabajo existentes y sus configuraciones",
-"pbac_desc_update_workflows": "Editar y modificar configuraciones de flujos de trabajo",
-"pbac_desc_manage_workflows": "Acceso completo de gestión a todos los flujos de trabajo",
+"pbac_desc_view_workflows": "Ver flujos de trabajo existentes y su configuración",
+"pbac_desc_update_workflows": "Editar y modificar la configuración de los flujos de trabajo",
+"pbac_desc_manage_workflows": "Acceso de gestión completo a todos los flujos de trabajo",
apps/web/public/static/locales/nl/common.json (3)

123-123: Hyphenation: “round-robin-host”

Keep “round-robin” hyphenated and as a compound noun in NL.

-  "round_robin_host_unavailable_for_booking": "Round Robin host is niet beschikbaar voor boekingen.",
+  "round_robin_host_unavailable_for_booking": "Round-robin-host is niet beschikbaar voor boekingen."

875-878: Consistency: “OAuth‑client(s)” + formal register (“uw”)

Hyphenate “OAuth‑client(s)” and use “uw” in admin contexts.

-  "oauth_clients": "OAuth clients",
-  "oauth_clients_description": "Beheer OAuth clients voor je organisatie",
-  "create_oauth_client": "OAuth client aanmaken",
-  "create_oauth_client_description": "Maak een nieuwe OAuth client voor integraties met derden",
+  "oauth_clients": "OAuth-clients",
+  "oauth_clients_description": "Beheer OAuth-clients voor uw organisatie",
+  "create_oauth_client": "OAuth-client aanmaken",
+  "create_oauth_client_description": "Maak een nieuwe OAuth-client voor integraties met derden",

1844-1845: Consistency: “mapsynchronisatie” + “OAuth‑clients”

Align terminology with existing NL labels and prior strings.

-  "only_admin_can_manage_directory_sync": "Alleen de beheerder of eigenaar van de organisatie kan directory sync-instellingen beheren",
-  "only_admin_can_manage_oauth_clients": "Alleen de beheerder of eigenaar van de organisatie kan OAuth clients beheren",
+  "only_admin_can_manage_directory_sync": "Alleen de beheerder of eigenaar van de organisatie kan mapsynchronisatie-instellingen beheren",
+  "only_admin_can_manage_oauth_clients": "Alleen de beheerder of eigenaar van de organisatie kan OAuth-clients beheren",
apps/web/public/static/locales/fi/common.json (2)

123-123: Finnish hyphenation: use “Round-robin-isäntä” (no space before hyphen).

Improve typography and consistency with prior guidance.

-  "round_robin_host_unavailable_for_booking": "Round Robin -isäntä ei ole varattavissa.",
+  "round_robin_host_unavailable_for_booking": "Round-robin-isäntä ei ole varattavissa.",

1844-1845: Use “ylläpitäjä” consistently (not “järjestelmänvalvoja”).

Aligns with the rest of this locale file and prior guidance.

-  "only_admin_can_manage_directory_sync": "Vain organisaation järjestelmänvalvoja tai omistaja voi hallita hakemiston synkronointiasetuksia",
-  "only_admin_can_manage_oauth_clients": "Vain organisaation järjestelmänvalvoja tai omistaja voi hallita OAuth-asiakkaita",
+  "only_admin_can_manage_directory_sync": "Vain organisaation ylläpitäjä tai omistaja voi hallita hakemistosynkronoinnin asetuksia",
+  "only_admin_can_manage_oauth_clients": "Vain organisaation ylläpitäjä tai omistaja voi hallita OAuth-asiakkaita",
apps/web/public/static/locales/ca/common.json (3)

3383-3383: Use imperative voice for action label (“Afegeix …”).

Align with dominant pattern used by “add_*” strings.

-  "add_group": "Afegir grup",
+  "add_group": "Afegeix un grup",

2255-2256: Fix terminology and grammar for “headless routing” and article agreement.

Reuse the established terms “encaminament” and “sense interfície”, and correct “les enviaments” → “els enviaments”.

-  "use_my_own_form": "Utilitza el meu propi formulari",
-  "use_our_headless_routing_api": "Utilitza la nostra API de routing headless i fes servir el teu propi formulari per a les enviaments.",
+  "use_my_own_form": "Utilitza el meu propi formulari",
+  "use_our_headless_routing_api": "Utilitza la nostra API d'encaminament sense interfície i fes servir el teu propi formulari per als enviaments.",

3324-3324: Tighten PBAC descriptions; avoid “a través dels equips…” and redundancies.

These read awkwardly in Catalan. Prefer “… dels equips de l’organització”.

-  "pbac_desc_manage_roles": "Totes les accions sobre rols a través dels equips de l'organització",
+  "pbac_desc_manage_roles": "Totes les accions sobre els rols dels equips de l'organització",
-  "pbac_desc_manage_event_types": "Totes les accions sobre tipus d'esdeveniments a través dels equips de l'organització",
+  "pbac_desc_manage_event_types": "Totes les accions sobre els tipus d'esdeveniments dels equips de l'organització",
-  "pbac_desc_manage_teams": "Totes les accions sobre equips a través dels equips de l'organització",
+  "pbac_desc_manage_teams": "Totes les accions sobre els equips de l'organització",
-  "pbac_desc_manage_bookings": "Totes les accions sobre reserves a través dels equips de l'organització",
+  "pbac_desc_manage_bookings": "Totes les accions sobre les reserves dels equips de l'organització",

Also applies to: 3333-3333, 3341-3341, 3356-3356

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Ja t'has registrat per a aquesta reserva",
"hosts_unavailable_for_booking": "Alguns dels amfitrions no estan disponibles per a la reserva",
"fixed_hosts_unavailable_for_booking": "Alguns dels amfitrions fixos no estan disponibles per a la reserva.",
"round_robin_hosts_unavailable_for_booking": "Cap amfitrió de Round Robin està disponible per a la reserva.",
"round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Consistency: “Round Robin” casing.

Elsewhere you use “round robin” in lowercase. Consider unifying for consistency.

If you want to align with the prevalent style:

-  "round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
+  "round_robin_host_unavailable_for_booking": "L'amfitrió de round robin no està disponible per a la reserva.",

Optionally verify usage patterns:


🏁 Script executed:

#!/bin/bash
# Inspect occurrences of "Round Robin" vs "round robin" across Catalan locale
rg -n $'Round[- ]Robin|round[- ]robin' apps/web/public/static/locales/ca/common.json

Length of output: 4019


🏁 Script executed:

#!/bin/bash
# Locate the English common.json
fd -e json common.json apps/web/public/static/locales/en

# Inspect the English text for round_robin_hosts
grep -R -A2 '"round_robin_hosts"' -n apps/web/public/static/locales/en/common.json

Length of output: 343


Consistency: unify “round robin” casing
Most Catalan entries use lowercase “round robin” (without hyphen), so update the instance at line 123 to match.

  • File: apps/web/public/static/locales/ca/common.json
    Line: 123
-  "round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
+  "round_robin_host_unavailable_for_booking": "L'amfitrió de round robin no està disponible per a la reserva.",
📝 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.

Suggested change
"round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
"round_robin_host_unavailable_for_booking": "L'amfitrió de round robin no està disponible per a la reserva.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ca/common.json around line 123, the Catalan
translation uses "Round Robin" (title case); update it to lowercase "round
robin" to match the project's existing casing convention — edit the value so it
reads: "L'amfitrió de round robin no està disponible per a la reserva." and save
the JSON file ensuring the string/quotes and punctuation remain valid.

Comment on lines 3445 to 3473
"webhook_created_at": "Tidspunktet for webhooken",
"webhook_type": "Slug for begivenhedstypen",
"webhook_title": "Navnet på begivenhedstypen",
"webhook_start_time": "Begivenhedens starttidspunkt",
"webhook_end_time": "Begivenhedens sluttidspunkt",
"webhook_description": "Begivenhedens beskrivelse som angivet i indstillingerne for begivenhedstypen",
"webhook_location": "Begivenhedens placering",
"webhook_uid": "UID for bookingen",
"webhook_reschedule_uid": "UID til ombooking",
"webhook_cancellation_reason": "Årsag til aflysning",
"webhook_rejection_reason": "Årsag til afvisning",
"webhook_organizer_name": "Navn på arrangøren",
"webhook_organizer_email": "E-mail på arrangøren",
"webhook_organizer_timezone": "Tidszone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Locale for arrangøren (f.eks. 'en', 'fr')",
"webhook_attendee_name": "Navn på den første deltager",
"webhook_attendee_email": "E-mail på den første deltager",
"webhook_attendee_timezone": "Tidszone for den første deltager",
"webhook_attendee_locale": "Locale for den første deltager",
"webhook_team_name": "Navn på det bookede team",
"webhook_team_members": "Medlemmer af det bookede team",
"webhook_video_call_url": "Videokalds-URL til mødet",
"webhook_hide_variables": "Skjul variabler",
"webhook_show_variable": "Vis tilgængelige variabler",
"webhook_event_and_booking": "Begivenhed og booking",
"webhook_people": "Personer",
"webhook_teams": "Teams",
"webhook_metadata": "Metadata",
"stats": "Statistik",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Webhook metadata keys: solid coverage; minor wording tweak and cross-locale verification

  • Minor style improvement for created timestamp:
    • “Tidspunktet for webhooken” → “Oprettelsestidspunkt for webhooken”.
  • Please verify all newly added webhook_* keys are present across locales to prevent fallback strings.

Apply wording tweak:

-  "webhook_created_at": "Tidspunktet for webhooken",
+  "webhook_created_at": "Oprettelsestidspunkt for webhooken",

Run verification across locales:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
base_dir="apps/web/public/static/locales"

# Collect webhook_* keys from Danish file (source of truth for this PR)
src="apps/web/public/static/locales/da/common.json"
mapfile -t webhook_keys < <(jq -r 'keys[]' "$src" | grep '^webhook_')

echo "Checking ${#webhook_keys[@]} webhook_* keys across locales..."
missing=false
while read -r file; do
  locale=$(basename "$(dirname "$file")")
  for key in "${webhook_keys[@]}"; do
    if ! jq -e --arg k "$key" 'has($k)' "$file" >/dev/null; then
      echo "Missing key $key in locale '$locale' ($file)"
      missing=true
    fi
  done
done < <(fd -H --glob 'common.json' "$base_dir")

if [ "$missing" = false ]; then
  echo "✔ All webhook_* keys are present across all locales."
fi

Length of output: 332


I’ve updated the verification script to avoid the process-substitution error and correctly load the keys before checking each locale. Let’s rerun it:

This will confirm whether any webhook_* keys are missing. If there are still errors or missing keys, we can adjust accordingly.


🏁 Script executed:

#!/bin/bash
set -euo pipefail
base_dir="apps/web/public/static/locales"
src="$base_dir/da/common.json"

# Extract webhook_* keys
readarray -t webhook_keys < <(jq -r 'keys[]' "$src" | grep '^webhook_')

echo "Checking ${#webhook_keys[@]} webhook_* keys across locales..."
missing=false

# Find every common.json in each locale
fd --type f --glob common.json "$base_dir" | while read -r file; do
  locale=$(basename "$(dirname "$file")")
  for key in "${webhook_keys[@]}"; do
    if ! jq -e --arg k "$key" 'has($k)' "$file" >/dev/null; then
      echo "Missing key $key in locale '$locale' ($file)"
      missing=true
    fi
  done
done

if [ "$missing" = false ]; then
  echo "✔ All webhook_* keys are present across all locales."
else
  exit 1
fi

Length of output: 334


I’m switching to a lightweight Python check to avoid the shell’s /dev/fd issues. This will load the Danish keys and verify them across every locale:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
base_dir="apps/web/public/static/locales"

python3 - <<'EOF'
import json, glob, os, sys

base = "apps/web/public/static/locales"
# Load Danish source of truth
src = os.path.join(base, "da", "common.json")
with open(src, encoding="utf-8") as f:
    da = json.load(f)

# Collect all webhook_* keys
keys = [k for k in da if k.startswith("webhook_")]
print(f"Checking {len(keys)} webhook_* keys across locales…")

missing = False
# Iterate every common.json in each locale folder
for path in glob.glob(f"{base}/*/common.json"):
    locale = os.path.basename(os.path.dirname(path))
    with open(path, encoding="utf-8") as f:
        loc = json.load(f)
    for k in keys:
        if k not in loc:
            print(f"Missing key {k} in locale '{locale}' ({path})")
            missing = True

if not missing:
    print("✔ All webhook_* keys are present across all locales.")
else:
    sys.exit(1)
EOF

Length of output: 27387


Add missing webhook_ keys across locales & update Danish wording*

  • Apply wording tweak in apps/web/public/static/locales/da/common.json:
    - "webhook_created_at": "Tidspunktet for webhooken",
    + "webhook_created_at": "Oprettelsestidspunkt for webhooken",
  • Several locales are missing one or more of the 44 webhook_* entries introduced in Danish. Please add all of these keys (as defined in da/common.json) to:
    • apps/web/public/static/locales/hr/common.json
    • apps/web/public/static/locales/id/common.json
    • apps/web/public/static/locales/iw/common.json
    • apps/web/public/static/locales/lv/common.json
    • apps/web/public/static/locales/sk/common.json
    • apps/web/public/static/locales/ta/common.json
    • apps/web/public/static/locales/th/common.json
📝 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.

Suggested change
"webhook_created_at": "Tidspunktet for webhooken",
"webhook_type": "Slug for begivenhedstypen",
"webhook_title": "Navnet på begivenhedstypen",
"webhook_start_time": "Begivenhedens starttidspunkt",
"webhook_end_time": "Begivenhedens sluttidspunkt",
"webhook_description": "Begivenhedens beskrivelse som angivet i indstillingerne for begivenhedstypen",
"webhook_location": "Begivenhedens placering",
"webhook_uid": "UID for bookingen",
"webhook_reschedule_uid": "UID til ombooking",
"webhook_cancellation_reason": "Årsag til aflysning",
"webhook_rejection_reason": "Årsag til afvisning",
"webhook_organizer_name": "Navn på arrangøren",
"webhook_organizer_email": "E-mail på arrangøren",
"webhook_organizer_timezone": "Tidszone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Locale for arrangøren (f.eks. 'en', 'fr')",
"webhook_attendee_name": "Navn på den første deltager",
"webhook_attendee_email": "E-mail på den første deltager",
"webhook_attendee_timezone": "Tidszone for den første deltager",
"webhook_attendee_locale": "Locale for den første deltager",
"webhook_team_name": "Navn på det bookede team",
"webhook_team_members": "Medlemmer af det bookede team",
"webhook_video_call_url": "Videokalds-URL til mødet",
"webhook_hide_variables": "Skjul variabler",
"webhook_show_variable": "Vis tilgængelige variabler",
"webhook_event_and_booking": "Begivenhed og booking",
"webhook_people": "Personer",
"webhook_teams": "Teams",
"webhook_metadata": "Metadata",
"stats": "Statistik",
"webhook_created_at": "Oprettelsestidspunkt for webhooken",
"webhook_type": "Slug for begivenhedstypen",
"webhook_title": "Navnet på begivenhedstypen",
"webhook_start_time": "Begivenhedens starttidspunkt",
"webhook_end_time": "Begivenhedens sluttidspunkt",
"webhook_description": "Begivenhedens beskrivelse som angivet i indstillingerne for begivenhedstypen",
"webhook_location": "Begivenhedens placering",
"webhook_uid": "UID for bookingen",
"webhook_reschedule_uid": "UID til ombooking",
"webhook_cancellation_reason": "Årsag til aflysning",
"webhook_rejection_reason": "Årsag til afvisning",
"webhook_organizer_name": "Navn på arrangøren",
"webhook_organizer_email": "E-mail på arrangøren",
"webhook_organizer_timezone": "Tidszone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Locale for arrangøren (f.eks. 'en', 'fr')",
"webhook_attendee_name": "Navn på den første deltager",
"webhook_attendee_email": "E-mail på den første deltager",
"webhook_attendee_timezone": "Tidszone for den første deltager",
"webhook_attendee_locale": "Locale for den første deltager",
"webhook_team_name": "Navn på det bookede team",
"webhook_team_members": "Medlemmer af det bookede team",
"webhook_video_call_url": "Videokalds-URL til mødet",
"webhook_hide_variables": "Skjul variabler",
"webhook_show_variable": "Vis tilgængelige variabler",
"webhook_event_and_booking": "Begivenhed og booking",
"webhook_people": "Personer",
"webhook_teams": "Teams",
"webhook_metadata": "Metadata",
"stats": "Statistik",

Comment on lines +1844 to +1845
"only_admin_can_manage_directory_sync": "Solo el administrador o propietario de la organización puede gestionar la configuración de sincronización de directorios",
"only_admin_can_manage_oauth_clients": "Solo el administrador o propietario de la organización puede gestionar los clientes OAuth",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Admin-only strings: LGTM; verify cross-locale coverage

Text looks good. Ensure these keys are present in all supported locales to avoid fallbacks.


🏁 Script executed:

#!/bin/bash
set -euo pipefail
keys=(
  "only_admin_can_manage_directory_sync"
  "only_admin_can_manage_oauth_clients"
)
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  count=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $count/$locales"
  if [ "$count" -ne "$locales" ]; then
    echo "Missing $k in:"
    for d in $(fd -t d . apps/web/public/static/locales -d 1); do
      f="$d/common.json"; rg -q "\"$k\"" "$f" || echo "  - $f"
    done
  fi
done

Length of output: 24783


Missing translations for new admin-only strings in some locales

The keys only_admin_can_manage_directory_sync and only_admin_can_manage_oauth_clients have been added in 37 of 44 supported locales. They’re missing in these locale files:

  • apps/web/public/static/locales/hr/common.json
  • apps/web/public/static/locales/id/common.json
  • apps/web/public/static/locales/iw/common.json
  • apps/web/public/static/locales/lv/common.json
  • apps/web/public/static/locales/sk/common.json
  • apps/web/public/static/locales/ta/common.json
  • apps/web/public/static/locales/th/common.json

Please add appropriate translations for both keys in each of the above files to ensure full cross-locale coverage and avoid fallback to English.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/{hr,id,iw,lv,sk,ta,th}/common.json (add at the
same location as other admin-only messages, around where similar keys live), the
two keys only_admin_can_manage_directory_sync and
only_admin_can_manage_oauth_clients are missing; add both keys with appropriate
translations in each file matching the style and punctuation of existing entries
(e.g., translated sentences equivalent to "Only the organization admin or owner
can manage the directory sync settings" and "Only the organization admin or
owner can manage OAuth clients"), ensure keys are inserted in JSON with proper
comma placement and valid UTF-8 strings, and run a JSON linter to confirm no
syntax errors.

@@ -3343,6 +3363,7 @@
"use_booker_timezone_info": "選択した制限スケジュールを予約者のタイムゾーンで適用します",
"load_balancing_warning": "これにより、すべてのround robinイベントタイプの負荷分散が無効になります",
"rr_load_balancing_disabled": "負荷分散は、タイムスタンプの基準が「予約作成時間」に設定されている場合のみ利用可能です",
"rr_load_balancing_disabled_with_groups": "ラウンドロビングループではロードバランシングを利用できません",
"round_robin_settings_description": "このチームのデフォルトのラウンドロビン設定をカスタマイズする",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Standardize “負荷分散” vs “ロードバランシング”

Other strings (e.g., 2984) use “負荷分散.” Recommend aligning this string.

-  "rr_load_balancing_disabled_with_groups": "ラウンドロビングループではロードバランシングを利用できません",
+  "rr_load_balancing_disabled_with_groups": "ラウンドロビングループでは負荷分散を利用できません",

To find remaining instances and unify:


🏁 Script executed:

#!/bin/bash
rg -n 'ロードバランシング|負荷分散' apps/web/public/static/locales/ja/common.json

Length of output: 371


Standardize translation for “load balancing” to “負荷分散”

Please update the one remaining instance in apps/web/public/static/locales/ja/common.json so it matches the other three:

• Lines 2983, 3364, 3365 already use “負荷分散”
• Line 3366 needs updating:

-  "rr_load_balancing_disabled_with_groups": "ラウンドロビングループではロードバランシングを利用できません",
+  "rr_load_balancing_disabled_with_groups": "ラウンドロビングループでは負荷分散を利用できません",

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ja/common.json around line 3367, the value for
"round_robin_settings_description" uses ラウンドロビン; update that string to use the
standardized term 負荷分散 so it matches the other entries—e.g. replace the phrase
to read "このチームのデフォルトの負荷分散設定をカスタマイズする".

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (58)
apps/web/public/static/locales/da/common.json (2)

1844-1846: Use product terminology “Directory Sync” instead of “synkronisering af mapper”

“Synkronisering af mapper” implies filesystem folders. Prefer the product term.

-  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for synkronisering af mapper",
+  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for Directory Sync",

3315-3320: Standardize PBAC “attributes” to “Attributter”

This block mixes “Egenskaber” with “organisationsattributter.” Use “Attributter” for consistency.

-  "pbac_resource_attributes": "Egenskaber",
+  "pbac_resource_attributes": "Attributter",

Please also keep neighbouring PBAC descriptions consistently using “attribut(ter)”.

apps/web/public/static/locales/cs/common.json (1)

2255-2256: Misleading translation: “headless” ≠ “bezstavové” (stateless). Use UI-less phrasing.

Please avoid “bezstavové”. Prefer “headless (bez rozhraní/bez UI)”.

-  "use_my_own_form": "Použít vlastní formulář",
-  "use_our_headless_routing_api": "Použijte naše bezstavové směrovací API a pro odesílání použijte vlastní formulář.",
+  "use_my_own_form": "Použít vlastní formulář",
+  "use_our_headless_routing_api": "Použijte naše headless (bez rozhraní) směrovací API a odešlete data vlastním formulářem."
apps/web/public/static/locales/eu/common.json (1)

875-879: Duplicate comment - OAuth key casing issue persists

This is the same issue identified in the past review comments. The new keys use oauth_* (lowercase) while components reference oAuth_* (camelCase). Based on the verification script results from the past review, no components use these new oauth_* keys, so they will never be picked up by the UI.

apps/web/public/static/locales/sk-SK/common.json (2)

123-123: Keep “round robin” lowercase for consistency

Align with existing style elsewhere in this file/locales.

-  "round_robin_host_unavailable_for_booking": "Hostiteľ Round Robin nie je k dispozícii na rezerváciu.",
+  "round_robin_host_unavailable_for_booking": "Hostiteľ round robin nie je k dispozícii na rezerváciu.",

2255-2256: Fix “headless” mistranslation (currently says “stateless”)

Use the English term with a short Slovak clarification.

[suggest_very_small_edit]

-  "use_my_own_form": "Použiť vlastný formulár",
-  "use_our_headless_routing_api": "Použite naše bezstavové smerovacie API a použite vlastný formulár pre odosielanie.",
+  "use_my_own_form": "Použiť vlastný formulár",
+  "use_our_headless_routing_api": "Použite naše headless (bez UI) smerovacie API a svoj vlastný formulár na odoslanie.",
apps/web/public/static/locales/es-419/common.json (1)

123-123: Singular phrasing for consistency (duplicate of earlier suggestion).

Use “para la reserva” to align with Line 121 phrasing.

-  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para la reserva.",
apps/web/public/static/locales/ca/common.json (3)

123-123: Consistency: use lowercase “round robin”

Unify casing to match the rest of the locale.

-  "round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
+  "round_robin_host_unavailable_for_booking": "L'amfitrió de round robin no està disponible per a la reserva.",

2256-2256: Fix Catalan grammar/terminology for headless routing

Use “encaminament” and “sense interfície”; correct article for “enviaments”.

-  "use_our_headless_routing_api": "Utilitza la nostra API de routing headless i fes servir el teu propi formulari per a les enviaments.",
+  "use_our_headless_routing_api": "Utilitza la nostra API d'encaminament sense interfície i fes servir el teu propi formulari per als enviaments.",

3383-3383: Imperative voice for action labels

Use imperative “Afegeix …” to match other “add_*” keys.

-  "add_group": "Afegir grup",
+  "add_group": "Afegeix un grup",
apps/web/public/static/locales/hu/common.json (3)

123-123: Unify “Round‑Robin” terminology (capitalize + hyphenate).

Prefer “Round‑Robin” consistently across the HU locale to match UI/other locales.

-  "round_robin_host_unavailable_for_booking": "A körforgó házigazda nem elérhető foglalásra.",
+  "round_robin_host_unavailable_for_booking": "A Round‑Robin házigazda nem érhető el foglalásra."

875-878: Use formal tone in OAuth section (consistency with locale).

Align with formal voice used elsewhere (“Kezelje…”, “szervezete…”).

-  "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
-  "create_oauth_client": "OAuth kliens létrehozása",
-  "create_oauth_client_description": "Új OAuth kliens létrehozása harmadik féltől származó integrációkhoz",
+  "oauth_clients": "OAuth kliensek",
+  "oauth_clients_description": "Kezelje szervezete OAuth klienseit",
+  "create_oauth_client": "OAuth kliens létrehozása",
+  "create_oauth_client_description": "Új OAuth kliens létrehozása harmadik féltől származó integrációk számára"

2255-2256: Formal tone and clarity for embedding options.

Switch to formal register and clarify sentence flow.

-  "use_my_own_form": "Saját űrlap használata",
-  "use_our_headless_routing_api": "Használd a headless routing API-nkat és használd saját űrlapodat a beküldésekhez.",
+  "use_my_own_form": "Saját űrlap használata",
+  "use_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és küldje be a válaszokat a saját űrlapjával."
apps/web/public/static/locales/km/common.json (8)

3341-3341: PBAC teams descriptor: organization scope

Keep consistent usage of “អង្គការ”.

-"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ",

352-352: Fix Khmer phrasing for “take turns” in RR groups helper

Prefer “វេនគ្នា” instead of “លើកដៃជាបន្តបន្ទាប់”.

-  "round_robin_groups_helper": "មនុស្សក្នុងក្រុមនឹងលើកដៃជាបន្តបន្ទាប់ ហើយមនុស្សម្នាក់ពីក្រុមនីមួយៗនឹងចូលរួមក្នុងព្រឹត្តិការណ៍។",
+  "round_robin_groups_helper": "មនុស្សក្នុងក្រុមនឹងវេនគ្នា ហើយមនុស្សម្នាក់ពីក្រុមនីមួយៗនឹងចូលរួមក្នុងព្រឹត្តិការណ៍។",

2255-2256: “Headless” should not be translated literally

Keep “Headless” in English for clarity.

 "use_my_own_form": "ប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់ខ្ញុំ",
-"use_our_headless_routing_api": "ប្រើ API ដឹកនាំដោយគ្មានចំណងជើងរបស់យើង និងប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",
+"use_our_headless_routing_api": "ប្រើ API Routing (Headless) របស់យើង ហើយប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",

1844-1845: Use “អង្គការ” consistently in admin-only notices

Replace “អង្គភាព” with “អង្គការ”.

-"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
-"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",
+"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
+"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",

3356-3356: PBAC bookings descriptor: organization scope

Replace “ក្រុមអង្គភាព” with “អង្គការ”.

-"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",

3315-3319: PBAC organization attributes: replace “អង្គភាព” with “អង្គការ”

Align with the rest of the locale.

 "pbac_resource_attributes": "គុណលក្ខណៈ",
-"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គភាព",
-"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គភាព",
-"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គភាព",
-"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គភាព",
+"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គការ",
+"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គការ",
+"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គការ",
+"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គការ",

3333-3333: PBAC event types descriptor: use organization scope

Replace “ក្រុមអង្គភាព” with “អង្គការ”.

-"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងអង្គការ",

3323-3323: PBAC roles descriptor: use organization scope phrasing

Remove team-scoped phrase and “អង្គភាព”.

-"pbac_desc_manage_roles": "សកម្មភាពទាំងអស់លើតួនាទីក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_roles": "សកម្មភាពទាំងអស់លើតួនាទីក្នុងអង្គការ",
apps/web/public/static/locales/it/common.json (2)

123-123: Use consistent Italian terminology for round robin host

Prefer “organizzatore round robin” over “host Round Robin” to match terminology used elsewhere in this file (e.g., round_robin_hosts, etc.).

-  "round_robin_host_unavailable_for_booking": "L'host Round Robin non è disponibile per la prenotazione.",
+  "round_robin_host_unavailable_for_booking": "L'organizzatore round robin non è disponibile per la prenotazione.",

3367-3367: Normalize capitalization: “round robin” (lowercase)

Keep “round robin” lowercase to match internal consistency.

-  "rr_load_balancing_disabled_with_groups": "Il bilanciamento del carico non è disponibile con i gruppi Round Robin",
+  "rr_load_balancing_disabled_with_groups": "Il bilanciamento del carico non è disponibile con i gruppi round robin",
apps/web/public/static/locales/uk/common.json (5)

123-123: Unify host terminology: use “ведучий” (not “організатор”).

Aligns with “Почергові ведучі”, “Ведучі” elsewhere.

-  "round_robin_host_unavailable_for_booking": "Організатор почергового розподілу недоступний для бронювання.",
+  "round_robin_host_unavailable_for_booking": "Ведучий почергового розподілу недоступний для бронювання.",

875-878: Hyphenate “OAuth-клієнт” and tighten phrasing.

Use the hyphenated form across labels and descriptions.

-  "oauth_clients": "OAuth клієнти",
-  "oauth_clients_description": "Керуйте OAuth клієнтами для вашої організації",
-  "create_oauth_client": "Створити OAuth клієнта",
-  "create_oauth_client_description": "Створіть нового OAuth клієнта для інтеграцій з третіми сторонами",
+  "oauth_clients": "OAuth-клієнти",
+  "oauth_clients_description": "Керуйте OAuth-клієнтами вашої організації",
+  "create_oauth_client": "Створити OAuth-клієнта",
+  "create_oauth_client_description": "Створіть нового OAuth-клієнта для інтеграцій зі сторонніми сервісами",

1844-1845: Consistency: “Лише …” and hyphenate “OAuth-клієнтами”.

-  "only_admin_can_manage_directory_sync": "Тільки адміністратор або власник організації може керувати налаштуваннями синхронізації каталогу",
-  "only_admin_can_manage_oauth_clients": "Тільки адміністратор або власник організації може керувати OAuth клієнтами",
+  "only_admin_can_manage_directory_sync": "Лише адміністратор або власник організації може керувати налаштуваннями синхронізації каталогу",
+  "only_admin_can_manage_oauth_clients": "Лише адміністратор або власник організації може керувати OAuth-клієнтами",

3333-3334: Use “заходів” (not “подій”) to match terminology across file.

-  "pbac_desc_manage_event_types": "Усі дії з типами подій у командах організації",
+  "pbac_desc_manage_event_types": "Усі дії з типами заходів у командах організації",

3444-3474: Standardize “вебгук”, lowercase “слаг”, and prefer “Учасники”; simplify “Показати змінні”.

Keeps UA terminology consistent with prior keys and earlier guidance.

-  "webhook_created_at": "Час створення вебхука",
-  "webhook_type": "Слаг типу події",
+  "webhook_created_at": "Час створення вебгука",
+  "webhook_type": "слаг типу події",

-  "webhook_team_members": "Члени забронованої команди",
+  "webhook_team_members": "Учасники забронованої команди",

-  "webhook_show_variable": "Показати доступні змінні",
+  "webhook_show_variable": "Показати змінні",
apps/web/public/static/locales/pt-BR/common.json (6)

352-352: Clareza em “round_robin_groups_helper”

Reaplicando ajuste já sugerido para fluidez e precisão.

-  "round_robin_groups_helper": "As pessoas em um grupo se revezam, uma pessoa de cada grupo aparecerá para o evento.",
+  "round_robin_groups_helper": "As pessoas de cada grupo se revezam; uma pessoa por grupo será selecionada para o evento."

1842-1845: Unificar “dono” → “proprietário” nas linhas adjacentes

As novas chaves (Lines 1844–1845) já usam “proprietário”, mas as adjacentes ainda usam “dono”. Padronize para consistência.

-  "only_admin_can_see_members_of_org": "Esta Organização é privada, e apenas o administrador ou dono da organização podem ver seus membros.",
+  "only_admin_can_see_members_of_org": "Esta Organização é privada, e apenas o administrador ou proprietário da organização podem ver seus membros.",
-  "only_admin_can_manage_sso_org": "Apenas o administrador ou dono da organização podem gerenciar configurações de SSO",
+  "only_admin_can_manage_sso_org": "Apenas o administrador ou proprietário da organização podem gerenciar configurações de SSO",

2255-2256: Headless routing: frase mais natural e sem repetição

Reaplicando a sugestão para simplificar a redação.

-  "use_my_own_form": "Usar meu próprio formulário",
-  "use_our_headless_routing_api": "Use nossa API de roteamento headless e utilize seu próprio formulário para envios.",
+  "use_my_own_form": "Usar meu próprio formulário",
+  "use_our_headless_routing_api": "Use nossa API de roteamento headless com seu próprio formulário para os envios."

3315-3334: PBAC “manage_*”: fluidez, escopo e padronização de termos

Reaplicando os ajustes previamente sugeridos para melhorar naturalidade e consistência (“tipos de evento”, “fluxos de trabalho”, “equipes”, “reservas”).

-  "pbac_desc_manage_roles": "Todas as ações em funções nas equipes da organização",
+  "pbac_desc_manage_roles": "Todas as ações nas funções das equipes da organização",
-  "pbac_desc_create_workflows": "Criar e configurar novos fluxos de trabalho",
+  "pbac_desc_create_workflows": "Criar e configurar fluxos de trabalho",
-  "pbac_desc_view_workflows": "Visualizar fluxos de trabalho existentes e suas configurações",
+  "pbac_desc_view_workflows": "Visualizar fluxos de trabalho e suas configurações",
-  "pbac_desc_update_workflows": "Editar e modificar configurações de fluxos de trabalho",
+  "pbac_desc_update_workflows": "Editar configurações de fluxos de trabalho",
-  "pbac_desc_delete_workflows": "Remover fluxos de trabalho do sistema",
+  "pbac_desc_delete_workflows": "Excluir fluxos de trabalho",
-  "pbac_desc_manage_workflows": "Acesso completo de gerenciamento a todos os fluxos de trabalho",
+  "pbac_desc_manage_workflows": "Gerenciamento completo de todos os fluxos de trabalho",
-  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos nas equipes da organização",
+  "pbac_desc_manage_event_types": "Todas as ações nos tipos de evento das equipes da organização",
-  "pbac_desc_manage_teams": "Todas as ações em equipes nas equipes da organização",
+  "pbac_desc_manage_teams": "Todas as ações nas equipes da organização",
-  "pbac_desc_manage_bookings": "Todas as ações em agendamentos nas equipes da organização",
+  "pbac_desc_manage_bookings": "Todas as ações em reservas nas equipes da organização"

Also applies to: 3341-3342, 3356-3357


3416-3416: “Reservas falhas” → “Reservas com falha”

Forma padrão em pt-BR para adjetivo posposto.

-  "failed_bookings": "Reservas falhas",
+  "failed_bookings": "Reservas com falha",

3444-3474: Webhook metadata: padronizar “E‑mail”, remover artigos iniciais e refinar rótulos

Reaplicando padronização: usar “E‑mail” (com hífen), remover “O/Os/A/As” no início para rótulos mais curtos, ajustar descrições.

-  "webhook_trigger_event": "O nome do evento de gatilho (ex.: BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "O horário do webhook",
-  "webhook_type": "O slug do tipo de evento",
-  "webhook_title": "O nome do tipo de evento",
-  "webhook_start_time": "O horário de início do evento",
-  "webhook_end_time": "O horário de término do evento",
-  "webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
-  "webhook_location": "Local do evento",
-  "webhook_uid": "O UID da reserva",
-  "webhook_reschedule_uid": "O UID para reagendamento",
+  "webhook_trigger_event": "Nome do evento de gatilho (ex.: BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Criado em",
+  "webhook_type": "Slug do tipo de evento",
+  "webhook_title": "Nome do tipo de evento",
+  "webhook_start_time": "Horário de início do evento",
+  "webhook_end_time": "Horário de término do evento",
+  "webhook_description": "Descrição do evento (conforme o tipo de evento)",
+  "webhook_location": "Local do evento",
+  "webhook_uid": "UID da reserva",
+  "webhook_reschedule_uid": "UID de reagendamento",
-  "webhook_organizer_email": "Email do organizador",
+  "webhook_organizer_email": "E‑mail do organizador",
-  "webhook_organizer_locale": "Idioma do organizador (ex.: 'en', 'fr')",
+  "webhook_organizer_locale": "Idioma do organizador (ex.: 'pt-BR', 'en')",
-  "webhook_attendee_email": "Email do primeiro participante",
+  "webhook_attendee_email": "E‑mail do primeiro participante",
-  "webhook_team_name": "Nome da equipe reservada",
-  "webhook_team_members": "Membros da equipe reservada",
-  "webhook_video_call_url": "URL da chamada de vídeo para a reunião",
+  "webhook_team_name": "Nome da equipe (reserva)",
+  "webhook_team_members": "Membros da equipe (reserva)",
+  "webhook_video_call_url": "URL da chamada de vídeo",
-  "webhook_event_and_booking": "Evento e Agendamento",
+  "webhook_event_and_booking": "Evento e reserva",
-  "webhook_teams": "Times",
+  "webhook_teams": "Equipes",
-  "booking_status": "Status do agendamento",
+  "booking_status": "Status da reserva",
apps/web/public/static/locales/ar/common.json (4)

875-878: Standardize “Organization” as “المنظمة”

Align with the rest of the file using “المنظمة/منظمتك”.

-  "oauth_clients": "عملاء OAuth",
-  "oauth_clients_description": "إدارة عملاء OAuth لمؤسستك",
-  "create_oauth_client": "إنشاء عميل OAuth",
-  "create_oauth_client_description": "إنشاء عميل OAuth جديد للتكاملات مع الأطراف الثالثة",
+  "oauth_clients": "عملاء OAuth",
+  "oauth_clients_description": "إدارة عملاء OAuth لمنظمتك",
+  "create_oauth_client": "إنشاء عميل OAuth",
+  "create_oauth_client_description": "إنشاء عميل OAuth جديد للتكاملات مع الأطراف الثالثة",

1844-1845: Use “المنظمة” consistently (not “المؤسسة”)

Match the standardized term used elsewhere.

-  "only_admin_can_manage_directory_sync": "يمكن لمسؤول المؤسسة أو مالكها فقط إدارة إعدادات مزامنة الدليل",
-  "only_admin_can_manage_oauth_clients": "يمكن لمسؤول المؤسسة أو مالكها فقط إدارة عملاء OAuth",
+  "only_admin_can_manage_directory_sync": "يمكن لمسؤول المنظمة أو مالكها فقط إدارة إعدادات مزامنة الدليل",
+  "only_admin_can_manage_oauth_clients": "يمكن لمسؤول المنظمة أو مالكها فقط إدارة عملاء OAuth",

3315-3320: PBAC attribute permissions: replace “المؤسسة” with “المنظمة”

Keep terminology consistent.

   "pbac_resource_attributes": "السمات",
-  "pbac_desc_view_organization_attributes": "عرض سمات المؤسسة",
-  "pbac_desc_update_organization_attributes": "تحديث سمات المؤسسة",
-  "pbac_desc_delete_organization_attributes": "حذف سمات المؤسسة",
-  "pbac_desc_create_organization_attributes": "إنشاء سمات المؤسسة",
+  "pbac_desc_view_organization_attributes": "عرض سمات المنظمة",
+  "pbac_desc_update_organization_attributes": "تحديث سمات المنظمة",
+  "pbac_desc_delete_organization_attributes": "حذف سمات المنظمة",
+  "pbac_desc_create_organization_attributes": "إنشاء سمات المنظمة",

3324-3329: PBAC scope strings: replace “المؤسسة” with “المنظمة”

Align PBAC scope copy with standardized term.

-  "pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المؤسسة",
+  "pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المنظمة",
   "pbac_desc_create_workflows": "إنشاء وإعداد سير عمل جديد",
   "pbac_desc_view_workflows": "عرض سير العمل الحالي وإعداداته",
   "pbac_desc_update_workflows": "تعديل وتغيير إعدادات سير العمل",
   "pbac_desc_delete_workflows": "إزالة سير العمل من النظام",
   "pbac_desc_manage_workflows": "وصول كامل لإدارة جميع سير العمل",
-  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المؤسسة",
+  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المنظمة",
-  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المؤسسة",
+  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المنظمة",
-  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المؤسسة",
+  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المنظمة",

Also applies to: 3333-3333, 3341-3341, 3356-3356

apps/web/public/static/locales/vi/common.json (3)

123-123: Lowercase “luân phiên” for consistency

Use lowercase to match style used elsewhere in the file.

-  "round_robin_host_unavailable_for_booking": "Người chủ trì Luân phiên không khả dụng để đặt lịch.",
+  "round_robin_host_unavailable_for_booking": "Người chủ trì luân phiên không khả dụng để đặt lịch.",

875-879: Unify OAuth client phrasing in Vietnamese (and fix leftover English)

Keep using “Ứng dụng OAuth” consistently. Also fix the deletion toast still using English.

   "oauth_clients": "Ứng dụng OAuth",
   "oauth_clients_description": "Quản lý ứng dụng OAuth cho tổ chức của bạn",
   "create_oauth_client": "Tạo ứng dụng OAuth",
   "create_oauth_client_description": "Tạo một ứng dụng OAuth mới cho tích hợp bên thứ ba",
-  "oauth_client_deletion_message": "Đã xóa thành công OAuth client"
+  "oauth_client_deletion_message": "Đã xóa thành công Ứng dụng OAuth"

Run to find remaining English “OAuth client/Client” remnants in this file:

#!/bin/bash
rg -n --hidden $'"OAuth client"|"OAuth Client"' apps/web/public/static/locales/vi/common.json -A 0 -B 0

3444-3474: Polish webhook labels for natural Vietnamese and clarity

Apply concise, natural phrasing and consistent terminology (organizer/attendee, metadata, slug), per earlier guidance.

-  "webhook_trigger_event": "Tên của sự kiện kích hoạt (ví dụ: BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Thời gian của webhook",
-  "webhook_type": "Đường dẫn loại sự kiện",
+  "webhook_trigger_event": "Tên sự kiện kích hoạt (ví dụ: BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Thời gian tạo webhook",
+  "webhook_type": "Loại sự kiện (slug)",
@@
-  "webhook_title": "Tên loại sự kiện",
+  "webhook_title": "Tên loại sự kiện",
@@
-  "webhook_start_time": "Thời gian bắt đầu sự kiện",
-  "webhook_end_time": "Thời gian kết thúc sự kiện",
+  "webhook_start_time": "Thời gian bắt đầu sự kiện",
+  "webhook_end_time": "Thời gian kết thúc sự kiện",
@@
-  "webhook_description": "Mô tả sự kiện như đã được mô tả trong cài đặt loại sự kiện",
+  "webhook_description": "Mô tả sự kiện (theo cài đặt của loại sự kiện)",
@@
-  "webhook_location": "Địa điểm của sự kiện",
+  "webhook_location": "Địa điểm sự kiện",
@@
-  "webhook_uid": "UID của lịch hẹn",
-  "webhook_reschedule_uid": "UID để lên lịch lại",
+  "webhook_uid": "UID đặt lịch",
+  "webhook_reschedule_uid": "UID dùng để đặt lại lịch",
@@
-  "webhook_cancellation_reason": "Lý do hủy",
-  "webhook_rejection_reason": "Lý do từ chối",
+  "webhook_cancellation_reason": "Lý do hủy",
+  "webhook_rejection_reason": "Lý do từ chối",
@@
-  "webhook_organizer_name": "Tên của nhà tổ chức",
-  "webhook_organizer_email": "Email của nhà tổ chức",
+  "webhook_organizer_name": "Tên người tổ chức",
+  "webhook_organizer_email": "Email người tổ chức",
@@
-  "webhook_organizer_timezone": "Múi giờ của nhà tổ chức (ví dụ: 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Ngôn ngữ của nhà tổ chức (ví dụ: 'en', 'fr')",
+  "webhook_organizer_timezone": "Múi giờ của người tổ chức (ví dụ: 'America/New_York', 'Asia/Kolkata')",
+  "webhook_organizer_locale": "Ngôn ngữ của người tổ chức (ví dụ: 'en', 'fr')",
@@
-  "webhook_attendee_name": "Tên của người tham dự đầu tiên",
-  "webhook_attendee_email": "Email của người tham dự đầu tiên",
-  "webhook_attendee_timezone": "Múi giờ của người tham dự đầu tiên",
-  "webhook_attendee_locale": "Ngôn ngữ của người tham dự đầu tiên",
+  "webhook_attendee_name": "Tên người tham dự (đầu tiên)",
+  "webhook_attendee_email": "Email người tham dự (đầu tiên)",
+  "webhook_attendee_timezone": "Múi giờ người tham dự (đầu tiên)",
+  "webhook_attendee_locale": "Ngôn ngữ người tham dự (đầu tiên)",
@@
-  "webhook_team_name": "Tên của đội đã đặt lịch",
-  "webhook_team_members": "Thành viên của đội đã đặt lịch",
+  "webhook_team_name": "Tên đội đã đặt lịch",
+  "webhook_team_members": "Thành viên đội đã đặt lịch",
@@
-  "webhook_video_call_url": "URL cuộc gọi video cho cuộc họp",
+  "webhook_video_call_url": "URL cuộc gọi video",
@@
-  "webhook_hide_variables": "Ẩn biến",
-  "webhook_show_variable": "Hiển thị các biến có sẵn",
+  "webhook_hide_variables": "Ẩn các biến",
+  "webhook_show_variable": "Hiển thị các biến khả dụng",
@@
-  "webhook_event_and_booking": "Sự kiện và Đặt lịch",
+  "webhook_event_and_booking": "Sự kiện và đặt lịch",
@@
-  "webhook_people": "Mọi người",
-  "webhook_teams": "Các nhóm",
-  "webhook_metadata": "Metadata",
+  "webhook_people": "Mọi người",
+  "webhook_teams": "Các nhóm",
+  "webhook_metadata": "Siêu dữ liệu",
apps/web/public/static/locales/no/common.json (2)

123-123: Consistency with Norwegian style (“bestilling” vs “booking”)

Use “bestilling” for consistency with nearby keys and prior guidance.

-  "round_robin_host_unavailable_for_booking": "Round Robin-vert er ikke tilgjengelig for booking.",
+  "round_robin_host_unavailable_for_bestilling": "Round Robin-vert er ikke tilgjengelig for bestilling.",

Optional: align line 122 (“fixed_hosts_unavailable_for_booking”) to also use “bestilling”.


3324-3324: Reapply earlier PBAC phrasing fixes (regression)

Previous review requested “organisasjonens team” and consistent use of “hendelsestyper”. These appear reverted or missed here.

-  "pbac_desc_manage_roles": "Alle handlinger på roller på tvers av organisasjonsteam",
+  "pbac_desc_manage_roles": "Alle handlinger på roller på tvers av organisasjonens team",
-  "pbac_desc_manage_event_types": "Alle handlinger på arrangementstyper på tvers av organisasjonsteam",
+  "pbac_desc_manage_event_types": "Alle handlinger på hendelsestyper på tvers av organisasjonens team",
-  "pbac_desc_manage_teams": "Alle handlinger på team på tvers av organisasjonsteam",
+  "pbac_desc_manage_teams": "Alle handlinger på team på tvers av organisasjonens team",
-  "pbac_desc_manage_bookings": "Alle handlinger på bookinger på tvers av organisasjonsteam",
+  "pbac_desc_manage_bookings": "Alle handlinger på bookinger på tvers av organisasjonens team",

Also applies to: 3333-3333, 3342-3342, 3356-3356

apps/web/public/static/locales/bg/common.json (3)

123-123: Unify “Round‑Robin” branding in BG value (duplicate of prior suggestion).

Prefer keeping the branded term as “Round‑Robin” for consistency across BG locale.

-  "round_robin_host_unavailable_for_booking": "Домакинът на ротационния принцип не е наличен за резервация.",
+  "round_robin_host_unavailable_for_booking": "Round‑Robin домакинът не е наличен за резервация.",

Run to verify code references and other locales define this key:

#!/bin/bash
# 1) Check usages of new vs old key in code (should only see the new one).
rg -n --hidden --glob '!*node_modules*' $'round_robin_host_unavailable_for_booking|round_robin_hosts_unavailable_for_booking'

# 2) Ensure all locales define the new key.
fd common.json apps/web/public/static/locales | xargs -I{} rg -n $'^\\s*"round_robin_host_unavailable_for_booking"' {}

352-352: Grammar refinement for “groups” helper (duplicate of prior suggestion).

Tighten phrasing and fix singular/plural mix.

-  "round_robin_groups_helper": "Хората в групата се редуват, един човек от всяка група ще се появи на събитието.",
+  "round_robin_groups_helper": "Хората в групите се редуват; по един човек от всяка група ще присъства на събитието.",

3445-3472: Webhook metadata: improve natural BG and fix singular/plural inconsistency (duplicate of prior suggestion).

Refine a few labels for clarity and consistency.

-  "webhook_created_at": "Времето на уебхука",
+  "webhook_created_at": "Време на създаване на уебхука",
-  "webhook_type": "Слъгът на типа събитие",
+  "webhook_type": "Идентификатор (slug) на типа събитие",
-  "webhook_description": "Описанието на събитието, както е описано в настройките на типа събитие",
+  "webhook_description": "Описанието на събитието, както е зададено в настройките на типа събитие",
-  "webhook_show_variable": "Покажи наличните променливи",
+  "webhook_show_variable": "Покажи променлива",

Also scan and unify “Round Robin” vs “Round‑Robin” across BG locale:

#!/bin/bash
rg -n --hidden --glob 'apps/web/public/static/locales/bg/common.json' $'Round Robin|Round-Robin|Round‑Robin'

Ensure these webhook keys exist in all locales:

#!/bin/bash
fd common.json apps/web/public/static/locales | while read f; do
  printf "%s\n" "$f"
  rg -n $'^\\s*"webhook_(created_at|type|description|show_variable)"' "$f" || true
done
apps/web/public/static/locales/fi/common.json (3)

123-123: Finnish hyphenation for “Round‑robin” and spacing

Keep consistent hyphenation and remove space before hyphen.

-  "round_robin_host_unavailable_for_booking": "Round Robin -isäntä ei ole varattavissa.",
+  "round_robin_host_unavailable_for_booking": "Round-robin-isäntä ei ole varattavissa.",

1844-1845: Terminology consistency: use “ylläpitäjä” (not “järjestelmänvalvoja”)

Align with the rest of the file’s usage.

-  "only_admin_can_manage_directory_sync": "Vain organisaation järjestelmänvalvoja tai omistaja voi hallita hakemiston synkronointiasetuksia",
-  "only_admin_can_manage_oauth_clients": "Vain organisaation järjestelmänvalvoja tai omistaja voi hallita OAuth-asiakkaita",
+  "only_admin_can_manage_directory_sync": "Vain organisaation ylläpitäjä tai omistaja voi hallita hakemistosynkronoinnin asetuksia",
+  "only_admin_can_manage_oauth_clients": "Vain organisaation ylläpitäjä tai omistaja voi hallita OAuth-asiakkaita",

3445-3474: Clarify “webhook_created_at”; singular/plural mismatch for “webhook_show_variable”

  • “webhook_created_at” should indicate creation time explicitly (prior guidance).
  • Key name “webhook_show_variable” is singular; Finnish currently plural.
-  "webhook_created_at": "Webhookin aika",
+  "webhook_created_at": "Webhookin luontiaika",
-  "webhook_show_variable": "Näytä käytettävissä olevat muuttujat",
+  "webhook_show_variable": "Näytä muuttuja",

Run to verify consistency across locales and confirm intended semantics of “webhook_show_variable”:

#!/bin/bash
# Compare base EN and other locales for these keys to confirm meaning and plurality
rg -n $'"webhook_created_at"|\"webhook_show_variable\"' apps/web/public/static/locales -A 1 -B 1
apps/web/public/static/locales/de/common.json (5)

123-123: Standardize Round‑Robin term and role (“Veranstalter”)

Hyphenate “Round‑Robin” and prefer “Veranstalter” for consistency with other entries.

-  "round_robin_host_unavailable_for_booking": "Round Robin-Gastgeber ist für Buchungen nicht verfügbar.",
+  "round_robin_host_unavailable_for_booking": "Round‑Robin‑Veranstalter ist für Buchungen nicht verfügbar.",

3324-3329: Fix repetitive PBAC scope phrasing (“… in den Teams der Organisation”)

Use “innerhalb der Organisation” to avoid awkward repetition and match prior guidance.

-  "pbac_desc_manage_roles": "Alle Aktionen für Rollen in den Teams der Organisation",
+  "pbac_desc_manage_roles": "Alle Aktionen für Rollen innerhalb der Organisation",
-  "pbac_desc_create_workflows": "Neue Workflows erstellen und einrichten",
-  "pbac_desc_view_workflows": "Bestehende Workflows und deren Konfigurationen anzeigen",
-  "pbac_desc_update_workflows": "Workflow-Einstellungen bearbeiten und ändern",
-  "pbac_desc_delete_workflows": "Workflows aus dem System entfernen",
-  "pbac_desc_manage_workflows": "Vollständiger Verwaltungszugriff auf alle Workflows",
+  "pbac_desc_create_workflows": "Neue Workflows erstellen und einrichten",
+  "pbac_desc_view_workflows": "Bestehende Workflows und deren Konfigurationen anzeigen",
+  "pbac_desc_update_workflows": "Workflow-Einstellungen bearbeiten und ändern",
+  "pbac_desc_delete_workflows": "Workflows aus dem System entfernen",
+  "pbac_desc_manage_workflows": "Vollständiger Verwaltungszugriff auf alle Workflows",

3334-3334: Fix PBAC event types scope phrasing

-  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen in den Teams der Organisation",
+  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen innerhalb der Organisation",

3342-3342: Fix PBAC teams scope phrasing

-  "pbac_desc_manage_teams": "Alle Aktionen für Teams in den Teams der Organisation",
+  "pbac_desc_manage_teams": "Alle Aktionen für Teams innerhalb der Organisation",

3356-3356: Fix PBAC bookings scope phrasing

-  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen in den Teams der Organisation",
+  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen innerhalb der Organisation",
apps/web/public/static/locales/ro/common.json (4)

3315-3357: PBAC descriptors: switch to polite/plural verbs across this block

Keep consistency: “Vizualizați/Actualizați/Ștergeți/Creați/Editeți/Eliminați”.

-  "pbac_resource_attributes": "Atribute",
-  "pbac_desc_view_organization_attributes": "Vizualizează atributele organizației",
-  "pbac_desc_update_organization_attributes": "Actualizează atributele organizației",
-  "pbac_desc_delete_organization_attributes": "Șterge atributele organizației",
-  "pbac_desc_create_organization_attributes": "Creează atribute pentru organizație",
+  "pbac_resource_attributes": "Atribute",
+  "pbac_desc_view_organization_attributes": "Vizualizați atributele organizației",
+  "pbac_desc_update_organization_attributes": "Actualizați atributele organizației",
+  "pbac_desc_delete_organization_attributes": "Ștergeți atributele organizației",
+  "pbac_desc_create_organization_attributes": "Creați atribute pentru organizație",

-  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
-  "pbac_desc_create_workflows": "Creează și configurează fluxuri de lucru noi",
-  "pbac_desc_view_workflows": "Vizualizează fluxurile de lucru existente și configurațiile acestora",
-  "pbac_desc_update_workflows": "Editează și modifică setările fluxurilor de lucru",
-  "pbac_desc_delete_workflows": "Elimină fluxurile de lucru din sistem",
-  "pbac_desc_manage_workflows": "Acces complet pentru gestionarea tuturor fluxurilor de lucru",
+  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
+  "pbac_desc_create_workflows": "Creați și configurați fluxuri de lucru noi",
+  "pbac_desc_view_workflows": "Vizualizați fluxurile de lucru existente și configurațiile acestora",
+  "pbac_desc_update_workflows": "Editați și modificați setările fluxurilor de lucru",
+  "pbac_desc_delete_workflows": "Eliminați fluxurile de lucru din sistem",
+  "pbac_desc_manage_workflows": "Acces complet pentru gestionarea tuturor fluxurilor de lucru",

-  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",
+  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",

-  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",
+  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",

-  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",
+  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",

Note: Apply the same verb forms to any remaining “Vizualizează/Actualizează/Creează/Șterge/Editează/Elimină” within this PBAC block.


875-879: Revert introduced informal tone; use polite/plural and “dvs.” consistently

These keys reintroduced “Gestionează/Creează/ta”. Prior guidance prefers polite plural.

   "oauth_clients": "Clienți OAuth",
-  "oauth_clients_description": "Gestionează clienții OAuth pentru organizația ta",
-  "create_oauth_client": "Creează un client OAuth",
-  "create_oauth_client_description": "Creează un nou client OAuth pentru integrări terțe",
+  "oauth_clients_description": "Gestionați clienții OAuth pentru organizația dvs.",
+  "create_oauth_client": "Creați un client OAuth",
+  "create_oauth_client_description": "Creați un nou client OAuth pentru integrările dvs.",

2255-2256: Use polite/plural voice; avoid “meu/tău”

Align with UI tone and prior decisions; use “dvs.”.

-  "use_my_own_form": "Folosește propriul meu formular",
-  "use_our_headless_routing_api": "Folosește API-ul nostru de rutare fără interfață și propriul tău formular pentru trimitere.",
+  "use_my_own_form": "Folosiți propriul dvs. formular",
+  "use_our_headless_routing_api": "Folosiți API‑ul nostru de rutare fără interfață și propriul dvs. formular pentru trimitere.",

3445-3475: Webhook labels and booking status: tone/clarity/terminology consistency

Apply:

  • Clearer timestamp label (“Creat la”).
  • Polite imperatives (“Ascundeți/Afișați”).
  • Prefer “rezervare” over “programare”.
  • Optional: simplify team labels (“Numele echipei”, “Membrii echipei”).
-  "webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Ora webhook-ului",
+  "webhook_created_at": "Creat la",
   "webhook_type": "Slug-ul tipului de eveniment",
   "webhook_title": "Numele tipului de eveniment",
   "webhook_start_time": "Ora de început a evenimentului",
   "webhook_end_time": "Ora de sfârșit a evenimentului",
   "webhook_description": "Descrierea evenimentului, așa cum este specificată în setările tipului de eveniment",
   "webhook_location": "Locația evenimentului",
   "webhook_uid": "UID-ul rezervării",
   "webhook_reschedule_uid": "UID-ul pentru reprogramare",
   "webhook_cancellation_reason": "Motivul anulării",
   "webhook_rejection_reason": "Motivul respingerii",
   "webhook_organizer_name": "Numele organizatorului",
   "webhook_organizer_email": "Emailul organizatorului",
   "webhook_organizer_timezone": "Fusul orar al organizatorului (de exemplu, 'America/New_York', 'Asia/Kolkata')",
   "webhook_organizer_locale": "Limba organizatorului (de exemplu, 'en', 'fr')",
   "webhook_attendee_name": "Numele primului participant",
   "webhook_attendee_email": "Emailul primului participant",
   "webhook_attendee_timezone": "Fusul orar al primului participant",
   "webhook_attendee_locale": "Limba primului participant",
-  "webhook_team_name": "Numele echipei rezervate",
-  "webhook_team_members": "Membrii echipei rezervate",
+  "webhook_team_name": "Numele echipei",
+  "webhook_team_members": "Membrii echipei",
   "webhook_video_call_url": "URL apel video pentru întâlnire",
-  "webhook_hide_variables": "Ascunde variabilele",
-  "webhook_show_variable": "Afișează variabilele disponibile",
-  "webhook_event_and_booking": "Eveniment și programare",
+  "webhook_hide_variables": "Ascundeți variabilele",
+  "webhook_show_variable": "Afișați variabilele disponibile",
+  "webhook_event_and_booking": "Eveniment și rezervare",
   "webhook_people": "Persoane",
   "webhook_teams": "Echipe",
   "webhook_metadata": "Metadate",
   "stats": "Statistici",
-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",

Comment on lines +875 to +878
"oauth_clients": "កម្មវិធី OAuth",
"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
"create_oauth_client": "បង្កើតកម្មវិធី OAuth",
"create_oauth_client_description": "បង្កើតកម្មវិធី OAuth ថ្មីសម្រាប់ការតភ្ជាប់ជាមួយកម្មវិធីភាគីទីបី",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Use “អង្គការ” consistently (replace “អង្គភាព”) in OAuth section

Keep org terminology consistent across the km locale.

 "oauth_clients": "កម្មវិធី OAuth",
-"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គការរបស់អ្នក",
 "create_oauth_client": "បង្កើតកម្មវិធី OAuth",
 "create_oauth_client_description": "បង្កើតកម្មវិធី OAuth ថ្មីសម្រាប់ការតភ្ជាប់ជាមួយកម្មវិធីភាគីទីបី",

Run to scan for other remaining “អង្គភាព” in this file:


🏁 Script executed:

#!/bin/bash
rg -n $'អង្គភាព' apps/web/public/static/locales/km/common.json

Length of output: 4442


Ensure “អង្គការ” Is Used Consistently for “Organization” in km Locale

Your scan shows many instances of “អង្គភាព” in apps/web/public/static/locales/km/common.json. To keep terminology uniform, replace each occurrence with “អង្គការ” where it refers to an organization.

Affected file:

  • apps/web/public/static/locales/km/common.json

Key changes (example in OAuth section):

  "oauth_clients": "កម្មវិធី OAuth",
- "oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+ "oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គការរបស់អ្នក",
  "create_oauth_client": "បង្កើតកម្មវិធី OAuth",
  "create_oauth_client_description": "បង្កើតកម្មវិធី OAuth ថ្មីសម្រាប់ការតភ្ជាប់ជាមួយកម្មវិធីភាគីទីបី",

Run the following to locate all remaining occurrences and update them similarly:

rg -n 'អង្គភាព' apps/web/public/static/locales/km/common.json

Review and replace each match (e.g., organization_id, organization_members, saml_sp_entity_id, etc.) to maintain consistent use of “អង្គការ.”

🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around lines 875 to 878,
several strings use the term "អង្គភាព" for "organization"; update these to use
"អង្គការ" consistently where the meaning is organization (e.g., values and any
keys or phrases like organization_id, organization_members, saml_sp_entity_id,
oauth descriptions). Search the file for all occurrences of "អង្គភាព" (e.g., rg
-n 'អង្គភាព' apps/web/public/static/locales/km/common.json), replace each
organization-related occurrence with "អង្គការ", ensure JSON syntax remains valid
(commas, quotes) and that translations preserve original meaning and context.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🔭 Outside diff range comments (2)
apps/web/public/static/locales/es-419/common.json (1)

3293-3357: Missing PBAC translations in several locales
The new PBAC keys you added in es-419/common.json aren’t defined in these language folders, causing runtime fallbacks:

• hr
• id
• iw
• lv
• sk
• ta
• th

Please add all of the following keys (and their Spanish equivalents) to each of those locales’ common.json:

pbac_action_all
pbac_action_create
pbac_action_read
pbac_action_update
pbac_action_delete
pbac_action_manage
pbac_action_invite
pbac_action_remove
pbac_action_change_member_role
pbac_action_list_members
pbac_action_manage_billing
pbac_desc_manage_roles
pbac_desc_manage_workflows
pbac_desc_manage_event_types
pbac_desc_manage_teams
pbac_desc_manage_organizations
pbac_desc_manage_bookings
apps/web/public/static/locales/ru/common.json (1)

73-74: Unify translations: use «организатор(ы)» and «Round Robin» consistently

The file apps/web/public/static/locales/ru/common.json still mixes «хост/хостов» with «организатор/организаторы» and various spellings of Round Robin («round robin», «round-robin», «Round-Robin»). Please update all translation values to:

  • Термин: «организатор(ы)»
  • Название: «Round Robin» (заглавные “R”, без дефиса)

Example diff for line 73:

- "event_reassigned_subtitle": "Встреча будет удалена из вашего календаря, и это не повлияет отрицательно на ваши шансы в round robin",
+ "event_reassigned_subtitle": "Встреча будет удалена из вашего календаря, и это не повлияет отрицательно на ваши шансы в Round Robin",

Affected keys (host → организатор):
• hosts_unavailable_for_booking
• fixed_hosts_unavailable_for_booking
• host_no_show
• no_available_hosts
• show_matching_hosts
• restriction_schedule_description
• event_type_no_hosts

Affected keys (mixed round-robin variants → Round Robin):
• event_reassigned_subtitle
• scheduling_for_your_team_description
• skip_rr_assignment_label
• reschedule_with_same_round_robin_host_title
• team_member_round_robin_reassign
• team_member_round_robin_reassign_description
• round_robin_reassign_description
• salesforce_if_free_email_domain_skip_owner_check
• include_no_show_in_rr_calculation

Keys combining both issues:
• reassign_to_another_rr_host
• reassign_round_robin_host

Please apply these changes across all occurrences in common.json.

Comment on lines +3445 to +3473
"webhook_created_at": "Webhook yaradılma vaxtı",
"webhook_type": "Tədbir növünün slug-ı",
"webhook_title": "Tədbir növünün adı",
"webhook_start_time": "Tədbirin başlama vaxtı",
"webhook_end_time": "Tədbirin bitmə vaxtı",
"webhook_description": "Tədbir növü parametrlərində təsvir edildiyi kimi tədbirin təsviri",
"webhook_location": "Tədbirin yeri",
"webhook_uid": "Rezervasiyanın UID-si",
"webhook_reschedule_uid": "Yenidən planlaşdırma üçün UID",
"webhook_cancellation_reason": "Ləğv etmə səbəbi",
"webhook_rejection_reason": "Rədd etmə səbəbi",
"webhook_organizer_name": "Təşkilatçının adı",
"webhook_organizer_email": "Təşkilatçının e-poçtu",
"webhook_organizer_timezone": "Təşkilatçının saat qurşağı (məs., 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Təşkilatçının lokalı (məs., 'en', 'fr')",
"webhook_attendee_name": "Birinci iştirakçının adı",
"webhook_attendee_email": "Birinci iştirakçının e-poçtu",
"webhook_attendee_timezone": "Birinci iştirakçının saat qurşağı",
"webhook_attendee_locale": "Birinci iştirakçının lokalı",
"webhook_team_name": "Rezervasiya edilmiş komandanın adı",
"webhook_team_members": "Rezervasiya edilmiş komandanın üzvləri",
"webhook_video_call_url": "Görüş üçün video zəng URL-i",
"webhook_hide_variables": "Dəyişənləri gizlət",
"webhook_show_variable": "Mövcud dəyişənləri göstər",
"webhook_event_and_booking": "Tədbir və Rezervasiya",
"webhook_people": "İnsanlar",
"webhook_teams": "Komandalar",
"webhook_metadata": "Metadata",
"stats": "Statistika",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Webhook metadata block: parity across locales and minor label alignment

  • Coverage looks comprehensive (event/booking, organizer/attendee, team, metadata).
  • Suggest aligning show/hide labels (plural vs singular) for clarity.
-  "webhook_show_variable": "Mövcud dəyişənləri göstər",
+  "webhook_show_variable": "Dəyişənləri göstər",

Verify keys mirrored across all locales to avoid fallback-to-English. Run this script to list locales missing any of these keys (sample subset; extend as needed):

To also normalize spelling of Webhook across locale strings (avoid mixed “veb-hook”/“webhook”), you can scan:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

root="apps/web/public/static/locales"
keys=(
  "webhook_trigger_event"
  "webhook_created_at"
  "webhook_type"
  "webhook_title"
  "webhook_start_time"
  "webhook_end_time"
  "webhook_description"
  "webhook_location"
  "webhook_uid"
  "webhook_reschedule_uid"
  "webhook_cancellation_reason"
  "webhook_rejection_reason"
  "webhook_organizer_name"
  "webhook_organizer_email"
  "webhook_organizer_timezone"
  "webhook_organizer_locale"
  "webhook_attendee_name"
  "webhook_attendee_email"
  "webhook_attendee_timezone"
  "webhook_attendee_locale"
  "webhook_team_name"
  "webhook_team_members"
  "webhook_video_call_url"
  "webhook_hide_variables"
  "webhook_show_variable"
  "webhook_event_and_booking"
  "webhook_people"
  "webhook_teams"
  "webhook_metadata"
  "round_robin_host_unavailable_for_booking"
)

# find common.json files for all locales
mapfile -t files < <(fd -t f -a 'common.json' "$root")

python - << 'PY'
import json, sys, glob, os
from collections import defaultdict

files = sys.stdin.read().strip().splitlines()
required = set(os.environ["REQ_KEYS"].split("|"))

missing = defaultdict(list)
for fp in files:
    try:
        with open(fp, encoding="utf-8") as f:
            data = json.load(f)
    except Exception as e:
        print(f"JSON_ERROR {fp}: {e}", file=sys.stderr)
        continue
    present = set(data.keys())
    for k in sorted(required - present):
        missing[fp].append(k)

if not missing:
    print("All locales contain the required keys.")
else:
    print("Missing keys per locale:")
    for fp, keys in missing.items():
        locale = fp.split(os.sep)[-2]
        print(f"- {locale}: {', '.join(keys)}")
PY

Length of output: 955


🏁 Script executed:

rg -n --ignore-case 'veb-?hook'

Length of output: 213


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

root="apps/web/public/static/locales"
keys=(
  "webhook_trigger_event"
  "webhook_created_at"
  "webhook_type"
  "webhook_title"
  "webhook_start_time"
  "webhook_end_time"
  "webhook_description"
  "webhook_location"
  "webhook_uid"
  "webhook_reschedule_uid"
  "webhook_cancellation_reason"
  "webhook_rejection_reason"
  "webhook_organizer_name"
  "webhook_organizer_email"
  "webhook_organizer_timezone"
  "webhook_organizer_locale"
  "webhook_attendee_name"
  "webhook_attendee_email"
  "webhook_attendee_timezone"
  "webhook_attendee_locale"
  "webhook_team_name"
  "webhook_team_members"
  "webhook_video_call_url"
  "webhook_hide_variables"
  "webhook_show_variable"
  "webhook_event_and_booking"
  "webhook_people"
  "webhook_teams"
  "webhook_metadata"
  "round_robin_host_unavailable_for_booking"
)

echo "→ Checking for missing webhook_* keys in each locale:"
for locale_dir in "$root"/*; do
  locale=$(basename "$locale_dir")
  file="$locale_dir/common.json"
  [[ -f "$file" ]] || { echo "- $locale: common.json missing"; continue; }
  missing=()
  for k in "${keys[@]}"; do
    if ! grep -q "\"$k\"" "$file"; then
      missing+=("$k")
    fi
  done
  if (( ${#missing[@]} )); then
    echo "- $locale: missing ${missing[*]}"
  fi
done

echo
echo "→ Scanning all locales for inconsistent “veb-hook” spelling:"
rg -n --ignore-case 'veb-?hook' "$root"

Length of output: 163846


Add missing webhook translations and correct “Veb-hook” spelling

Several locales are missing the new webhook_* keys and the AZ locale still uses “Veb-hook” instead of “Webhook.” Please:

• Populate all webhook_* entries in:

  • hr (Croatian)
  • id (Indonesian)
  • iw (Hebrew alias)
  • lv (Latvian)
  • sk (Slovak)
  • ta (Tamil)
  • th (Thai)
    (see apps/web/public/static/locales/<locale>/common.json)

• In apps/web/public/static/locales/az/common.json:

  1. Align the “show variable” label:
    -  "webhook_show_variable": "Mövcud dəyişənləri göstər",
    +  "webhook_show_variable": "Dəyişənləri göstər",
  2. Normalize the spelling of “Webhook”:
    - "edit_or_manage_webhooks": "Veb-hookları redaktə etmək və ya idarə etmək istəyirsinizsə, <0>veb-hook parametrlərinə</0> keçin",
    + "edit_or_manage_webhooks": "Webhookları redaktə etmək və ya idarə etmək istəyirsinizsə, <0>webhook parametrlərinə</0> keçin",

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/az/common.json around lines 3445-3473, several
webhook-related keys are present but the AZ locale still uses inconsistent
spelling (“Veb-hook”) and the "show variable" label needs alignment; update
these entries to consistently use "Webhook" and ensure "webhook_show_variable"
matches the wording/format used in other locales (e.g., same casing and phrasing
as "webhook_show_variable" elsewhere). Additionally, add the full set of missing
webhook_* keys (same keys shown in this AZ snippet: webhook_created_at,
webhook_type, webhook_title, webhook_start_time, webhook_end_time,
webhook_description, webhook_location, webhook_uid, webhook_reschedule_uid,
webhook_cancellation_reason, webhook_rejection_reason, webhook_organizer_name,
webhook_organizer_email, webhook_organizer_timezone, webhook_organizer_locale,
webhook_attendee_name, webhook_attendee_email, webhook_attendee_timezone,
webhook_attendee_locale, webhook_team_name, webhook_team_members,
webhook_video_call_url, webhook_hide_variables, webhook_show_variable,
webhook_event_and_booking, webhook_people, webhook_teams, webhook_metadata) into
each of these locale files: apps/web/public/static/locales/hr/common.json,
.../id/common.json, .../iw/common.json, .../lv/common.json, .../sk/common.json,
.../ta/common.json, .../th/common.json using the translated values consistent
with other locales (or English fallback if translations are unavailable), and
ensure the spelling of "Webhook" is normalized in az/common.json.

Comment on lines +875 to +878
"oauth_clients": "OAuth ক্লায়েন্ট",
"oauth_clients_description": "আপনার সংগঠনের জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",
"create_oauth_client": "OAuth ক্লায়েন্ট তৈরি করুন",
"create_oauth_client_description": "তৃতীয়-পক্ষের ইন্টিগ্রেশনের জন্য একটি নতুন OAuth ক্লায়েন্ট তৈরি করুন",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

OAuth admin strings look good; verify brand capitalization consistency

Strings read well. Ensure the brand is consistently “OAuth” (not “Oauth”) across this locale file (some pre-existing keys use “oAuth”).


🏁 Script executed:

#!/bin/bash
# Check inconsistent 'Oauth' (should be 'OAuth') usage in this file
rg -n "Oauth|oAuth" apps/web/public/static/locales/bn/common.json

Length of output: 564


Ensure consistent “OAuth” branding in bn/common.json

Several message IDs and translation values still use mixed casing (oAuth, Oauth) or Bengali transliteration instead of the English brand “OAuth”. Please update them to match the existing oauth_* pattern and use “OAuth” in values.

File: apps/web/public/static/locales/bn/common.json
Lines: 1889, 2441–2445, 3049

admin_oAuth_description → rename key to oauth_admin_description (value already uses “OAuth”)
oAuth → rename key to oauth and change value from "Oauth" to "OAuth"
oAuth_client_creation_formoauth_client_creation_form, value: "OAuth ক্লায়েন্ট তৈরির ফর্ম"
oAuth_client_creation_form_descriptionoauth_client_creation_form_description, ensure value uses "OAuth" (“…নতুন OAuth ক্লায়েন্ট…”)
oAuth_client_updation_formoauth_client_updation_form, value: "OAuth ক্লায়েন্ট আপডেট ফর্ম"
oAuth_client_updation_form_descriptionoauth_client_updation_form_description, ensure value uses "OAuth"
select_oAuth_clientselect_oauth_client, value: "OAuth ক্লায়েন্ট নির্বাচন করুন"

🤖 Prompt for AI Agents
In apps/web/public/static/locales/bn/common.json (check lines ~875, 1889,
2441–2445, 3049), normalize all OAuth-related keys to the existing oauth_*
pattern and ensure values use the English brand "OAuth": rename key
admin_oAuth_description → oauth_admin_description (value can remain), rename
oAuth → oauth and change its value from "Oauth" to "OAuth", rename
oAuth_client_creation_form → oauth_client_creation_form and set value to "OAuth
ক্লায়েন্ট তৈরির ফর্ম", rename oAuth_client_creation_form_description →
oauth_client_creation_form_description and ensure the value contains "OAuth"
(e.g., use "...নতুন OAuth ক্লায়েন্ট..."), rename oAuth_client_updation_form →
oauth_client_updation_form with value "OAuth ক্লায়েন্ট আপডেট ফর্ম", rename
oAuth_client_updation_form_description → oauth_client_updation_form_description
and ensure its value uses "OAuth", and rename select_oAuth_client →
select_oauth_client with value "OAuth ক্লায়েন্ট নির্বাচন করুন".

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Již jste se zaregistrovali na tuto rezervaci.",
"hosts_unavailable_for_booking": "Někteří hostitelé nejsou k dispozici pro rezervaci.",
"fixed_hosts_unavailable_for_booking": "Někteří z pevně stanovených hostitelů nejsou k dispozici pro rezervaci.",
"round_robin_hosts_unavailable_for_booking": "Žádný z hostitelů Round Robin není k dispozici pro rezervaci.",
"round_robin_host_unavailable_for_booking": "Hostitel Round Robin není k dispozici pro rezervaci.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Key rename: verify usage and align “Round Robin” casing.

  • The new key round_robin_host_unavailable_for_booking is fine, but it’s a breaking rename. Please ensure all references were updated.
  • Also, casing/hyphenation for “Round Robin” varies across the file. Consider standardizing (e.g., “round‑robin” or “Round Robin”) consistently.

Run to confirm no stale references remain:


🏁 Script executed:

#!/bin/bash
# Find old key usages that may break at runtime
rg -n "round_robin_hosts_unavailable_for_booking" || true
# Optionally, list all round-robin labels to standardize casing
rg -n "round[ -]?robin" apps/web/public/static/locales | sed -E 's/^/> /'

Length of output: 94895


Ensure key rename is safe and unify Czech translation styling

The old key wasn’t found—no broken references remain. However, the Czech file mixes casing and hyphenation for “round robin.” Most entries use lowercase without a hyphen, so update this line for consistency:

• apps/web/public/static/locales/cs/common.json:123

- "round_robin_host_unavailable_for_booking": "Hostitel Round Robin není k dispozici pro rezervaci.",
+ "round_robin_host_unavailable_for_booking": "Hostitel round robin není k dispozici pro rezervaci.",
📝 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.

Suggested change
"round_robin_host_unavailable_for_booking": "Hostitel Round Robin není k dispozici pro rezervaci.",
"round_robin_host_unavailable_for_booking": "Hostitel round robin není k dispozici pro rezervaci.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/cs/common.json around line 123, the Czech
translation mixes casing/hyphenation for “round robin”; update the value to use
lowercase without a hyphen to match other entries (e.g., change the string to
"Hostitel round robin není k dispozici pro rezervaci."), keep the same JSON key,
and save the file so translations remain consistent.

@@ -3280,6 +3289,7 @@
"pbac_resource_booking": "Reservas",
"pbac_resource_insights": "Perspectivas",
"pbac_resource_role": "Roles",
"pbac_resource_workflow": "Flujos de trabajo",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

PBAC resources (workflows, org attributes) — LGTM

Wording aligns with the rest of PBAC strings. Ensure corresponding keys exist in es-419 and other locales.

Also applies to: 3315-3320


🏁 Script executed:

#!/bin/bash
set -euo pipefail
keys=("pbac_resource_workflow" "pbac_resource_attributes" \
"pbac_desc_view_organization_attributes" "pbac_desc_update_organization_attributes" \
"pbac_desc_delete_organization_attributes" "pbac_desc_create_organization_attributes")
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  count=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $count/$locales"
done

Length of output: 13695


Add missing PBAC translation keys to all locale files

The new PBAC keys you’ve added in es/common.json are only defined in 37 of our 44 locales. To keep translations in sync, please add these entries to es-419 and the remaining 7 locale folders (you can script out which ones are missing).

Keys to add in each common.json:

  • pbac_resource_workflow
  • pbac_resource_attributes
  • pbac_desc_view_organization_attributes
  • pbac_desc_update_organization_attributes
  • pbac_desc_delete_organization_attributes
  • pbac_desc_create_organization_attributes
🤖 Prompt for AI Agents
In apps/web/public/static/locales/es/common.json around line 3292, the new PBAC
translation key pbac_resource_workflow (and related PBAC keys) exist only in 37
of 44 locales; add the following keys to each missing locale's common.json
(including es-419 and the remaining 7 locale folders): pbac_resource_workflow,
pbac_resource_attributes, pbac_desc_view_organization_attributes,
pbac_desc_update_organization_attributes,
pbac_desc_delete_organization_attributes,
pbac_desc_create_organization_attributes; populate values by copying the Spanish
strings from es/common.json (or provide appropriate translations), ensure valid
JSON (commas, quoting) and run a quick script to verify all 44 locale
common.json files contain these keys.

Comment on lines +875 to +878
"oauth_clients": "OAuth-клиенты",
"oauth_clients_description": "Управляйте OAuth-клиентами вашей организации",
"create_oauth_client": "Создать OAuth-клиент",
"create_oauth_client_description": "Создайте новый OAuth-клиент для интеграции с третьими сторонами",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

LGTM: OAuth client strings and hyphenation

The hyphenated “OAuth‑клиент(ы)” is correct and matches prior guidance. Consider normalizing adjacent legacy strings (e.g., “OAuth клиент успешно удален” at Line 880) in a follow-up.

Run a quick scan to list inconsistent OAuth hyphenation/casing:


🏁 Script executed:

#!/bin/bash
rg -n "OAuth ?клиент|oAuth|OAuth-клиент" apps/web/public/static/locales/ru/common.json

Length of output: 1540


Standardize OAuth-клиент hyphenation and casing

Несколько строк в apps/web/public/static/locales/ru/common.json используют неконсистентное написание “OAuth клиент(ы)” (пробел вместо неразрывного дефиса, некорректный регистр “oAuth”). Предлагаю привести всё к единому виду: “OAuth-клиент(ы)”.

Пожалуйста, исправьте следующие места:

  • Line 879:
    “OAuth клиент успешно удален” → “OAuth-клиент успешно удален”
  • Line 1889:
    “Добавить новые OAuth клиенты” → “Добавить новые OAuth-клиенты”
  • Lines 2441–2445 (префикс oAuth_*):
    • Ключ 2441: oAuthOAuth
    oAuth_client_creation_form: “Форма создания OAuth-клиента”
    oAuth_client_creation_form_description: “Это форма для создания нового OAuth-клиента”
    oAuth_client_updation_form: “Форма обновления OAuth-клиента”
    oAuth_client_updation_form_description: “Это форма для редактирования существующего OAuth-клиента”
  • Line 2762:
    “при обновлении OAuth клиента” → “при обновлении OAuth-клиента”
  • Line 2763:
    “при создании OAuth клиента” → “при создании OAuth-клиента”

После этих правок все вхождения “OAuth-клиент(ы)” будут единообразными.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json at/around lines 875–878 and
additionally update lines 879, 1889, 2441–2445, 2762–2763: standardize all
occurrences to use the same casing and hyphenation "OAuth-клиент" /
"OAuth-клиенты" (replace any "OAuth клиент", "OAuth клиенты", or "oAuth_*"
variants), rename keys that start with "oAuth" to "OAuth" (e.g.,
oAuth_client_creation_form → OAuth_client_creation_form) and update the
corresponding values to the corrected strings per the review (e.g.,
"OAuth-клиент успешно удален", "Добавить новые OAuth-клиенты", "Форма создания
OAuth-клиента", "Это форма для создания нового OAuth-клиента", "Форма обновления
OAuth-клиента", "Это форма для редактирования существующего OAuth-клиента", "при
обновлении OAuth-клиента", "при создании OAuth-клиента"); ensure JSON keys
remain unique and update any references in code if key names change.

Comment on lines 3445 to 3474
"webhook_created_at": "Webhook 的建立時間",
"webhook_type": "事件類型的代稱",
"webhook_title": "事件類型名稱",
"webhook_start_time": "事件的開始時間",
"webhook_end_time": "事件的結束時間",
"webhook_description": "事件類型設定中描述的事件描述",
"webhook_location": "事件地點",
"webhook_uid": "預約的 UID",
"webhook_reschedule_uid": "重新排程的 UID",
"webhook_cancellation_reason": "取消原因",
"webhook_rejection_reason": "拒絕原因",
"webhook_organizer_name": "主辦者姓名",
"webhook_organizer_email": "主辦者的電子郵件",
"webhook_organizer_timezone": "主辦者的時區(例如:'America/New_York'、'Asia/Kolkata')",
"webhook_organizer_locale": "主辦者的語言區域(例如:'en'、'fr')",
"webhook_attendee_name": "第一位與會者的姓名",
"webhook_attendee_email": "第一位與會者的電子郵件",
"webhook_attendee_timezone": "第一位與會者的時區",
"webhook_attendee_locale": "第一位與會者的語言區域",
"webhook_team_name": "預約的團隊名稱",
"webhook_team_members": "預約的團隊成員",
"webhook_video_call_url": "會議的視訊通話 URL",
"webhook_hide_variables": "隱藏變數",
"webhook_show_variable": "顯示可用變數",
"webhook_event_and_booking": "事件與預約",
"webhook_people": "人員",
"webhook_teams": "團隊",
"webhook_metadata": "中繼資料",
"stats": "統計",
"booking_status": "預約狀態",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Standardize “事件/活動” and clarify “type” semantics in webhook labels

These new webhook labels mix「事件」and「活動」and use「代稱」for type, which can confuse users. Elsewhere in zh-TW we predominantly use「活動」/「活動類型」. Also clarify descriptions to be concise.

Suggested updates:

-  "webhook_trigger_event": "觸發事件的名稱(例如:BOOKING_CREATED、BOOKING_CANCELLED)",
+  "webhook_trigger_event": "觸發活動的名稱(例如:BOOKING_CREATED、BOOKING_CANCELLED)",
-  "webhook_created_at": "Webhook 的建立時間",
+  "webhook_created_at": "Webhook 建立時間",
-  "webhook_type": "事件類型的代稱",
+  "webhook_type": "活動類型代碼",
-  "webhook_title": "事件類型名稱",
+  "webhook_title": "活動類型名稱",
-  "webhook_start_time": "事件的開始時間",
+  "webhook_start_time": "活動開始時間",
-  "webhook_end_time": "事件的結束時間",
+  "webhook_end_time": "活動結束時間",
-  "webhook_description": "事件類型設定中描述的事件描述",
+  "webhook_description": "活動描述(取自活動類型設定)",
-  "webhook_location": "事件地點",
+  "webhook_location": "活動地點",
-  "webhook_reschedule_uid": "重新排程的 UID",
+  "webhook_reschedule_uid": "重新安排的 UID",
-  "webhook_event_and_booking": "事件與預約",
+  "webhook_event_and_booking": "活動與預約",

Optional consistency pass:

  • Keep「Webhook」capitalization as-is (brand term), but remove unnecessary「的」for brevity (done above).
  • Ensure all other “事件” within this block use「活動」unless referring to technical “event” concepts distinct from product “活動”.
📝 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.

Suggested change
"webhook_created_at": "Webhook 的建立時間",
"webhook_type": "事件類型的代稱",
"webhook_title": "事件類型名稱",
"webhook_start_time": "事件的開始時間",
"webhook_end_time": "事件的結束時間",
"webhook_description": "事件類型設定中描述的事件描述",
"webhook_location": "事件地點",
"webhook_uid": "預約的 UID",
"webhook_reschedule_uid": "重新排程的 UID",
"webhook_cancellation_reason": "取消原因",
"webhook_rejection_reason": "拒絕原因",
"webhook_organizer_name": "主辦者姓名",
"webhook_organizer_email": "主辦者的電子郵件",
"webhook_organizer_timezone": "主辦者的時區(例如:'America/New_York'、'Asia/Kolkata')",
"webhook_organizer_locale": "主辦者的語言區域(例如:'en'、'fr')",
"webhook_attendee_name": "第一位與會者的姓名",
"webhook_attendee_email": "第一位與會者的電子郵件",
"webhook_attendee_timezone": "第一位與會者的時區",
"webhook_attendee_locale": "第一位與會者的語言區域",
"webhook_team_name": "預約的團隊名稱",
"webhook_team_members": "預約的團隊成員",
"webhook_video_call_url": "會議的視訊通話 URL",
"webhook_hide_variables": "隱藏變數",
"webhook_show_variable": "顯示可用變數",
"webhook_event_and_booking": "事件與預約",
"webhook_people": "人員",
"webhook_teams": "團隊",
"webhook_metadata": "中繼資料",
"stats": "統計",
"booking_status": "預約狀態",
"webhook_trigger_event": "觸發活動的名稱(例如:BOOKING_CREATED、BOOKING_CANCELLED)",
"webhook_created_at": "Webhook 建立時間",
"webhook_type": "活動類型代碼",
"webhook_title": "活動類型名稱",
"webhook_start_time": "活動開始時間",
"webhook_end_time": "活動結束時間",
"webhook_description": "活動描述(取自活動類型設定)",
"webhook_location": "活動地點",
"webhook_uid": "預約的 UID",
"webhook_reschedule_uid": "重新安排的 UID",
"webhook_cancellation_reason": "取消原因",
"webhook_rejection_reason": "拒絕原因",
"webhook_organizer_name": "主辦者姓名",
"webhook_organizer_email": "主辦者的電子郵件",
"webhook_organizer_timezone": "主辦者的時區(例如:'America/New_York'、'Asia/Kolkata')",
"webhook_organizer_locale": "主辦者的語言區域(例如:'en'、'fr')",
"webhook_attendee_name": "第一位與會者的姓名",
"webhook_attendee_email": "第一位與會者的電子郵件",
"webhook_attendee_timezone": "第一位與會者的時區",
"webhook_attendee_locale": "第一位與會者的語言區域",
"webhook_team_name": "預約的團隊名稱",
"webhook_team_members": "預約的團隊成員",
"webhook_video_call_url": "會議的視訊通話 URL",
"webhook_hide_variables": "隱藏變數",
"webhook_show_variable": "顯示可用變數",
"webhook_event_and_booking": "活動與預約",
"webhook_people": "人員",
"webhook_teams": "團隊",
"webhook_metadata": "中繼資料",
"stats": "統計",
"booking_status": "預約狀態",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around lines 3445 to 3474,
the new webhook labels mix 「事件」and 「活動」 and use 「代稱」for type which is
inconsistent with existing zh-TW copy; replace 「事件」 with 「活動」 throughout this
block (e.g., "活動的開始時間", "活動的結束時間"), change "事件類型的代稱" to "活動類型" (or "活動類型代稱" if a
short label is needed), remove unnecessary 「的」 for brevity where appropriate
(e.g., "主辦者電子郵件" → keep concise), keep "Webhook" capitalization, and ensure each
label uses concise, consistent phrasing matching other zh-TW entries (apply same
pattern to organizer/attendee/team/video/metadata labels).

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

@@ -349,6 +349,7 @@
"available_apps_lower_case": "Elérhető alkalmazások",
"available_apps_desc": "Nézd meg a népszerű alkalmazásokat alább és fedezz fel többet az <0>App Store</0>-ban",
"fixed_host_helper": "Add hozzá azokat, akiknek részt kell venniük az eseményen. <0>További információ</0>",
"round_robin_groups_helper": "A csoportban lévő emberek felváltva váltják egymást, minden csoportból egy személy jelenik meg az eseményen.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Clarify and de-duplicate the “groups helper” sentence; use product term

The sentence has a redundant “felváltva váltják” and reads informal. Suggest a clearer, formal phrasing and consistent “Round‑Robin”.

-  "round_robin_groups_helper": "A csoportban lévő emberek felváltva váltják egymást, minden csoportból egy személy jelenik meg az eseményen.",
+  "round_robin_groups_helper": "A Round‑Robin csoportok tagjai felváltva kerülnek kijelölésre; minden csoportból egy személy vesz részt az eseményen."
📝 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.

Suggested change
"round_robin_groups_helper": "A csoportban lévő emberek felváltva váltják egymást, minden csoportból egy személy jelenik meg az eseményen.",
"round_robin_groups_helper": "A Round-Robin csoportok tagjai felváltva kerülnek kijelölésre; minden csoportból egy személy vesz részt az eseményen.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/hu/common.json around line 352, the Hungarian
string for "round_robin_groups_helper" uses redundant wording ("felváltva
váltják") and an informal tone; replace it with a concise, formal translation
that uses the product term "Round‑Robin" and removes duplication — e.g. rephrase
to state that members of a group are selected in rotation so one person from
each group attends the event, keeping punctuation and JSON quoting intact.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Вы уже зарегистрированы на это бронирование.",
"hosts_unavailable_for_booking": "Некоторые из хостов недоступны для бронирования.",
"fixed_hosts_unavailable_for_booking": "Некоторые из закрепленных хостов недоступны для бронирования.",
"round_robin_hosts_unavailable_for_booking": "Нет доступных хостов для бронирования по принципу Round Robin.",
"round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Round Robin terminology: prefer “Организатор” and standardize casing

To stay consistent with existing keys that use “Организатор(ы)”, suggest replacing “Хост” with “Организатор” here and keep “Round Robin” casing consistent across the file.

Apply:

-  "round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
+  "round_robin_host_unavailable_for_booking": "Организатор Round Robin недоступен для бронирования.",

Optionally, run a quick scan to list mixed “host/организатор” and “Round Robin/round robin/Round‑Robin” usages:


🏁 Script executed:

#!/bin/bash
rg -n 'Round[ -]?Robin|round[ -]?robin|[Хх]ост|организатор' apps/web/public/static/locales/ru/common.json

Length of output: 9179


Consistent Round Robin terminology – replace “Хост” with “Организатор”

To align with existing keys that use “организатор” (e.g., awaiting_host: “Ожидание организатора”, hosts_unavailable_for_booking: “Некоторые из хостов…”, and the plural “организаторы” in Round Robin contexts), please update line 123 in apps/web/public/static/locales/ru/common.json:

-  "round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
+  "round_robin_host_unavailable_for_booking": "Организатор Round Robin недоступен для бронирования.",
📝 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.

Suggested change
"round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
"round_robin_host_unavailable_for_booking": "Организатор Round Robin недоступен для бронирования.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json around line 123, the
translation uses “Хост” for Round Robin but should use “Организатор” to match
existing keys; update the value for "round_robin_host_unavailable_for_booking"
to replace “Хост” with “Организатор” so the string reads accordingly and stays
consistent with other Russian locale entries.

Comment on lines +3445 to +3474
"webhook_created_at": "Время создания вебхука",
"webhook_type": "Слаг типа события",
"webhook_title": "Название типа события",
"webhook_start_time": "Время начала события",
"webhook_end_time": "Время окончания события",
"webhook_description": "Описание события, как указано в настройках типа события",
"webhook_location": "Местоположение события",
"webhook_uid": "UID бронирования",
"webhook_reschedule_uid": "UID для переноса",
"webhook_cancellation_reason": "Причина отмены",
"webhook_rejection_reason": "Причина отказа",
"webhook_organizer_name": "Имя организатора",
"webhook_organizer_email": "Электронная почта организатора",
"webhook_organizer_timezone": "Часовой пояс организатора (например, 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Локаль организатора (например, 'en', 'fr')",
"webhook_attendee_name": "Имя первого участника",
"webhook_attendee_email": "Электронная почта первого участника",
"webhook_attendee_timezone": "Часовой пояс первого участника",
"webhook_attendee_locale": "Локаль первого участника",
"webhook_team_name": "Название забронированной команды",
"webhook_team_members": "Участники забронированной команды",
"webhook_video_call_url": "URL видеозвонка для встречи",
"webhook_hide_variables": "Скрыть переменные",
"webhook_show_variable": "Показать доступные переменные",
"webhook_event_and_booking": "Событие и бронирование",
"webhook_people": "Участники",
"webhook_teams": "Команды",
"webhook_metadata": "Метаданные",
"stats": "Статистика",
"booking_status": "Статус бронирования",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Webhooks block looks solid; standardize “вебхук” spelling across file

  • New strings read well and use “вебхук/вебхука” (no hyphen), which matches “Вебхуки”. Good.
  • Older strings above still mix “веб‑хук” vs “вебхук”. Suggest normalizing to “вебхук” throughout for consistency.

Scan and replace candidates:

Example fixes outside this hunk (for follow-up):

-  "confirm_delete_webhook": "Да, удалить веб-хук",
+  "confirm_delete_webhook": "Да, удалить вебхук",
-  "edit_webhook": "Изменить веб-хук",
+  "edit_webhook": "Изменить вебхук",
-  "webhook_status": "Состояние веб-хука",
+  "webhook_status": "Состояние вебхука",

🏁 Script executed:

#!/bin/bash
# List occurrences with hyphen
rg -n 'веб-?хук' apps/web/public/static/locales/ru/common.json

Length of output: 3127


Standardize “вебхук” spelling in ru/common.json
New entries consistently use “вебхук” (no hyphen), but earlier strings still mix in “веб-хук” variants. For consistency, replace all "веб-хук"/"веб-хука"/"веб-хуком"/"веб-хуки" with "вебхук"/"вебхука"/"вебхуком"/"вебхуки".

Key occurrences to update:

  • Line 231 – confirm_delete_webhook
  • Line 232 – edit_webhook
  • Line 233 – delete_webhook
  • Line 234 – webhook_status
  • Line 241 – manage_your_webhook
  • Line 534 – create_webhook
  • Line 552 – create_new_webhook
  • Line 556 – new_webhook
  • Line 692 – edit_or_manage_webhooks
  • Line 911 – embed_and_webhooks

Example diffs:

-  "confirm_delete_webhook": "Да, удалить веб-хук",
+  "confirm_delete_webhook": "Да, удалить вебхук",

-  "edit_webhook": "Изменить веб-хук",
+  "edit_webhook": "Изменить вебхук",

-  "webhook_status": "Состояние веб-хука",
+  "webhook_status": "Состояние вебхука",

Please apply these replacements throughout
apps/web/public/static/locales/ru/common.json

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json around lines 231-241, 534-556,
692, and 911 (and elsewhere in the file), several keys and values use mixed
spellings "веб-хук", "веб-хука", "веб-хуком", "веб-хуки"; standardize them to
use the unified form without a hyphen: "вебхук", "вебхука", "вебхуком",
"вебхуки" respectively — search the file for all occurrences of the hyphenated
variants listed in the review (including confirm_delete_webhook, edit_webhook,
delete_webhook, webhook_status, manage_your_webhook, create_webhook,
create_new_webhook, new_webhook, edit_or_manage_webhooks, embed_and_webhooks)
and replace each value and key text to the non-hyphenated Russian form while
preserving surrounding JSON structure and quotes.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Ya estás registrado para esta reserva.",
"hosts_unavailable_for_booking": "Algunos de los anfitriones no están disponibles para la reserva.",
"fixed_hosts_unavailable_for_booking": "Algunos de los anfitriones fijos no están disponibles para reservar.",
"round_robin_hosts_unavailable_for_booking": "No hay anfitriones de Round Robin disponibles para reservar.",
"round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Round-robin terminology consistency

Elsewhere in this file “round robin” appears in lowercase and/or translated (“por turnos”). Consider aligning case/terminology for consistency.

Apply this diff if you prefer lowercase to match other occurrences:

-  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+  "round_robin_host_unavailable_for_booking": "El anfitrión de round robin no está disponible para reservas.",

Verify the rename was applied across locales and the old key is removed:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "New key presence across locales:"
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
rg -l '"round_robin_host_unavailable_for_booking"' apps/web/public/static/locales/*/common.json | wc -l
echo "Old key (should be 0 results):"
rg -n '"round_robin_hosts_unavailable_for_booking"' apps/web/public/static/locales/*/common.json || true

Length of output: 4441


Lowercase “round robin” in Spanish translation for consistency

The translation key remains unchanged across all locales. Only the Spanish string should use lowercase “round robin” to match other occurrences.

• File: apps/web/public/static/locales/es/common.json
• Line: 123

-  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+  "round_robin_host_unavailable_for_booking": "El anfitrión de round robin no está disponible para reservas.",
📝 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.

Suggested change
"round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
"round_robin_host_unavailable_for_booking": "El anfitrión de round robin no está disponible para reservas.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/es/common.json around line 123, the Spanish
translation uses "Round Robin" capitalized; change it to lowercase "round robin"
so the string reads: "El anfitrión de round robin no está disponible para
reservas." — update only the Spanish value (keep the key unchanged) and ensure
JSON remains valid with proper quotes and a trailing comma if required by
surrounding lines.

Comment on lines +3444 to +3472
"webhook_trigger_event": "El nombre del evento desencadenante (p. ej., BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "La hora del webhook",
"webhook_type": "El slug del tipo de evento",
"webhook_title": "El nombre del tipo de evento",
"webhook_start_time": "La hora de inicio del evento",
"webhook_end_time": "La hora de finalización del evento",
"webhook_description": "La descripción del evento según se describe en la configuración del tipo de evento",
"webhook_location": "Ubicación del evento",
"webhook_uid": "El UID de la reserva",
"webhook_reschedule_uid": "El UID para reprogramar",
"webhook_cancellation_reason": "Motivo de cancelación",
"webhook_rejection_reason": "Motivo del rechazo",
"webhook_organizer_name": "Nombre del organizador",
"webhook_organizer_email": "Correo electrónico del organizador",
"webhook_organizer_timezone": "Zona horaria del organizador (p. ej., 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Configuración regional del organizador (p. ej., 'en', 'fr')",
"webhook_attendee_name": "Nombre del primer asistente",
"webhook_attendee_email": "Correo electrónico del primer asistente",
"webhook_attendee_timezone": "Zona horaria del primer asistente",
"webhook_attendee_locale": "Configuración regional del primer asistente",
"webhook_team_name": "Nombre del equipo reservado",
"webhook_team_members": "Miembros del equipo reservado",
"webhook_video_call_url": "URL de videollamada para la reunión",
"webhook_hide_variables": "Ocultar variables",
"webhook_show_variable": "Mostrar variables disponibles",
"webhook_event_and_booking": "Evento y reserva",
"webhook_people": "Personas",
"webhook_teams": "Equipos",
"webhook_metadata": "Metadatos",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Webhook field labels: refine a couple for clarity and verify cross-locale presence

Two minor clarity tweaks suggested below; also ensure all webhook_* keys exist across locales to avoid UI gaps.

Proposed clarity tweaks:

-  "webhook_created_at": "La hora del webhook",
+  "webhook_created_at": "Fecha y hora de creación del webhook",
-  "webhook_type": "El slug del tipo de evento",
+  "webhook_type": "Identificador (slug) del tipo de evento",

Cross-locale verification:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
keys=(
  "webhook_trigger_event" "webhook_created_at" "webhook_type" "webhook_title"
  "webhook_start_time" "webhook_end_time" "webhook_description" "webhook_location"
  "webhook_uid" "webhook_reschedule_uid" "webhook_cancellation_reason"
  "webhook_rejection_reason" "webhook_organizer_name" "webhook_organizer_email"
  "webhook_organizer_timezone" "webhook_organizer_locale" "webhook_attendee_name"
  "webhook_attendee_email" "webhook_attendee_timezone" "webhook_attendee_locale"
  "webhook_team_name" "webhook_team_members" "webhook_video_call_url"
  "webhook_hide_variables" "webhook_show_variable" "webhook_event_and_booking"
  "webhook_people" "webhook_teams" "webhook_metadata" "stats" "booking_status"
)
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  c=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $c/$locales"
done

Length of output: 68373


Refine Spanish labels and add missing webhook translations across all locales

  • In apps/web/public/static/locales/es/common.json:
    - "webhook_created_at": "La hora del webhook",
    + "webhook_created_at": "Fecha y hora de creación del webhook",
    - "webhook_type": "El slug del tipo de evento",
    + "webhook_type": "Identificador (slug) del tipo de evento",
  • Cross-locale audit shows each webhook_* key is present in only 37 of 44 locale files. Please add the missing webhook_* entries to the remaining 7 locales’ common.json files to prevent untranslated labels in the UI.
📝 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.

Suggested change
"webhook_trigger_event": "El nombre del evento desencadenante (p. ej., BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "La hora del webhook",
"webhook_type": "El slug del tipo de evento",
"webhook_title": "El nombre del tipo de evento",
"webhook_start_time": "La hora de inicio del evento",
"webhook_end_time": "La hora de finalización del evento",
"webhook_description": "La descripción del evento según se describe en la configuración del tipo de evento",
"webhook_location": "Ubicación del evento",
"webhook_uid": "El UID de la reserva",
"webhook_reschedule_uid": "El UID para reprogramar",
"webhook_cancellation_reason": "Motivo de cancelación",
"webhook_rejection_reason": "Motivo del rechazo",
"webhook_organizer_name": "Nombre del organizador",
"webhook_organizer_email": "Correo electrónico del organizador",
"webhook_organizer_timezone": "Zona horaria del organizador (p. ej., 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Configuración regional del organizador (p. ej., 'en', 'fr')",
"webhook_attendee_name": "Nombre del primer asistente",
"webhook_attendee_email": "Correo electrónico del primer asistente",
"webhook_attendee_timezone": "Zona horaria del primer asistente",
"webhook_attendee_locale": "Configuración regional del primer asistente",
"webhook_team_name": "Nombre del equipo reservado",
"webhook_team_members": "Miembros del equipo reservado",
"webhook_video_call_url": "URL de videollamada para la reunión",
"webhook_hide_variables": "Ocultar variables",
"webhook_show_variable": "Mostrar variables disponibles",
"webhook_event_and_booking": "Evento y reserva",
"webhook_people": "Personas",
"webhook_teams": "Equipos",
"webhook_metadata": "Metadatos",
"webhook_trigger_event": "El nombre del evento desencadenante (p. ej., BOOKING_CREATED, BOOKING_CANCELLED)",
- "webhook_created_at": "La hora del webhook",
+ "webhook_created_at": "Fecha y hora de creación del webhook",
- "webhook_type": "El slug del tipo de evento",
+ "webhook_type": "Identificador (slug) del tipo de evento",
"webhook_title": "El nombre del tipo de evento",
"webhook_start_time": "La hora de inicio del evento",
"webhook_end_time": "La hora de finalización del evento",
"webhook_description": "La descripción del evento según se describe en la configuración del tipo de evento",
"webhook_location": "Ubicación del evento",
"webhook_uid": "El UID de la reserva",
"webhook_reschedule_uid": "El UID para reprogramar",
"webhook_cancellation_reason": "Motivo de cancelación",
"webhook_rejection_reason": "Motivo del rechazo",
"webhook_organizer_name": "Nombre del organizador",
"webhook_organizer_email": "Correo electrónico del organizador",
"webhook_organizer_timezone": "Zona horaria del organizador (p. ej., 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Configuración regional del organizador (p. ej., 'en', 'fr')",
"webhook_attendee_name": "Nombre del primer asistente",
"webhook_attendee_email": "Correo electrónico del primer asistente",
"webhook_attendee_timezone": "Zona horaria del primer asistente",
"webhook_attendee_locale": "Configuración regional del primer asistente",
"webhook_team_name": "Nombre del equipo reservado",
"webhook_team_members": "Miembros del equipo reservado",
"webhook_video_call_url": "URL de videollamada para la reunión",
"webhook_hide_variables": "Ocultar variables",
"webhook_show_variable": "Mostrar variables disponibles",
"webhook_event_and_booking": "Evento y reserva",
"webhook_people": "Personas",
"webhook_teams": "Equipos",
"webhook_metadata": "Metadatos",

Comment on lines +875 to 879
"oauth_clients": "לקוחות OAuth",
"oauth_clients_description": "נהל לקוחות OAuth עבור הארגון שלך",
"create_oauth_client": "צור לקוח OAuth",
"create_oauth_client_description": "צור לקוח OAuth חדש לאינטגרציות צד שלישי",
"oauth_client_deletion_message": "לקוח OAuth נמחק בהצלחה",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Standardize OAuth key casing across translations and code (oauth_ vs oAuth_*)*

You added new keys with oauth_* but this file still contains older oAuth_* keys later (around Lines 2441–2446). Mixed casing commonly causes lookup misses.

  • Decide on a single convention (prefer oauth_*) and migrate:
    • Translation keys in all locales:
      • oAuth_client_creation_form → oauth_client_creation_form
      • oAuth_client_creation_form_description → oauth_client_creation_form_description
      • oAuth_client_updation_form → oauth_client_updation_form
      • oAuth_client_updation_form_description → oauth_client_updation_form_description
    • Code usages accordingly.

Use this scan to locate remaining mixed-case uses in repo:


🏁 Script executed:

#!/bin/bash
echo "Translations using oAuth_* vs oauth_*:"
rg -n --glob 'apps/**/locales/**/*.json' -e '"oAuth_[^"]+"' -e '"oauth_[^"]+"'

echo -e "\nCode references:"
rg -n -e "t\\(['\"]oAuth_" -e "t\\(['\"]oauth_" apps web packages

Length of output: 53255


Standardize OAuth key casing to oauth_* across translations and code

We still have mixed‐case keys for the OAuth creation/updation forms. Please migrate the four oAuth_* keys to oauth_* in every locale and update all code references:

• Translation files (apps/web/public/static/locales/**/common.json), around line 2442 in each locale:

  • Rename "oAuth_client_creation_form""oauth_client_creation_form"
  • Rename "oAuth_client_creation_form_description""oauth_client_creation_form_description"
  • Rename "oAuth_client_updation_form""oauth_client_updation_form"
  • Rename "oAuth_client_updation_form_description""oauth_client_updation_form_description"

• Code references:

  • apps/web/modules/settings/platform/oauth-clients/create-new-view.tsx
    • Update t("oAuth_client_creation_form")t("oauth_client_creation_form")
    • Update t("oAuth_client_creation_form_description")t("oauth_client_creation_form_description")
  • apps/web/modules/settings/platform/oauth-clients/[clientId]/edit/edit-view.tsx
    • Update t("oAuth_client_updation_form")t("oauth_client_updation_form")
    • Update t("oAuth_client_updation_form_description")t("oauth_client_updation_form_description")
  • web/app/(use-page-wrapper)/settings/platform/oauth-clients/create/page.tsx & …/edit/page.tsx: same oAuth_*oauth_* updates

You can verify no stray keys remain with:

rg -n '"oAuth_client_' apps/web/public/static/locales
rg -n 't\("oAuth_client_' apps/web/modules
🤖 Prompt for AI Agents
In apps/web/public/static/locales/he/common.json around lines 875 to 879, the
OAuth translation keys use mixed casing; rename the four keys from oAuth_* to
oauth_* (oAuth_client_creation_form → oauth_client_creation_form,
oAuth_client_creation_form_description → oauth_client_creation_form_description,
oAuth_client_updation_form → oauth_client_updation_form,
oAuth_client_updation_form_description → oauth_client_updation_form_description)
in every locale file and update all code references:
apps/web/modules/settings/platform/oauth-clients/create-new-view.tsx,
apps/web/modules/settings/platform/oauth-clients/[clientId]/edit/edit-view.tsx
and the create/edit page.tsx wrappers to use t("oauth_...") instead of
t("oAuth_..."); after changes run the provided ripgrep checks to ensure no stray
oAuth_* keys or t("oAuth_*") references remain.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Već ste se prijavili za ovu rezervaciju.",
"hosts_unavailable_for_booking": "Neki od domaćina nisu dostupni za rezervaciju.",
"fixed_hosts_unavailable_for_booking": "Neki od fiksnih domaćina nisu dostupni za rezervaciju.",
"round_robin_hosts_unavailable_for_booking": "Nijedan Round Robin domaćin nije dostupan za rezervaciju.",
"round_robin_host_unavailable_for_booking": "Round Robin domaćin nije dostupan za zakazivanje.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Automate consistency audit for “Round Robin” and booking nouns.

There are still English “Round Robin” occurrences and mixed “zakazivanje/rezervacija” usage in the changed lines (e.g., Line 123 and Line 3366). Please verify and normalize across this locale.

Also applies to: 3366-3366


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="apps/web/public/static/locales/sr/common.json"

echo "— Occurrences of 'Round Robin' (should be localized) —"
rg -n -S '"[^"]*": "[^"]*Round Robin[^"]*"' "$file" || true

echo
echo "— Audit booking nouns around unavailability messages —"
rg -n -S $'"hosts_unavailable_for_booking"| "fixed_hosts_unavailable_for_booking"| "round_robin_host_unavailable_for_booking"' "$file"

echo
echo "— PBAC manage_* scope phrases (to harmonize) —"
rg -n -S '"pbac_desc_manage_[^"]*": "[^"]*u timovima organizacije|u organizaciji' "$file"

Length of output: 2977


Localize “Round Robin” and Standardize Booking Terms

We’ve identified multiple occurrences of the English term “Round Robin” in common.json that need a Serbian translation, and an inconsistency between “zakazivanje” and “rezervacija” in the host-unavailability messages. Please update as follows:

• Replace all instances of “Round Robin” with the approved Serbian term (e.g. “rotaciona dodela”):
– round_robin_host_unavailable_for_booking (line 123)
– round_robin (line 806)
– salesforce_route_to_owner (line 2963)
– salesforce_do_not_route_to_owner (line 2965)
– reset_interval_weighted_rr (line 3101)
– rr_interval_successfully_updated (line 3118)
– rr_settings_successfully_updated (line 3263)
– distribution_basis_weighted_rr (line 3264)
– rr_load_balancing_disabled_with_groups (line 3366)

• Harmonize the booking noun in unavailability messages (choose either “rezervacija” or “zakazivanje”):
– hosts_unavailable_for_booking (line 121)
– fixed_hosts_unavailable_for_booking (line 122)
– round_robin_host_unavailable_for_booking (line 123)

Please apply these changes consistently across the locale file.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/sr/common.json around lines 121–3366: replace
all occurrences of the English term "Round Robin" in the listed keys with the
approved Serbian term "rotaciona dodela" (keys at lines 123, 806, 2963, 2965,
3101, 3118, 3263, 3264, 3366) and harmonize the booking noun in the three
host-unavailable messages (lines 121, 122, 123) to use the chosen Serbian term
"rezervacija" (update hosts_unavailable_for_booking,
fixed_hosts_unavailable_for_booking, and
round_robin_host_unavailable_for_booking accordingly), ensuring the rest of each
translated string remains unchanged and formatting/JSON validity is preserved.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Du är redan anmäld till denna bokning.",
"hosts_unavailable_for_booking": "Några av värdarna är inte tillgängliga för bokning.",
"fixed_hosts_unavailable_for_booking": "Några av de fasta värdarna är inte tillgängliga för bokning.",
"round_robin_hosts_unavailable_for_booking": "Inga Round Robin-värdar är tillgängliga för bokning.",
"round_robin_host_unavailable_for_booking": "Round Robin-värden är inte tillgänglig för bokning.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Check round-robin terminology consistency and upstream usages for renamed key

String reads well, but we mix “Round Robin-”/“round robin-”/“Round-robin” elsewhere (e.g., Lines 73, 1951, 3367). Please standardize the style across the file and other locales for a consistent brand voice.

Also verify callers have switched from the previous plural key to this new singular one across the codebase.

Run to confirm no lingering usages:


🏁 Script executed:

#!/bin/bash
rg -n $'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking'

Length of output: 5791


🏁 Script executed:

#!/bin/bash
set -e

echo "Context around line 73:"
sed -n '60,90p' apps/web/public/static/locales/sv/common.json

echo
echo "Context around line 1951:"
sed -n '1930,1970p' apps/web/public/static/locales/sv/common.json

echo
echo "Context around line 3367:"
sed -n '3340,3380p' apps/web/public/static/locales/sv/common.json

Length of output: 8595


Standardize “Round Robin” Case & Hyphenation
We still see mixed casing/hyphenation in the Swedish locale (and similar patterns likely exist in other languages):

  • Line 73: “round robin-sannolikhet” (all lowercase)
  • Line 1951: “Round Robin-värdar” (capitalized)
  • Lines 3367: a mix of “round robin” and “Round Robin” in settings descriptions

Please update these entries (and mirror the change across all locale files) to use a single, consistent style (e.g. capitalize both words and use the same hyphen/-dash convention: “Round Robin-…”).

All code callers have been updated to the new singular key—no references to the old plural key remain.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/sv/common.json around line 123, standardize
all occurrences of “round robin” to use capitalized words and the hyphenated
form before nouns (e.g. "Round Robin-…"); search the file for all variants (e.g.
"round robin", "Round Robin", "round robin-sannolikhet", "Round Robin-värdar")
and replace the value text to the consistent style ("Round Robin-…") preserving
the rest of each string, then mirror the same replacements across all other
locale files so every language uses the same capitalization and hyphenation
convention.

@github-actions github-actions bot force-pushed the lingo.dev/main branch 2 times, most recently from f719da1 to e2e999a Compare August 12, 2025 13:07
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🔭 Outside diff range comments (2)
apps/web/public/static/locales/et/common.json (1)

3315-3357: Fix PBAC scope phrasing (“…organisatsiooni meeskondades”).

Earlier reviews suggested removing the clunky suffix; apply concise, natural phrasing.

-  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsiooni meeskondades",
+  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsioonis",
@@
-  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsiooni meeskondades",
+  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsioonis",
@@
-  "pbac_desc_manage_teams": "Kõik toimingud meeskondadega organisatsiooni meeskondades",
+  "pbac_desc_manage_teams": "Kõik toimingud organisatsiooni meeskondadega",
@@
-  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsiooni meeskondades",
+  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsioonis",
apps/web/public/static/locales/hu/common.json (1)

1-3476: Optional: Normalize “Round-Robin” Terminology in HU Locale

We’ve found mixed uses of körforgó vs. Round Robin vs. Round-Robin in apps/web/public/static/locales/hu/common.json. To keep the UX consistent, please pick one form (e.g. “Round-Robin”) and update these entries accordingly:

• round_robin_host_unavailable_for_booking
• round_robin_hosts
• reschedule_with_same_round_robin_host_title
• reset_interval_weighted_rr
• distribution_basis_weighted_rr
• timestamp_basis_description
• rr_load_balancing_disabled_with_groups
• round_robin_settings_description
• round_robin_settings_updated_successfully

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Вече сте записани за тази резервация.",
"hosts_unavailable_for_booking": "Някои от домакините не са налични за резервация.",
"fixed_hosts_unavailable_for_booking": "Някои от фиксираните домакини не са налични за резервация.",
"round_robin_hosts_unavailable_for_booking": "Няма налични домакини от тип Round Robin за резервация.",
"round_robin_host_unavailable_for_booking": "Домакинът на ротационния принцип не е наличен за резервация.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify key rename and locale coverage for newly added keys

  • Ensure all references to the old key are removed.
  • Check that new/renamed keys exist across all locales to avoid runtime fallbacks.

Also applies to: 3366-3366, 3445-3474


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "1) Searching for lingering uses of deprecated key(s):"
rg -n --hidden --glob '!*node_modules*' $'round_robin_hosts_unavailable_for_booking' || true

echo ""
echo "2) Verify new keys exist across all locales/common.json files:"
# List of critical new/renamed keys introduced in this PR (subset, expand as needed)
keys=(
  "round_robin_host_unavailable_for_booking"
  "oauth_clients"
  "oauth_clients_description"
  "create_oauth_client"
  "create_oauth_client_description"
  "only_admin_can_manage_directory_sync"
  "only_admin_can_manage_oauth_clients"
  "use_my_own_form"
  "use_our_headless_routing_api"
  "pbac_resource_workflow"
  "pbac_resource_attributes"
  "pbac_desc_view_organization_attributes"
  "pbac_desc_update_organization_attributes"
  "pbac_desc_delete_organization_attributes"
  "pbac_desc_create_organization_attributes"
  "pbac_desc_manage_roles"
  "pbac_desc_manage_event_types"
  "pbac_desc_manage_teams"
  "pbac_desc_manage_bookings"
  "rr_load_balancing_disabled_with_groups"
  "add_group"
  "failed_bookings"
  "webhook_created_at"
  "webhook_type"
  "webhook_description"
  "webhook_show_variable"
  "stats"
  "booking_status"
)

# Find all locale common.json files
mapfile -t files < <(fd -t f common.json apps/web/public/static/locales)

missing=0
for f in "${files[@]}"; do
  for k in "${keys[@]}"; do
    if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null; then
      echo "MISSING: $k in $f"
      missing=$((missing+1))
    fi
  done
done

echo ""
if [[ $missing -eq 0 ]]; then
  echo "All checked keys are present across locales."
else
  echo "$missing missing key occurrences found. Please add translations to avoid fallback."
fi

Length of output: 1343


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "1) Searching for lingering uses of deprecated key:"
rg -n --hidden --glob '!*node_modules*' 'round_robin_hosts_unavailable_for_booking' || true

echo
echo "2) Verifying new/renamed keys across all locale common.json files:"
keys=(
  "round_robin_host_unavailable_for_booking"
  "oauth_clients"
  "oauth_clients_description"
  "create_oauth_client"
  "create_oauth_client_description"
  "only_admin_can_manage_directory_sync"
  "only_admin_can_manage_oauth_clients"
  "use_my_own_form"
  "use_our_headless_routing_api"
  "pbac_resource_workflow"
  "pbac_resource_attributes"
  "pbac_desc_view_organization_attributes"
  "pbac_desc_update_organization_attributes"
  "pbac_desc_delete_organization_attributes"
  "pbac_desc_create_organization_attributes"
  "pbac_desc_manage_roles"
  "pbac_desc_manage_event_types"
  "pbac_desc_manage_teams"
  "pbac_desc_manage_bookings"
  "rr_load_balancing_disabled_with_groups"
  "add_group"
  "failed_bookings"
  "webhook_created_at"
  "webhook_type"
  "webhook_description"
  "webhook_show_variable"
  "stats"
  "booking_status"
)

# Gather all common.json locale files
files=$(fd -t f common.json apps/web/public/static/locales)

if [[ -z "$files" ]]; then
  echo "ERROR: No common.json files found in apps/web/public/static/locales"
  exit 1
fi

missing=0
while IFS= read -r f; do
  echo "Checking translations in: $f"
  for k in "${keys[@]}"; do
    if ! jq -e --arg key "$k" 'has($key)' "$f" >/dev/null; then
      echo "  MISSING: $k"
      missing=$((missing + 1))
    fi
  done
done <<< "$files"

echo
if [[ $missing -eq 0 ]]; then
  echo "SUCCESS: All keys are present across locales."
else
  echo "FAIL: $missing missing key occurrences found. Please add translations to avoid runtime fallback."
  exit 2
fi

Length of output: 141749


Missing translations detected for newly added localization keys

No lingering references to the deprecated key were found, but several locales are missing entries for the newly introduced keys. Please add translations for all of the following locale files to prevent runtime fallbacks:

  • apps/web/public/static/locales/hr/common.json
  • apps/web/public/static/locales/id/common.json
  • apps/web/public/static/locales/iw/common.json
  • apps/web/public/static/locales/lv/common.json
  • apps/web/public/static/locales/sk/common.json

After adding translations, re-run the locale-coverage check to confirm all keys are present.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/bg/common.json at line 123 the key
"round_robin_host_unavailable_for_booking" is present but the same key is
missing in the following locale files:
apps/web/public/static/locales/hr/common.json,
apps/web/public/static/locales/id/common.json,
apps/web/public/static/locales/iw/common.json,
apps/web/public/static/locales/lv/common.json, and
apps/web/public/static/locales/sk/common.json; add the
"round_robin_host_unavailable_for_booking" entry to each of those files with an
accurate translation equivalent to the Bulgarian text ("Host for round robin is
not available for booking"), save the files, and then re-run the locale-coverage
check to confirm all keys are present.

Comment on lines +875 to 879
"oauth_clients": "OAuth ক্লায়েন্ট",
"oauth_clients_description": "আপনার সংগঠনের জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",
"create_oauth_client": "OAuth ক্লায়েন্ট তৈরি করুন",
"create_oauth_client_description": "তৃতীয়-পক্ষের ইন্টিগ্রেশনের জন্য একটি নতুন OAuth ক্লায়েন্ট তৈরি করুন",
"oauth_client_deletion_message": "OAuth ক্লায়েন্ট সফলভাবে মুছে ফেলা হয়েছে",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Unify “সংস্থা” vs “সংগঠন” (consistency)

This file predominantly uses “সংস্থা”. Align the new OAuth strings.

-  "oauth_clients_description": "আপনার সংগঠনের জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",
+  "oauth_clients_description": "আপনার সংস্থার জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",

Run to verify remaining inconsistencies:


🏁 Script executed:

#!/bin/bash
# Count occurrences of 'সংস্থা' vs 'সংগঠন' for consistency auditing
echo "সংস্থা count:"; rg -n "সংস্থা" apps/web/public/static/locales/bn/common.json | wc -l
echo "সংগঠন count:"; rg -n "সংগঠন" apps/web/public/static/locales/bn/common.json | wc -l

Length of output: 342


Unify “সংস্থা” Terminology in bn/common.json
Consistency check shows 111 occurrences of “সংস্থা” versus 39 of “সংগঠন”. Please replace all instances of “সংগঠন” with “সংস্থা” (using the appropriate inflected form, e.g. “সংস্থার” for genitive) in apps/web/public/static/locales/bn/common.json.

• File to update:
– apps/web/public/static/locales/bn/common.json

• Example replacement:

-  "oauth_clients_description": "আপনার সংগঠনের জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",
+  "oauth_clients_description": "আপনার সংস্থার জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",

Run this to verify no “সংগঠন” remains:

rg -n "সংগঠন" apps/web/public/static/locales/bn/common.json
🤖 Prompt for AI Agents
apps/web/public/static/locales/bn/common.json around lines 875-879: the file
mixes two Bengali words for "organization" ("সংগঠন" and "সংস্থা"); replace every
instance of "সংগঠন" with the preferred term "সংস্থা", preserving correct
inflections (e.g., replace "সংগঠনের"→"সংস্থার", "সংগঠনে"→"সংস্থায়", etc.)
throughout the file so grammar remains correct; after making replacements run rg
-n "সংগঠন" apps/web/public/static/locales/bn/common.json to ensure no
occurrences remain and run a quick localization smoke test to confirm strings
still render properly.

Comment on lines +875 to +878
"oauth_clients": "OAuth clients",
"oauth_clients_description": "Beheer OAuth clients voor je organisatie",
"create_oauth_client": "OAuth client aanmaken",
"create_oauth_client_description": "Maak een nieuwe OAuth client voor integraties met derden",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Optional: verify remaining occurrences of non‑hyphenated “OAuth client(s)” and “Round Robin host”

To ensure global consistency across NL locales, scan for lingering non-hyphenated forms.

Also applies to: 1844-1845, 123-123


🏁 Script executed:

#!/bin/bash
# Search Dutch locales for non-hyphenated forms to update
rg -n --glob 'apps/web/public/static/locales/nl/**/*.json' -e '"OAuth client"' -e '"OAuth clients"' -e 'Round Robin host'

Length of output: 510


Ensure consistent hyphenation in NL locale strings

We still have non-hyphenated occurrences that need updating:

  • apps/web/public/static/locales/nl/common.json:123
    "round_robin_host_unavailable_for_booking": "Round Robin host is niet beschikbaar voor boekingen."
  • apps/web/public/static/locales/nl/common.json:875
    "oauth_clients": "OAuth clients"
  • apps/web/public/static/locales/nl/common.json:2963
    "salesforce_route_to_owner": "Contacteigenaar zal de Round Robin host zijn indien beschikbaar"

Please replace these with the hyphenated forms:

  • “Round-Robin-host”
  • “OAuth-clients”
🤖 Prompt for AI Agents
In apps/web/public/static/locales/nl/common.json around lines 875-878 (also
check lines ~123 and ~2963), replace the non-hyphenated Dutch strings with the
requested hyphenated forms: change "oauth_clients": "OAuth clients" to
"oauth_clients": "OAuth-clients", change
"round_robin_host_unavailable_for_booking": "Round Robin host is niet
beschikbaar voor boekingen." to use "Round-Robin-host", and change
"salesforce_route_to_owner": "Contacteigenaar zal de Round Robin host zijn
indien beschikbaar" to use "Round-Robin-host"; update only the string values
(keep keys unchanged), preserve surrounding JSON formatting and escaping, and
run a quick linter/JSON-parse to ensure no syntax errors.

Comment on lines 3315 to 3334
"pbac_resource_attributes": "Egenskaper",
"pbac_desc_view_organization_attributes": "Visa organisationens egenskaper",
"pbac_desc_update_organization_attributes": "Uppdatera organisationens egenskaper",
"pbac_desc_delete_organization_attributes": "Ta bort organisationens egenskaper",
"pbac_desc_create_organization_attributes": "Skapa organisationens egenskaper",
"pbac_desc_view_roles": "Visa roller",
"pbac_desc_update_roles": "Uppdatera roller",
"pbac_desc_delete_roles": "Radera roller",
"pbac_desc_manage_roles": "Alla åtgärder för roller",
"pbac_desc_manage_roles": "Alla åtgärder på roller inom organisationens team",
"pbac_desc_create_workflows": "Skapa och konfigurera nya arbetsflöden",
"pbac_desc_view_workflows": "Visa befintliga arbetsflöden och deras konfigurationer",
"pbac_desc_update_workflows": "Redigera och ändra inställningar för arbetsflöden",
"pbac_desc_delete_workflows": "Ta bort arbetsflöden från systemet",
"pbac_desc_manage_workflows": "Fullständig hantering av alla arbetsflöden",
"pbac_desc_create_event_types": "Skapa händelsetyper",
"pbac_desc_view_event_types": "Visa händelsetyper",
"pbac_desc_update_event_types": "Uppdatera händelsetyper",
"pbac_desc_delete_event_types": "Radera händelsetyper",
"pbac_desc_manage_event_types": "Alla åtgärder för händelsetyper",
"pbac_desc_manage_event_types": "Alla åtgärder händelsetyper inom organisationens team",
"pbac_desc_create_teams": "Skapa team",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Clarify org-scope PBAC descriptions (avoid “organisationens team”).

The current phrasing “inom organisationens team” is awkward/redundant. Prefer “inom organisationen” to reflect org scope and avoid “team … team”.

Apply:

-  "pbac_desc_manage_roles": "Alla åtgärder på roller inom organisationens team",
+  "pbac_desc_manage_roles": "Alla åtgärder på roller inom organisationen",
-  "pbac_desc_manage_event_types": "Alla åtgärder på händelsetyper inom organisationens team",
+  "pbac_desc_manage_event_types": "Alla åtgärder på händelsetyper inom organisationen",
-  "pbac_desc_manage_teams": "Alla åtgärder på team inom organisationens team",
+  "pbac_desc_manage_teams": "Alla åtgärder på team inom organisationen",
-  "pbac_desc_manage_bookings": "Alla åtgärder på bokningar inom organisationens team",
+  "pbac_desc_manage_bookings": "Alla åtgärder på bokningar inom organisationen"

Also applies to: 3341-3342, 3356-3357

🤖 Prompt for AI Agents
In apps/web/public/static/locales/sv/common.json around lines 3315-3334 (and
also at 3341-3342, 3356-3357), several PBAC description strings use the awkward
phrase "inom organisationens team"; update those strings to use "inom
organisationen" instead to reflect org-level scope and remove the redundant
"team" wording, ensuring you only replace the phrase where it appears and keep
the rest of each translation unchanged.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🔭 Outside diff range comments (1)
apps/web/public/static/locales/ar/common.json (1)

73-73: Also localize “round robin” reference in reassignment subtitle

Avoid embedded English in AR UI.

-  "event_reassigned_subtitle": "لن يظهر الحدث بعد الآن في تقويمك ولن يتأثر احتمال الـ round robin الخاص بك سلبًا",
+  "event_reassigned_subtitle": "لن يظهر الحدث بعد الآن في تقويمك، ولن تتأثر فرصك في الترتيب الدوري سلبًا",
♻️ Duplicate comments (75)
apps/web/public/static/locales/ko/common.json (3)

875-878: Use “타사” instead of “서드파티”

Align with more standard diction in KR locales.

   "oauth_clients": "OAuth 클라이언트",
   "oauth_clients_description": "조직의 OAuth 클라이언트 관리",
   "create_oauth_client": "OAuth 클라이언트 생성",
-  "create_oauth_client_description": "서드파티 통합을 위한 새 OAuth 클라이언트 생성",
+  "create_oauth_client_description": "타사 통합을 위한 새 OAuth 클라이언트 생성",

3444-3451: Unify “이벤트 유형” → “이벤트 타입” in webhook labels

Maintain consistency with the rest of the file (e.g., “이벤트 타입” used widely).

   "webhook_created_at": "웹훅 생성 시간",
-  "webhook_type": "이벤트 유형 슬러그",
-  "webhook_title": "이벤트 유형 이름",
+  "webhook_type": "이벤트 타입 슬러그",
+  "webhook_title": "이벤트 타입 이름",
   "webhook_start_time": "이벤트 시작 시간",
   "webhook_end_time": "이벤트 종료 시간",
-  "webhook_description": "이벤트 유형 설정에 설명된 이벤트 설명",
+  "webhook_description": "이벤트 타입 설정에 설명된 이벤트 설명",

Run a quick check to catch any remaining “이벤트 유형” in webhook-related lines:

#!/bin/bash
rg -n '이벤트 유형' apps/web/public/static/locales/ko/common.json || true

123-123: Repo-wide key presence and stale key usage check

Make sure all newly added keys exist across locales and the old renamed key isn’t used anywhere. Prior verification already flagged gaps across several locales (hr, id, lv, sk, ta, th).

#!/usr/bin/env bash
set -euo pipefail

locales_root='apps/web/public/static/locales'
old_key='round_robin_hosts_unavailable_for_booking'

echo "Searching for stale key usages (should be none):"
rg -n --fixed-strings "$old_key" "$locales_root" || true
echo

# Minimal set of newly added keys from this file to spot-check across locales
keys=(
  "round_robin_host_unavailable_for_booking"
  "round_robin_groups_helper"
  "oauth_clients"
  "oauth_clients_description"
  "create_oauth_client"
  "create_oauth_client_description"
  "only_admin_can_manage_directory_sync"
  "only_admin_can_manage_oauth_clients"
  "use_my_own_form"
  "use_our_headless_routing_api"
  "pbac_resource_workflow"
  "pbac_resource_attributes"
  "pbac_desc_manage_roles"
  "pbac_desc_manage_event_types"
  "pbac_desc_manage_teams"
  "pbac_desc_manage_bookings"
  "rr_load_balancing_disabled_with_groups"
  "add_group"
  "failed_bookings"
  "stats"
  "booking_status"
)

missing=0
fd common.json "$locales_root" --type f | while read -r file; do
  for key in "${keys[@]}"; do
    if ! jq -e --arg k "$key" 'has($k)' "$file" >/dev/null 2>&1; then
      echo "MISSING: $file$key"
      missing=1
    fi
  done
done

if [[ $missing -ne 0 ]]; then
  echo "One or more keys are missing across locales."
  exit 1
else
  echo "All checked keys present across locales."
fi

Also applies to: 352-352, 875-878, 1844-1845, 2255-2256, 3292-3292, 3323-3323, 3333-3333, 3341-3341, 3356-3356, 3366-3366, 3384-3384, 3416-3417, 3444-3474

apps/web/public/static/locales/et/common.json (4)

123-123: Standardize “host” term to Estonian (“võõrustaja”).

Keep host terminology consistent across the locale.

-  "round_robin_host_unavailable_for_booking": "Round Robin'i host ei ole broneerimiseks saadaval.",
+  "round_robin_host_unavailable_for_booking": "Round Robin'i võõrustaja ei ole broneerimiseks saadaval."

2255-2256: Use “marsruutimine” instead of “suunamine” for “routing”.

Matches the project’s preferred terminology used elsewhere in this file/locales.

-  "use_our_headless_routing_api": "Kasuta meie peata suunamise API-t ja omaenda vormi esitamiseks.",
+  "use_our_headless_routing_api": "Kasuta meie peata marsruutimise API-t ja oma vormi esitamiseks.",

3324-3324: Tighten PBAC scope descriptions (“organisatsioonis” vs. “organisatsiooni meeskondades”).

Shorter, more natural phrasing; aligns with earlier guidance.

-  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsiooni meeskondades",
+  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsioonis",
@@
-  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsiooni meeskondades",
+  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsioonis",
@@
-  "pbac_desc_manage_teams": "Kõik toimingud meeskondadega organisatsiooni meeskondades",
+  "pbac_desc_manage_teams": "Kõik toimingud organisatsiooni meeskondadega",
@@
-  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsiooni meeskondades",
+  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsioonis",

Also applies to: 3334-3334, 3342-3342, 3357-3357


3444-3464: Standardize “webhook” and related nouns; fix “slug” and “locale” nouns.

Use “veebihaak/veebihaagi” consistently; “lühinimi” for slug; “lokaat” for locale; “Ümberajastamise UID”.

   "webhook_trigger_event": "Käivitussündmuse nimi (nt BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Veebikonksu loomise aeg",
-  "webhook_type": "Sündmuse tüübi slug",
+  "webhook_created_at": "Veebihaagi loomise aeg",
+  "webhook_type": "Sündmuse tüübi lühinimi",
   "webhook_title": "Sündmuse tüübi nimi",
   "webhook_start_time": "Sündmuse algusaeg",
   "webhook_end_time": "Sündmuse lõpuaeg",
   "webhook_description": "Sündmuse kirjeldus, nagu määratud sündmuse tüübi seadetes",
   "webhook_location": "Sündmuse asukoht",
   "webhook_uid": "Broneeringu UID",
-  "webhook_reschedule_uid": "Ümberplaneerimise UID",
+  "webhook_reschedule_uid": "Ümberajastamise UID",
   "webhook_cancellation_reason": "Tühistamise põhjus",
   "webhook_rejection_reason": "Keeldumise põhjus",
   "webhook_organizer_name": "Korraldaja nimi",
   "webhook_organizer_email": "Korraldaja e-post",
   "webhook_organizer_timezone": "Korraldaja ajavöönd (nt 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Korraldaja lokaad (nt 'en', 'fr')",
+  "webhook_organizer_locale": "Korraldaja lokaat (nt 'en', 'fr')",
   "webhook_attendee_name": "Esimese osaleja nimi",
   "webhook_attendee_email": "Esimese osaleja e-post",
   "webhook_attendee_timezone": "Esimese osaleja ajavöönd",
-  "webhook_attendee_locale": "Esimese osaleja lokaad",
+  "webhook_attendee_locale": "Esimese osaleja lokaat",
apps/web/public/static/locales/az/common.json (5)

3315-3320: PBAC descriptions: use verbal-noun form, not imperative

Existing PBAC strings use verbal-noun forms (“… baxmaq/yeniləmək/silmək/yaratmaq”). These new entries use imperatives (“göstər”, “yeniləyin”, “silmək” mixed). Standardize for consistency.

Apply:

-  "pbac_desc_view_organization_attributes": "Təşkilat atributlarını göstər",
-  "pbac_desc_update_organization_attributes": "Təşkilat atributlarını yeniləyin",
-  "pbac_desc_delete_organization_attributes": "Təşkilat atributlarını silin",
-  "pbac_desc_create_organization_attributes": "Təşkilat atributları yaradın",
+  "pbac_desc_view_organization_attributes": "Təşkilat atributlarına baxmaq",
+  "pbac_desc_update_organization_attributes": "Təşkilat atributlarını yeniləmək",
+  "pbac_desc_delete_organization_attributes": "Təşkilat atributlarını silmək",
+  "pbac_desc_create_organization_attributes": "Təşkilat atributları yaratmaq",

3323-3329: PBAC workflow/roles descriptions: unify grammatical form

Align with verbal-noun style used elsewhere; avoid imperatives like “redaktə edin”, “göstərin”.

-  "pbac_desc_manage_roles": "Təşkilat komandaları üzrə bütün rollarda əməliyyatlar",
-  "pbac_desc_create_workflows": "Yeni iş axınları yaradın və qurun",
-  "pbac_desc_view_workflows": "Mövcud iş axınlarını və onların konfiqurasiyalarını göstərin",
-  "pbac_desc_update_workflows": "İş axını parametrlərini redaktə edin və dəyişdirin",
-  "pbac_desc_delete_workflows": "İş axınlarını sistemdən silin",
-  "pbac_desc_manage_workflows": "Bütün iş axınlarına tam idarəetmə girişi",
+  "pbac_desc_manage_roles": "Təşkilat komandaları üzrə bütün rollar üzrə əməliyyatlar",
+  "pbac_desc_create_workflows": "İş axınları yaratmaq və qurmaq",
+  "pbac_desc_view_workflows": "Mövcud iş axınlarını və onların konfiqurasiyalarını göstərmək",
+  "pbac_desc_update_workflows": "İş axını parametrlərini redaktə etmək və dəyişdirmək",
+  "pbac_desc_delete_workflows": "İş axınlarını sistemdən silmək",
+  "pbac_desc_manage_workflows": "İş axınları üzrə bütün əməliyyatlar",

3333-3333: PBAC event types manage: grammar alignment

Avoid mixed structure; align to the established “bütün … üzrə əməliyyatlar”.

-  "pbac_desc_manage_event_types": "Təşkilat komandaları üzrə tədbir növləri üzrə bütün əməliyyatlar",
+  "pbac_desc_manage_event_types": "Təşkilat komandaları üzrə bütün tədbir növləri üzrə əməliyyatlar",

3341-3341: PBAC teams manage: minor grammar tweak

Match “bütün … üzrə əməliyyatlar” pattern.

-  "pbac_desc_manage_teams": "Təşkilat komandaları üzrə bütün komanda əməliyyatları",
+  "pbac_desc_manage_teams": "Təşkilat komandaları üzrə bütün komandalar üzrə əməliyyatlar",

3356-3356: PBAC bookings manage: consistent phrasing

Prefer “bütün … üzrə əməliyyatlar” to mirror siblings.

-  "pbac_desc_manage_bookings": "Təşkilat komandaları üzrə bütün rezervasiya əməliyyatları",
+  "pbac_desc_manage_bookings": "Təşkilat komandaları üzrə bütün rezervasiyalar üzrə əməliyyatlar",
apps/web/public/static/locales/ca/common.json (3)

123-123: Unify “round robin” casing for consistency.

Elsewhere in this locale it’s lowercase. Align this entry.

-  "round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
+  "round_robin_host_unavailable_for_booking": "L'amfitrió de round robin no està disponible per a la reserva.",

3383-3383: Use imperative voice for action label (“Afegeix un grup”).

Matches other “add_*” keys.

-  "add_group": "Afegir grup",
+  "add_group": "Afegeix un grup",

2255-2256: Fix terminology (“routing/headless”) and grammar (“els enviaments”).

Use Catalan terms and correct article agreement.

-  "use_my_own_form": "Utilitza el meu propi formulari",
-  "use_our_headless_routing_api": "Utilitza la nostra API de routing headless i fes servir el teu propi formulari per a les enviaments.",
+  "use_my_own_form": "Utilitza el meu propi formulari",
+  "use_our_headless_routing_api": "Utilitza la nostra API d'encaminament sense interfície i fes servir el teu propi formulari per als enviaments.",
apps/web/public/static/locales/el/common.json (1)

123-123: Hyphenate “Round‑Robin” and use “διοργανωτής” for consistency

Aligns with the project’s preferred terminology used elsewhere (διοργανωτής vs οικοδεσπότης) and hyphenation.

-  "round_robin_host_unavailable_for_booking": "Ο οικοδεσπότης Round Robin δεν είναι διαθέσιμος για κράτηση.",
+  "round_robin_host_unavailable_for_booking": "Ο διοργανωτής Round-Robin δεν είναι διαθέσιμος για κράτηση.",
apps/web/public/static/locales/zh-TW/common.json (2)

875-879: 用詞不一致:「用戶端」↔「客戶端」;請與現有「OAuth 客戶端」對齊

現有字串(例如 Line 879「OAuth 客戶端已成功刪除」)使用「客戶端」。本段新增多處使用「用戶端」,導致不一致。請統一為「客戶端」。

-  "oauth_clients": "OAuth 用戶端",
-  "oauth_clients_description": "管理貴組織的 OAuth 用戶端",
-  "create_oauth_client": "建立 OAuth 用戶端",
-  "create_oauth_client_description": "為第三方整合建立新的 OAuth 用戶端"
+  "oauth_clients": "OAuth 客戶端",
+  "oauth_clients_description": "管理貴組織的 OAuth 客戶端",
+  "create_oauth_client": "建立 OAuth 客戶端",
+  "create_oauth_client_description": "為第三方整合建立新的 OAuth 客戶端"
-  "only_admin_can_manage_oauth_clients": "只有組織的管理員或擁有者可以管理 OAuth 用戶端",
+  "only_admin_can_manage_oauth_clients": "只有組織的管理員或擁有者可以管理 OAuth 客戶端",

Run this to find remaining inconsistent occurrences in this file:

#!/bin/bash
rg -n --no-heading '用戶端' apps/web/public/static/locales/zh-TW/common.json || true

Also applies to: 1844-1846


3444-3473: Standardize webhook labels: prefer「活動」over「事件」+ concise phrasing

The rest of the zh-TW UI uses「活動」as the canonical term; this block mixes in「事件」and adds unnecessary「的」. Unify terms and tighten labels.

-  "webhook_trigger_event": "觸發事件的名稱(例如:BOOKING_CREATED、BOOKING_CANCELLED)",
-  "webhook_created_at": "Webhook 的建立時間",
-  "webhook_type": "事件類型的代稱",
-  "webhook_title": "事件類型名稱",
-  "webhook_start_time": "事件的開始時間",
-  "webhook_end_time": "事件的結束時間",
-  "webhook_description": "事件的描述,根據事件類型設定中的描述",
-  "webhook_location": "事件地點",
+  "webhook_trigger_event": "觸發活動的名稱(例如:BOOKING_CREATED、BOOKING_CANCELLED)",
+  "webhook_created_at": "Webhook 建立時間",
+  "webhook_type": "活動類型代碼",
+  "webhook_title": "活動類型名稱",
+  "webhook_start_time": "活動開始時間",
+  "webhook_end_time": "活動結束時間",
+  "webhook_description": "活動描述(取自活動類型設定)",
+  "webhook_location": "活動地點",
-  "webhook_uid": "預約的 UID",
-  "webhook_reschedule_uid": "重新排程的 UID",
+  "webhook_uid": "預約 UID",
+  "webhook_reschedule_uid": "重新安排 UID",
-  "webhook_event_and_booking": "事件與預約",
+  "webhook_event_and_booking": "活動與預約",

(Leave “Webhook” capitalization as-is per brand term.)

apps/web/public/static/locales/nl/common.json (3)

123-123: Hyphenate “round-robin-host” for NL consistency

Prior feedback still applies. Use the hyphenated compound.

-  "round_robin_host_unavailable_for_booking": "Round Robin host is niet beschikbaar voor boekingen.",
+  "round_robin_host_unavailable_for_booking": "Round-robin-host is niet beschikbaar voor boekingen.",

1844-1845: Consistent wording: “mapsynchronisatie” and “OAuth‑clients”

Keep “mapsynchronisatie” (used for “directory_sync”) and hyphenate OAuth‑clients.

-  "only_admin_can_manage_directory_sync": "Alleen de beheerder of eigenaar van de organisatie kan directory sync-instellingen beheren",
-  "only_admin_can_manage_oauth_clients": "Alleen de beheerder of eigenaar van de organisatie kan OAuth clients beheren",
+  "only_admin_can_manage_directory_sync": "Alleen de beheerder of eigenaar van de organisatie kan mapsynchronisatie-instellingen beheren",
+  "only_admin_can_manage_oauth_clients": "Alleen de beheerder of eigenaar van de organisatie kan OAuth-clients beheren",

875-878: Hyphenate “OAuth‑client(s)”

Align with standard hyphenation used elsewhere in the app and NL style.

-  "oauth_clients": "OAuth clients",
-  "oauth_clients_description": "Beheer OAuth clients voor je organisatie",
-  "create_oauth_client": "OAuth client aanmaken",
-  "create_oauth_client_description": "Maak een nieuwe OAuth client voor integraties met derden",
+  "oauth_clients": "OAuth-clients",
+  "oauth_clients_description": "Beheer OAuth-clients voor je organisatie",
+  "create_oauth_client": "OAuth-client aanmaken",
+  "create_oauth_client_description": "Maak een nieuwe OAuth-client voor integraties met derden",
apps/web/public/static/locales/da/common.json (3)

1844-1846: Use product term “Directory Sync” (terminology consistency)

Match product vocabulary; “synkronisering af mapper” suggests filesystem folders. Use “Directory Sync.”

-  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for synkronisering af mapper",
+  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for Directory Sync",

3315-3320: Standardize PBAC “attributes” term to “Attributter”

Other PBAC strings use “attribut(ter)”; replace “Egenskaber.”

-  "pbac_resource_attributes": "Egenskaber",
+  "pbac_resource_attributes": "Attributter",

3445-3475: Webhook metadata: minor wording improvement for created timestamp

Prefer “Oprettelsestidspunkt for webhooken” (clearer) for webhook_created_at.

-  "webhook_created_at": "Tidspunktet for webhooken",
+  "webhook_created_at": "Oprettelsestidspunkt for webhooken",

Also ensure the new webhook_* keys are present across all locales to avoid runtime fallbacks.

apps/web/public/static/locales/es-419/common.json (1)

123-123: Consistency with prior copy decision: use “para la reserva”.

Previously suggested change for consistency with Line 121 remains unaddressed. Recommend singular form.

-  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para la reserva.",
apps/web/public/static/locales/it/common.json (2)

123-123: Normalize “round robin” and align role term with established style

Use lowercase “round robin” and “organizzatore” instead of “host” for internal consistency with nearby strings.

-  "round_robin_host_unavailable_for_booking": "L'host Round Robin non è disponibile per la prenotazione.",
+  "round_robin_host_unavailable_for_booking": "L'organizzatore round robin non è disponibile per la prenotazione.",

3366-3366: Uniformare “Round Robin” → “round robin”

Keep “round robin” lowercase for internal consistency (matches other adjustments requested in this file).

-  "rr_load_balancing_disabled_with_groups": "Il bilanciamento del carico non è disponibile con i gruppi Round Robin",
+  "rr_load_balancing_disabled_with_groups": "Il bilanciamento del carico non è disponibile con i gruppi round robin",
apps/web/public/static/locales/km/common.json (8)

352-352: Fix Khmer phrasing for “take turns” in round-robin groups.

Use “វេនគ្នា” instead of “លើកដៃ”.

Apply this diff:

-  "round_robin_groups_helper": "មនុស្សក្នុងក្រុមនឹងលើកដៃជាបន្តបន្ទាប់ ហើយមនុស្សម្នាក់ពីក្រុមនីមួយៗនឹងចូលរួមក្នុងព្រឹត្តិការណ៍។",
+  "round_robin_groups_helper": "មនុស្សក្នុងក្រុមនឹងវេនគ្នា ហើយមនុស្សម្នាក់ពីក្រុមនីមួយៗនឹងចូលរួមក្នុងព្រឹត្តិការណ៍។",

875-878: Use the consistent term for “Organization” (“អង្គការ”, not “អង្គភាព”).

Keep org terminology consistent across the km locale.

Apply this diff:

 "oauth_clients": "កម្មវិធី OAuth",
-"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គការរបស់អ្នក",
 "create_oauth_client": "បង្កើតកម្មវិធី OAuth",
 "create_oauth_client_description": "បង្កើតកម្មវិធី OAuth ថ្មីសម្រាប់ការតភ្ជាប់ជាមួយកម្មវិធីភាគីទីបី",

Run to find remaining occurrences to update similarly:

#!/bin/bash
rg -n $'អង្គភាព' apps/web/public/static/locales/km/common.json

1844-1845: Admin notices: replace “អង្គភាព” with “អង្គការ”.

Align with the rest of the locale.

Apply this diff:

-"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
+"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
-"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",
+"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",

2255-2256: “Headless” should not be translated literally.

Keep “Headless” in English for clarity.

Apply this diff:

 "use_my_own_form": "ប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់ខ្ញុំ",
-"use_our_headless_routing_api": "ប្រើ API ដឹកនាំដោយគ្មានចំណងជើងរបស់យើង និងប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",
+"use_our_headless_routing_api": "ប្រើ API Routing (Headless) របស់យើង ហើយប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",

3315-3319: PBAC attribute descriptors: replace “អង្គភាព” with “អង្គការ”.

Consistency with org phrasing.

Apply this diff:

 "pbac_resource_attributes": "គុណលក្ខណៈ",
-"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គភាព",
+"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គការ",
-"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គភាព",
+"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គការ",
-"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គភាព",
+"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គការ",
-"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គភាព",
+"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គការ",

3333-3333: PBAC event types descriptor: use organization scope phrasing.

Apply this diff:

-"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងអង្គការ",

3341-3341: PBAC teams descriptor: remove “ក្រុមអង្គភាព”.

Apply this diff:

-"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ",

3356-3356: PBAC bookings descriptor: use “អង្គការ”.

Apply this diff:

-"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាព",
+"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",
apps/web/public/static/locales/tr/common.json (5)

123-123: Align RR terminology: use “Döngüsel organizatör”.

Elsewhere in TR locale you use “Döngüsel Organizatör(ler)”. Update for consistency with in-product terminology.

Apply:

-  "round_robin_host_unavailable_for_booking": "Sıralı ev sahibi rezervasyon için uygun değil.",
+  "round_robin_host_unavailable_for_booking": "Döngüsel organizatör rezervasyon için uygun değil.",

Run to ensure no lingering usages of the old plural key remain:

#!/bin/bash
# Verify old key is not referenced anywhere
rg -n 'round_robin_hosts_unavailable_for_booking'

875-878: Standardize “Organizasyon” → “Kuruluş” (OAuth section).

TR locale elsewhere prefers “Kuruluş”. Update these new strings accordingly.

-  "oauth_clients_description": "Organizasyonunuz için OAuth istemcilerini yönetin",
+  "oauth_clients_description": "Kuruluşunuz için OAuth istemcilerini yönetin",

1844-1845: Standardize “organizasyonun” → “kuruluşun” (admin-only notices).

Keep admin notices consistent with locale-wide choice “Kuruluş”.

-  "only_admin_can_manage_directory_sync": "Dizin senkronizasyon ayarlarını yalnızca organizasyonun yöneticisi veya sahibi yönetebilir",
-  "only_admin_can_manage_oauth_clients": "OAuth istemcilerini yalnızca organizasyonun yöneticisi veya sahibi yönetebilir",
+  "only_admin_can_manage_directory_sync": "Dizin senkronizasyonu ayarlarını yalnızca kuruluşun yöneticisi veya sahibi yönetebilir",
+  "only_admin_can_manage_oauth_clients": "OAuth istemcilerini yalnızca kuruluşun yöneticisi veya sahibi yönetebilir",

3292-3292: PBAC: use “Kuruluş” for consistency across descriptors.

Replace “Organizasyon” with “Kuruluş” in these new permission descriptions.

-  "pbac_desc_view_organization_attributes": "Organizasyon özniteliklerini görüntüle",
-  "pbac_desc_update_organization_attributes": "Organizasyon özniteliklerini güncelle",
-  "pbac_desc_delete_organization_attributes": "Organizasyon özniteliklerini sil",
-  "pbac_desc_create_organization_attributes": "Organizasyon öznitelikleri oluştur",
+  "pbac_desc_view_organization_attributes": "Kuruluş özniteliklerini görüntüle",
+  "pbac_desc_update_organization_attributes": "Kuruluş özniteliklerini güncelle",
+  "pbac_desc_delete_organization_attributes": "Kuruluş özniteliklerini sil",
+  "pbac_desc_create_organization_attributes": "Kuruluş öznitelikleri oluştur",

-  "pbac_desc_manage_roles": "Organizasyon ekipleri genelinde roller üzerindeki tüm işlemler",
+  "pbac_desc_manage_roles": "Kuruluş ekipleri genelinde roller üzerindeki tüm işlemler",

-  "pbac_desc_manage_event_types": "Organizasyon ekipleri genelinde etkinlik türleri üzerindeki tüm işlemler",
+  "pbac_desc_manage_event_types": "Kuruluş ekipleri genelinde etkinlik türleri üzerindeki tüm işlemler",

-  "pbac_desc_manage_teams": "Organizasyon ekipleri genelinde ekipler üzerindeki tüm işlemler",
+  "pbac_desc_manage_teams": "Kuruluş ekipleri genelinde ekipler üzerindeki tüm işlemler",

-  "pbac_desc_manage_bookings": "Organizasyon ekipleri genelinde rezervasyonlar üzerindeki tüm işlemler",
+  "pbac_desc_manage_bookings": "Kuruluş ekipleri genelinde rezervasyonlar üzerindeki tüm işlemler",

Also applies to: 3315-3320, 3324-3329, 3333-3334, 3342-3342, 3356-3356


3444-3475: Webhook labels: unify terminology and organizer wording.

Earlier strings in this file use “Web kancası” and “Organizatör”. Update these new webhook variable labels for consistency and clarity.

-  "webhook_created_at": "Webhook zamanı",
+  "webhook_created_at": "Web kancasının oluşturulma zamanı",

-  "webhook_reschedule_uid": "Yeniden planlama için UID",
+  "webhook_reschedule_uid": "Yeniden planlama UID'si",

-  "webhook_organizer_name": "Düzenleyenin adı",
-  "webhook_organizer_email": "Düzenleyenin e-postası",
-  "webhook_organizer_timezone": "Düzenleyenin saat dilimi (örn. 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Düzenleyenin yerel ayarı (örn. 'en', 'fr')",
+  "webhook_organizer_name": "Organizatörün adı",
+  "webhook_organizer_email": "Organizatörün e-postası",
+  "webhook_organizer_timezone": "Organizatörün saat dilimi (örn. 'America/New_York', 'Asia/Kolkata')",
+  "webhook_organizer_locale": "Organizatörün yerel ayarı (örn. 'en', 'fr')",
apps/web/public/static/locales/pl/common.json (1)

3444-3467: Polish terminology consistency for webhook fields (“E‑mail”, “ustawienia regionalne”, and UID phrasing).

Unify translations to match established terminology elsewhere in the file:

  • Use “E‑mail” (with hyphen) instead of “Email”.
  • Translate “locale” as “ustawienia regionalne” (not “Język”).
  • Prefer “UID zmiany terminu” over “UID do zmiany terminu”.

Apply this diff:

-  "webhook_reschedule_uid": "UID do zmiany terminu",
+  "webhook_reschedule_uid": "UID zmiany terminu",
-  "webhook_organizer_email": "Email organizatora",
+  "webhook_organizer_email": "E-mail organizatora",
-  "webhook_organizer_locale": "Język organizatora (np. 'en', 'fr')",
+  "webhook_organizer_locale": "Ustawienia regionalne organizatora (np. 'en', 'fr')",
-  "webhook_attendee_email": "Email pierwszego uczestnika",
+  "webhook_attendee_email": "E-mail pierwszego uczestnika",
-  "webhook_attendee_locale": "Język pierwszego uczestnika",
+  "webhook_attendee_locale": "Ustawienia regionalne pierwszego uczestnika",
apps/web/public/static/locales/zh-CN/common.json (1)

3366-3366: Replace remaining English “Round Robin” with Chinese term “轮流”

Keep terminology fully localized and consistent with other strings (e.g., “轮流模式”).

Apply this diff:

-  "rr_load_balancing_disabled_with_groups": "负载均衡在 Round Robin 组中不可用",
+  "rr_load_balancing_disabled_with_groups": "轮流组中不支持负载均衡",
apps/web/public/static/locales/ar/common.json (6)

3315-3320: PBAC attributes: standardize “Organization”

Keep PBAC descriptor texts consistent.

-  "pbac_desc_view_organization_attributes": "عرض سمات المؤسسة",
-  "pbac_desc_update_organization_attributes": "تحديث سمات المؤسسة",
-  "pbac_desc_delete_organization_attributes": "حذف سمات المؤسسة",
-  "pbac_desc_create_organization_attributes": "إنشاء سمات المؤسسة",
+  "pbac_desc_view_organization_attributes": "عرض سمات المنظمة",
+  "pbac_desc_update_organization_attributes": "تحديث سمات المنظمة",
+  "pbac_desc_delete_organization_attributes": "حذف سمات المنظمة",
+  "pbac_desc_create_organization_attributes": "إنشاء سمات المنظمة",

3366-3366: Localize “round robin” in load-balancing notice

Avoid English leakage in AR locale.

-  "rr_load_balancing_disabled_with_groups": "توزيع الحمل غير متاح مع مجموعات round robin",
+  "rr_load_balancing_disabled_with_groups": "توزيع الحمل غير متاح مع مجموعات الترتيب الدوري",

1844-1845: Replace “المؤسسة” with “المنظمة” in admin notices

Align with established usage elsewhere in this file.

-  "only_admin_can_manage_directory_sync": "يمكن لمسؤول المؤسسة أو مالكها فقط إدارة إعدادات مزامنة الدليل",
-  "only_admin_can_manage_oauth_clients": "يمكن لمسؤول المؤسسة أو مالكها فقط إدارة عملاء OAuth",
+  "only_admin_can_manage_directory_sync": "يمكن لمسؤول المنظمة أو مالكها فقط إدارة إعدادات مزامنة الدليل",
+  "only_admin_can_manage_oauth_clients": "يمكن لمسؤول المنظمة أو مالكها فقط إدارة عملاء OAuth",

875-878: Unify “Organization” term to “المنظمة”

Consistency with the rest of the file.

-  "oauth_clients_description": "إدارة عملاء OAuth لمؤسستك",
+  "oauth_clients_description": "إدارة عملاء OAuth لمنظمتك",

123-123: Standardize round-robin term

Use the established Arabic term “الترتيب الدوري” instead of “التناوب الدوري”.

-  "round_robin_host_unavailable_for_booking": "مضيف التناوب الدوري غير متاح للحجز.",
+  "round_robin_host_unavailable_for_booking": "مضيف الترتيب الدوري غير متاح للحجز.",

3444-3474: Fix Arabic webhook translations and unify “الويبهوك” spelling

Please update the Arabic locale to correct mistranslations for webhook fields and standardize spelling across the file.

• In apps/web/public/static/locales/ar/common.json, around lines 3444–3474:

  • Change webhook_trigger_event to “اسم حدث المُشغِّل (مثل BOOKING_CREATED، BOOKING_CANCELLED)”
  • Change webhook_created_at to “وقت إنشاء الويبهوك”
  • Change webhook_type to “معرّف نوع الحدث”
  • Change webhook_show_variable to “إظهار المتغير المتاح”

• Across the entire file (e.g. lines 230–3192), normalize all variants of “ويب هوك”/“ويبهوك”/“الويبهوك” to:

  • Singular: “الويبهوك”
  • Plural: “الويبهوكس”

Suggested diff:

-  "webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
+  "webhook_trigger_event": "اسم حدث المُشغِّل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
-  "webhook_created_at": "وقت الويب هوك",
+  "webhook_created_at": "وقت إنشاء الويبهوك",
-  "webhook_type": "رابط نوع الحدث",
+  "webhook_type": "معرّف نوع الحدث",
-  "webhook_show_variable": "إظهار المتغيرات المتاحة",
+  "webhook_show_variable": "إظهار المتغير المتاح",

Please apply these updates and run a global replace to ensure consistency.

apps/web/public/static/locales/ro/common.json (6)

875-878: Switch to polite/plural tone (“dvs.”) for OAuth client strings.

These regressed to the informal tone. Align with the project-wide “polite” voice.

-  "oauth_clients": "Clienți OAuth",
-  "oauth_clients_description": "Gestionează clienții OAuth pentru organizația ta",
-  "create_oauth_client": "Creează un client OAuth",
-  "create_oauth_client_description": "Creează un nou client OAuth pentru integrări terțe",
+  "oauth_clients": "Clienți OAuth",
+  "oauth_clients_description": "Gestionați clienții OAuth pentru organizația dvs.",
+  "create_oauth_client": "Creați un client OAuth",
+  "create_oauth_client_description": "Creați un nou client OAuth pentru integrări terțe",

2255-2257: Use polite/plural tone for embedding/headless routing options.

Keep “Folosiți … propriul dvs.” to match the rest of the UI.

-  "use_my_own_form": "Folosește propriul meu formular",
-  "use_our_headless_routing_api": "Folosește API-ul nostru de rutare fără interfață și propriul tău formular pentru trimitere.",
+  "use_my_own_form": "Folosiți propriul dvs. formular",
+  "use_our_headless_routing_api": "Folosiți API‑ul nostru de rutare fără interfață și propriul dvs. formular pentru trimitere.",

3315-3334: PBAC descriptors: switch to polite/plural verbs (Vizualizați, Actualizați, Ștergeți, Creați, Editați, Eliminați).

Maintain consistent voice across permissions text.

-  "pbac_resource_attributes": "Atribute",
-  "pbac_desc_view_organization_attributes": "Vizualizează atributele organizației",
-  "pbac_desc_update_organization_attributes": "Actualizează atributele organizației",
-  "pbac_desc_delete_organization_attributes": "Șterge atributele organizației",
-  "pbac_desc_create_organization_attributes": "Creează atributele organizației",
+  "pbac_resource_attributes": "Atribute",
+  "pbac_desc_view_organization_attributes": "Vizualizați atributele organizației",
+  "pbac_desc_update_organization_attributes": "Actualizați atributele organizației",
+  "pbac_desc_delete_organization_attributes": "Ștergeți atributele organizației",
+  "pbac_desc_create_organization_attributes": "Creați atributele organizației",
@@
-  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
-  "pbac_desc_create_workflows": "Creează și configurează fluxuri de lucru noi",
-  "pbac_desc_view_workflows": "Vizualizează fluxurile de lucru existente și configurațiile acestora",
-  "pbac_desc_update_workflows": "Editează și modifică setările fluxurilor de lucru",
-  "pbac_desc_delete_workflows": "Elimină fluxurile de lucru din sistem",
-  "pbac_desc_manage_workflows": "Acces complet de gestionare pentru toate fluxurile de lucru",
+  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
+  "pbac_desc_create_workflows": "Creați și configurați fluxuri de lucru noi",
+  "pbac_desc_view_workflows": "Vizualizați fluxurile de lucru existente și configurațiile acestora",
+  "pbac_desc_update_workflows": "Editați și modificați setările fluxurilor de lucru",
+  "pbac_desc_delete_workflows": "Eliminați fluxurile de lucru din sistem",
+  "pbac_desc_manage_workflows": "Acces complet de gestionare pentru toate fluxurile de lucru",
@@
-  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",
+  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",
@@
-  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",
+  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",
@@
-  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",
+  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",

Note: The manage_* lines retain content; the imperative changes affect the other descriptors in this block.

Also applies to: 3341-3357


3366-3366: Keep terminology consistent: “Echilibrarea încărcării” and “round‑robin”.

Align with prior usage and glossary.

-  "rr_load_balancing_disabled_with_groups": "Distribuirea sarcinilor nu este disponibilă cu grupurile Round Robin",
+  "rr_load_balancing_disabled_with_groups": "Echilibrarea încărcării nu este disponibilă cu grupurile round‑robin",

3445-3474: Webhook labels: improve clarity, tone, and “rezervare” consistency.

  • Prefer concise “Creat la” for a timestamp label.
  • Use polite imperatives.
  • Replace “programare” with “rezervare”.
-  "webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Ora creării webhook-ului",
+  "webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Creat la",
@@
-  "webhook_hide_variables": "Ascunde variabilele",
-  "webhook_show_variable": "Afișează variabilele disponibile",
-  "webhook_event_and_booking": "Eveniment și programare",
+  "webhook_hide_variables": "Ascundeți variabilele",
+  "webhook_show_variable": "Afișați variabilele disponibile",
+  "webhook_event_and_booking": "Eveniment și rezervare",

3473-3474: Use Romanian term for booking state consistently.

Prefer “Starea rezervării”.

-  "stats": "Statistici",
-  "booking_status": "Status programare",
+  "stats": "Statistici",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/ru/common.json (4)

123-123: Use “Организатор” instead of “Хост” for Round Robin consistency

Replace “Хост” with “Организатор” to stay consistent with existing RU locale terminology (e.g., awaiting_host → “организатор”).

Apply:

-  "round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
+  "round_robin_host_unavailable_for_booking": "Организатор Round Robin недоступен для бронирования.",

Also verify there are no remaining usages of the old plural key name throughout the codebase.

#!/bin/bash
# Search for old key in repo (to ensure it's fully migrated across locales and code)
rg -n 'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking' -A 2 -B 2

875-879: Standardize OAuth hyphenation and adjacent string

The new OAuth entries use the correct “OAuth-клиент(ы)” form. Please fix the adjacent legacy string at Line 879 to match:

-  "oauth_client_deletion_message": "OAuth клиент успешно удален",
+  "oauth_client_deletion_message": "OAuth-клиент успешно удален",

Additionally, prior feedback still applies to rename keys starting with “oAuth_” (see around Lines 2441–2445) to “OAuth_” and adjust their values (“OAuth-клиент”) for casing/hyphenation consistency.


3292-3334: PBAC additions look good; adjust scope phrasing for roles

  • New resources and workflow descriptors are solid.
  • Please update scope wording for roles to reflect organization scope (not “в командах организации”), per previous guidance.

Apply:

-  "pbac_desc_manage_roles": "Все действия с ролями в командах организации",
+  "pbac_desc_manage_roles": "Все действия с ролями в организации",

Note: Keep “pbac_desc_manage_event_types” as “в командах организации” (current text is OK).


3356-3356: PBAC: bookings scope should be organization-wide

Align the bookings scope to organization level (not team-only), per prior scope updates.

-  "pbac_desc_manage_bookings": "Все действия с бронированиями в командах организации",
+  "pbac_desc_manage_bookings": "Все действия с бронированиями в организации",
apps/web/public/static/locales/uk/common.json (4)

123-123: Unify “host” terminology: replace “Організатор” with “Ведучий”.

Align with the rest of the locale where “ведучий/ведучі” is used for host.

-  "round_robin_host_unavailable_for_booking": "Організатор почергового розподілу недоступний для бронювання.",
+  "round_robin_host_unavailable_for_booking": "Ведучий почергового розподілу недоступний для бронювання.",

875-878: Hyphenate “OAuth-клієнт” and tighten phrasing.

Follow Ukrainian hyphenation for compound foreign terms and streamline sentences.

-  "oauth_clients": "OAuth клієнти",
-  "oauth_clients_description": "Керуйте OAuth клієнтами для вашої організації",
-  "create_oauth_client": "Створити OAuth клієнта",
-  "create_oauth_client_description": "Створіть нового OAuth клієнта для інтеграцій з третіми сторонами",
+  "oauth_clients": "OAuth-клієнти",
+  "oauth_clients_description": "Керуйте OAuth-клієнтами вашої організації",
+  "create_oauth_client": "Створити OAuth-клієнта",
+  "create_oauth_client_description": "Створіть нового OAuth‑клієнта для інтеграцій зі сторонніми сервісами",

1844-1845: Consistency: use “Лише …” and hyphenate “OAuth-клієнтами”.

Matches style used elsewhere (“Лише …”) and corrects hyphenation.

-  "only_admin_can_manage_directory_sync": "Тільки адміністратор або власник організації може керувати налаштуваннями синхронізації каталогу",
-  "only_admin_can_manage_oauth_clients": "Тільки адміністратор або власник організації може керувати OAuth клієнтами",
+  "only_admin_can_manage_directory_sync": "Лише адміністратор або власник організації може керувати налаштуваннями синхронізації каталогу",
+  "only_admin_can_manage_oauth_clients": "Лише адміністратор або власник організації може керувати OAuth-клієнтами",

3444-3474: Standardize: “вебгук” (not “вебхук”), lowercase “слаг”, prefer “Учасники”, and pluralize “Показати змінні”.

These align with existing usage and earlier decisions in this locale.

-  "webhook_created_at": "Час створення вебхука",
-  "webhook_type": "Слаг типу події",
+  "webhook_created_at": "Час створення вебгука",
+  "webhook_type": "слаг типу події",
@@
-  "webhook_team_members": "Члени забронованої команди",
+  "webhook_team_members": "Учасники забронованої команди",
@@
-  "webhook_show_variable": "Показати доступні змінні",
+  "webhook_show_variable": "Показати змінні",

To scan the file for remaining inconsistencies and harmonize globally, you can run:

#!/bin/bash
# Ukrainian locale consistency checks
rg -n $'вебхук|вебгук' apps/web/public/static/locales/uk/common.json
rg -n $'\\bСлаг\\b|\\bслаг\\b' apps/web/public/static/locales/uk/common.json
rg -n $'OAuth клієнт(ами|а|и)?' apps/web/public/static/locales/uk/common.json
rg -n $'Члени забронованої команди|Учасники забронованої команди' apps/web/public/static/locales/uk/common.json
apps/web/public/static/locales/no/common.json (3)

123-123: Use “bestilling” instead of “booking” (regression from earlier suggestion).

This key previously switched to “bestilling” for Norwegian style consistency. It’s reverted here.

-  "round_robin_host_unavailable_for_booking": "Round Robin-vert er ikke tilgjengelig for booking.",
+  "round_robin_host_unavailable_for_booking": "Round Robin-vert er ikke tilgjengelig for bestilling.",

3324-3341: PBAC phrasing consistency: “organisasjonens team” and “hendelsestyper”.

Earlier feedback (accepted) updated these; current values show a regression. Align terminology across the PBAC section.

-  "pbac_desc_manage_roles": "Alle handlinger på roller på tvers av organisasjonsteam",
+  "pbac_desc_manage_roles": "Alle handlinger på roller på tvers av organisasjonens team",
@@
-  "pbac_desc_manage_event_types": "Alle handlinger på arrangementstyper på tvers av organisasjonsteam",
+  "pbac_desc_manage_event_types": "Alle handlinger på hendelsestyper på tvers av organisasjonens team",
@@
-  "pbac_desc_manage_teams": "Alle handlinger på team på tvers av organisasjonsteam",
+  "pbac_desc_manage_teams": "Alle handlinger på team på tvers av organisasjonens team",
@@
-  "pbac_desc_manage_bookings": "Alle handlinger på bookinger på tvers av organisasjonsteam",
+  "pbac_desc_manage_bookings": "Alle handlinger på bookinger på tvers av organisasjonens team",

Also applies to: 3356-3356


3444-3472: Regression: webhook labels reverted to verbose sentences — switch back to concise UI labels.

These keys are used as UI labels, not help text. Prior commit trimmed them; current file reintroduces long descriptions. Re-apply concise, noun-style labels for readability.

-  "webhook_trigger_event": "Navnet på utløserhendelsen (f.eks. BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Utløserhendelse",
-  "webhook_created_at": "Tidspunktet for webhook",
+  "webhook_created_at": "Opprettet",
-  "webhook_type": "Hendelsestype-slug",
+  "webhook_type": "Hendelsestype (slug)",
-  "webhook_title": "Navnet på hendelsestypen",
+  "webhook_title": "Tittel",
-  "webhook_start_time": "Hendelsens starttid",
+  "webhook_start_time": "Starttid",
-  "webhook_end_time": "Hendelsens sluttid",
+  "webhook_end_time": "Sluttid",
-  "webhook_description": "Hendelsens beskrivelse som beskrevet i innstillingene for hendelsestypen",
+  "webhook_description": "Beskrivelse",
-  "webhook_location": "Hendelsens sted",
+  "webhook_location": "Sted",
-  "webhook_uid": "UID for bestillingen",
+  "webhook_uid": "Booking-UID",
-  "webhook_reschedule_uid": "UID for omplanlegging",
+  "webhook_reschedule_uid": "Ombookings-UID",
-  "webhook_cancellation_reason": "Grunn for avbestilling",
+  "webhook_cancellation_reason": "Avbestillingsgrunn",
-  "webhook_rejection_reason": "Grunn for avvisning",
+  "webhook_rejection_reason": "Avslagsgrunn",
-  "webhook_organizer_name": "Navn på arrangøren",
+  "webhook_organizer_name": "Arrangørens navn",
-  "webhook_organizer_email": "E-post til arrangøren",
+  "webhook_organizer_email": "Arrangørens e-post",
-  "webhook_organizer_timezone": "Tidssone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
+  "webhook_organizer_timezone": "Arrangørens tidssone",
-  "webhook_organizer_locale": "Språk for arrangøren (f.eks. 'en', 'fr')",
+  "webhook_organizer_locale": "Arrangørens språk",
-  "webhook_attendee_name": "Navn på første deltaker",
+  "webhook_attendee_name": "Første deltakers navn",
-  "webhook_attendee_email": "E-post til første deltaker",
+  "webhook_attendee_email": "Første deltakers e-post",
-  "webhook_attendee_timezone": "Tidssone for første deltaker",
+  "webhook_attendee_timezone": "Første deltakers tidssone",
-  "webhook_attendee_locale": "Språk for første deltaker",
+  "webhook_attendee_locale": "Første deltakers språk",
-  "webhook_team_name": "Navn på teamet som er bestilt",
+  "webhook_team_name": "Teamnavn",
-  "webhook_team_members": "Medlemmer av teamet som er bestilt",
+  "webhook_team_members": "Teammedlemmer",
-  "webhook_video_call_url": "Video-URL for møtet",
+  "webhook_video_call_url": "Video-URL",
-  "webhook_hide_variables": "Skjul variabler",
+  "webhook_hide_variables": "Skjul variabler",
-  "webhook_show_variable": "Vis tilgjengelige variabler",
+  "webhook_show_variable": "Vis variabler",
-  "webhook_event_and_booking": "Arrangement og bestilling",
+  "webhook_event_and_booking": "Arrangement og booking",
-  "webhook_people": "Folk",
+  "webhook_people": "Personer",
-  "webhook_teams": "Team",
+  "webhook_teams": "Team",
-  "webhook_metadata": "Metadata",
+  "webhook_metadata": "Metadata",

Please also sanity-check the rendered UI in packages/features/webhooks/components/WebhookForm.tsx to confirm the labels still fit and no explanatory text was expected.

apps/web/public/static/locales/es/common.json (4)

123-123: Lowercase “round robin” for consistency with locale usage

Use lowercase to match other occurrences and maintain terminology consistency.

-  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+  "round_robin_host_unavailable_for_booking": "El anfitrión de round robin no está disponible para reservas.",

875-878: Tone consistency: prefer “Administra” over “Gestiona”

Aligns with prevalent tone elsewhere in this file.

-  "oauth_clients_description": "Gestiona los clientes OAuth para tu organización",
+  "oauth_clients_description": "Administra los clientes OAuth para tu organización",

3416-3417: LGTM: Analytics/status labels

“Reservas fallidas” and “Estadísticas/Estado de la reserva” read well.


3444-3472: Refine two webhook labels for clarity

Improve specificity for created-at and type fields.

-  "webhook_created_at": "La hora del webhook",
+  "webhook_created_at": "Fecha y hora de creación del webhook",
-  "webhook_type": "El slug del tipo de evento",
+  "webhook_type": "Identificador (slug) del tipo de evento",
apps/web/public/static/locales/de/common.json (3)

123-123: Standardize Round‑Robin term and hyphenation (“Veranstalter”).

Use “Round‑Robin” (hyphenated) and “Veranstalter” for consistency with other entries and prior guidance.

-  "round_robin_host_unavailable_for_booking": "Round Robin-Gastgeber ist für Buchungen nicht verfügbar.",
+  "round_robin_host_unavailable_for_booking": "Round‑Robin‑Veranstalter ist für Buchungen nicht verfügbar.",

3315-3334: Fix awkward PBAC scope phrasing (“… in den Teams der Organisation”).

Avoid repetition like “Teams in den Teams…”. Use “innerhalb der Organisation” for clarity and parallelism.

-  "pbac_desc_manage_roles": "Alle Aktionen für Rollen in den Teams der Organisation",
+  "pbac_desc_manage_roles": "Alle Aktionen für Rollen innerhalb der Organisation",
-  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen in den Teams der Organisation",
+  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen innerhalb der Organisation",
-  "pbac_desc_manage_teams": "Alle Aktionen für Teams in den Teams der Organisation",
+  "pbac_desc_manage_teams": "Alle Aktionen für Teams innerhalb der Organisation",
-  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen in den Teams der Organisation",
+  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen innerhalb der Organisation",

Also applies to: 3341-3341, 3356-3356


3366-3366: Localize “Load Balancing” and hyphenate “Round‑Robin‑Gruppen”.

Align with earlier usage of “Lastverteilung”.

-  "rr_load_balancing_disabled_with_groups": "Load Balancing ist mit Round Robin Gruppen nicht verfügbar",
+  "rr_load_balancing_disabled_with_groups": "Lastverteilung ist mit Round‑Robin‑Gruppen nicht verfügbar",
apps/web/public/static/locales/ja/common.json (3)

1844-1845: Unify “Owner” term to 所有者 (not オーナー) for consistency
This mirrors prior guidance and usage elsewhere in this file.

Apply:

-  "only_admin_can_manage_directory_sync": "組織の管理者またはオーナーのみがディレクトリ同期設定を管理できます",
-  "only_admin_can_manage_oauth_clients": "組織の管理者またはオーナーのみがOAuthクライアントを管理できます",
+  "only_admin_can_manage_directory_sync": "組織の管理者または所有者のみがディレクトリ同期設定を管理できます",
+  "only_admin_can_manage_oauth_clients": "組織の管理者または所有者のみがOAuthクライアントを管理できます",

3323-3323: Replace awkward “組織チーム全体の…” with “組織全体の…”
This phrasing was previously flagged; align with the simpler, consistent form.

Apply:

-  "pbac_desc_manage_roles": "組織チーム全体のロールに対するすべてのアクション",
+  "pbac_desc_manage_roles": "組織全体のロールに対するすべてのアクション",
-  "pbac_desc_manage_event_types": "組織チーム全体のイベントタイプに対するすべてのアクション",
+  "pbac_desc_manage_event_types": "組織全体のイベントタイプに対するすべてのアクション",
-  "pbac_desc_manage_teams": "組織チーム全体のチームに対するすべてのアクション",
+  "pbac_desc_manage_teams": "組織全体のチームに対するすべてのアクション",
-  "pbac_desc_manage_bookings": "組織チーム全体の予約に対するすべてのアクション",
+  "pbac_desc_manage_bookings": "組織全体の予約に対するすべてのアクション",

Also applies to: 3333-3333, 3341-3341, 3356-3356


3366-3366: Standardize “load balancing” translation to 負荷分散
Other strings in this file already use 負荷分散; align this one.

Apply:

-  "rr_load_balancing_disabled_with_groups": "ラウンドロビングループではロードバランシングを利用できません",
+  "rr_load_balancing_disabled_with_groups": "ラウンドロビングループでは負荷分散を利用できません",

Optionally verify remaining occurrences to standardize across the file:

#!/bin/bash
rg -n 'ロードバランシング|負荷分散' apps/web/public/static/locales/ja/common.json

Comment on lines +3323 to 3329
"pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المؤسسة",
"pbac_desc_create_workflows": "إنشاء وإعداد سير عمل جديد",
"pbac_desc_view_workflows": "عرض سير العمل الحالي وإعداداته",
"pbac_desc_update_workflows": "تعديل وتغيير إعدادات سير العمل",
"pbac_desc_delete_workflows": "إزالة سير العمل من النظام",
"pbac_desc_manage_workflows": "وصول كامل لإدارة جميع سير العمل",
"pbac_desc_create_event_types": "إنشاء أنواع الأحداث",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

PBAC manage-scope strings: replace “المؤسسة” with “المنظمة”

Maintain consistent org terminology across PBAC scope lines.

-  "pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المؤسسة",
+  "pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المنظمة",
-  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المؤسسة",
+  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المنظمة",
-  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المؤسسة",
+  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المنظمة",
-  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المؤسسة",
+  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المنظمة",

Also applies to: 3333-3333, 3341-3341, 3356-3356

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ar/common.json around lines 3323-3329 (and
also update lines 3333, 3341, 3356 as noted), replace the Arabic word "المؤسسة"
with "المنظمة" in the PBAC manage-scope strings so the org terminology is
consistent; locate the PBAC scope lines that reference "المؤسسة" and change them
to use "المنظمة", then run a quick lint/locale validation to ensure no syntax
errors.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Έχετε ήδη εγγραφεί για αυτή την κράτηση",
"hosts_unavailable_for_booking": "Ορισμένοι από τους οικοδεσπότες δεν είναι διαθέσιμοι για κράτηση",
"fixed_hosts_unavailable_for_booking": "Ορισμένοι από τους σταθερούς οικοδεσπότες δεν είναι διαθέσιμοι για κράτηση.",
"round_robin_hosts_unavailable_for_booking": "Κανένας οικοδεσπότης Round Robin δεν είναι διαθέσιμος για κράτηση.",
"round_robin_host_unavailable_for_booking": "Ο οικοδεσπότης Round Robin δεν είναι διαθέσιμος για κράτηση.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify no stale references and unify “Round‑Robin” across EL locale

  • Ensure the old key round_robin_hosts_unavailable_for_booking is not referenced anywhere.
  • Standardize “Round‑Robin” hyphenation across this EL file.

Also applies to: 3366-3366


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Searching for stale key usages..."
rg -n $'round_robin_hosts_unavailable_for_booking' -g '!node_modules' || true

echo
echo "Checking EL locale for inconsistent 'Round Robin' hyphenation..."
echo "Occurrences of 'Round Robin' (should be zero after standardization):"
rg -n $'"[^"]*Round Robin[^"]*"' apps/web/public/static/locales/el/common.json || true
echo
echo "Occurrences of 'Round-Robin' (preferred):"
rg -n $'"[^"]*Round-Robin[^"]*"' apps/web/public/static/locales/el/common.json || true

Length of output: 1546


Standardize “Round-Robin” Hyphenation in EL Locale

No occurrences of the old key round_robin_hosts_unavailable_for_booking were found. However, there are several untranslated strings still using “Round Robin” without the hyphen. Please update these entries in apps/web/public/static/locales/el/common.json:

  • Line 123 (round_robin_host_unavailable_for_booking):
    “Ο οικοδεσπότης Round Robin δεν είναι διαθέσιμος για κράτηση.” → “Ο οικοδεσπότης Round-Robin δεν είναι διαθέσιμος για κράτηση.”
  • Line 806 (round_robin):
    “Round Robin” → “Round-Robin”
  • Line 3101 (reset_interval_weighted_rr):
    “Επαναφορά διαστήματος για σταθμισμένο Round Robin” → “Επαναφορά διαστήματος για σταθμισμένο Round-Robin”
  • Line 3118 (rr_interval_successfully_updated):
    “Το διάστημα Round Robin ενημερώθηκε με επιτυχία” → “Το διάστημα Round-Robin ενημερώθηκε με επιτυχία”
  • Line 3263 (rr_settings_successfully_updated):
    “Οι ρυθμίσεις Round Robin ενημερώθηκαν με επιτυχία” → “Οι ρυθμίσεις Round-Robin ενημερώθηκαν με επιτυχία”
  • Line 3264 (distribution_basis_weighted_rr):
    “Βάση κατανομής για σταθμισμένο Round Robin” → “Βάση κατανομής για σταθμισμένο Round-Robin”
  • Line 3366 (rr_load_balancing_disabled_with_groups):
    “Η εξισορρόπηση φόρτου δεν είναι διαθέσιμη με ομάδες Round Robin” → “Η εξισορρόπηση φόρτου δεν είναι διαθέσιμη με ομάδες Round-Robin”
🤖 Prompt for AI Agents
In apps/web/public/static/locales/el/common.json around lines 123, 806, 3101,
3118, 3263, 3264 and 3366, the Greek translations use "Round Robin" without the
hyphen; update the values for the specified keys to use "Round-Robin" (line 123:
round_robin_host_unavailable_for_booking → "Ο οικοδεσπότης Round-Robin δεν είναι
διαθέσιμος για κράτηση.", line 806: round_robin → "Round-Robin", line 3101:
reset_interval_weighted_rr → "Επαναφορά διαστήματος για σταθμισμένο
Round-Robin", line 3118: rr_interval_successfully_updated → "Το διάστημα
Round-Robin ενημερώθηκε με επιτυχία", line 3263:
rr_settings_successfully_updated → "Οι ρυθμίσεις Round-Robin ενημερώθηκαν με
επιτυχία", line 3264: distribution_basis_weighted_rr → "Βάση κατανομής για
σταθμισμένο Round-Robin", line 3366: rr_load_balancing_disabled_with_groups → "Η
εξισορρόπηση φόρτου δεν είναι διαθέσιμη με ομάδες Round-Robin"); ensure exact
spelling and hyphenation are applied and keep surrounding punctuation unchanged.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Je bent al ingeschreven voor deze boeking.",
"hosts_unavailable_for_booking": "Sommige hosts zijn niet beschikbaar voor boeking.",
"fixed_hosts_unavailable_for_booking": "Sommige vaste hosts zijn niet beschikbaar voor boeking.",
"round_robin_hosts_unavailable_for_booking": "Geen Round Robin hosts beschikbaar voor boeking.",
"round_robin_host_unavailable_for_booking": "Round Robin host is niet beschikbaar voor boekingen.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

One more scan for lingering non‑hyphenated forms (“Round Robin host”, “OAuth clients”)

Ensure global consistency across NL locales; a few occurrences still remain (including Salesforce routing key at Line 2963).

Run to locate lingering instances:

Also applies to: 875-878, 1844-1845, 2963-2963


🏁 Script executed:

#!/bin/bash
# Find non-hyphenated occurrences in NL locales
rg -n --glob 'apps/web/public/static/locales/nl/**/*.json' -e '"OAuth clients"' -e '"OAuth client"' -e 'Round Robin host' -e 'Round Robin' || true

Length of output: 1732


Update remaining non-hyphenated “Round Robin” and “OAuth clients” in NL locale

We still have several keys in apps/web/public/static/locales/nl/common.json using the non-hyphenated forms. Please replace:

  • "Round Robin""Round-Robin"
  • "OAuth clients""OAuth-clients"
  • "OAuth client""OAuth-client"

Affected entries:

• Line 123: round_robin_host_unavailable_for_booking
• Line 806: round_robin
• Line 875: oauth_clients
• Line 1751: billing_freeplan_description
• Line 2963: salesforce_route_to_owner
• Line 2965: salesforce_do_not_route_to_owner
• Line 3101: reset_interval_weighted_rr
• Line 3118: rr_interval_successfully_updated
• Line 3263: rr_settings_successfully_updated
• Line 3264: distribution_basis_weighted_rr
• Line 3368: round_robin_settings_updated_successfully

🤖 Prompt for AI Agents
In apps/web/public/static/locales/nl/common.json around lines 123, 806, 875,
1751, 2963, 2965, 3101, 3118, 3263, 3264 and 3368, several Dutch translation
strings use the non-hyphenated forms "Round Robin" and "OAuth clients"/"OAuth
client"; update those strings by replacing "Round Robin" with "Round-Robin",
"OAuth clients" with "OAuth-clients", and "OAuth client" with "OAuth-client"
while preserving the rest of each translation and punctuation.

Comment on lines +875 to +878
"oauth_clients": "Ứng dụng OAuth",
"oauth_clients_description": "Quản lý ứng dụng OAuth cho tổ chức của bạn",
"create_oauth_client": "Tạo ứng dụng OAuth",
"create_oauth_client_description": "Tạo một ứng dụng OAuth mới cho tích hợp bên thứ ba",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

OAuth phrasing here looks consistent; normalize across file

These four entries read well. There are still occurrences elsewhere mixing “OAuth client/Client” (English) with Vietnamese. Let’s normalize all to “Ứng dụng OAuth” for labels and “ứng dụng OAuth” mid-sentence.

Would you like me to submit a follow-up patch to unify the remaining occurrences listed below (e.g., admin_oAuth_description, oauth_client_updated_successfully, oauth_client_not_found, select_oAuth_client)?

Run to verify leftovers:


🏁 Script executed:

#!/bin/bash
rg -n --hidden $'"OAuth client"|"OAuth Client"' apps/web/public/static/locales/vi/common.json

Length of output: 94


#!/bin/bash

Look for mixed-case OAuth usages in keys/values to identify inconsistencies

rg -n 'OAuth|oAuth' apps/web/public/static/locales/vi/common.json


#!/bin/bash

Broadly search for any occurrences of “oauth” (case-insensitive) in keys or values

to identify all spots needing “Ứng dụng OAuth”/“ứng dụng OAuth” normalization.

rg -n -i 'oauth' apps/web/public/static/locales/vi/common.json


🏁 Script executed:

#!/bin/bash
# Search for all case-insensitive "oauth" occurrences to identify inconsistent phrasing
rg -n -i oauth apps/web/public/static/locales/vi/common.json

Length of output: 1792


Normalize OAuth phrasing across Vietnamese translations

I’ve found multiple inconsistent occurrences of “OAuth client/Client” in apps/web/public/static/locales/vi/common.json. To unify on “Ứng dụng OAuth” (for labels) and “ứng dụng OAuth” (within sentences), here are all the spots that would need updating:

• Line 240 (webhook_update_form_description):
“Thêm một webhook vào OAuthClient của bạn.”
→ “Thêm một webhook vào ứng dụng OAuth của bạn.”
• Line 879 (oauth_client_deletion_message):
“Đã xóa thành công OAuth client”
→ “Đã xóa thành công ứng dụng OAuth”
• Line 1889 (admin_oAuth_description):
“Thêm OAuth Client mới”
→ “Thêm ứng dụng OAuth mới”
• Line 2441 (oAuth):
“OAuth”
→ “Ứng dụng OAuth”
• Line 2442 (oAuth_client_creation_form):
“Biểu mẫu tạo OAuth client”
→ “Biểu mẫu tạo ứng dụng OAuth”
• Line 2443 (oAuth_client_creation_form_description):
“Đây là biểu mẫu để tạo một OAuth client mới”
→ “Đây là biểu mẫu để tạo một ứng dụng OAuth mới”
• Line 2444 (oAuth_client_updation_form):
“Biểu mẫu cập nhật OAuth client”
→ “Biểu mẫu cập nhật ứng dụng OAuth”
• Line 2445 (oAuth_client_updation_form_description):
“Đây là biểu mẫu để chỉnh sửa một OAuth client hiện có”
→ “Đây là biểu mẫu để chỉnh sửa một ứng dụng OAuth hiện có”
• Line 2485 (oauth_access_information):
“…Bạn cho phép ứng dụng này sử dụng thông tin…”
→ “…Bạn cho phép ứng dụng OAuth này sử dụng thông tin…”
• Line 2762 (updating_oauth_client_error):
“Đã xảy ra lỗi khi cập nhật OAuth client,…”
→ “Đã xảy ra lỗi khi cập nhật ứng dụng OAuth,…”
• Line 2763 (creating_oauth_client_error):
“Đã xảy ra lỗi khi tạo OAuth client,…”
→ “Đã xảy ra lỗi khi tạo ứng dụng OAuth,…”
• Line 3044 (managed_users_description):
“Xem tất cả người dùng được quản lý được tạo bởi OAuth client của bạn”
→ “Xem tất cả người dùng được quản lý được tạo bởi ứng dụng OAuth của bạn”
• Line 3049 (select_oAuth_client):
“Chọn OAuth Client”
→ “Chọn ứng dụng OAuth”
• Line 3187 (oauth_client_updated_successfully):
“Đã cập nhật OAuth client thành công”
→ “Đã cập nhật ứng dụng OAuth thành công”
• Line 3188 (oauth_client_not_found):
“Không tìm thấy OAuth Client.”
→ “Không tìm thấy ứng dụng OAuth.”

Let me know if you’d like me to submit a follow-up patch with these replacements.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/vi/common.json around lines 875-878, several
keys use inconsistent "OAuth client/Client" phrasing; update the listed keys to
use "Ứng dụng OAuth" for labels and "ứng dụng OAuth" within
sentences—specifically change webhook_update_form_description,
oauth_client_deletion_message, admin_oAuth_description, oAuth,
oAuth_client_creation_form, oAuth_client_creation_form_description,
oAuth_client_updation_form, oAuth_client_updation_form_description,
oauth_access_information, updating_oauth_client_error,
creating_oauth_client_error, managed_users_description, select_oAuth_client,
oauth_client_updated_successfully, and oauth_client_not_found to the
translations provided in the review (use exact casing: "Ứng dụng OAuth" for
standalone labels and "ứng dụng OAuth" inside sentences) and run a quick grep
through the file to ensure no other occurrences remain.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🔭 Outside diff range comments (2)
apps/web/public/static/locales/bn/common.json (1)

2441-2445: Update Bengali locale to use “OAuth” consistently

The Bengali translations still use “Oauth” (lowercase “a”) in four entries. Please update these to the correct “OAuth” branding in apps/web/public/static/locales/bn/common.json:

• Line 2441: "oAuth": "Oauth","oAuth": "OAuth",
• Line 2442: "oAuth_client_creation_form": "Oauth ক্লায়েন্ট তৈরির ফর্ম","oAuth_client_creation_form": "OAuth ক্লায়েন্ট তৈরির ফর্ম",
• Line 2444: "oAuth_client_updation_form": "Oauth ক্লায়েন্ট আপডেট ফর্ম","oAuth_client_updation_form": "OAuth ক্লায়েন্ট আপডেট ফর্ম",
• Line 3049: "select_oAuth_client": "Oauth ক্লায়েন্ট নির্বাচন করুন","select_oAuth_client": "OAuth ক্লায়েন্ট নির্বাচন করুন",

--- a/apps/web/public/static/locales/bn/common.json
+++ b/apps/web/public/static/locales/bn/common.json
@@ -2441,5 +2441,5 @@
   "oAuth": "Oauth",
-  "oAuth": "Oauth",
+  "oAuth": "OAuth",
   "oAuth_client_creation_form": "Oauth ক্লায়েন্ট তৈরির ফর্ম",
-  "oAuth_client_creation_form": "Oauth ক্লায়েন্ট তৈরির ফর্ম",
+  "oAuth_client_creation_form": "OAuth ক্লায়েন্ট তৈরির ফর্ম",
   "oAuth_client_creation_form_description": "এটি একটি নতুন ওআউথ ক্লায়েন্ট তৈরি করার ফর্ম",
   "oAuth_client_updation_form": "Oauth ক্লায়েন্ট আপডেট ফর্ম",
@@ -3049,1 +3049,1 @@
-  "select_oAuth_client": "Oauth ক্লায়েন্ট নির্বাচন করুন",
+  "select_oAuth_client": "OAuth ক্লায়েন্ট নির্বাচন করুন",
apps/web/public/static/locales/ja/common.json (1)

2442-2446: Unify OAuth key casing for consistency

There are both oauth_* (lines 875, 876, 879, 2485, 3187, 3188) and oAuth_* (lines 2442–2445) keys in apps/web/public/static/locales/ja/common.json. This inconsistency can lead to lookup errors—please choose one convention (e.g. all lowercase oauth_*) and align the keys.

  • apps/web/public/static/locales/ja/common.json:
    • Rename at lines 2442–2445:
      • oAuth_client_creation_formoauth_client_creation_form
      • oAuth_client_creation_form_descriptionoauth_client_creation_form_description
      • oAuth_client_updation_formoauth_client_updation_form
      • oAuth_client_updation_form_descriptionoauth_client_updation_form_description
  • Update any code or tests that reference the renamed keys.

@@ -349,6 +349,7 @@
"available_apps_lower_case": "mövcud tətbiqlər",
"available_apps_desc": "Aşağıda populyar tətbiqləri görün və <0>Tətbiq Mağazamızda</0> daha çoxunu kəşf edin",
"fixed_host_helper": "Tədbirdə iştirak etməli olan hər kəsi əlavə edin. <0>Ətraflı öyrənin</0>",
"round_robin_groups_helper": "Qrupdakı insanlar növbə ilə iştirak edir, hər qrupdan bir nəfər tədbirdə iştirak edəcək.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Grammar agreement (plural subject requires plural verb)

“insanlar ... edir” should be “edirlər”.

-  "round_robin_groups_helper": "Qrupdakı insanlar növbə ilə iştirak edir, hər qrupdan bir nəfər tədbirdə iştirak edəcək.",
+  "round_robin_groups_helper": "Qrupdakı insanlar növbə ilə iştirak edirlər, hər qrupdan bir nəfər tədbirdə iştirak edəcək.",

Additionally, for consistency, Line 353 (“round_robin_helper”) uses the same singular verb form. Consider updating it similarly:

"round_robin_helper": "Qrupdakı insanlar növbə ilə iştirak edirlər və tədbirdə yalnız bir nəfər iştirak edəcək."
🤖 Prompt for AI Agents
In apps/web/public/static/locales/az/common.json around line 352, the
Azerbaijani string uses singular verb form ("edir") with a plural subject
("insanlar"); change "edir" to the plural "edirlar/edirlər" (use the correct
orthography "edirlər") so the sentence reads "insanlar ... edirlər". Also update
the adjacent key on line 353 ("round_robin_helper") to use the same plural verb
form for consistency, e.g. replace the singular verb with "edirlər" so both
translations agree with the plural subject.

Comment on lines +875 to +878
"oauth_clients": "OAuth-Clients",
"oauth_clients_description": "Verwalten Sie OAuth-Clients für Ihre Organisation",
"create_oauth_client": "OAuth-Client erstellen",
"create_oauth_client_description": "Erstellen Sie einen neuen OAuth-Client für Drittanbieter-Integrationen",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Unify key casing for OAuth across the file (and code).

This file mixes oauth_* and oAuth* keys (e.g., Line 2441 et seq use oAuth). For consistency and discoverability, prefer oauth_* everywhere. Renaming requires updating code references accordingly.

Proposed renames in this file (non-exhaustive):

  • admin_oAuth_description → admin_oauth_description
  • oAuth → oauth
  • oAuth_client_creation_form → oauth_client_creation_form
  • oAuth_client_creation_form_description → oauth_client_creation_form_description
  • oAuth_client_updation_form → oauth_client_updation_form
  • oAuth_client_updation_form_description → oauth_client_updation_form_description
  • select_oAuth_client → select_oauth_client

Run to find mixed-case keys and usages:


🏁 Script executed:

#!/bin/bash
# List mixed-case OAuth keys in locales
rg -n --glob 'apps/web/public/static/locales/**/*.json' '"oAuth'

# Find code usages of these keys (update as needed)
rg -n "oAuth_client_|admin_oAuth_|select_oAuth_client"

Length of output: 52383


Unify OAuth key casing across locales and code

We currently have mixed‐case oauth_* and oAuth* keys in our locale files, lockfile and code. For consistency and easier maintenance, all keys should use lowercase oauth_*.

Locations requiring updates:

  • Locale files:
    • apps/web/public/static/locales/*/common.json (lines ≈2441–2445 in each language)
  • Lockfile:
    • i18n.lock entries at lines 1886, 2439–2442 and 3046
  • Code references:
    • apps/web/modules/settings/platform/oauth-clients/create-new-view.tsx
    • apps/web/modules/settings/platform/managed-users/managed-users-view.tsx
    • apps/web/modules/settings/platform/oauth-clients/[clientId]/edit/edit-view.tsx
    • apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/oAuth/page.tsx
    • apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/**

Proposed key renames (non-exhaustive):

  • oAuthoauth
  • admin_oAuth_descriptionadmin_oauth_description
  • oAuth_client_creation_formoauth_client_creation_form
  • oAuth_client_creation_form_descriptionoauth_client_creation_form_description
  • oAuth_client_updation_formoauth_client_updation_form
  • oAuth_client_updation_form_descriptionoauth_client_updation_form_description
  • select_oAuth_clientselect_oauth_client

After renaming, update all t(...) and import references accordingly and regenerate your translation lockfile.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/de/common.json around lines 875–878, keys use
mixed casing for OAuth (e.g., "oauth_*" vs "oAuth*"); update these keys to use
lowercase "oauth_*" consistently (apply same renames shown in the comment: e.g.,
oAuth → oauth, admin_oAuth_description → admin_oauth_description,
oAuth_client_creation_form → oauth_client_creation_form, etc.), then update the
same key names across all locale files under apps/web/public/static/locales,
update the corresponding i18n.lock entries (lines referenced in the review), and
search/replace all code references and t(...) calls in the listed files and any
other occurrences (apps/web/modules/settings/... and apps/web/app/... paths) so
they import/use the new lowercase keys; finally regenerate the translation
lockfile to reflect the changes.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 14

🔭 Outside diff range comments (2)
apps/web/public/static/locales/bn/common.json (1)

2441-2445: Normalize OAuth references in bn/common.json

Please unify the “OAuth” branding in apps/web/public/static/locales/bn/common.json:

• Values only (safe): change any occurrence of “Oauth” or lowercase “oAuth” in translation strings to “OAuth”
• Optional (breaking): rename keys from oAuth_*/admin_oAuth_*/select_oAuth_* to oauth_* for consistent key naming

Locations to update:

  • Line 1889: "admin_oAuth_description"
  • Lines 2441–2445: keys oAuth, oAuth_client_creation_form, oAuth_client_creation_form_description, oAuth_client_updation_form, oAuth_client_updation_form_description
  • Line 3049: "select_oAuth_client"

Minimal change (values only):

--- a/apps/web/public/static/locales/bn/common.json
+++ b/apps/web/public/static/locales/bn/common.json
@@ -2441,5 +2441,5 @@
-  "oAuth": "Oauth",
+  "oAuth": "OAuth",
-  "oAuth_client_creation_form": "Oauth ক্লায়েন্ট তৈরির ফর্ম",
+  "oAuth_client_creation_form": "OAuth ক্লায়েন্ট তৈরির ফর্ম",
-  "oAuth_client_creation_form_description": "এটি একটি নতুন ওআউথ ক্লায়েন্ট তৈরি করার ফর্ম",
+  "oAuth_client_creation_form_description": "এটি একটি নতুন OAuth ক্লায়েন্ট তৈরি করার ফর্ম",
-  "oAuth_client_updation_form": "Oauth ক্লায়েন্ট আপডেট ফর্ম",
+  "oAuth_client_updation_form": "OAuth ক্লায়েন্ট আপডেট ফর্ম",
-  "oAuth_client_updation_form_description": "এটি একটি বিদ্যমান ওআউথ ক্লায়েন্ট সম্পাদনা করার ফর্ম",
+  "oAuth_client_updation_form_description": "এটি একটি বিদ্যমান OAuth ক্লায়েন্ট সম্পাদনা করার ফর্ম",
@@ -3049 +3049 @@
-  "select_oAuth_client": "Oauth ক্লায়েন্ট নির্বাচন করুন",
+  "select_oAuth_client": "OAuth ক্লায়েন্ট নির্বাচন করুন",

Optional renaming of keys (breaking change):

--- a/apps/web/public/static/locales/bn/common.json
+++ b/apps/web/public/static/locales/bn/common.json
@@ -1889 +1889
-  "admin_oAuth_description": "নতুন OAuth ক্লায়েন্ট যুক্ত করুন",
+  "admin_oauth_description": "নতুন OAuth ক্লায়েন্ট যুক্ত করুন",
@@ -2441,5 +2441,5
-  "oAuth": "OAuth",
+  "oauth": "OAuth",
-  "oAuth_client_creation_form": "OAuth ক্লায়েন্ট তৈরির ফর্ম",
+  "oauth_client_creation_form": "OAuth ক্লায়েন্ট তৈরির ফর্ম",
-  "oAuth_client_creation_form_description": "এটি একটি নতুন OAuth ক্লায়েন্ট তৈরি করার ফর্ম",
+  "oauth_client_creation_form_description": "এটি একটি নতুন OAuth ক্লায়েন্ট তৈরি করার ফর্ম",
-  "oAuth_client_updation_form": "OAuth ক্লায়েন্ট আপডেট ফর্ম",
+  "oauth_client_updation_form": "OAuth ক্লায়েন্ট আপডেট ফর্ম",
-  "oAuth_client_updation_form_description": "এটি একটি বিদ্যমান OAuth ক্লায়েন্ট সম্পাদনা করার ফর্ম",
+  "oauth_client_updation_form_description": "এটি একটি বিদ্যমান OAuth ক্লায়েন্ট সম্পাদনা করার ফর্ম",
@@ -3049 +3049
-  "select_oAuth_client": "OAuth ক্লায়েন্ট নির্বাচন করুন",
+  "select_oauth_client": "OAuth ক্লায়েন্ট নির্বাচন করুন",
apps/web/public/static/locales/az/common.json (1)

3292-3334: PBAC descriptions: standardize to verbal-noun (…mək) forms and align scope phrasing

Several PBAC description values use imperative phrasing (“göstər”, “yaradın”, “redaktə edin”) while existing PBAC strings use verbal-noun forms (“… baxmaq”, “… yaratmaq”, “… redaktə etmək”). Also align “manage_*” scope phrasing.

Apply this diff:

-  "pbac_resource_workflow": "İş axınları",
+  "pbac_resource_workflow": "İş axınları",
   ...
-  "pbac_desc_view_organization_attributes": "Təşkilat atributlarını göstər",
-  "pbac_desc_update_organization_attributes": "Təşkilat atributlarını yeniləyin",
-  "pbac_desc_delete_organization_attributes": "Təşkilat atributlarını silin",
-  "pbac_desc_create_organization_attributes": "Təşkilat atributları yaradın",
+  "pbac_desc_view_organization_attributes": "Təşkilat atributlarına baxmaq",
+  "pbac_desc_update_organization_attributes": "Təşkilat atributlarını yeniləmək",
+  "pbac_desc_delete_organization_attributes": "Təşkilat atributlarını silmək",
+  "pbac_desc_create_organization_attributes": "Təşkilat atributları yaratmaq",
   ...
-  "pbac_desc_manage_roles": "Təşkilat komandaları üzrə bütün rollarda əməliyyatlar",
+  "pbac_desc_manage_roles": "Təşkilat komandaları üzrə bütün rollar üzrə əməliyyatlar",
   ...
-  "pbac_desc_create_workflows": "Yeni iş axınları yaradın və qurun",
-  "pbac_desc_view_workflows": "Mövcud iş axınlarını və onların konfiqurasiyalarını göstərin",
-  "pbac_desc_update_workflows": "İş axını parametrlərini redaktə edin və dəyişdirin",
-  "pbac_desc_delete_workflows": "İş axınlarını sistemdən silin",
-  "pbac_desc_manage_workflows": "Bütün iş axınlarına tam idarəetmə girişi",
+  "pbac_desc_create_workflows": "İş axınları yaratmaq və qurmaq",
+  "pbac_desc_view_workflows": "Mövcud iş axınlarını və onların konfiqurasiyalarını göstərmək",
+  "pbac_desc_update_workflows": "İş axını parametrlərini redaktə etmək və dəyişdirmək",
+  "pbac_desc_delete_workflows": "İş axınlarını sistemdən silmək",
+  "pbac_desc_manage_workflows": "İş axınları üzrə bütün əməliyyatlar",
   ...
-  "pbac_desc_manage_event_types": "Təşkilat komandaları üzrə tədbir növləri üzrə bütün əməliyyatlar",
+  "pbac_desc_manage_event_types": "Təşkilat komandaları üzrə bütün tədbir növləri üzrə əməliyyatlar",
   ...
-  "pbac_desc_manage_teams": "Təşkilat komandaları üzrə bütün komandalar üzrə əməliyyatlar",
+  "pbac_desc_manage_teams": "Təşkilat komandaları üzrə bütün komandalar üzrə əməliyyatlar",
   ...
-  "pbac_desc_manage_bookings": "Təşkilat komandaları üzrə bütün rezervasiyalar üzrə əməliyyatlar",
+  "pbac_desc_manage_bookings": "Təşkilat komandaları üzrə bütün rezervasiyalar üzrə əməliyyatlar",

Note: If the team prefers “baxmaq” → “göstərmək” consistently, update “view_*” keys accordingly, but keep verbal-noun form across the board.

Also applies to: 3341-3342, 3356-3356

Comment on lines +3315 to 3320
"pbac_resource_attributes": "বৈশিষ্ট্য",
"pbac_desc_view_organization_attributes": "সংগঠনের বৈশিষ্ট্য দেখুন",
"pbac_desc_update_organization_attributes": "সংগঠনের বৈশিষ্ট্য আপডেট করুন",
"pbac_desc_delete_organization_attributes": "সংগঠনের বৈশিষ্ট্য মুছুন",
"pbac_desc_create_organization_attributes": "সংগঠনের বৈশিষ্ট্য তৈরি করুন",
"pbac_desc_view_roles": "ভূমিকা দেখুন",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Consistent org term: replace “সংগঠনের” with “সংস্থার”

Align with prevailing term in this locale.

-  "pbac_desc_view_organization_attributes": "সংগঠনের বৈশিষ্ট্য দেখুন",
-  "pbac_desc_update_organization_attributes": "সংগঠনের বৈশিষ্ট্য আপডেট করুন",
-  "pbac_desc_delete_organization_attributes": "সংগঠনের বৈশিষ্ট্য মুছুন",
-  "pbac_desc_create_organization_attributes": "সংগঠনের বৈশিষ্ট্য তৈরি করুন",
+  "pbac_desc_view_organization_attributes": "সংস্থার বৈশিষ্ট্য দেখুন",
+  "pbac_desc_update_organization_attributes": "সংস্থার বৈশিষ্ট্য আপডেট করুন",
+  "pbac_desc_delete_organization_attributes": "সংস্থার বৈশিষ্ট্য মুছুন",
+  "pbac_desc_create_organization_attributes": "সংস্থার বৈশিষ্ট্য তৈরি করুন",

Quick audit command:


🏁 Script executed:

#!/bin/bash
echo "Occurrences of সংগঠন/সংগঠনের:"; rg -n "সংগঠন(ের)?" apps/web/public/static/locales/bn/common.json | wc -l
echo "List them to patch:"; rg -n "সংগঠন(ের)?" apps/web/public/static/locales/bn/common.json

Length of output: 4059


🏁 Script executed:

#!/bin/bash
echo "Occurrences of 'সংস্থা':"
rg -n "সংস্থা" apps/web/public/static/locales/bn/common.json | tee >(wc -l)
echo ""
echo "Sample entries with 'সংস্থা':"
rg -n "সংস্থা" apps/web/public/static/locales/bn/common.json | head -n 20

Length of output: 2269


Align org translation to “সংস্থা”
We should standardize on “সংস্থা” (and its genitive “সংস্থার”) instead of “সংগঠন” across the Bengali locale. A search shows 39 occurrences of “সংগঠন”/“সংগঠনের” in apps/web/public/static/locales/bn/common.json; all should be updated.

Key locations:

  • pbac_desc_* entries (lines 3316–3319):
    - "pbac_desc_view_organization_attributes":  "সংগঠনের বৈশিষ্ট্য দেখুন",
    - "pbac_desc_update_organization_attributes": "সংগঠনের বৈশিষ্ট্য আপডেট করুন",
    - "pbac_desc_delete_organization_attributes": "সংগঠনের বৈশিষ্ট্য মুছুন",
    - "pbac_desc_create_organization_attributes": "সংগঠনের বৈশিষ্ট্য তৈরি করুন",
    + "pbac_desc_view_organization_attributes":  "সংস্থার বৈশিষ্ট্য দেখুন",
    + "pbac_desc_update_organization_attributes": "সংস্থার বৈশিষ্ট্য আপডেট করুন",
    + "pbac_desc_delete_organization_attributes": "সংস্থার বৈশিষ্ট্য মুছুন",
    + "pbac_desc_create_organization_attributes": "সংস্থার বৈশিষ্ট্য তৈরি করুন",

Audit and bulk-replace command suggestion:

# List all hits first
rg -n --word-regexp "সংগঠন(ের)?" apps/web/public/static/locales/bn/common.json

# Then replace in-place (back up your file first!)
sed -i 's/সংগঠনের/সংস্থার/g; s/সংগঠন/সংস্থা/g' apps/web/public/static/locales/bn/common.json
🤖 Prompt for AI Agents
In apps/web/public/static/locales/bn/common.json around lines 3315 to 3320,
several PBAC entries use "সংগঠন"/"সংগঠনের" but the locale should standardize on
"সংস্থা"/"সংস্থার"; update the pbac_desc_* entries (and all other occurrences in
this file) replacing "সংগঠনের" with "সংস্থার" and "সংগঠন" with "সংস্থা" (ensure
you replace the genitive form first to avoid double-replacement), then run a
full-file search to verify all ~39 instances were updated and run the app's i18n
checks or build to confirm no missing keys or formatting regressions.

Comment on lines 3444 to 3475
"webhook_trigger_event": "Käivitussündmuse nimi (nt BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "Veebikonksu loomise aeg",
"webhook_type": "Sündmuse tüübi slug",
"webhook_title": "Sündmuse tüübi nimi",
"webhook_start_time": "Sündmuse algusaeg",
"webhook_end_time": "Sündmuse lõpuaeg",
"webhook_description": "Sündmuse kirjeldus, nagu määratud sündmuse tüübi seadetes",
"webhook_location": "Sündmuse asukoht",
"webhook_uid": "Broneeringu UID",
"webhook_reschedule_uid": "Uuesti ajastamise UID",
"webhook_cancellation_reason": "Tühistamise põhjus",
"webhook_rejection_reason": "Keeldumise põhjus",
"webhook_organizer_name": "Korraldaja nimi",
"webhook_organizer_email": "Korraldaja e-post",
"webhook_organizer_timezone": "Korraldaja ajavöönd (nt 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Korraldaja lokaad (nt 'en', 'fr')",
"webhook_attendee_name": "Esimese osaleja nimi",
"webhook_attendee_email": "Esimese osaleja e-post",
"webhook_attendee_timezone": "Esimese osaleja ajavöönd",
"webhook_attendee_locale": "Esimese osaleja lokaad",
"webhook_team_name": "Broneeritud meeskonna nimi",
"webhook_team_members": "Broneeritud meeskonna liikmed",
"webhook_video_call_url": "Koosoleku videokõne URL",
"webhook_hide_variables": "Peida muutujad",
"webhook_show_variable": "Näita saadaolevaid muutujaid",
"webhook_event_and_booking": "Sündmus ja broneering",
"webhook_people": "Inimesed",
"webhook_teams": "Meeskonnad",
"webhook_metadata": "Metaandmed",
"stats": "Statistika",
"booking_status": "Broneeringu staatus",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Standardize “webhook” terminology and fix nouns (“slug”, “lokaad”)

Use “veebihaak/veebihaagi” consistently, replace “slug” → “lühinimi”, and “lokaad” → “lokaat”. Also prefer “Ümberajastamise UID”.

-  "webhook_trigger_event": "Käivitussündmuse nimi (nt BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Veebikonksu loomise aeg",
-  "webhook_type": "Sündmuse tüübi slug",
+  "webhook_trigger_event": "Käivitussündmuse nimi (nt BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Veebihaagi loomise aeg",
+  "webhook_type": "Sündmuse tüübi lühinimi",
@@
-  "webhook_reschedule_uid": "Uuesti ajastamise UID",
+  "webhook_reschedule_uid": "Ümberajastamise UID",
@@
-  "webhook_organizer_locale": "Korraldaja lokaad (nt 'en', 'fr')",
+  "webhook_organizer_locale": "Korraldaja lokaat (nt 'en', 'fr')",
@@
-  "webhook_attendee_locale": "Esimese osaleja lokaad",
+  "webhook_attendee_locale": "Esimese osaleja lokaat",
@@
-  "webhook_test": "Veebihaagi test",
-  "webhook_update_form": "Webhooki uuendamise vorm",
-  "webhook_update_form_description": "Lisa webhook oma OAuthCliendile.",
+  "webhook_test": "Veebihaagi test",
+  "webhook_update_form": "Veebihaagi uuendamise vorm",
+  "webhook_update_form_description": "Lisa veebihaak oma OAuth-kliendile.",
@@
-  "webhook_teams": "Meeskonnad",
-  "webhook_metadata": "Metaandmed",
+  "webhook_teams": "Meeskonnad",
+  "webhook_metadata": "Metaandmed",

Note: the rest of the webhook block already reads well.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/et/common.json around lines 3444-3475,
standardize the translation strings by replacing English “webhook” terminology
with a consistent Estonian term (use "veebihaak" or the appropriate inflected
form "veebihaagi" consistently across values), change "slug" to "lühinimi", fix
"lokaad" to "lokaat", and change "Uuesti ajastamise UID" to "Ümberajastamise
UID"; update each relevant value in the webhook block so all occurrences reflect
these replacements while preserving the original meaning and punctuation.

Comment on lines 3444 to 3473
"webhook_trigger_event": "Navnet på utløserhendelsen (f.eks. BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "Tidspunktet for webhook",
"webhook_type": "Hendelsestype-slug",
"webhook_title": "Navnet på hendelsestypen",
"webhook_start_time": "Hendelsens starttid",
"webhook_end_time": "Hendelsens sluttid",
"webhook_description": "Hendelsens beskrivelse som beskrevet i innstillingene for hendelsestypen",
"webhook_location": "Hendelsens sted",
"webhook_uid": "UID for bestillingen",
"webhook_reschedule_uid": "UID for omplanlegging",
"webhook_cancellation_reason": "Grunn for avbestilling",
"webhook_rejection_reason": "Grunn for avvisning",
"webhook_organizer_name": "Navn på arrangøren",
"webhook_organizer_email": "E-post til arrangøren",
"webhook_organizer_timezone": "Tidssone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Språk for arrangøren (f.eks. 'en', 'fr')",
"webhook_attendee_name": "Navn på første deltaker",
"webhook_attendee_email": "E-post til første deltaker",
"webhook_attendee_timezone": "Tidssone for første deltaker",
"webhook_attendee_locale": "Språk for første deltaker",
"webhook_team_name": "Navn på teamet som er bestilt",
"webhook_team_members": "Medlemmer av teamet som er bestilt",
"webhook_video_call_url": "Video-URL for møtet",
"webhook_hide_variables": "Skjul variabler",
"webhook_show_variable": "Vis tilgjengelige variabler",
"webhook_event_and_booking": "Arrangement og bestilling",
"webhook_people": "Folk",
"webhook_teams": "Team",
"webhook_metadata": "Metadata",
"stats": "Statistikk",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Switch verbose webhook strings to concise, label-style text.

These keys are used as UI labels; shorter noun-style labels improve readability and match patterns used elsewhere.

-  "webhook_trigger_event": "Navnet på utløserhendelsen (f.eks. BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Utløserhendelse",
-  "webhook_created_at": "Tidspunktet for webhook",
+  "webhook_created_at": "Opprettet",
-  "webhook_type": "Hendelsestype-slug",
+  "webhook_type": "Hendelsestype (slug)",
-  "webhook_title": "Navnet på hendelsestypen",
+  "webhook_title": "Tittel",
-  "webhook_start_time": "Hendelsens starttid",
+  "webhook_start_time": "Starttid",
-  "webhook_end_time": "Hendelsens sluttid",
+  "webhook_end_time": "Sluttid",
-  "webhook_description": "Hendelsens beskrivelse som beskrevet i innstillingene for hendelsestypen",
+  "webhook_description": "Beskrivelse",
-  "webhook_location": "Hendelsens sted",
+  "webhook_location": "Sted",
-  "webhook_uid": "UID for bestillingen",
+  "webhook_uid": "Booking‑UID",
-  "webhook_reschedule_uid": "UID for omplanlegging",
+  "webhook_reschedule_uid": "Ombookings‑UID",
-  "webhook_cancellation_reason": "Grunn for avbestilling",
+  "webhook_cancellation_reason": "Avbestillingsgrunn",
-  "webhook_rejection_reason": "Grunn for avvisning",
+  "webhook_rejection_reason": "Avslagsgrunn",
-  "webhook_organizer_name": "Navn på arrangøren",
+  "webhook_organizer_name": "Arrangørens navn",
-  "webhook_organizer_email": "E-post til arrangøren",
+  "webhook_organizer_email": "Arrangørens e‑post",
-  "webhook_organizer_timezone": "Tidssone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
+  "webhook_organizer_timezone": "Arrangørens tidssone",
-  "webhook_organizer_locale": "Språk for arrangøren (f.eks. 'en', 'fr')",
+  "webhook_organizer_locale": "Arrangørens språk",
-  "webhook_attendee_name": "Navn på første deltaker",
+  "webhook_attendee_name": "Første deltakers navn",
-  "webhook_attendee_email": "E-post til første deltaker",
+  "webhook_attendee_email": "Første deltakers e‑post",
-  "webhook_attendee_timezone": "Tidssone for første deltaker",
+  "webhook_attendee_timezone": "Første deltakers tidssone",
-  "webhook_attendee_locale": "Språk for første deltaker",
+  "webhook_attendee_locale": "Første deltakers språk",
-  "webhook_team_name": "Navn på teamet som er bestilt",
+  "webhook_team_name": "Teamnavn",
-  "webhook_team_members": "Medlemmer av teamet som er bestilt",
+  "webhook_team_members": "Teammedlemmer",
-  "webhook_video_call_url": "Video-URL for møtet",
+  "webhook_video_call_url": "Video‑URL",
-  "webhook_hide_variables": "Skjul variabler",
+  "webhook_hide_variables": "Skjul variabler",
-  "webhook_show_variable": "Vis tilgjengelige variabler",
+  "webhook_show_variable": "Vis variabler",
-  "webhook_event_and_booking": "Arrangement og bestilling",
+  "webhook_event_and_booking": "Arrangement og booking",
-  "webhook_people": "Folk",
+  "webhook_people": "Personer",
-  "webhook_teams": "Team",
+  "webhook_teams": "Team",
-  "webhook_metadata": "Metadata",
+  "webhook_metadata": "Metadata",
📝 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.

Suggested change
"webhook_trigger_event": "Navnet på utløserhendelsen (f.eks. BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "Tidspunktet for webhook",
"webhook_type": "Hendelsestype-slug",
"webhook_title": "Navnet på hendelsestypen",
"webhook_start_time": "Hendelsens starttid",
"webhook_end_time": "Hendelsens sluttid",
"webhook_description": "Hendelsens beskrivelse som beskrevet i innstillingene for hendelsestypen",
"webhook_location": "Hendelsens sted",
"webhook_uid": "UID for bestillingen",
"webhook_reschedule_uid": "UID for omplanlegging",
"webhook_cancellation_reason": "Grunn for avbestilling",
"webhook_rejection_reason": "Grunn for avvisning",
"webhook_organizer_name": "Navn på arrangøren",
"webhook_organizer_email": "E-post til arrangøren",
"webhook_organizer_timezone": "Tidssone for arrangøren (f.eks. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Språk for arrangøren (f.eks. 'en', 'fr')",
"webhook_attendee_name": "Navn på første deltaker",
"webhook_attendee_email": "E-post til første deltaker",
"webhook_attendee_timezone": "Tidssone for første deltaker",
"webhook_attendee_locale": "Språk for første deltaker",
"webhook_team_name": "Navn på teamet som er bestilt",
"webhook_team_members": "Medlemmer av teamet som er bestilt",
"webhook_video_call_url": "Video-URL for møtet",
"webhook_hide_variables": "Skjul variabler",
"webhook_show_variable": "Vis tilgjengelige variabler",
"webhook_event_and_booking": "Arrangement og bestilling",
"webhook_people": "Folk",
"webhook_teams": "Team",
"webhook_metadata": "Metadata",
"stats": "Statistikk",
"webhook_trigger_event": "Utløserhendelse",
"webhook_created_at": "Opprettet",
"webhook_type": "Hendelsestype (slug)",
"webhook_title": "Tittel",
"webhook_start_time": "Starttid",
"webhook_end_time": "Sluttid",
"webhook_description": "Beskrivelse",
"webhook_location": "Sted",
"webhook_uid": "Booking-UID",
"webhook_reschedule_uid": "Ombookings-UID",
"webhook_cancellation_reason": "Avbestillingsgrunn",
"webhook_rejection_reason": "Avslagsgrunn",
"webhook_organizer_name": "Arrangørens navn",
"webhook_organizer_email": "Arrangørens e-post",
"webhook_organizer_timezone": "Arrangørens tidssone",
"webhook_organizer_locale": "Arrangørens språk",
"webhook_attendee_name": "Første deltakers navn",
"webhook_attendee_email": "Første deltakers e-post",
"webhook_attendee_timezone": "Første deltakers tidssone",
"webhook_attendee_locale": "Første deltakers språk",
"webhook_team_name": "Teamnavn",
"webhook_team_members": "Teammedlemmer",
"webhook_video_call_url": "Video-URL",
"webhook_hide_variables": "Skjul variabler",
"webhook_show_variable": "Vis variabler",
"webhook_event_and_booking": "Arrangement og booking",
"webhook_people": "Personer",
"webhook_teams": "Team",
"webhook_metadata": "Metadata",
"stats": "Statistikk",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/no/common.json around lines 3444-3473, the
webhook label values are written as long descriptive sentences; convert each
value to concise, label-style nouns/short phrases (e.g., "Trigger", "Created
at", "Type", "Title", "Start time", "End time", "Description", "Location",
"Booking UID", "Reschedule UID", "Cancellation reason", "Rejection reason",
"Organizer name", "Organizer email", "Organizer timezone", "Organizer locale",
"Attendee name", "Attendee email", "Attendee timezone", "Attendee locale", "Team
name", "Team members", "Video URL", "Hide variables", "Show variables", "Event &
booking", "People", "Teams", "Metadata", "Stats") keeping meaning intact and
preserving any required formatting/placeholders; replace the verbose strings
with these concise label-style translations.

Comment on lines +875 to +878
"oauth_clients": "Klienci OAuth",
"oauth_clients_description": "Zarządzaj klientami OAuth dla swojej organizacji",
"create_oauth_client": "Utwórz klienta OAuth",
"create_oauth_client_description": "Utwórz nowego klienta OAuth do integracji zewnętrznych",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Nit: wording polish and cross-key naming sanity check (oauth vs oAuth)

  • Wording: “do integracji zewnętrznych” → “dla integracji zewnętrznych” reads more natural.
  • There are both oauth_* and oAuth_* key families in this file. Validate they’re intentionally distinct and mapped in code.

Proposed copy tweak:

 "oauth_clients": "Klienci OAuth",
 "oauth_clients_description": "Zarządzaj klientami OAuth dla swojej organizacji",
 "create_oauth_client": "Utwórz klienta OAuth",
-"create_oauth_client_description": "Utwórz nowego klienta OAuth do integracji zewnętrznych",
+"create_oauth_client_description": "Utwórz nowego klienta OAuth dla integracji zewnętrznych",

Check key-family usage to avoid drift:


🏁 Script executed:

#!/bin/bash
# Inspect usage of oauth_* vs oAuth_* keys
rg -n $'"oauth_|"oAuth_' apps | sed -n '1,200p'

Length of output: 27618


Copy tweak for Polish locale and key naming confirmed

  • In apps/web/public/static/locales/pl/common.json (around line 878), update the description string:
- "create_oauth_client_description": "Utwórz nowego klienta OAuth do integracji zewnętrznych",
+ "create_oauth_client_description": "Utwórz nowego klienta OAuth dla integracji zewnętrznych",
  • Confirmed: translation files consistently use two key families—lower-case oauth_* for general entries and oAuth_* for form-related entries—across all locales. No naming drift detected; no further action on key prefixes.
📝 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.

Suggested change
"oauth_clients": "Klienci OAuth",
"oauth_clients_description": "Zarządzaj klientami OAuth dla swojej organizacji",
"create_oauth_client": "Utwórz klienta OAuth",
"create_oauth_client_description": "Utwórz nowego klienta OAuth do integracji zewnętrznych",
"oauth_clients": "Klienci OAuth",
"oauth_clients_description": "Zarządzaj klientami OAuth dla swojej organizacji",
"create_oauth_client": "Utwórz klienta OAuth",
"create_oauth_client_description": "Utwórz nowego klienta OAuth dla integracji zewnętrznych",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/pl/common.json around lines 875 to 878, update
the value for "create_oauth_client_description" to a clearer Polish string:
replace the current value with "Utwórz nowego klienta OAuth do integracji
zewnętrznych systemów". Do not change any keys (key naming for oauth_* vs
oAuth_* is confirmed correct); only update the translation text for that key.

Comment on lines 121 to 124
"hosts_unavailable_for_booking": "有些主持人无法预订。",
"fixed_hosts_unavailable_for_booking": "部分固定主持人无法进行预约。",
"round_robin_hosts_unavailable_for_booking": "没有轮流主持人可供预约",
"round_robin_host_unavailable_for_booking": "轮值主持人当前不可预订",
"help": "帮助",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify key rename propagation and residual English “Round Robin”

  • The key rename round_robin_hosts_unavailable_for_booking → round_robin_host_unavailable_for_booking risks orphaned references. Please verify no code still references the old key.
  • Also sweep for “Round Robin/round robin” English leftovers in zh-CN to keep terminology fully localized.

Also applies to: 875-879, 1844-1846, 3366-3366, 3384-3384, 3444-3475


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "1) Searching for old key usages (should be zero):"
rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' || true

echo
echo "2) Searching for English 'Round Robin' remnants in zh-CN common.json:"
rg -n 'Round Robin|round robin' apps/web/public/static/locales/zh-CN/common.json || echo "No remaining English occurrences found."

echo
echo "3) Sanity-check: ensure new key exists in all locales (optional parity check):"
fd common.json apps/web/public/static/locales | while read -r f; do
  if jq -e 'has("round_robin_host_unavailable_for_booking")' "$f" >/dev/null; then
    :
  else
    echo "MISSING in: $f"
  fi
done

Length of output: 7283


i18n: localize residual English and add missing key to affected locales

We’ve confirmed the old key was fully removed, but uncovered two issues:

  • Residual English “Round Robin” in zh-CN translations (apps/web/public/static/locales/zh-CN/common.json):

    • skip_rr_assignment_label
    • reassign_to_another_rr_host
    • reassign_round_robin_host
    • salesforce_if_free_email_domain_skip_owner_check
    • include_no_show_in_rr_calculation
    • rr_load_balancing_disabled_with_groups
      → Please replace “round robin”/“Round Robin” with the appropriate Chinese term.
  • Missing new key round_robin_host_unavailable_for_booking in these locales:

    • hr (apps/web/public/static/locales/hr/common.json)
    • id (apps/web/public/static/locales/id/common.json)
    • iw (apps/web/public/static/locales/iw/common.json)
    • lv (apps/web/public/static/locales/lv/common.json)
    • sk (apps/web/public/static/locales/sk/common.json)
    • ta (apps/web/public/static/locales/ta/common.json)
    • th (apps/web/public/static/locales/th/common.json)

Please add the new key with translated text in each missing locale and fully localize any remaining English phrases.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-CN/common.json around lines 121-124,
replace residual English "Round Robin"/"round robin" in the listed keys
(skip_rr_assignment_label, reassign_to_another_rr_host,
reassign_round_robin_host, salesforce_if_free_email_domain_skip_owner_check,
include_no_show_in_rr_calculation, rr_load_balancing_disabled_with_groups) with
the appropriate Chinese term (use the existing project term "轮值" or "轮值主持人" to
match context) and ensure all related phrases are fully localized and
grammatical; additionally, add the missing key
"round_robin_host_unavailable_for_booking" to the locale files for hr, id, iw,
lv, sk, ta, and th (apps/web/public/static/locales/<locale>/common.json) with
correct translations for "轮值主持人当前不可预订" or the equivalent in each language,
matching the style and tone of other keys in those files.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "您已经注册了此预订。",
"hosts_unavailable_for_booking": "有些主持人无法预订。",
"fixed_hosts_unavailable_for_booking": "部分固定主持人无法进行预约。",
"round_robin_hosts_unavailable_for_booking": "没有轮流主持人可供预约",
"round_robin_host_unavailable_for_booking": "轮值主持人当前不可预订",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Unify RR terminology and booking phrasing

Use “轮流主持人” (consistent with “轮流模式/轮流主持人” elsewhere) and prefer “预约” over “预订” for consistency with nearby strings.

-  "round_robin_host_unavailable_for_booking": "轮值主持人当前不可预订。",
+  "round_robin_host_unavailable_for_booking": "轮流主持人当前无法预约。",
📝 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.

Suggested change
"round_robin_host_unavailable_for_booking": "轮值主持人当前不可预订",
"round_robin_host_unavailable_for_booking": "轮流主持人当前无法预约",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-CN/common.json around line 123, the string
uses inconsistent terminology and verb choice; change "轮值主持人当前不可预订。" to use
"轮流主持人" and "预约" for consistency (e.g., "轮流主持人当前不可预约。"). Update the JSON value
accordingly, keeping surrounding punctuation and escaping intact.

Comment on lines +3292 to 3293
"pbac_resource_workflow": "工作流程",
"pbac_action_all": "所有操作",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Unify “活动类型” vs “事件类型” in PBAC descriptions

Elsewhere, “event type” is translated as “活动类型” (e.g., pbac_resource_event_type). Align PBAC manage description accordingly.

-  "pbac_desc_manage_event_types": "对组织团队中的事件类型进行所有操作",
+  "pbac_desc_manage_event_types": "对组织团队中的活动类型进行所有操作",

Also applies to: 3315-3320, 3324-3329, 3334-3334, 3342-3342, 3356-3356

🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-CN/common.json around lines 3292-3293 (and
also update the occurrences at 3315-3320, 3324-3329, 3334, 3342, 3356), some
PBAC descriptions use “事件类型” while the project standard uses “活动类型”; replace the
“事件类型” wording in those PBAC-related entries with “活动类型” to match the existing
translations, keeping the rest of each string intact and preserving punctuation
and spacing for JSON validity.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "您已經註冊了此預訂。",
"hosts_unavailable_for_booking": "部分主持人無法預訂。",
"fixed_hosts_unavailable_for_booking": "部分固定主持人無法預約。",
"round_robin_hosts_unavailable_for_booking": "沒有可供預約的輪值主持人",
"round_robin_host_unavailable_for_booking": "輪值主持人目前無法接受預訂",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Standardize “Round Robin” term and booking verb

Use “循環制” (already used at Line 806) and “預約” (dominant in file) for consistency.

-  "round_robin_host_unavailable_for_booking": "輪值主持人目前無法接受預訂。",
+  "round_robin_host_unavailable_for_booking": "循環制主持人目前無法接受預約。",
📝 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.

Suggested change
"round_robin_host_unavailable_for_booking": "輪值主持人目前無法接受預訂",
"round_robin_host_unavailable_for_booking": "循環制主持人目前無法接受預約",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/zh-TW/common.json around line 123, the
translation uses "輪值" and "預訂" which are inconsistent with the rest of the file;
update the string to use the standardized terms "循環制" and "預約" by replacing the
current value with one that reads "循環制主持人目前無法接受預約。".

@@ -3343,6 +3363,7 @@
"use_booker_timezone_info": "在預訂者的時區內套用選定的限制排程",
"load_balancing_warning": "這將停用所有輪詢事件類型的負載平衡功能",
"rr_load_balancing_disabled": "負載平衡僅在時間戳基準設為預訂建立時間時可用",
"rr_load_balancing_disabled_with_groups": "負載平衡無法與 Round Robin 群組一起使用",
"round_robin_settings_description": "自訂此團隊的預設輪詢設定",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Round-robin term consistency (“循環制” instead of English “Round Robin”)

Elsewhere the user-facing term is “循環制” (Line 806). Keep consistency in notices too.

-  "rr_load_balancing_disabled_with_groups": "負載平衡無法與 Round Robin 群組一起使用",
+  "rr_load_balancing_disabled_with_groups": "負載平衡無法與循環制群組一起使用",

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 line 3367, the
translation value for "round_robin_settings_description" uses "輪詢" while
elsewhere the UI uses "循環制"; update the string to use "循環制" for consistency
(e.g., replace "自訂此團隊的預設輪詢設定" with the equivalent using "循環制") and ensure
punctuation/spacing matches surrounding translations.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🔭 Outside diff range comments (2)
apps/web/public/static/locales/sr/common.json (1)

3101-3101: Localize “Round Robin” across newly added strings

Use the same localized term used elsewhere (“kružno dodeljivanje”) to avoid mixing English and Serbian.

-  "reset_interval_weighted_rr": "Resetuj interval za ponderisani Round Robin",
+  "reset_interval_weighted_rr": "Resetuj interval za ponderisano kružno dodeljivanje",
-  "rr_interval_successfully_updated": "Interval za Round Robin uspešno ažuriran",
+  "rr_interval_successfully_updated": "Interval za kružno dodeljivanje uspešno ažuriran",
-  "rr_settings_successfully_updated": "Podešavanja za Round Robin uspešno ažurirana",
+  "rr_settings_successfully_updated": "Podešavanja za kružno dodeljivanje uspešno ažurirana",
-  "distribution_basis_weighted_rr": "Osnova distribucije za ponderisani Round Robin",
+  "distribution_basis_weighted_rr": "Osnova distribucije za ponderisano kružno dodeljivanje",
-  "rr_load_balancing_disabled_with_groups": "Balansiranje opterećenja nije dostupno sa Round Robin grupama",
+  "rr_load_balancing_disabled_with_groups": "Balansiranje opterećenja nije dostupno sa grupama za kružno dodeljivanje",

Also applies to: 3118-3118, 3263-3264, 3366-3366

apps/web/public/static/locales/tr/common.json (1)

1-1: Action Required: Sign CLA & Complete Missing Translations
Merging is blocked until the contributor signs the CLA.

No occurrences of the old key (round_robin_hosts_unavailable_for_booking) remain. However, the new key
"round_robin_host_unavailable_for_booking" is missing in these locale files:

  • apps/web/public/static/locales/hr/common.json
  • apps/web/public/static/locales/id/common.json
  • apps/web/public/static/locales/lv/common.json

Please add the translations for those locales and sign the CLA. Once done, let me know and I’ll re-verify.

♻️ Duplicate comments (80)
apps/web/public/static/locales/sr/common.json (1)

121-123: Standardize “rezervacija” and localize “Round Robin” (duplicate of earlier feedback)

Keep booking nouns consistent with lines 121–122 and localize the term.

-  "round_robin_host_unavailable_for_booking": "Round Robin domaćin nije dostupan za zakazivanje.",
+  "round_robin_host_unavailable_for_booking": "Domaćin za kružno dodeljivanje nije dostupan za rezervaciju.",
apps/web/public/static/locales/az/common.json (4)

692-692: Normalize “Webhook” terminology (avoid “Veb-hook”)

Use “Webhook” consistently to match brand/terminology:

-  "edit_or_manage_webhooks": "Veb-hookları redaktə etmək və ya idarə etmək istəyirsinizsə, <0>veb-hook parametrlərinə</0> keçin",
+  "edit_or_manage_webhooks": "Webhookları redaktə etmək və ya idarə etmək istəyirsinizsə, <0>webhook parametrlərinə</0> keçin",

3292-3334: PBAC descriptions: unify grammatical form to verbal-noun (infinitive) and fix phrasing

For consistency with existing PBAC strings (… “baxmaq”, “yeniləmək”, “silmək”, “yaratmaq”), update the newly added lines:

-  "pbac_resource_workflow": "İş axınları",
+  "pbac_resource_workflow": "İş axınları",
   ...
-  "pbac_resource_attributes": "Atributlar",
-  "pbac_desc_view_organization_attributes": "Təşkilat atributlarını göstər",
-  "pbac_desc_update_organization_attributes": "Təşkilat atributlarını yeniləyin",
-  "pbac_desc_delete_organization_attributes": "Təşkilat atributlarını silin",
-  "pbac_desc_create_organization_attributes": "Təşkilat atributları yaradın",
+  "pbac_resource_attributes": "Atributlar",
+  "pbac_desc_view_organization_attributes": "Təşkilat atributlarına baxmaq",
+  "pbac_desc_update_organization_attributes": "Təşkilat atributlarını yeniləmək",
+  "pbac_desc_delete_organization_attributes": "Təşkilat atributlarını silmək",
+  "pbac_desc_create_organization_attributes": "Təşkilat atributları yaratmaq",

-  "pbac_desc_manage_roles": "Təşkilat komandaları üzrə bütün rollarda əməliyyatlar",
+  "pbac_desc_manage_roles": "Təşkilat komandaları üzrə bütün rollar üzrə əməliyyatlar",

-  "pbac_desc_create_workflows": "Yeni iş axınları yaradın və qurun",
-  "pbac_desc_view_workflows": "Mövcud iş axınlarını və onların konfiqurasiyalarını göstərin",
-  "pbac_desc_update_workflows": "İş axını parametrlərini redaktə edin və dəyişdirin",
-  "pbac_desc_delete_workflows": "İş axınlarını sistemdən silin",
-  "pbac_desc_manage_workflows": "Bütün iş axınlarına tam idarəetmə girişi",
+  "pbac_desc_create_workflows": "İş axınları yaratmaq və qurmaq",
+  "pbac_desc_view_workflows": "Mövcud iş axınlarını və onların konfiqurasiyalarını göstərmək",
+  "pbac_desc_update_workflows": "İş axını parametrlərini redaktə etmək və dəyişdirmək",
+  "pbac_desc_delete_workflows": "İş axınlarını sistemdən silmək",
+  "pbac_desc_manage_workflows": "İş axınları üzrə bütün əməliyyatlar",

-  "pbac_desc_manage_event_types": "Təşkilat komandaları üzrə tədbir növləri üzrə bütün əməliyyatlar",
+  "pbac_desc_manage_event_types": "Təşkilat komandaları üzrə bütün tədbir növləri üzrə əməliyyatlar",

-  "pbac_desc_manage_teams": "Təşkilat komandaları üzrə bütün komandalar üzrə əməliyyatlar",
+  "pbac_desc_manage_teams": "Təşkilat komandaları üzrə bütün komandalar üzrə əməliyyatlar",

-  "pbac_desc_manage_bookings": "Təşkilat komandaları üzrə bütün rezervasiyalar üzrə əməliyyatlar",
+  "pbac_desc_manage_bookings": "Təşkilat komandaları üzrə bütün rezervasiyalar üzrə əməliyyatlar"

Also applies to: 3341-3342, 3356-3356


352-353: Plural agreement: use “edirlər” with plural subject “insanlar”

Apply:

-  "round_robin_groups_helper": "Qrupdakı insanlar növbə ilə iştirak edir, hər qrupdan bir nəfər tədbirdə iştirak edəcək.",
+  "round_robin_groups_helper": "Qrupdakı insanlar növbə ilə iştirak edirlər, hər qrupdan bir nəfər tədbirdə iştirak edəcək.",
-  "round_robin_helper": "Qrupdakı insanlar növbə ilə iştirak edir və tədbirdə yalnız bir nəfər iştirak edəcək.",
+  "round_robin_helper": "Qrupdakı insanlar növbə ilə iştirak edirlər və tədbirdə yalnız bir nəfər iştirak edəcək."

3444-3460: Webhook metadata: minor localization alignment (“Tətikləyici”; shorter label)

Apply:

-  "webhook_trigger_event": "Tetikleyici hadisənin adı (məs., BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Tətikləyici hadisənin adı (məs., BOOKING_CREATED, BOOKING_CANCELLED)",
@@
-  "webhook_show_variable": "Mövcud dəyişənləri göstər",
+  "webhook_show_variable": "Dəyişənləri göstər",

To ensure all locales contain this webhook_* keyset and to find any remaining “Veb-hook” usages, run:

#!/usr/bin/env bash
set -euo pipefail

root="apps/web/public/static/locales"
keys=(
  "webhook_trigger_event" "webhook_created_at" "webhook_type" "webhook_title"
  "webhook_start_time" "webhook_end_time" "webhook_description" "webhook_location"
  "webhook_uid" "webhook_reschedule_uid" "webhook_cancellation_reason" "webhook_rejection_reason"
  "webhook_organizer_name" "webhook_organizer_email" "webhook_organizer_timezone" "webhook_organizer_locale"
  "webhook_attendee_name" "webhook_attendee_email" "webhook_attendee_timezone" "webhook_attendee_locale"
  "webhook_team_name" "webhook_team_members" "webhook_video_call_url"
  "webhook_hide_variables" "webhook_show_variable"
  "webhook_event_and_booking" "webhook_people" "webhook_teams" "webhook_metadata"
)

echo "→ Missing webhook_* keys per locale:"
missing_any=0
while IFS= read -r f; do
  locale=$(basename "$(dirname "$f")")
  miss=()
  for k in "${keys[@]}"; do
    grep -q "\"$k\"" "$f" || miss+=("$k")
  done
  ((${#miss[@]})) && { missing_any=1; echo "- $locale: ${miss[*]}"; }
done < <(fd -t f -a 'common.json' "$root")
((missing_any==0)) && echo "All locales have all webhook_* keys."

echo
echo "→ Scan for 'Veb-hook' variants:"
rg -n --ignore-case 'veb-?hook' "$root" || true

Also applies to: 3468-3469

apps/web/public/static/locales/ca/common.json (4)

123-123: Unify “round robin” casing (lowercase) for consistency.

Prefer “round robin” (lowercase) as used elsewhere in this file.

-  "round_robin_host_unavailable_for_booking": "L'amfitrió de Round Robin no està disponible per a la reserva.",
+  "round_robin_host_unavailable_for_booking": "L'amfitrió de round robin no està disponible per a la reserva.",

3324-3324: Tighten PBAC “manage_*” phrasing (“… dels equips de l’organització”).

Avoid duplicated “equips … equips” and align with the pattern used elsewhere.

-  "pbac_desc_manage_roles": "Totes les accions sobre rols a través dels equips de l'organització",
+  "pbac_desc_manage_roles": "Totes les accions sobre els rols dels equips de l'organització",

-  "pbac_desc_manage_event_types": "Totes les accions sobre tipus d'esdeveniments a través dels equips de l'organització",
+  "pbac_desc_manage_event_types": "Totes les accions sobre els tipus d'esdeveniments dels equips de l'organització",

-  "pbac_desc_manage_teams": "Totes les accions sobre equips a través dels equips de l'organització",
+  "pbac_desc_manage_teams": "Totes les accions sobre els equips de l'organització",

-  "pbac_desc_manage_bookings": "Totes les accions sobre reserves a través dels equips de l'organització",
+  "pbac_desc_manage_bookings": "Totes les accions sobre les reserves dels equips de l'organització",

Also applies to: 3333-3333, 3341-3341, 3356-3356


3383-3383: Use imperative for action labels (“Afegeix …”).

Aligns with the dominant “Afegeix …” pattern used by other add_* keys.

-  "add_group": "Afegir grup",
+  "add_group": "Afegeix un grup",

2255-2257: Fix grammar and terminology (“routing” → “encaminament”; “els enviaments”).

Reverts a previously fixed issue. Use consistent Catalan terminology and correct article agreement.

-  "use_our_headless_routing_api": "Utilitza la nostra API de routing headless i fes servir el teu propi formulari per a les enviaments.",
+  "use_our_headless_routing_api": "Utilitza la nostra API d'encaminament sense interfície i fes servir el teu propi formulari per als enviaments.",
apps/web/public/static/locales/ko/common.json (2)

875-878: Use “타사” instead of “서드파티” for consistency across locales

Same feedback as earlier round; aligning with commonly used term.

-  "create_oauth_client_description": "서드파티 통합을 위한 새 OAuth 클라이언트 생성",
+  "create_oauth_client_description": "타사 통합을 위한 새 OAuth 클라이언트 생성",

Optional verification to ensure new OAuth keys exist across all locales and avoid fallback-to-English:

#!/bin/bash
set -euo pipefail

locales_root='apps/web/public/static/locales'
keys=(oauth_clients oauth_clients_description create_oauth_client create_oauth_client_description)

fd common.json "$locales_root" --type f | while read -r f; do
  for k in "${keys[@]}"; do
    jq -e --arg k "$k" 'has($k)' "$f" >/dev/null 2>&1 || echo "MISSING: $f$k"
  done
done

3446-3451: Normalize “이벤트 유형” → “이벤트 타입” in webhook labels

Same consistency pass as previously suggested; keep product term uniform.

-  "webhook_type": "이벤트 유형 슬러그",
+  "webhook_type": "이벤트 타입 슬러그",
-  "webhook_title": "이벤트 유형 이름",
+  "webhook_title": "이벤트 타입 이름",
-  "webhook_description": "이벤트 유형 설정에 설명된 이벤트 설명",
+  "webhook_description": "이벤트 타입 설정에 설명된 이벤트 설명",
apps/web/public/static/locales/he/common.json (1)

3473-3473: Duplicate key detected - requires resolution

The "stats" key already exists at line 252 with the value "סטטיסטיקות". This duplicate at line 3473 will override the earlier translation at runtime, making the first occurrence dead code.

Please remove the duplicate entry or rename it if it represents a different context (e.g., "stats_section" or "webhook_stats").

-  "stats": "סטטיסטיקות",
apps/web/public/static/locales/bn/common.json (4)

123-123: Fix BN possessive: use “বুকিংয়ের”

Use the contracted possessive form.

-  "round_robin_host_unavailable_for_booking": "রাউন্ড রবিন হোস্ট বুকিং এর জন্য অনুপলব্ধ।",
+  "round_robin_host_unavailable_for_booking": "রাউন্ড রবিন হোস্ট বুকিংয়ের জন্য অনুপলব্ধ।",

875-878: Unify “সংস্থা” terminology (consistency across file)

This file predominantly uses “সংস্থা/সংস্থার”. Adjust this new string accordingly.

-  "oauth_clients_description": "আপনার সংগঠনের জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",
+  "oauth_clients_description": "আপনার সংস্থার জন্য OAuth ক্লায়েন্ট পরিচালনা করুন",

1844-1845: Unify “সংস্থা” for organization

Replace “সংগঠনের” with “সংস্থার” for consistency with the rest of the locale.

-  "only_admin_can_manage_directory_sync": "শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক ডিরেক্টরি সিঙ্ক সেটিংস পরিচালনা করতে পারেন",
-  "only_admin_can_manage_oauth_clients": "শুধুমাত্র সংগঠনের অ্যাডমিন বা মালিক OAuth ক্লায়েন্ট পরিচালনা করতে পারেন",
+  "only_admin_can_manage_directory_sync": "শুধুমাত্র সংস্থার অ্যাডমিন বা মালিক ডিরেক্টরি সিঙ্ক সেটিংস পরিচালনা করতে পারেন",
+  "only_admin_can_manage_oauth_clients": "শুধুমাত্র সংস্থার অ্যাডমিন বা মালিক OAuth ক্লায়েন্ট পরিচালনা করতে পারেন",

3315-3319: Standardize “সংস্থা” in PBAC org-attributes descriptions

Align genitive form to “সংস্থার”.

-  "pbac_desc_view_organization_attributes": "সংগঠনের বৈশিষ্ট্য দেখুন",
-  "pbac_desc_update_organization_attributes": "সংগঠনের বৈশিষ্ট্য আপডেট করুন",
-  "pbac_desc_delete_organization_attributes": "সংগঠনের বৈশিষ্ট্য মুছুন",
-  "pbac_desc_create_organization_attributes": "সংগঠনের বৈশিষ্ট্য তৈরি করুন",
+  "pbac_desc_view_organization_attributes": "সংস্থার বৈশিষ্ট্য দেখুন",
+  "pbac_desc_update_organization_attributes": "সংস্থার বৈশিষ্ট্য আপডেট করুন",
+  "pbac_desc_delete_organization_attributes": "সংস্থার বৈশিষ্ট্য মুছুন",
+  "pbac_desc_create_organization_attributes": "সংস্থার বৈশিষ্ট্য তৈরি করুন",
apps/web/public/static/locales/eu/common.json (2)

875-879: Key namespace mismatch - use existing oAuth_ convention*

The new OAuth keys use oauth_* (lowercase) naming while the codebase expects oAuth_* (camelCase) based on existing component references. This is a duplicate of a previously identified issue.


3315-3319: Missing "manage" permission string breaks PBAC symmetry

For every resource the file already carries pbac_desc_manage_* entries (see roles, event types, teams…).
After adding organization attributes view/create/update/delete permissions, there is still no pbac_desc_manage_organization_attributes.
Down-stream UIs that compute permission labels dynamically will now render a blank label for "Manage attributes". Add the missing key to prevent runtime "undefined" strings in Basque.

apps/web/public/static/locales/bg/common.json (4)

123-123: Standardize Round‑Robin naming for consistency

Prefer the hyphenated “Round‑Robin” form used elsewhere in BG locale. This keeps the terminology consistent across keys.

Apply this diff:

-  "round_robin_host_unavailable_for_booking": "Домакинът на ротационния принцип не е наличен за резервация.",
+  "round_robin_host_unavailable_for_booking": "Round‑Robin домакинът не е наличен за резервация.",

352-352: Fix Bulgarian plural and tighten phrasing

Use plural “групите” and a clearer sentence; avoids the singular/plural mismatch.

Apply this diff:

-  "round_robin_groups_helper": "Хората в групата се редуват, един човек от всяка група ще се появи на събитието.",
+  "round_robin_groups_helper": "Хората в групите се редуват; по един човек от всяка група ще присъства на събитието.",

3366-3366: Unify Round‑Robin hyphenation in load‑balancing warning

Align with hyphenated “Round‑Robin”.

Apply this diff:

-  "rr_load_balancing_disabled_with_groups": "Балансирането на натоварването не е налично с Round Robin групи",
+  "rr_load_balancing_disabled_with_groups": "Балансирането на натоварването не е налично при Round‑Robin групи",

3444-3474: Webhook metadata: improve natural BG and fix singular/plural inconsistency

Refine a few labels to sound more native and align “show variable” to singular.

Apply this diff:

-  "webhook_created_at": "Времето на уебхука",
+  "webhook_created_at": "Време на създаване на уебхука",
-  "webhook_type": "Слъгът на типа събитие",
+  "webhook_type": "Идентификатор (slug) на типа събитие",
-  "webhook_description": "Описанието на събитието, както е описано в настройките на типа събитие",
+  "webhook_description": "Описанието на събитието, както е зададено в настройките на типа събитие",
-  "webhook_show_variable": "Покажи наличните променливи",
+  "webhook_show_variable": "Покажи променлива",
apps/web/public/static/locales/da/common.json (3)

3445-3475: Webhook metadata block: strong coverage; tweak created-at wording and verify cross-locale presence

Wording improvement:

  • “Tidspunktet for webhooken” → “Oprettelsestidspunkt for webhooken”.
-  "webhook_created_at": "Tidspunktet for webhooken",
+  "webhook_created_at": "Oprettelsestidspunkt for webhooken",

Also verify all webhook_* keys exist across locales to prevent runtime fallbacks.

#!/usr/bin/env bash
set -euo pipefail

base="apps/web/public/static/locales"
src="$base/da/common.json"

# 1) Extract webhook_* keys from Danish file (source-of-truth for this PR)
readarray -t webhook_keys < <(jq -r 'keys[]' "$src" | grep '^webhook_')

echo "Checking ${#webhook_keys[@]} webhook_* keys across locales..."
missing=0

# 2) Validate presence in every common.json across locales
mapfile -t files < <(fd -H --glob 'common.json' "$base")
for f in "${files[@]}"; do
  for k in "${webhook_keys[@]}"; do
    if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null; then
      echo "✗ Missing key $k in: $f"
      missing=1
    fi
  done
done

[ $missing -eq 0 ] && echo "✔ All webhook_* keys present across locales"

1844-1846: Fix terminology for “Directory Sync” (product term, not filesystem “folders”)

Prior comment still applies here. Use the product term “Directory Sync” to avoid confusion with filesystem directories.

-  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for synkronisering af mapper",
+  "only_admin_can_manage_directory_sync": "Kun organisationens administrator eller ejer kan administrere indstillinger for Directory Sync",

3315-3320: Standardize PBAC “attributes” wording to “Attributter”

This block mixes “Egenskaber” with “organisationsattributter.” Align to “Attributter” to match the rest of the PBAC phrasing.

-  "pbac_resource_attributes": "Egenskaber",
+  "pbac_resource_attributes": "Attributter",

To help spot inconsistencies across the Danish file, you can grep for both variants:

#!/usr/bin/env bash
set -euo pipefail
file="apps/web/public/static/locales/da/common.json"
echo "Occurrences of 'Egenskab'/'Egenskaber':"
rg -n 'Egenskab' "$file" || true
echo
echo "Occurrences of 'Attribut'/'Attributter':"
rg -n 'Attribut' "$file" || true
apps/web/public/static/locales/es-419/common.json (1)

123-123: Consistency with nearby phrasing: use “para la reserva”.

Align with Line 121’s “para la reserva”.

-  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para reservas.",
+  "round_robin_host_unavailable_for_booking": "El anfitrión de Round Robin no está disponible para la reserva.",
apps/web/public/static/locales/fr/common.json (3)

123-123: Standardize “round-robin” hyphenation and casing (French locale)

Use “round-robin” (lowercase, hyphenated) for consistency with other strings (e.g., Line 1951: “Hôtes round-robin”).

-  "round_robin_host_unavailable_for_booking": "L'hôte Round Robin n'est pas disponible pour la réservation.",
+  "round_robin_host_unavailable_for_booking": "L'hôte round-robin n'est pas disponible pour la réservation.",

1844-1845: French agreement: pluralize verb with two subjects

Both “l’administrateur” and “le propriétaire” can act; use plural agreement “Seuls … peuvent …”.

-  "only_admin_can_manage_directory_sync": "Seul l'administrateur ou le propriétaire de l'organisation peut gérer les paramètres de synchronisation d'annuaire",
-  "only_admin_can_manage_oauth_clients": "Seul l'administrateur ou le propriétaire de l'organisation peut gérer les clients OAuth",
+  "only_admin_can_manage_directory_sync": "Seuls l'administrateur ou le propriétaire de l'organisation peuvent gérer les paramètres de synchronisation d'annuaire",
+  "only_admin_can_manage_oauth_clients": "Seuls l'administrateur ou le propriétaire de l'organisation peuvent gérer les clients OAuth",

3327-3327: Avoid redundancy “Éditer et modifier” and align with preferred term “Modifier”

Elsewhere the file prefers “Modifier”; remove redundancy.

-  "pbac_desc_update_workflows": "Éditer et modifier les paramètres des workflows",
+  "pbac_desc_update_workflows": "Modifier les paramètres des workflows",
apps/web/public/static/locales/pl/common.json (3)

875-878: Copy tweak for Polish: “dla integracji zewnętrznych”

Aligns with more natural usage in previous reviews.

Apply:

   "oauth_clients": "Klienci OAuth",
   "oauth_clients_description": "Zarządzaj klientami OAuth dla swojej organizacji",
   "create_oauth_client": "Utwórz klienta OAuth",
-  "create_oauth_client_description": "Utwórz nowego klienta OAuth do integracji zewnętrznych",
+  "create_oauth_client_description": "Utwórz nowego klienta OAuth dla integracji zewnętrznych",

3445-3474: Webhook terminology consistency: “E‑mail”, “ustawienia regionalne”, and UID phrasing

Bring these in line with earlier guidance and the rest of the file.

Apply:

   "webhook_reschedule_uid": "UID do zmiany terminu",
-  "webhook_cancellation_reason": "Powód anulowania",
-  "webhook_rejection_reason": "Powód odrzucenia",
-  "webhook_organizer_name": "Nazwa organizatora",
-  "webhook_organizer_email": "Email organizatora",
+  "webhook_cancellation_reason": "Powód anulowania",
+  "webhook_rejection_reason": "Powód odrzucenia",
+  "webhook_organizer_name": "Nazwa organizatora",
+  "webhook_organizer_email": "E-mail organizatora",
   "webhook_organizer_timezone": "Strefa czasowa organizatora (np. 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Lokalizacja organizatora (np. 'en', 'fr')",
+  "webhook_organizer_locale": "Ustawienia regionalne organizatora (np. 'en', 'fr')",
   "webhook_attendee_name": "Imię pierwszego uczestnika",
-  "webhook_attendee_email": "Email pierwszego uczestnika",
+  "webhook_attendee_email": "E-mail pierwszego uczestnika",
   "webhook_attendee_timezone": "Strefa czasowa pierwszego uczestnika",
-  "webhook_attendee_locale": "Lokalizacja pierwszego uczestnika",
+  "webhook_attendee_locale": "Ustawienia regionalne pierwszego uczestnika",
   "webhook_team_name": "Nazwa zarezerwowanego zespołu",
   "webhook_team_members": "Członkowie zarezerwowanego zespołu",
   "webhook_video_call_url": "URL wideorozmowy dla spotkania",
   "webhook_hide_variables": "Ukryj zmienne",
   "webhook_show_variable": "Pokaż dostępne zmienne",
   "webhook_event_and_booking": "Wydarzenie i rezerwacja",
   "webhook_people": "Ludzie",
   "webhook_teams": "Zespoły",
   "webhook_metadata": "Metadane",
-  "stats": "Statystyki",
+  "stats": "Statystyki",
   "booking_status": "Status rezerwacji",

Additionally, consider:

  • Change “UID do zmiany terminu” → “UID zmiany terminu” for natural phrasing:
-  "webhook_reschedule_uid": "UID do zmiany terminu",
+  "webhook_reschedule_uid": "UID zmiany terminu",

3473-3473: Recheck duplicate “stats” key across the file

A previous commit flagged a duplicate “stats” key earlier in this JSON. Ensure it now appears only once.

Run:

#!/bin/bash
# Expect exactly one occurrence within this file now
rg -n $'^\s*"stats"\s*:' apps/web/public/static/locales/pl/common.json
apps/web/public/static/locales/pt/common.json (8)

123-123: PT-PT consistency: use “reserva” and “de Round Robin”.

Replace Brazilianism “agendamento” with “reserva” and prefer “de Round Robin”.

-  "round_robin_host_unavailable_for_booking": "O anfitrião do Round Robin não está disponível para agendamento.",
+  "round_robin_host_unavailable_for_booking": "O anfitrião de Round Robin não está disponível para reserva.",

352-352: PT-PT phrasing for round-robin groups helper.

Avoid “em um”/“se revezam”; prefer PT-PT.

-  "round_robin_groups_helper": "As pessoas em um grupo se revezam, uma pessoa de cada grupo aparecerá no evento.",
+  "round_robin_groups_helper": "As pessoas num grupo fazem rodízio; uma pessoa de cada grupo aparecerá no evento.",

3416-3416: Grammar: “Reservas falhadas”.

Fix agreement; current “Reservas falhas” is incorrect.

-  "failed_bookings": "Reservas falhas",
+  "failed_bookings": "Reservas falhadas",

875-878: OAuth clients: normalize to PT-PT (“Gerir”, sentence case, “a sua”).

Align style/casing and variant to PT-PT.

-  "oauth_clients": "Clientes OAuth",
-  "oauth_clients_description": "Gerencie clientes OAuth para sua organização",
-  "create_oauth_client": "Criar Cliente OAuth",
-  "create_oauth_client_description": "Crie um novo cliente OAuth para integrações de terceiros",
+  "oauth_clients": "Clientes OAuth",
+  "oauth_clients_description": "Gerir clientes OAuth da sua organização",
+  "create_oauth_client": "Criar cliente OAuth",
+  "create_oauth_client_description": "Criar um novo cliente OAuth para integrações de terceiros",

1844-1846: Admin-only notices: PT-PT (“gerir”, articles, “do diretório”).

Use “gerir” and add the article “o”; “do diretório”.

-  "only_admin_can_manage_directory_sync": "Apenas o administrador ou proprietário da organização pode gerenciar as configurações de sincronização de diretório",
-  "only_admin_can_manage_oauth_clients": "Apenas o administrador ou proprietário da organização pode gerenciar clientes OAuth",
+  "only_admin_can_manage_directory_sync": "Apenas o administrador ou o proprietário da organização pode gerir as configurações de sincronização do diretório",
+  "only_admin_can_manage_oauth_clients": "Apenas o administrador ou o proprietário da organização pode gerir clientes OAuth",

2255-2256: Routing copy: prefer PT-PT and existing “encaminhamento” terminology.

Use “o meu / a nossa” and “encaminhamento sem interface (headless)”.

-  "use_my_own_form": "Usar meu próprio formulário",
-  "use_our_headless_routing_api": "Use nossa API de roteamento headless e utilize seu próprio formulário para envios.",
+  "use_my_own_form": "Usar o meu próprio formulário",
+  "use_our_headless_routing_api": "Use a nossa API de encaminhamento sem interface (headless) e use o seu próprio formulário para envios.",

3316-3334: PBAC descriptions: normalize to PT-PT (“Ver/Eliminar/Gestão/Equipas/Reservas”).

Replace pt-BR forms and literal “gerenciamento” with PT-PT and domain terms.

-  "pbac_desc_view_organization_attributes": "Visualizar atributos da organização",
+  "pbac_desc_view_organization_attributes": "Ver atributos da organização",
-  "pbac_desc_delete_organization_attributes": "Excluir atributos da organização",
+  "pbac_desc_delete_organization_attributes": "Eliminar atributos da organização",
-  "pbac_desc_manage_roles": "Todas as ações em funções nas equipes da organização",
+  "pbac_desc_manage_roles": "Todas as ações em funções nas equipas da organização",
-  "pbac_desc_view_workflows": "Visualizar fluxos de trabalho existentes e suas configurações",
+  "pbac_desc_view_workflows": "Ver fluxos de trabalho existentes e as suas configurações",
-  "pbac_desc_delete_workflows": "Remover fluxos de trabalho do sistema",
+  "pbac_desc_delete_workflows": "Eliminar fluxos de trabalho do sistema",
-  "pbac_desc_manage_workflows": "Acesso completo de gerenciamento a todos os fluxos de trabalho",
+  "pbac_desc_manage_workflows": "Acesso completo de gestão a todos os fluxos de trabalho",
-  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos nas equipes da organização",
+  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos nas equipas da organização",
-  "pbac_desc_manage_teams": "Todas as ações em equipes da organização",
+  "pbac_desc_manage_teams": "Todas as ações em equipas da organização",
-  "pbac_desc_manage_bookings": "Todas as ações em agendamentos nas equipes da organização",
+  "pbac_desc_manage_bookings": "Todas as ações em reservas nas equipas da organização",

Also applies to: 3341-3341, 3356-3356


3445-3475: Webhooks and booking status: fix “equipe”→“equipa”, booking status phrasing, and improve created_at label.

Align with PT-PT and existing terminology.

-  "webhook_created_at": "A hora do webhook",
+  "webhook_created_at": "Data de criação do webhook",
-  "webhook_team_name": "Nome da equipe reservada",
-  "webhook_team_members": "Membros da equipe reservada",
+  "webhook_team_name": "Nome da equipa reservada",
+  "webhook_team_members": "Membros da equipa reservada",
-  "booking_status": "Status do agendamento",
+  "booking_status": "Estado da reserva",
apps/web/public/static/locales/km/common.json (8)

875-878: Use “អង្គការ” consistently in OAuth section

Replace “អង្គភាព” with “អង្គការ” for consistency with the rest of the locale.

 "oauth_clients": "កម្មវិធី OAuth",
-"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+"oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គការរបស់អ្នក",
 "create_oauth_client": "បង្កើតកម្មវិធី OAuth",
 "create_oauth_client_description": "បង្កើតកម្មវិធី OAuth ថ្មីសម្រាប់ការតភ្ជាប់ជាមួយកម្មវិធីភាគីទីបី",

1844-1845: Admin-only notices: replace “អង្គភាព” with “អង្គការ”

Keep org terminology consistent.

-"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
-"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គភាពប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",
+"only_admin_can_manage_directory_sync": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងការកំណត់ការធ្វើសមកាលកម្មថត",
+"only_admin_can_manage_oauth_clients": "មានតែអ្នកគ្រប់គ្រងឬម្ចាស់អង្គការប៉ុណ្ណោះដែលអាចគ្រប់គ្រងកម្មវិធី OAuth",

2255-2256: Don’t translate “Headless” literally; keep it in English

Use “API Routing (Headless)” for clarity.

 "use_my_own_form": "ប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់ខ្ញុំ",
-"use_our_headless_routing_api": "ប្រើ API ដឹកនាំដោយគ្មានចំណងជើងរបស់យើង និងប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",
+"use_our_headless_routing_api": "ប្រើ API Routing (Headless) របស់យើង ហើយប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",

3315-3319: Organization attribute descriptors: replace “អង្គភាព” with “អង្គការ”

Standardize org term in these PBAC strings.

 "pbac_resource_attributes": "គុណលក្ខណៈ",
-"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គភាព",
+"pbac_desc_view_organization_attributes": "មើលគុណលក្ខណៈអង្គការ",
-"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គភាព",
+"pbac_desc_update_organization_attributes": "ធ្វើបច្ចុប្បន្នភាពគុណលក្ខណៈអង្គការ",
-"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គភាព",
+"pbac_desc_delete_organization_attributes": "លុបគុណលក្ខណៈអង្គការ",
-"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គភាព",
+"pbac_desc_create_organization_attributes": "បង្កើតគុណលក្ខណៈអង្គការ",

3323-3323: PBAC roles descriptor: remove “ក្រុមអង្គភាព”

Use organization-scoped phrasing.

-"pbac_desc_manage_roles": "សកម្មភាពទាំងអស់លើតួនាទីក្នុងក្រុមអង្គភាពទាំងអស់",
+"pbac_desc_manage_roles": "សកម្មភាពទាំងអស់លើតួនាទីក្នុងអង្គការ",

3333-3333: PBAC event types descriptor: organization scope

Replace “ក្រុមអង្គភាព” with “អង្គការ.”

-"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងក្រុមអង្គភាពទាំងអស់",
+"pbac_desc_manage_event_types": "សកម្មភាពទាំងអស់លើប្រភេទព្រឹត្តិការណ៍ក្នុងអង្គការ",

3341-3341: PBAC teams descriptor: organization scope

Keep “អង្គការ” consistent.

-"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាពទាំងអស់",
+"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ",

3356-3356: PBAC bookings descriptor: organization scope

Replace “ក្រុមអង្គភាព” with “អង្គការ.”

-"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាពទាំងអស់",
+"pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",
apps/web/public/static/locales/tr/common.json (5)

123-123: Use the established “Döngüsel organizatör” terminology for RR host.

Align with in-product usage and prior guidance.

Apply:

-  "round_robin_host_unavailable_for_booking": "Sıralı ev sahibi rezervasyon için uygun değil.",
+  "round_robin_host_unavailable_for_booking": "Döngüsel organizatör rezervasyon için uygun değil."

875-878: Standardize “Organizasyon” → “Kuruluş” for OAuth client strings.

TR locale elsewhere prefers “Kuruluş”.

Apply:

-  "oauth_clients": "OAuth İstemcileri",
-  "oauth_clients_description": "Organizasyonunuz için OAuth istemcilerini yönetin",
-  "create_oauth_client": "OAuth İstemcisi Oluştur",
-  "create_oauth_client_description": "Üçüncü taraf entegrasyonları için yeni bir OAuth istemcisi oluşturun",
+  "oauth_clients": "OAuth İstemcileri",
+  "oauth_clients_description": "Kuruluşunuz için OAuth istemcilerini yönetin",
+  "create_oauth_client": "OAuth İstemcisi Oluştur",
+  "create_oauth_client_description": "Üçüncü taraf entegrasyonları için yeni bir OAuth istemcisi oluşturun"

1844-1845: Replace “organizasyonun” with “kuruluşun” in admin-only notices.

Consistency with locale conventions.

Apply:

-  "only_admin_can_manage_directory_sync": "Dizin senkronizasyon ayarlarını yalnızca organizasyonun yöneticisi veya sahibi yönetebilir",
-  "only_admin_can_manage_oauth_clients": "OAuth istemcilerini yalnızca organizasyonun yöneticisi veya sahibi yönetebilir",
+  "only_admin_can_manage_directory_sync": "Dizin senkronizasyonu ayarlarını yalnızca kuruluşun yöneticisi veya sahibi yönetebilir",
+  "only_admin_can_manage_oauth_clients": "OAuth istemcilerini yalnızca kuruluşun yöneticisi veya sahibi yönetebilir",

3315-3320: PBAC descriptions: use “Kuruluş” instead of “Organizasyon”.

Keep terminology consistent across PBAC strings.

Apply:

-  "pbac_desc_view_organization_attributes": "Organizasyon özniteliklerini görüntüle",
-  "pbac_desc_update_organization_attributes": "Organizasyon özniteliklerini güncelle",
-  "pbac_desc_delete_organization_attributes": "Organizasyon özniteliklerini sil",
-  "pbac_desc_create_organization_attributes": "Organizasyon öznitelikleri oluştur",
+  "pbac_desc_view_organization_attributes": "Kuruluş özniteliklerini görüntüle",
+  "pbac_desc_update_organization_attributes": "Kuruluş özniteliklerini güncelle",
+  "pbac_desc_delete_organization_attributes": "Kuruluş özniteliklerini sil",
+  "pbac_desc_create_organization_attributes": "Kuruluş öznitelikleri oluştur",
@@
-  "pbac_desc_manage_roles": "Organizasyon ekipleri genelinde roller üzerindeki tüm işlemler",
+  "pbac_desc_manage_roles": "Kuruluş ekipleri genelinde roller üzerindeki tüm işlemler",
@@
-  "pbac_desc_manage_event_types": "Organizasyon ekipleri genelinde etkinlik türleri üzerindeki tüm işlemler",
+  "pbac_desc_manage_event_types": "Kuruluş ekipleri genelinde etkinlik türleri üzerindeki tüm işlemler",
@@
-  "pbac_desc_manage_teams": "Organizasyon ekipleri genelinde ekipler üzerindeki tüm işlemler",
+  "pbac_desc_manage_teams": "Kuruluş ekipleri genelinde ekipler üzerindeki tüm işlemler",
@@
-  "pbac_desc_manage_bookings": "Organizasyon ekipleri genelinde rezervasyonlar üzerindeki tüm işlemler",
+  "pbac_desc_manage_bookings": "Kuruluş ekipleri genelinde rezervasyonlar üzerindeki tüm işlemler",

Also applies to: 3323-3334, 3356-3356


3444-3472: Webhook labels: use “Web kancası” and “Organizatör” consistently; tweak two labels.

  • Replace “Webhook” with the existing locale choice “Web kancası”.
  • Replace “Düzenleyen” with “Organizatör”.
  • Prefer “Yeniden planlama UID'si”.
  • Clarify created timestamp label.

Apply:

-  "webhook_created_at": "Webhook zamanı",
+  "webhook_created_at": "Web kancasının oluşturulma zamanı",
@@
-  "webhook_reschedule_uid": "Yeniden planlama için UID",
+  "webhook_reschedule_uid": "Yeniden planlama UID'si",
@@
-  "webhook_organizer_name": "Düzenleyenin adı",
-  "webhook_organizer_email": "Düzenleyenin e-postası",
-  "webhook_organizer_timezone": "Düzenleyenin saat dilimi (örn. 'America/New_York', 'Asia/Kolkata')",
-  "webhook_organizer_locale": "Düzenleyenin yerel ayarı (örn. 'en', 'fr')",
+  "webhook_organizer_name": "Organizatörün adı",
+  "webhook_organizer_email": "Organizatörün e-postası",
+  "webhook_organizer_timezone": "Organizatörün saat dilimi (örn. 'America/New_York', 'Asia/Kolkata')",
+  "webhook_organizer_locale": "Organizatörün yerel ayarı (örn. 'en', 'fr')",

Optional consistency pass for other nearby “Webhook” occurrences in the file has already been suggested previously.

apps/web/public/static/locales/uk/common.json (6)

123-123: Unify “host” terminology: replace “Організатор” with “Ведучий”.

For consistency with existing keys (e.g., “Почергові ведучі”), use “Ведучий”.

-  "round_robin_host_unavailable_for_booking": "Організатор почергового розподілу недоступний для бронювання.",
+  "round_robin_host_unavailable_for_booking": "Ведучий почергового розподілу недоступний для бронювання.",

875-878: Hyphenate “OAuth‑клієнт” and tighten phrasing.

Align with UA style: use hyphen, concise wording, and en-dash where appropriate.

-  "oauth_clients": "OAuth клієнти",
-  "oauth_clients_description": "Керуйте OAuth клієнтами для вашої організації",
-  "create_oauth_client": "Створити OAuth клієнта",
-  "create_oauth_client_description": "Створіть нового OAuth клієнта для інтеграцій з третіми сторонами",
+  "oauth_clients": "OAuth-клієнти",
+  "oauth_clients_description": "Керуйте OAuth-клієнтами вашої організації",
+  "create_oauth_client": "Створити OAuth‑клієнта",
+  "create_oauth_client_description": "Створіть нового OAuth‑клієнта для інтеграцій зі сторонніми сервісами",

1844-1845: Consistency: use “Лише” and hyphenate “OAuth‑клієнтами”.

Matches prior style elsewhere in file.

-  "only_admin_can_manage_directory_sync": "Тільки адміністратор або власник організації може керувати налаштуваннями синхронізації каталогу",
-  "only_admin_can_manage_oauth_clients": "Тільки адміністратор або власник організації може керувати OAuth клієнтами",
+  "only_admin_can_manage_directory_sync": "Лише адміністратор або власник організації може керувати налаштуваннями синхронізації каталогу",
+  "only_admin_can_manage_oauth_clients": "Лише адміністратор або власник організації може керувати OAuth‑клієнтами",

2273-2273: Unify spelling: “вебгук” (not “вебхук”).

Harmonize with the rest of the locale file.

-  "create_instant_meeting_webhook_description": "Створіть свій перший вебхук з тригером 'Створено миттєву зустріч' для цього типу подій",
+  "create_instant_meeting_webhook_description": "Створіть свій перший вебгук з тригером 'Створено миттєву зустріч' для цього типу подій",

3333-3333: Align terminology: use “заходів” (not “подій”).

This file consistently uses “Типи заходів”.

-  "pbac_desc_manage_event_types": "Усі дії з типами подій у командах організації",
+  "pbac_desc_manage_event_types": "Усі дії з типами заходів у командах організації",

3444-3474: Standardize “вебгук”, lowercase “слаг”, prefer “Учасники”, and pluralize variables label.

Ensure consistency across new webhook-related keys.

-  "webhook_trigger_event": "Назва події-тригера (наприклад, BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Час створення вебхука",
-  "webhook_type": "Слаг типу події",
+  "webhook_trigger_event": "Назва події-тригера (наприклад, BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Час створення вебгука",
+  "webhook_type": "слаг типу події",
@@
-  "webhook_team_members": "Члени забронованої команди",
+  "webhook_team_members": "Учасники забронованої команди",
@@
-  "webhook_hide_variables": "Приховати змінні",
-  "webhook_show_variable": "Показати доступні змінні",
+  "webhook_hide_variables": "Приховати змінні",
+  "webhook_show_variable": "Показати змінні",
apps/web/public/static/locales/ru/common.json (5)

3366-3366: Nit: Preposition for natural RU phrasing (“для групп Round Robin”)

Use “для” instead of “с” for better style.

-  "rr_load_balancing_disabled_with_groups": "Балансировка нагрузки недоступна с группами Round Robin",
+  "rr_load_balancing_disabled_with_groups": "Балансировка нагрузки недоступна для групп Round Robin",

Optionally scan for inconsistent “Round Robin/round robin/Round‑Robin” casing:

#!/bin/bash
rg -n --hidden -S 'Round[ -]?Robin|round[ -]?robin' apps/web/public/static/locales/ru/common.json

123-123: Round Robin: replace “Хост” with “Организатор”

Align with existing RU terminology (“Организатор”) for Round Robin contexts.

-  "round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
+  "round_robin_host_unavailable_for_booking": "Организатор Round Robin недоступен для бронирования.",

Run to confirm callers have migrated from the old key name (singular vs plural) and to surface any stale references:

#!/bin/bash
# Find both old and new keys across the repo
rg -n --hidden -S 'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking'

875-878: OAuth client section looks good; normalize legacy OAuth casing/hyphenation elsewhere

The newly added keys are correct and use the preferred “OAuth‑клиент(ы)” form. Please align older occurrences for consistency (key names and values).

Outside this hunk, apply:

-  "oauth_client_deletion_message": "OAuth клиент успешно удален",
+  "oauth_client_deletion_message": "OAuth-клиент успешно удален",

Rename legacy keys and fix values (keep JSON keys unique and update usages in code if referenced):

-  "oAuth": "OAuth",
-  "oAuth_client_creation_form": "Форма создания OAuth клиента",
-  "oAuth_client_creation_form_description": "Это форма для создания нового OAuth клиента",
-  "oAuth_client_updation_form": "Форма обновления OAuth клиента",
-  "oAuth_client_updation_form_description": "Это форма для редактирования существующего OAuth клиента",
+  "OAuth": "OAuth",
+  "OAuth_client_creation_form": "Форма создания OAuth-клиента",
+  "OAuth_client_creation_form_description": "Это форма для создания нового OAuth-клиента",
+  "OAuth_client_updation_form": "Форма обновления OAuth-клиента",
+  "OAuth_client_updation_form_description": "Это форма для редактирования существующего OAuth-клиента",

To list inconsistent “OAuth клиент/клиенты”, “oAuth”, or missing hyphen cases:

#!/bin/bash
rg -n --hidden -S 'oAuth|OAuth клиент|OAuth клиенты|OAuth-клиент' apps/web/public/static/locales/ru/common.json

3323-3323: PBAC scope wording: “организации” (not “в командах организации”)

Per scope, managing roles is organization-scoped. Update phrasing accordingly.

-  "pbac_desc_manage_roles": "Все действия с ролями в командах организации",
+  "pbac_desc_manage_roles": "Все действия с ролями в организации",

3356-3356: PBAC scope wording: bookings are organization-scoped

Update copy to reflect organization-wide scope, not “в командах организации”.

-  "pbac_desc_manage_bookings": "Все действия с бронированиями в командах организации",
+  "pbac_desc_manage_bookings": "Все действия с бронированиями в организации",
apps/web/public/static/locales/sv/common.json (2)

123-123: Round Robin phrasing is okay; ensure consistent capitalization/hyphenation across the file/locales.

This entry uses “Round Robin-” (capitalized, hyphenated) which reads well. Elsewhere in this file there are lowercase/mixed variants (“round robin-…”, etc.). Please standardize all occurrences in sv/common.json (and mirror across other locales) to a single style, e.g., “Round Robin-…”.

Run to locate variants:

#!/bin/bash
rg -n $'"round robin|Round robin|round-robin|Round-robin|Round Robin"' apps/web/public/static/locales/sv/common.json

3445-3474: Polish some webhook metadata labels and re-affirm term standardization.

  • Prefer explicit creation phrasing for created_at.
  • Ensure “Webhook”/“webhook” spelling is standardized across this file (avoid “Webbhook” variants previously present).
-  "webhook_created_at": "Tidpunkten för webhooken",
+  "webhook_created_at": "Tidpunkt när webhooken skapades",

Find legacy “Webbhook” occurrences to standardize:

#!/bin/bash
rg -n $'"Webbhook|webbhook"' apps/web/public/static/locales/sv/common.json
apps/web/public/static/locales/ro/common.json (6)

3366-3366: Use the established term “Echilibrarea încărcării” and standardize round‑robin

Restore consistency with earlier occurrences.

-  "rr_load_balancing_disabled_with_groups": "Distribuirea sarcinilor nu este disponibilă cu grupurile Round Robin",
+  "rr_load_balancing_disabled_with_groups": "Echilibrarea încărcării nu este disponibilă cu grupurile round‑robin",

875-878: Switch OAuth strings to polite/plural tone (“dvs.”) for UI consistency

These reverted to informal second person. Prior review already requested the polite/plural form.

-  "oauth_clients": "Clienți OAuth",
-  "oauth_clients_description": "Gestionează clienții OAuth pentru organizația ta",
-  "create_oauth_client": "Creează un client OAuth",
-  "create_oauth_client_description": "Creează un nou client OAuth pentru integrări terțe",
+  "oauth_clients": "Clienți OAuth",
+  "oauth_clients_description": "Gestionați clienții OAuth pentru organizația dvs.",
+  "create_oauth_client": "Creați un client OAuth",
+  "create_oauth_client_description": "Creați un nou client OAuth pentru integrările dvs.",

2255-2256: Embedding/headless routing: switch to polite/plural tone

These still use informal “Folosește…/tău”. Align to the polite/plural voice.

-  "use_my_own_form": "Folosește propriul meu formular",
-  "use_our_headless_routing_api": "Folosește API-ul nostru de rutare fără interfață și propriul tău formular pentru trimitere.",
+  "use_my_own_form": "Folosiți propriul dvs. formular",
+  "use_our_headless_routing_api": "Folosiți API-ul nostru de rutare fără interfață și propriul dvs. formular pentru trimitere.",

3292-3292: PBAC: unify verb forms to polite/plural (“Creați/Vizualizați/Actualizați/Ștergeți”)

Several PBAC labels/descriptions reverted to informal forms. Please restore polite/plural to match the rest of the UI.

-  "pbac_resource_workflow": "Fluxuri de lucru",
+  "pbac_resource_workflow": "Fluxuri de lucru",

-  "pbac_resource_attributes": "Atribute",
-  "pbac_desc_view_organization_attributes": "Vizualizează atributele organizației",
-  "pbac_desc_update_organization_attributes": "Actualizează atributele organizației",
-  "pbac_desc_delete_organization_attributes": "Șterge atributele organizației",
-  "pbac_desc_create_organization_attributes": "Creează atribute pentru organizație",
+  "pbac_resource_attributes": "Atribute",
+  "pbac_desc_view_organization_attributes": "Vizualizați atributele organizației",
+  "pbac_desc_update_organization_attributes": "Actualizați atributele organizației",
+  "pbac_desc_delete_organization_attributes": "Ștergeți atributele organizației",
+  "pbac_desc_create_organization_attributes": "Creați atribute pentru organizație",

-  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",
+  "pbac_desc_manage_roles": "Toate acțiunile asupra rolurilor din echipele organizației",

-  "pbac_desc_create_workflows": "Creează și configurează fluxuri de lucru noi",
-  "pbac_desc_view_workflows": "Vizualizează fluxurile de lucru existente și configurațiile acestora",
-  "pbac_desc_update_workflows": "Editează și modifică setările fluxurilor de lucru",
-  "pbac_desc_delete_workflows": "Elimină fluxurile de lucru din sistem",
-  "pbac_desc_manage_workflows": "Acces complet pentru gestionarea tuturor fluxurilor de lucru",
+  "pbac_desc_create_workflows": "Creați și configurați fluxuri de lucru noi",
+  "pbac_desc_view_workflows": "Vizualizați fluxurile de lucru existente și configurațiile acestora",
+  "pbac_desc_update_workflows": "Editați și modificați setările fluxurilor de lucru",
+  "pbac_desc_delete_workflows": "Eliminați fluxurile de lucru din sistem",
+  "pbac_desc_manage_workflows": "Acces complet de gestionare pentru toate fluxurile de lucru",

-  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",
+  "pbac_desc_manage_event_types": "Toate acțiunile asupra tipurilor de evenimente din echipele organizației",

-  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",
+  "pbac_desc_manage_teams": "Toate acțiunile asupra echipelor din echipele organizației",

-  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",
+  "pbac_desc_manage_bookings": "Toate acțiunile asupra rezervărilor din echipele organizației",

Also applies to: 3315-3334, 3341-3341, 3356-3356


3445-3472: Webhook labels: clarify timestamp and use polite imperatives; avoid “programare”

These should be clearer and match tone. Also prefer “rezervare” over “programare”.

-  "webhook_created_at": "Ora webhook-ului",
+  "webhook_created_at": "Creat la",
-  "webhook_hide_variables": "Ascunde variabilele",
+  "webhook_hide_variables": "Ascundeți variabilele",
-  "webhook_show_variable": "Afișează variabilele disponibile",
+  "webhook_show_variable": "Afișați variabilele disponibile",
-  "webhook_event_and_booking": "Eveniment și programare",
+  "webhook_event_and_booking": "Eveniment și rezervare",

3474-3475: Terminology: prefer “Starea rezervării” over “Status programare”

Re-apply the agreed phrasing.

-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/et/common.json (4)

123-123: Standardize “host” → “võõrustaja” in Estonian

Use “võõrustaja” instead of the English “host” for consistency with the rest of the locale.

-  "round_robin_host_unavailable_for_booking": "Round Robin'i host ei ole broneerimiseks saadaval.",
+  "round_robin_host_unavailable_for_booking": "Round Robin'i võõrustaja ei ole broneerimiseks saadaval.",

2255-2256: Use “marsruutimine” (not “suunamine”) for routing

Match the established term across the locale: “marsruutimine/marsruutimise”.

-  "use_our_headless_routing_api": "Kasuta meie peata suunamise API-t ja omaenda vormi esitamiseks.",
+  "use_our_headless_routing_api": "Kasuta meie peata marsruutimise API-t ja oma vormi esitamiseks.",

Run to audit for inconsistent usage across locales and within et:

#!/bin/bash
rg -n '"use_our_headless_routing_api"' apps/web/public/static/locales
rg -n 'suunamis|suunamise|suunamine' apps/web/public/static/locales/et/common.json -A1 -B1
rg -n 'marsruutimin|marsruutimis' apps/web/public/static/locales/et/common.json -A1 -B1

3323-3323: Fix clunky “organisatsiooni meeskondades” endings in PBAC descriptions

Prefer “organisatsioonis” or “organisatsiooni meeskondadega” per prior guidance.

-  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsiooni meeskondades",
+  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsioonis",
@@
-  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsiooni meeskondades",
+  "pbac_desc_manage_event_types": "Kõik toimingud sündmuste tüüpidega organisatsioonis",
@@
-  "pbac_desc_manage_teams": "Kõik toimingud meeskondadega organisatsiooni meeskondades",
+  "pbac_desc_manage_teams": "Kõik toimingud organisatsiooni meeskondadega",
@@
-  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsiooni meeskondades",
+  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsioonis",

Also applies to: 3333-3333, 3341-3342, 3356-3357


3444-3466: Standardize webhook terminology and nouns (“veebihaak”, “lühinimi”, “lokaat”, “ümberajastamine”)

  • Use “veebihaak/veebihaagi” (avoid “Veebikonksu/Webhooki”).
  • “slug” → “lühinimi”.
  • “lokaad” → “lokaat”.
  • Prefer “Ümberajastamise UID”.
-  "webhook_trigger_event": "Käivitava sündmuse nimi (nt BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Veebikonksu loomise aeg",
-  "webhook_type": "Sündmuse tüübi slug",
+  "webhook_trigger_event": "Käivitussündmuse nimi (nt BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Veebihaagi loomise aeg",
+  "webhook_type": "Sündmuse tüübi lühinimi",
@@
-  "webhook_reschedule_uid": "Ümberplaneerimise UID",
+  "webhook_reschedule_uid": "Ümberajastamise UID",
@@
-  "webhook_organizer_locale": "Korraldaja lokaad (nt 'en', 'fr')",
+  "webhook_organizer_locale": "Korraldaja lokaat (nt 'en', 'fr')",
@@
-  "webhook_attendee_locale": "Esimese osaleja lokaad",
+  "webhook_attendee_locale": "Esimese osaleja lokaat",

Optional validation:

#!/bin/bash
# Check webhook terminology consistency in et/common.json
rg -n 'Webhook|Webhooki|Veebikonks' apps/web/public/static/locales/et/common.json -A1 -B1
rg -n 'lokaad' apps/web/public/static/locales/et/common.json -A0 -B0
rg -n 'slug' apps/web/public/static/locales/et/common.json -A0 -B0

Also applies to: 3459-3463

apps/web/public/static/locales/de/common.json (4)

123-123: Hyphenate “Round‑Robin” and use “Veranstalter”

Standardize wording across DE locales: prefer “Round‑Robin‑Veranstalter”.

Apply:

-  "round_robin_host_unavailable_for_booking": "Round Robin-Gastgeber ist für Buchungen nicht verfügbar.",
+  "round_robin_host_unavailable_for_booking": "Round-Robin-Veranstalter ist für Buchungen nicht verfügbar.",

3324-3329: PBAC scope phrasing: prefer “innerhalb der Organisation”

“über Organisationsteams hinweg” reads awkwardly and is inconsistent with earlier approved phrasing. Use “innerhalb der Organisation” for parallelism and clarity.

Apply:

-  "pbac_desc_manage_roles": "Alle Aktionen für Rollen über Organisationsteams hinweg",
+  "pbac_desc_manage_roles": "Alle Aktionen für Rollen innerhalb der Organisation",
-  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen über Organisationsteams hinweg",
+  "pbac_desc_manage_event_types": "Alle Aktionen für Ereignistypen innerhalb der Organisation",
-  "pbac_desc_manage_teams": "Alle Aktionen für Teams über Organisationsteams hinweg",
+  "pbac_desc_manage_teams": "Alle Aktionen für Teams innerhalb der Organisation",
-  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen über Organisationsteams hinweg",
+  "pbac_desc_manage_bookings": "Alle Aktionen für Buchungen innerhalb der Organisation",

Also applies to: 3334-3334, 3342-3342, 3356-3356


3366-3366: Localize “Load Balancing” and hyphenate “Round‑Robin‑Gruppen”

Use “Lastverteilung” and hyphenate “Round‑Robin”.

Apply:

-  "rr_load_balancing_disabled_with_groups": "Load Balancing ist mit Round Robin Gruppen nicht verfügbar",
+  "rr_load_balancing_disabled_with_groups": "Lastverteilung ist mit Round-Robin-Gruppen nicht verfügbar",

875-879: New OAuth section looks good; unify OAuth key casing across codebase

These new keys use oauth_* while other keys still use mixed “oAuth*” casing (see lines ~2441–2445). Please standardize to oauth_* everywhere and update references.

Run to locate mixed-case keys and code usages:

#!/bin/bash
# Find mixed-case OAuth keys in locales
rg -n --glob 'apps/web/public/static/locales/**/*.json' '"oAuth'

# Find code usages referring to oAuth* keys
rg -n 'oAuth_client_|admin_oAuth_|select_oAuth_client|["'\'']oAuth["'\'']'

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Du er allerede tilmeldt denne booking.",
"hosts_unavailable_for_booking": "Nogle af værterne er ikke tilgængelige for booking.",
"fixed_hosts_unavailable_for_booking": "Nogle af de faste værter er ikke tilgængelige for booking.",
"round_robin_hosts_unavailable_for_booking": "Ingen Round Robin-værter er tilgængelige for booking.",
"round_robin_host_unavailable_for_booking": "Round Robin-værten er ikke tilgængelig for booking.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Rename to singular “host” looks good; verify cross-locale presence of the new key

The new key and wording read well in Danish.

Run this to ensure the new key exists in all locales and the old one is fully gone:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

base="apps/web/public/static/locales"

echo "1) JSON validity check"
fd -H --glob 'common.json' "$base" | xargs -I{} jq -e . {} >/dev/null
echo "✔ JSON valid"

echo
echo "2) Ensure old key is removed"
if rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base"; then
  echo "Found old key usage above — please remove/replace."
  exit 1
else
  echo "✔ Old key not found repo-wide"
fi

echo
echo "3) Ensure new key exists in all locales"
missing=0
mapfile -t files < <(fd -H --glob 'common.json' "$base")
for f in "${files[@]}"; do
  if ! jq -e 'has("round_robin_host_unavailable_for_booking")' "$f" >/dev/null; then
    echo "✗ Missing round_robin_host_unavailable_for_booking in: $f"
    missing=1
  fi
done
[ $missing -eq 0 ] && echo "✔ New key present in all locales"

Length of output: 771


I noticed the process‐substitution step failed in the sandbox. Let’s re-verify existence of the new key across all locales with a simpler loop:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

base="apps/web/public/static/locales"

echo "1) JSON validity check"
fd -H --glob 'common.json' "$base" | xargs -I{} jq -e . {} >/dev/null
echo "✔ JSON valid"

echo
echo "2) Ensure old key is removed"
if rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base"; then
  echo "Found old key usage above — please remove/replace."
  exit 1
else
  echo "✔ Old key not found repo-wide"
fi

echo
echo "3) Ensure new key exists in all locales"
missing=0
for f in $(fd -H --glob 'common.json' "$base"); do
  if ! jq -e 'has("round_robin_host_unavailable_for_booking")' "$f" >/dev/null; then
    echo "✗ Missing round_robin_host_unavailable_for_booking in: $f"
    missing=1
  fi
done

if [ $missing -eq 0 ]; then
  echo "✔ New key present in all locales"
else
  exit 1
fi

Length of output: 8978


Add new key to all locale files

We verified that JSON is valid and the old key (round_robin_hosts_unavailable_for_booking) has been fully removed. However, the new key round_robin_host_unavailable_for_booking is missing in several locale files. Please add the entry with the correct translation in each:

• apps/web/public/static/locales/hr/common.json
• apps/web/public/static/locales/id/common.json
• apps/web/public/static/locales/iw/common.json
• apps/web/public/static/locales/lv/common.json
• apps/web/public/static/locales/sk/common.json
• apps/web/public/static/locales/ta/common.json
• apps/web/public/static/locales/th/common.json

🤖 Prompt for AI Agents
In apps/web/public/static/locales/da/common.json around line 123 and in the
following files: apps/web/public/static/locales/hr/common.json,
apps/web/public/static/locales/id/common.json,
apps/web/public/static/locales/iw/common.json,
apps/web/public/static/locales/lv/common.json,
apps/web/public/static/locales/sk/common.json,
apps/web/public/static/locales/ta/common.json,
apps/web/public/static/locales/th/common.json add the new JSON key
"round_robin_host_unavailable_for_booking" with the correct localized
translation equivalent to "Round Robin host is not available for booking" (use
the proper language-specific phrasing), ensure the old key
"round_robin_hosts_unavailable_for_booking" is not present, keep JSON syntax
valid (comma placement, quoting), and run the locale/JSON linter or tests to
verify.

@@ -3391,6 +3413,7 @@
"license_key_saved": "Licensnøgle blev gemt med succes",
"timezone_mismatch_tooltip": "Du ser rapporten baseret på din profils tidszone ({{userTimezone}}), mens din browser er indstillet til tidszonen ({{browserTimezone}})",
"failed_bookings_by_field": "Mislykkede bookinger efter felt",
"failed_bookings": "Mislykkede bookinger",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

New analytics label: LGTM; verify cross-locale coverage

Translation is good. Ensure every locale defines this to avoid fallback-to-English.


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail
base="apps/web/public/static/locales"
missing=0
mapfile -t files < <(fd -H --glob 'common.json' "$base")
for f in "${files[@]}"; do
  if ! jq -e 'has("failed_bookings")' "$f" >/dev/null; then
    echo "✗ Missing failed_bookings in: $f"
    missing=1
  fi
done
[ $missing -eq 0 ] && echo "✔ failed_bookings present in all locales"

Length of output: 256


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

base="apps/web/public/static/locales"
listfile=$(mktemp)

# Gather all common.json paths
find "$base" -name 'common.json' -print0 > "$listfile"

# Check each for the new key
missing=()
while IFS= read -r -d '' f; do
  if ! jq -e 'has("failed_bookings")' "$f" >/dev/null; then
    missing+=("$f")
  fi
done < "$listfile"
rm "$listfile"

# Report results
if [ ${#missing[@]} -eq 0 ]; then
  echo "✔ failed_bookings present in all locales"
else
  for f in "${missing[@]}"; do
    echo "✗ Missing failed_bookings in: $f"
  done
  exit 1
fi

Length of output: 6286


Missing “failed_bookings” key in additional locales

The new failed_bookings label is present in most common.json files, but the following locale files are missing it and will fall back to English:

• apps/web/public/static/locales/hr/common.json
• apps/web/public/static/locales/id/common.json
• apps/web/public/static/locales/iw/common.json
• apps/web/public/static/locales/lv/common.json
• apps/web/public/static/locales/sk/common.json
• apps/web/public/static/locales/ta/common.json
• apps/web/public/static/locales/th/common.json

Please add the appropriate translations for failed_bookings in each of these files to ensure full cross-locale coverage.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/hr/common.json (and similarly in
apps/web/public/static/locales/id/common.json,
apps/web/public/static/locales/iw/common.json,
apps/web/public/static/locales/lv/common.json,
apps/web/public/static/locales/sk/common.json,
apps/web/public/static/locales/ta/common.json,
apps/web/public/static/locales/th/common.json) add the missing "failed_bookings"
key with the correct localized translation string so these locales no longer
fall back to English; insert the new key in the same JSON object structure and
formatting as other entries (ensure valid JSON, proper escaping, and place it
near related booking labels for consistency).

Comment on lines 121 to +123
"hosts_unavailable_for_booking": "Neki od domaćina nisu dostupni za rezervaciju.",
"fixed_hosts_unavailable_for_booking": "Neki od fiksnih domaćina nisu dostupni za rezervaciju.",
"round_robin_hosts_unavailable_for_booking": "Nijedan Round Robin domaćin nije dostupan za rezervaciju.",
"round_robin_host_unavailable_for_booking": "Round Robin domaćin nije dostupan za zakazivanje.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Automate audit for “Round Robin” remnants and booking noun consistency

Run this to locate remaining English “Round Robin” phrases and noun mismatches for “rezervacija/zakazivanje”.

Also applies to: 3101-3101, 3366-3366


🏁 Script executed:

#!/bin/bash
set -euo pipefail
file="apps/web/public/static/locales/sr/common.json"

echo "— Occurrences containing 'Round Robin' —"
rg -n -S '"[^"]*": "[^"]*Round Robin[^"]*"' "$file" || true

echo
echo "— Unavailability messages for booking noun consistency —"
rg -n -S '"hosts_unavailable_for_booking"| "fixed_hosts_unavailable_for_booking"| "round_robin_host_unavailable_for_booking"' "$file"

echo
echo "— RR keys that might still be English in values —"
rg -n -S '"round_robin"| "reset_interval_weighted_rr"| "rr_interval_successfully_updated"| "rr_settings_successfully_updated"| "distribution_basis_weighted_rr"| "rr_load_balancing_disabled_with_groups"' "$file"

Length of output: 2600


Fix remaining “Round Robin” translations & unify booking noun

  • Update the booking-unavailability message to use “rezervaciju” instead of “zakazivanje”:
    • round_robin_host_unavailable_for_booking (line 123): "Round Robin domaćin nije dostupan za rezervaciju."
  • Translate all other values that still contain English “Round Robin”:
    • round_robin (line 806)
    • salesforce_route_to_owner (line 2963)
    • salesforce_do_not_route_to_owner (line 2965)
    • reset_interval_weighted_rr (line 3101)
    • rr_interval_successfully_updated (line 3118)
    • rr_settings_successfully_updated (line 3263)
    • distribution_basis_weighted_rr (line 3264)
    • rr_load_balancing_disabled_with_groups (line 3366)

Run the audit script again after updating to confirm no English remnants remain.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/sr/common.json around lines 121-123 and the
other listed keys, the "round_robin_host_unavailable_for_booking" message uses
"zakazivanje" and several entries still contain English "Round Robin"; change
"round_robin_host_unavailable_for_booking" to use "rezervaciju" (i.e., "Round
Robin domaćin nije dostupan za rezervaciju."), replace all remaining English
"Round Robin" occurrences with an appropriate Serbian translation (consistent
phrasing used elsewhere), and update the listed keys (round_robin at ~806,
salesforce_route_to_owner ~2963, salesforce_do_not_route_to_owner ~2965,
reset_interval_weighted_rr ~3101, rr_interval_successfully_updated ~3118,
rr_settings_successfully_updated ~3263, distribution_basis_weighted_rr ~3264,
rr_load_balancing_disabled_with_groups ~3366) to Serbian; after making these
edits run the localization audit script to confirm no English remnants remain.

@@ -3280,6 +3289,7 @@
"pbac_resource_booking": "Rezervacije",
"pbac_resource_insights": "Uvidi",
"pbac_resource_role": "Uloge",
"pbac_resource_workflow": "Radni tokovi",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

PBAC scope phrasing inconsistent with summary; harmonize to “u organizaciji”

The AI summary claims org-wide phrasing; current strings mix “u timovima organizacije” vs “u organizaciji”. Align for consistency.

-  "pbac_desc_manage_workflows": "Puni pristup upravljanju svim radnim tokovima",
+  "pbac_desc_manage_workflows": "Puni pristup upravljanju svim radnim tokovima u organizaciji",
-  "pbac_desc_manage_roles": "Sve akcije nad ulogama u timovima organizacije",
+  "pbac_desc_manage_roles": "Sve akcije nad ulogama u organizaciji",
-  "pbac_desc_manage_event_types": "Sve akcije nad tipovima događaja u timovima organizacije",
+  "pbac_desc_manage_event_types": "Sve akcije nad tipovima događaja u organizaciji",
-  "pbac_desc_manage_teams": "Sve akcije nad timovima u organizaciji",
+  "pbac_desc_manage_teams": "Sve akcije nad timovima u organizaciji",  # keep if org-wide scope intended
-  "pbac_desc_manage_bookings": "Sve akcije nad rezervacijama u timovima organizacije",
+  "pbac_desc_manage_bookings": "Sve akcije nad rezervacijama u organizaciji",

If team-scoped wording was intentional for specific entries, please confirm and we’ll adjust only the relevant ones.

Also applies to: 3315-3320, 3324-3329, 3333-3333, 3341-3341, 3356-3356

🤖 Prompt for AI Agents
In apps/web/public/static/locales/sr/common.json around lines 3292, 3315-3320,
3324-3329, 3333, 3341, and 3356, several PBAC scope strings use mixed phrasing
("u timovima organizacije" vs "u organizaciji"); update the translations to
consistently use "u organizaciji" where the scope is organization-wide (replace
occurrences of "u timovima organizacije" or similar team-scoped wording with "u
organizaciji"); if any of those entries were intentionally meant to be
team-scoped, leave those specific lines unchanged and add a comment or notify
reviewer to confirm intent.

Comment on lines +3315 to 3320
"pbac_resource_attributes": "Egenskaper",
"pbac_desc_view_organization_attributes": "Visa organisationens egenskaper",
"pbac_desc_update_organization_attributes": "Uppdatera organisationens egenskaper",
"pbac_desc_delete_organization_attributes": "Ta bort organisationens egenskaper",
"pbac_desc_create_organization_attributes": "Skapa organisationens egenskaper",
"pbac_desc_view_roles": "Visa roller",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Use “Attribut” instead of “Egenskaper” for attributes terminology.

Product-wide term is “Attribut”. Align these PBAC strings accordingly.

-  "pbac_resource_attributes": "Egenskaper",
-  "pbac_desc_view_organization_attributes": "Visa organisationens egenskaper",
-  "pbac_desc_update_organization_attributes": "Uppdatera organisationens egenskaper",
-  "pbac_desc_delete_organization_attributes": "Ta bort organisationens egenskaper",
-  "pbac_desc_create_organization_attributes": "Skapa organisationens egenskaper",
+  "pbac_resource_attributes": "Attribut",
+  "pbac_desc_view_organization_attributes": "Visa organisationens attribut",
+  "pbac_desc_update_organization_attributes": "Uppdatera organisationens attribut",
+  "pbac_desc_delete_organization_attributes": "Ta bort organisationens attribut",
+  "pbac_desc_create_organization_attributes": "Skapa organisationens attribut",

To enforce consistency across the file, scan and replace remaining “Egenskaper” where it denotes “Attributes”:


🏁 Script executed:

#!/bin/bash
rg -n $'"Egenskaper|egenskaper"' apps/web/public/static/locales/sv/common.json

Length of output: 736


Ensure “Attribut” is used for all attribute-related entries

We’ve identified additional occurrences of “Egenskaper” that map to “attributes” in apps/web/public/static/locales/sv/common.json. Please update them as follows:

• Line 2789: "attributes": "Egenskaper"
• Line 2791: "add_attributes": "Lägg till egenskaper"
• Line 2800: "attributes_edited_successfully": "Egenskaperna redigerades framgångsrikt"
• Line 2803: "back_to_attributes": "Tillbaka till egenskaper"
• Lines 3315–3319: PBAC entries

Suggested diff:

-  "attributes": "Egenskaper",
-  "add_attributes": "Lägg till egenskaper",
-  "attributes_edited_successfully": "Egenskaperna redigerades framgångsrikt",
-  "back_to_attributes": "Tillbaka till egenskaper",
-  "pbac_resource_attributes": "Egenskaper",
-  "pbac_desc_view_organization_attributes": "Visa organisationens egenskaper",
-  "pbac_desc_update_organization_attributes": "Uppdatera organisationens egenskaper",
-  "pbac_desc_delete_organization_attributes": "Ta bort organisationens egenskaper",
-  "pbac_desc_create_organization_attributes": "Skapa organisationens egenskaper",
+  "attributes": "Attribut",
+  "add_attributes": "Lägg till attribut",
+  "attributes_edited_successfully": "Attributen redigerades framgångsrikt",
+  "back_to_attributes": "Tillbaka till attribut",
+  "pbac_resource_attributes": "Attribut",
+  "pbac_desc_view_organization_attributes": "Visa organisationens attribut",
+  "pbac_desc_update_organization_attributes": "Uppdatera organisationens attribut",
+  "pbac_desc_delete_organization_attributes": "Ta bort organisationens attribut",
+  "pbac_desc_create_organization_attributes": "Skapa organisationens attribut",
📝 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.

Suggested change
"pbac_resource_attributes": "Egenskaper",
"pbac_desc_view_organization_attributes": "Visa organisationens egenskaper",
"pbac_desc_update_organization_attributes": "Uppdatera organisationens egenskaper",
"pbac_desc_delete_organization_attributes": "Ta bort organisationens egenskaper",
"pbac_desc_create_organization_attributes": "Skapa organisationens egenskaper",
"pbac_desc_view_roles": "Visa roller",
"pbac_resource_attributes": "Attribut",
"pbac_desc_view_organization_attributes": "Visa organisationens attribut",
"pbac_desc_update_organization_attributes": "Uppdatera organisationens attribut",
"pbac_desc_delete_organization_attributes": "Ta bort organisationens attribut",
"pbac_desc_create_organization_attributes": "Skapa organisationens attribut",
"pbac_desc_view_roles": "Visa roller",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/sv/common.json lines ~2789, 2791, 2800, 2803
and 3315–3319, replace instances of "Egenskaper"/phrases containing "egenskaper"
that map to "attributes" with the consistent term "Attribut" (use "Attribut" for
the standalone key), and update related phrases accordingly: "attributes" ->
"Attribut"; "add_attributes" -> "Lägg till attribut";
"attributes_edited_successfully" -> "Attributen redigerades framgångsrikt";
"back_to_attributes" -> "Tillbaka till attribut"; PBAC entries
(pbac_resource_attributes and pbac_desc_*_organization_attributes) change
"Egenskaper"/"organisationens egenskaper" to "Attribut"/"organisationens
attribut" while leaving unrelated keys like "pbac_desc_view_roles" unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core area: core, team members only foundation i18n area: i18n, translations
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants