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
Name Status Preview Comments Updated (UTC)
cal ⬜️ Ignored (Inspect) Aug 11, 2025 7:14pm
cal-eu ⬜️ Ignored (Inspect) Aug 11, 2025 7:14pm

@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

Walkthrough

This PR updates many public locale JSON files under apps/web/public/static/locales. It renames round_robin_hosts_unavailable_for_booking → round_robin_host_unavailable_for_booking and adds numerous keys across domains: round-robin groups and rr_load_balancing_disabled_with_groups, OAuth client UI and admin notices, embedding/headless routing strings, PBAC resources/descriptors (workflows, attributes, organization-attribute descriptors and many pbac_desc_*), group/booking/stats keys, and an extensive webhook metadata key set. All changes are localization-only; no executable logic changes.

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.
    • Explain this complex logic.
    • 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. Examples:
    • @coderabbitai explain this code block.
  • 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 src/utils.ts and explain its main purpose.
    • @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 comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

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

Documentation and Community

  • 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: 29

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

3292-3292: PBAC additions: verify EN parity and UI wiring

New PBAC resource and description keys look consistent. Ensure English locale contains matching keys and that permission matrices map to them.

#!/bin/bash
# Locate English common.json
EN=$(fd --absolute-path common.json . | rg '/locales/en/common.json$' | head -n1)
echo "Scanning: $EN"

# Verify presence of new PBAC keys in EN
rg -n '"pbac_resource_workflow"| "pbac_resource_attributes"| "pbac_desc_(create|view|update|delete|manage)_(workflows|event_types|teams|bookings)|"pbac_desc_(view|update|delete|create)_organization_attributes' "$EN" \
  || echo "One or more PBAC keys missing in EN/common.json"

Also applies to: 3315-3336, 3341-3341, 3356-3356


3473-3474: “stats” duplication previously flagged — appears resolved now

Earlier duplicate “stats” was reported; in this version only one “stats” key exists (Line 3473). Good fix.

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

875-878: 統一為「OAuth 客戶端」:已修正且一致

此前評論提到「用戶端/客戶端」不一致,此處已統一為「客戶端」。讚。

建議快速檢查本檔其餘新/舊字串是否仍殘留「用戶端」以保持一致:

#!/bin/bash
rg -n --glob '!node_modules' $'apps/web/public/static/locales/zh-TW/common.json' -e '用戶端|客戶端' -A 1
apps/web/public/static/locales/ja/common.json (1)

123-123: Apply prior JP style tweak for natural phrasing

Past suggestion still applies: drop the extra の for consistency with nearby strings.

-  "round_robin_host_unavailable_for_booking": "ラウンドロビンのホストは予約できません。",
+  "round_robin_host_unavailable_for_booking": "ラウンドロビンホストは予約できません。",

To ensure the old plural key isn’t used anywhere:

#!/bin/bash
rg -n --hidden --glob '!.git' 'round_robin_hosts_unavailable_for_booking|roundRobinHostsUnavailableForBooking'
apps/web/public/static/locales/ca/common.json (1)

3383-3383: Use imperative for “add_group” to match dominant pattern.

Most “add_*” labels use imperative (“Afegeix …”). Align this one for consistency.

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

123-123: Round Robin terminology + “zakazivanje” vs “rezervacija” consistency

Mixed “Round Robin” vs localized form and “zakazivanje” vs “rezervacija.” Align with adjacent strings (Lines 121–122 use “rezervaciju”). Suggested localized phrasing:

-  "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."

3341-3341: Harmonize PBAC scope phrasing for teams (matches prior feedback)

Other entries use “u timovima organizacije” (e.g., roles and event types). Align “manage teams” to the same scope phrasing:

-  "pbac_desc_manage_teams": "Sve akcije nad timovima u organizaciji",
+  "pbac_desc_manage_teams": "Sve akcije nad timovima u timovima organizacije"

If the broader “u organizaciji” scope was intentional, please confirm and keep as-is.


3366-3366: RR groups balancing: apply terminology decision consistently

Make RR term consistent across file (English “Round Robin” vs “kružno dodeljivanje”). If localizing, suggest:

-  "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 kružnim dodeljivanjem grupa"

Run a quick sweep to unify the chosen term across all RR strings.

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

123-123: Use Norwegian “bestilling” for consistency (past request not reflected).

Switch “booking” → “bestilling” to align with Norwegian style used elsewhere and prior guidance.

-  "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.",

Optional: verify no stale references to the old plural key remain outside locales:

#!/bin/bash
set -euo pipefail
echo "Searching for old key in source (excluding locales)..."
rg -n -S "round_robin_hosts_unavailable_for_booking" --glob '!apps/web/public/static/locales/**' || true

3324-3324: Align PBAC phrasing: “organisasjonens team” and “hendelsestyper” (as previously requested).

Consistently use “hendelsestyper” and “på tvers av organisasjonens team”.

-  "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/ru/common.json (1)

123-123: Unify “организатор” and replace “Round Robin” with “по очереди”

Keep terminology consistent with the rest of the RU locale.

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

123-123: Hyphenation: prefer “Round-robin” without spaces around the hyphen

Use “Round-robin-isäntä” for proper Finnish hyphenation 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.",
apps/web/public/static/locales/vi/common.json (1)

875-878: Unify terminology: use “OAuth Client(s)” consistently across vi locale

These four new entries currently use “Ứng dụng OAuth” while other strings in this file already use “OAuth Client” (e.g., admin_oAuth_description, oAuth_client_* forms). Align for consistency.

-  "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_clients": "OAuth Clients",
+  "oauth_clients_description": "Quản lý OAuth Clients cho tổ chức của bạn",
+  "create_oauth_client": "Tạo OAuth Client",
+  "create_oauth_client_description": "Tạo OAuth Client mới cho tích hợp bên thứ ba",

Also update nearby strings (outside this hunk) for consistency:

  • Line 879: "oauth_client_deletion_message": change to “Đã xóa thành công OAuth Client”
  • Line 240: "webhook_update_form_description": add space → “OAuth Client”

Would you like me to open a follow-up to sweep all vi/common.json keys for consistent “OAuth Client(s)” usage?

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

875-878: Use “타사” (preferred) and keep style consistent with surrounding descriptions

Replace “서드파티” with the more standard “타사”. Optional: if you prefer sentence-style, consider “…를 생성합니다” to match other descriptions nearby.

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

123-123: Repo-wide verification of new/renamed keys

This was already flagged in earlier review; ensure the newly added keys exist across all locales and the old key round_robin_hosts_unavailable_for_booking is not referenced anywhere.

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

3473-3474: Duplicate key: stats will overwrite earlier value

Key stats already exists earlier in this file; redefining it will shadow the first on load. Rename this new one to avoid collision, e.g., booking_stats.

Apply this minimal fix:

-  "stats": "Statystyki",
+  "booking_stats": "Statystyki",

Detect duplicate keys programmatically:

#!/bin/bash
python - << 'PY'
import json, sys, collections
path = "apps/web/public/static/locales/pl/common.json"
pairs = []
with open(path, 'r', encoding='utf-8') as f:
    # Load raw text to capture duplicates
    text = f.read()
# Simple duplicate detector by scanning lines
from collections import defaultdict
counts = defaultdict(int)
for line in text.splitlines():
    line=line.strip()
    if line.startswith('"'):
        key=line.split('"',2)[1]
        counts[key]+=1
dups=[k for k,v in counts.items() if v>1]
print("DUPLICATE_KEYS:", ", ".join(sorted(dups)) if dups else "NONE")
PY
apps/web/public/static/locales/da/common.json (1)

123-123: Danish phrasing tweak for natural tone

Prefer “til booking” over “for booking”.

-  "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.",
apps/web/public/static/locales/de/common.json (1)

123-123: Standardize “Round‑Robin” and prefer “Veranstalter”

Align with project terminology and hyphenation.

-  "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.",
apps/web/public/static/locales/pt/common.json (1)

123-123: PT-PT consistency: use “reserva” and preposition “de”

Aligns with earlier PT-PT usage and avoids BR-PT “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.",
apps/web/public/static/locales/it/common.json (2)

123-123: Normalize “host Round Robin” to established terminology

Use “organizzatore round robin” to match existing usage and casing in this file.

-  "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-3367: Uniformare “Round Robin” → “round robin”

Capitalize consistently as lowercase “round robin” throughout 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/fr/common.json (1)

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

Use lowercase with hyphen for consistency with the rest of the file (see 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.",
apps/web/public/static/locales/bg/common.json (1)

123-123: Align Round‑Robin branding and verify singular rename usage

Use consistent “Round‑Robin” branding across BG locale. Also, since this is a singularized key rename, re-verify no usages of the old plural key remain.

Apply:

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

Run to verify:

#!/bin/bash
# Should be zero matches for the deprecated key, and matches for the new one.
rg -n --hidden --glob '!*node_modules*' $'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking'
apps/web/public/static/locales/es/common.json (4)

123-123: Spanish phrasing tweak for naturalness

Prefer “para la reserva” over “para reservas”.

-"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: Tone consistency (Administra vs Gestiona) — optional

Elsewhere we often use “Administra …”. If you want consistent tone, prefer “Administra”.

 "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 Spanish wording for workflow descriptors

Prefer singular “configuración” and improved word order for readability.

-"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",

3416-3416: New analytics label — LGTM; ensure cross-locale coverage

Spanish looks good here. Confirm presence across locales to avoid fallback.

You can verify coverage with:

#!/bin/bash
set -euo pipefail
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "failed_bookings" "stats" "booking_status"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
done
apps/web/public/static/locales/et/common.json (2)

123-123: Normalize “host” → “võõrustaja” (consistent terminology).

Same issue noted previously. Use “võõrustaja” across Estonian 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” consistently for “routing”.

Line 2255 is fine. For 2256, replace “suunamise” with “marsruutimise” per locale convention.

-  "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 ning esita oma vorm otse."
apps/web/public/static/locales/eu/common.json (2)

875-879: Namespace mismatch: rename oauth_ keys to match existing oAuth_ usage in code**

Components reference oAuth_; these new keys use oauth_ and won’t resolve. Standardize by renaming.

-"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_client_deletion_message": "OAuth bezeroa behar bezala ezabatu da",
+"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_client_deletion_message": "OAuth bezeroa behar bezala ezabatu da",

3315-3320: Missing manage permission: add pbac_desc_manage_organization_attributes

Downstream UIs expect a “manage” descriptor for symmetry with create/read/update/delete. Without it, the label for “Manage attributes” renders undefined.

   "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",
apps/web/public/static/locales/ar/common.json (7)

875-878: OAuth microcopy + terminology consistency (“المنظمة”)

Reuse the established term “المنظمة” and tighten phrasing for clarity.

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

1844-1845: Standardize “Organization” as “المنظمة” in admin notices

Align with the file’s chosen terminology.

-  "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: PBAC attribute permissions: use “المنظمة”

Keep “Organization” 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": "إنشاء سمات المنظمة",

3323-3329: PBAC scope strings: standardize “فرق المنظمة”

Replace “المؤسسة” with “المنظمة” across scope descriptions.

-  "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": "وصول كامل لإدارة جميع سير العمل",

3333-3333: PBAC scope: event types across org teams

Use “فرق المنظمة”.

-  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المؤسسة",
+  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المنظمة",

3341-3341: PBAC scope: teams across org

Use “فرق المنظمة”.

-  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المؤسسة",
+  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المنظمة",

3356-3356: PBAC scope: bookings across org

Use “فرق المنظمة”.

-  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المؤسسة",
+  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المنظمة",
apps/web/public/static/locales/pt-BR/common.json (1)

1844-1845: Terminologia “proprietário” vs “dono” (manter consistência)

Estes novos textos usam “proprietário” (correto), mas linhas próximas ainda usam “dono”:

  • Line 1842: only_admin_can_manage_sso_org
  • Line 1843: only_admin_can_manage_sso_org (exibição aqui mostra uma, mas valide ambas)

Padronize para “proprietário”.

Posso abrir um patch para trocar “dono” por “proprietário” nessas entradas remanescentes.

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

3416-3416: Good fix: “Rezervări eșuate” aligns with preferred terminology

This implements the earlier consistency request to use “Rezervări” over “Programări”.


3474-3475: Use “Starea rezervării” instead of “Status programare”

Prefer native “Stare” and “rezervării” per prior guidance. Also plural vs singular mismatch in current text.

-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/tr/common.json (1)

123-123: Align RR terminology to “Döngüsel organizatör”.

Use the established in-product term for consistency with other RR strings.

-  "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."
apps/web/public/static/locales/bn/common.json (1)

123-123: Fix BN possessive and hyphenation for consistency

Use the contracted possessive and consistent hyphenation (“রাউন্ড-রবিন”).

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

875-878: Use consistent term for “Organization” in Khmer

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 “អង្គការ”

These two strings still use “អង្គភាព”. Switch to “អង្គការ”.

-"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: PBAC attribute descriptors: switch “អង្គភាព” → “អង្គការ”

Align with established term.

 "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: use “អង្គការ”

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

3333-3333: PBAC event-types descriptor: use “អង្គការ”

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

3341-3341: PBAC teams descriptor: use “អង្គការ”

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

3356-3356: PBAC bookings descriptor: remove “ក្រុម” and use “អង្គការ”

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

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

Comment on lines +3444 to 3475
"webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
"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": "المنطقة الزمنية للمنظم (مثل '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": "رابط مكالمة الفيديو للاجتماع",
"webhook_hide_variables": "إخفاء المتغيرات",
"webhook_show_variable": "إظهار المتغيرات المتاحة",
"webhook_event_and_booking": "الفعالية والحجز",
"webhook_people": "الأشخاص",
"webhook_teams": "الفرق",
"webhook_metadata": "البيانات الوصفية",
"stats": "الإحصائيات",
"booking_status": "حالة الحجز",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
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

Fix mistranslations in webhook metadata (+standardize “ويبهوك”)

  • “webhook_type” currently implies a link (“رابط …”)—should denote type.
  • “webhook_created_at” should indicate creation time, and prefer “ويبهوك” spelling.
  • “webhook_title” should be “عنوان الحدث”.
  • Singularize “webhook_show_variable” to match the key.
-  "webhook_created_at": "وقت الويب هوك",
+  "webhook_created_at": "وقت إنشاء الويبهوك",
-  "webhook_type": "رابط نوع الحدث",
+  "webhook_type": "نوع الحدث",
-  "webhook_title": "اسم نوع الحدث",
+  "webhook_title": "عنوان الحدث",
-  "webhook_show_variable": "إظهار المتغيرات المتاحة",
+  "webhook_show_variable": "إظهار المتغير المتاح",

If “webhook_type” was intended as “Webhook type” (not the event type), consider “نوع الويبهوك” instead.


🏁 Script executed:

#!/bin/bash
sed -n '3430,3480p' apps/web/public/static/locales/ar/common.json

Length of output: 2730


🏁 Script executed:

#!/bin/bash
find apps/web/public/static/locales -type f

Length of output: 2085


🏁 Script executed:

#!/bin/bash
grep -R "\"webhook_created_at\"" -n apps/web/public/static/locales/en/common.json
grep -R "\"webhook_type\"" -n apps/web/public/static/locales/en/common.json
grep -R "\"webhook_title\"" -n apps/web/public/static/locales/en/common.json
grep -R "\"webhook_show_variable\"" -n apps/web/public/static/locales/en/common.json

Length of output: 528


Correct Arabic translations for webhook metadata

Please update the following entries in apps/web/public/static/locales/ar/common.json to match the English source and standardize the spelling of “webhook”:

• Change “webhook_created_at” to reflect a creation timestamp and use a single-word “الويبهوك”:

-  "webhook_created_at": "وقت الويب هوك",
+  "webhook_created_at": "وقت إنشاء الويبهوك",

• Fix “webhook_type” (currently “رابط نوع الحدث” implies a link) to denote the event‐type slug. For example:

-  "webhook_type": "رابط نوع الحدث",
+  "webhook_type": "نوع الحدث",

Or, to preserve the “slug” nuance, use:

-  "webhook_type": "رابط نوع الحدث",
+  "webhook_type": "معرّف نوع الحدث",

The other keys (“webhook_title” → “اسم نوع الحدث” and
“webhook_show_variable” → “إظهار المتغيرات المتاحة”) already match the English (“The event type name” and “Show available variables”) and can remain unchanged.

📝 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": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
"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": "المنطقة الزمنية للمنظم (مثل '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": "رابط مكالمة الفيديو للاجتماع",
"webhook_hide_variables": "إخفاء المتغيرات",
"webhook_show_variable": "إظهار المتغيرات المتاحة",
"webhook_event_and_booking": "الفعالية والحجز",
"webhook_people": "الأشخاص",
"webhook_teams": "الفرق",
"webhook_metadata": "البيانات الوصفية",
"stats": "الإحصائيات",
"booking_status": "حالة الحجز",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
- "webhook_created_at": "وقت الويب هوك",
+ "webhook_created_at": "وقت إنشاء الويبهوك",
- "webhook_type": "رابط نوع الحدث",
+ "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": "المنطقة الزمنية للمنظم (مثل '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": "رابط مكالمة الفيديو للاجتماع",
"webhook_hide_variables": "إخفاء المتغيرات",
"webhook_show_variable": "إظهار المتغيرات المتاحة",
"webhook_event_and_booking": "الفعالية والحجز",
"webhook_people": "الأشخاص",
"webhook_teams": "الفرق",
"webhook_metadata": "البيانات الوصفية",
"stats": "الإحصائيات",
"booking_status": "حالة الحجز",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"

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": "Arrangørens e-mail",
"webhook_organizer_timezone": "Arrangørens tidszone (f.eks. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Arrangørens lokalitet (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": "Lokalitet 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: looks comprehensive; verify cross-locale coverage

The Danish strings read well and are consistent. Please ensure all newly added webhook_* keys exist across all locales to prevent runtime i18n fallbacks.


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base_dir="apps/web/public/static/locales"

# Keys to verify across locales (expand if needed)
read -r -d '' KEYS <<'EOF'
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
EOF

# Validate JSON and report missing keys per locale/common.json
fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  if ! jq -e . "$f" >/dev/null 2>&1; then
    echo "Invalid JSON: $f"
    continue
  fi
  while read -r key; do
    [[ -z "$key" ]] && continue
    if ! rg -q --fixed-strings "\"$key\"" "$f"; then
      echo "Missing key $key in: $f"
    fi
  done <<< "$KEYS"
done

Length of output: 82


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base_dir="apps/web/public/static/locales"

# Gather all locale common.json files
mapfile -t files < <(find "$base_dir" -type f -name common.json)

# Aggregate all webhook_* keys across all locales
all_keys=$(printf "%s\n" "${files[@]}" \
  | xargs -n1 jq -r 'keys[]' \
  | grep '^webhook_' \
  | sort -u)

missing=false

# Verify each key exists in every locale
for file in "${files[@]}"; do
  locale=$(basename "$(dirname "$file")")
  for key in $all_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."
fi

Length of output: 254


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base_dir="apps/web/public/static/locales"
missing=false

# Collect all webhook_* keys across every common.json
all_keys=$(find "$base_dir" -type f -name common.json -exec jq -r 'keys[]' {} + \
  | grep '^webhook_' \
  | sort -u)

# Verify each key in each locale
while IFS= read -r file; do
  locale=$(basename "$(dirname "$file")")
  for key in $all_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 < <(find "$base_dir" -type f -name common.json)

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

Length of output: 1343


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base_dir="apps/web/public/static/locales"
missing=false

# Collect all webhook_* keys across every common.json
declare -a all_keys
for file in $(find "$base_dir" -type f -name common.json); do
  while read -r key; do
    [[ "$key" == webhook_* ]] && all_keys+=("$key")
  done < <(jq -r 'keys[]' "$file")
done

# Deduplicate keys
readarray -t all_keys_unique < <(printf "%s\n" "${all_keys[@]}" | sort -u)

# Verify each key in each locale
for file in $(find "$base_dir" -type f -name common.json); do
  locale=$(basename "$(dirname "$file")")
  for key in "${all_keys_unique[@]}"; 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."
fi

Length of output: 397


🏁 Script executed:

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

base_dir="apps/web/public/static/locales"
missing=false

# 1. Collect all unique webhook_* keys across locales
all_keys=$(grep -hPo '"webhook_[^"]+"' "$base_dir"/*/common.json \
  | tr -d '"' \
  | sort -u)

# 2. Check each locale for each key
for file in "$base_dir"/*/common.json; do
  locale=$(basename "$(dirname "$file")")
  for key in $all_keys; do
    if ! grep -q "\"$key\"" "$file"; then
      echo "Missing key $key in locale '$locale' ($file)"
      missing=true
    fi
  done
done

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

Length of output: 276444


Missing webhook_ translations in several locales*

Our verification script found that the following locale files are missing one or more of the newly added webhook_* keys. Please add the missing keys with appropriate translations to prevent runtime i18n 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/ta/common.json
  • apps/web/public/static/locales/th/common.json
  • apps/web/public/static/locales/lv/common.json
  • apps/web/public/static/locales/sk/common.json

Refer to the verification output for the exact list of missing keys per file.

Comment on lines 121 to +123
"hosts_unavailable_for_booking": "Mõned võõrustajad pole broneerimiseks saadaval.",
"fixed_hosts_unavailable_for_booking": "Mõned fikseeritud hostid ei ole broneerimiseks saadaval.",
"round_robin_hosts_unavailable_for_booking": "Ükski Round Robin host ei ole broneerimiseks saadaval.",
"round_robin_host_unavailable_for_booking": "Round Robin'i host ei ole broneerimiseks saadaval.",
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 terminology consistency across file

Run to spot remaining instances of English “host”, “Webhook/Veebikonksu”, and “suunamine”.

Also applies to: 200-205, 2255-2256, 3445-3473


🏁 Script executed:

#!/bin/bash
# 1) Host vs võõrustaja
rg -n '"[^"]*host[^"]*":\s*"[^"]*host[^"]*"' apps/web/public/static/locales/et/common.json -A 0 -B 0
rg -n 'võõrustaj' apps/web/public/static/locales/et/common.json -A 0 -B 0

# 2) Webhook terminology consistency
rg -n 'Webhook|Veebikonks' apps/web/public/static/locales/et/common.json -A 1 -B 1

# 3) Routing terminology consistency
rg -n 'suunamis|suunamise|suunamine' apps/web/public/static/locales/et/common.json -A 1 -B 1
rg -n 'marsruutimin|marsruutimis' apps/web/public/static/locales/et/common.json -A 1 -B 1

Length of output: 13817


Standardize “host”, “webhook” and “routing” terminology in et/common.json

Please update the following translations in apps/web/public/static/locales/et/common.json for consistency:

• Hosts → Võõrustaja
– Lines 121–123:
• fixed_hosts_unavailable_for_booking → “Mõned fikseeritud võõrustajad ei ole broneerimiseks saadaval.”
• round_robin_host_unavailable_for_booking → “Round Robin’i võõrustaja ei ole broneerimiseks saadaval.”
– email_host_action (1345): “saada e-kiri võõrustajale
– fixed_hosts / add_fixed_hosts (1948–1949): “Fikseeritud võõrustajad” / “Lisa fikseeritud võõrustajad
– disable_host_confirmation_emails(_description) (2266–2267): “…saabata sündmuse broneerimisel võõrustajale meili”
– reassign_to_another_rr_host / no_available_hosts / reassign_round_robin_host (2779–2783): use “võõrustajale” and “võõrustajaid” instead of “hostidele/hoste”
– reschedule_with_same_round_robin_host(_title/_description) (2829–2830): “…samale võõrustajale
– show_matching_hosts (3020): “Näita sobivaid võõrustajaid
– event_type_no_hosts (3417): “…pole määratud võõrustajaid

• Webhook → Veebihaak
– webhook_test (238): “Veebihaagi test”
– webhook_update_form (239): “Veebihaagi uuendamise vorm”
– webhook_update_form_description (240): “Lisa veebihaak oma OAuth-kliendile.”
– create_your_first_webhook_description (1628): “Veebihaagiga saate…”
– error_accessing_webhooks (3190): “Viga veebihaagidele juurdepääsemisel.”
– webhook_update_failed / webhook_create_failed (3191–3192): “Veebihaagi uuendamine/loomine ebaõnnestus.”
– webhook_created_at (3445): “Veebihaagi loomise aeg”

• Routing_forms → Marsruutimisvorm
– routing_forms_description (1677): “Loo vormid osalejate marsruutimiseks õigetesse sihtkohtadesse”
– routing_forms_are_a_great_way (1971): “Marsruutimisvormid on suurepärane viis sissetulevate müügivihjete marsruutimiseks õigele inimesele.”
– test_routing_form (1835): “Testi marsruutimisvormi

🤖 Prompt for AI Agents
In apps/web/public/static/locales/et/common.json around lines 121–123, the
Estonian translations use inconsistent English loanword "host"/plural forms;
update the keys fixed_hosts_unavailable_for_booking and
round_robin_host_unavailable_for_booking to use "võõrustajad"/"võõrustaja" as
specified (change the strings to “Mõned fikseeritud võõrustajad ei ole
broneerimiseks saadaval.” and “Round Robin’i võõrustaja ei ole broneerimiseks
saadaval.”), and then apply the same terminology and casing consistency across
the other listed keys (email_host_action, fixed_hosts, add_fixed_hosts,
disable_host_confirmation_emails/_description, reassign_to_another_rr_host,
no_available_hosts, reassign_round_robin_host,
reschedule_with_same_round_robin_host/_description, show_matching_hosts,
event_type_no_hosts) replacing "host/hoste/hostidele" with the correct
"võõrustaja/võõrustajaid/võõrustajale" forms; likewise replace
"Webhook"/"webhook" occurrences with "Veebihaak" for the webhook keys
(webhook_test, webhook_update_form, webhook_update_form_description,
create_your_first_webhook_description, error_accessing_webhooks,
webhook_update_failed, webhook_create_failed, webhook_created_at), and change
"Routing_forms"/related keys to use "Marsruutimisvorm"/derivatives for
routing_forms_description, routing_forms_are_a_great_way, test_routing_form —
update only the string values to these exact Estonian terms while preserving
keys and punctuation.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Už ste prihlásený na túto rezerváciu.",
"hosts_unavailable_for_booking": "Niektorí hostitelia nie sú k dispozícii na rezerváciu.",
"fixed_hosts_unavailable_for_booking": "Niektorí z pevne stanovených hostiteľov nie sú k dispozícii na rezerváciu.",
"round_robin_hosts_unavailable_for_booking": "Žiadny z hostiteľov 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.",
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

Keep “round robin” casing consistent with existing style

Elsewhere in this file “round robin” is lowercase. Recommend aligning for consistency.

-  "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.",

Also, verify the old key name is fully replaced across the codebase.


🏁 Script executed:

#!/bin/bash
# Verify no usage of the old key remains and the new key is present.
rg -n $'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking'

# Additionally, list locales carrying the new key to ensure parity across languages.
rg -n $'^\\s*"round_robin_host_unavailable_for_booking"' apps/web/public/static/locales

Length of output: 11373


Use lowercase “round robin” in the SK translation

Verification confirms the old key isn’t referenced anywhere and the new key exists in all locales. Update the SK entry for consistency:

  • apps/web/public/static/locales/sk-SK/common.json: line 123
-  "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.",
📝 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": "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.",
🤖 Prompt for AI Agents
apps/web/public/static/locales/sk-SK/common.json around line 123: the
translation uses capitalized "Round Robin"; change it to use lowercase "round
robin" for consistency with other locales by updating the string value on line
123 from "Hostiteľ Round Robin nie je k dispozícii na rezerváciu." to "Hostiteľ
round robin nie je k dispozícii na rezerváciu." and save the file.

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: 9

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

1-3476: Unify “round robin” hyphenation to “round-robin” throughout fi/common.json

Standardize all instances of “round robin” with hyphens. For example:

  • event_reassigned_subtitle
    from
    “… round robin -todennäköisyyteesi”
    to
    “… round-robin-todennäköisyyteesi”

  • round_robin_host_unavailable_for_booking
    from
    “Round Robin -isäntä ei ole varattavissa.”
    to
    “Round-robin-isäntä ei ole varattavissa.”

  • add_one_fixed_attendee
    from
    “… kierrätä round robin -tyyliin …”
    to
    “… kierrätä round-robin-tyyliin …”

  • add_your_team_members
    from
    “… round robin -aikataulutuksella”
    to
    “… round-robin-aikataulutuksella”

  • skip_rr_assignment_label
    from
    “Ohita round robin -jako …”
    to
    “Ohita round-robin-jako …”

  • reassign_to_another_rr_host
    from
    “… round robin -isännälle”
    to
    “… round-robin-isännälle”

  • reassign_round_robin_host
    from
    “Uudelleenmääritä round robin -isäntä”
    to
    “Uudelleenmääritä round-robin-isäntä”

  • team_member_round_robin_reassign(_description)
    from
    “… round robin -järjestäjä …”
    to
    “… round-robin-järjestäjä …”

  • invalid_round_robin_host
    from
    “… ei ole kelvollinen round robin -järjestäjä …”
    to
    “… ei ole kelvollinen round-robin-järjestäjä …”

  • salesforce_route_to_owner / salesforce_do_not_route_to_owner / salesforce_if_free_email_domain_skip_owner_check
    replace “Round Robin -” or “round robin -” with “round-robin-”

  • rr_reset_interval_description
    from
    “… round robin -varauslaskuri …”
    to
    “… round-robin-varauslaskuri …”

  • include_no_show_in_rr_calculation
    from
    “… round robin -laskelmiin”
    to
    “… round-robin-laskelmiin”

  • load_balancing_warning
    from
    “… round robin -tapahtumatyypeistäsi”
    to
    “… round-robin-tapahtumatyypeistäsi”

  • rr_load_balancing_disabled_with_groups
    from
    “… round robin -ryhmien kanssa”
    to
    “… round-robin-ryhmien kanssa”

Please update each key’s translation accordingly to use “round-robin” as a single hyphenated term.

♻️ Duplicate comments (52)
apps/web/public/static/locales/bn/common.json (1)

123-123: Fix BN possessive contraction (“বুকিংয়ের”).

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

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

123-123: Norwegian wording consistency: booking → bestilling

Align with nearby keys (Line 121 uses “bestilling”). Recommend Norwegian “bestilling” over “booking”.

-  "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.",

Note: For full consistency, also consider updating Line 122 (“booking”) to “bestilling”.


3324-3329: Unresolved terminology consistency: “organisasjonsteam” and “arrangementstyper”

Use “organisasjonens team” and “hendelsestyper” consistently (matches usage elsewhere in file).

Run this to surface remaining inconsistent terms:

#!/bin/bash
rg -n -S "organisasjonsteam|arrangementstype" apps/web/public/static/locales/no/common.json

Apply:

-  "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, 3341-3342, 3356-3356

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

3383-3383: Use imperative mood consistently for “add_*”.

Align with dominant pattern (“Afegeix …”).

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

2255-2256: Fix terminology and grammar (“routing” → “encaminament”, “headless” → “sense interfície”, article “els enviaments”).

Use established terms 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/tr/common.json (3)

123-123: RR terminology: use “Döngüsel organizatör” (consistent in-product).

Align with existing RR phrasing used elsewhere in TR locale.

-  "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."

1844-1845: Standardize “Kuruluş” vs. “Organizasyon” (admin-only notices).

Apply the previously suggested terminology.

-  "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-3334: PBAC descriptions: replace “Organizasyon” → “Kuruluş” for consistency.

Keep role/resource phrasing intact, just align the noun.

   "pbac_resource_attributes": "Öznitelikler",
-  "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: 3356-3356

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

875-878: Use “타사” instead of “서드파티” (consistency with standard Korean diction).

Prefer “타사” in place of “서드파티”.

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

Also ensure these OAuth keys exist across all locales to 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)

missing=0
fd common.json "$locales_root" -t f | while read -r f; do
  for k in "${keys[@]}"; do
    if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null 2>&1; then
      echo "MISSING: $f$k"
      missing=1
    fi
  done
done

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

123-123: Unify “host” terminology and Round Robin phrasing (duplicate of prior suggestion)

Prefer “организатор” and translate “Round Robin” as “по очереди” for consistency across RU locale.

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

875-878: Inconsistent OAuth key casing vs existing UI references (oAuth_*). Standardize.

New keys use oauth_* while existing components and other keys use oAuth_*. This will result in missing strings at runtime unless code is updated.

Option A (rename keys here to match existing code):

-  "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"

Option B: update all component references to the new lowercase oauth_* namespace. Pick one approach and make keys and code consistent.


3315-3319: Missing manage-level PBAC descriptor for organization attributes causes blank labels

For symmetry with other resources (roles, teams, event types, bookings, workflows), add the manage descriptor. Dynamic permission-label UIs will otherwise render undefined.

Apply:

   "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",
apps/web/public/static/locales/hu/common.json (3)

123-123: Unify Round‑Robin terminology and grammar

Replace localized “körforgó” with consistent “Round‑Robin” and fix “nem elérhető/érhető” agreement.

-  "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."

To find other occurrences to align:

#!/bin/bash
rg -n $'körforgó|Körmérkőzés|Round Robin' apps/web/public/static/locales/hu/common.json

875-878: Use consistent formal tone in OAuth client section

Align with formal address used in this locale.

   "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
+  "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ókhoz",
+  "create_oauth_client_description": "Új OAuth kliens létrehozása harmadik féltől származó integrációk számára"

2255-2256: Fix tone and clarity for headless routing API option

Use formal address and avoid repetition.

   "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_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és használja saját űrlapját a beküldésekhez."
apps/web/public/static/locales/pl/common.json (1)

3473-3474: Re-verify potential ‘stats’ key duplication

Past commits said duplication was resolved; ensure there’s only one "stats" key in this file now.

#!/bin/bash
# Count occurrences of "stats" key in this file
rg -n '^\s*"stats"\s*:' apps/web/public/static/locales/pl/common.json
apps/web/public/static/locales/he/common.json (1)

875-878: Unify OAuth key casing (use oauth_ consistently)*

New keys use oauth_* while existing keys still use oAuth_*. Mixed casing risks lookup bugs. Standardize to oauth_* and update code references accordingly.

Apply this diff in this file:

-  "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 קיים",

Also update code usages:

  • t("oAuth_client_creation_form") → t("oauth_client_creation_form")
  • t("oAuth_client_creation_form_description") → t("oauth_client_creation_form_description")
  • t("oAuth_client_updation_form") → t("oauth_client_updation_form")
  • t("oAuth_client_updation_form_description") → t("oauth_client_updation_form_description")

Also applies to: 2441-2446

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

123-123: Use consistent “Round‑Robin” branding and fix phrasing

Prefer the established “Round‑Robin” term in BG locale and more natural word order.

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

Run to ensure only the new singular key is referenced and the old plural isn’t:

#!/bin/bash
set -euo pipefail
echo "Usages of new key:"
rg -n --hidden --glob '!*node_modules*' $'round_robin_host_unavailable_for_booking' || true
echo
echo "Usages of old plural key (should be 0):"
rg -n --hidden --glob '!*node_modules*' $'round_robin_hosts_unavailable_for_booking' || true
echo
echo "Check all locales define the new key:"
total_locales=$(fd -t f 'common.json' apps/web/public/static/locales | wc -l | tr -d ' ')
with_key=$(rg -n $'"round_robin_host_unavailable_for_booking"' apps/web/public/static/locales | awk -F: '{print $1}' | sort -u | wc -l | tr -d ' ')
echo "Locales with key: $with_key / $total_locales"
if [ "$with_key" -ne "$total_locales" ]; then
  echo "Missing locales:"
  comm -23 <(fd -t f 'common.json' apps/web/public/static/locales | sort) <(rg -n $'"round_robin_host_unavailable_for_booking"' apps/web/public/static/locales | awk -F: '{print $1}' | sort -u)
fi
apps/web/public/static/locales/km/common.json (9)

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

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

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

2255-2256: Use “Headless” in English for clarity

Avoid literal “ដោយគ្មានចំណងជើង”; keep “Headless” in English.

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

875-878: Use consistent term for “Organization”: replace “អង្គភាព” with “អង្គការ”

Maintain consistency across the km locale.

-  "oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+  "oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គាររបស់អ្នក",

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

Apply the preferred term “អង្គការ”.

-  "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",

3315-3319: PBAC descriptors: use “អង្គការ” for Organization

Align terminology in the four attribute descriptors.

   "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": "បង្កើតគុណលក្ខណៈអង្គការ",

To ensure no remaining “អង្គភាព” instances linger in this locale, run:

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

3323-3323: PBAC manage roles: replace “ក្រុមអង្គភាព”

Use the consistent “អង្គការ”.

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

3333-3333: PBAC manage event types: use “អង្គការ”

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

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

3341-3341: PBAC manage teams: use “អង្គការ”

Consistent organization term.

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

3356-3356: PBAC bookings descriptor: replace “ក្រុមអង្គភាព”

Adopt the prior suggested phrasing.

-  "pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាព",
+  "pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",
apps/web/public/static/locales/uk/common.json (1)

123-123: Key rename present; ensure all locales updated.

The new key exists here. Cross-check other locales for the same addition to prevent fallback-to-English at runtime. See earlier reviewer’s report listing missing locales.

If helpful, re-run the repo-wide scan from the earlier comment to confirm no lingering references to the old plural key and that all locales now include the new singular key.

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

123-123: Normalize terminology: “organizzatore” and lowercase “round robin”.

Use the established phrasing used elsewhere in Italian locale.

Consider running the script below to ensure no lingering references to the old key remain.

-  "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.",

To verify old vs new key usage across the repo:

#!/bin/bash
set -euo pipefail
echo "Old key occurrences:"
rg -n --hidden --glob '!.git' 'round_robin_hosts_unavailable_for_booking' || true
echo
echo "New key occurrences:"
rg -n --hidden --glob '!.git' 'round_robin_host_unavailable_for_booking' || true

3366-3366: Uniformare “Round Robin” → “round robin”.

Keep capitalization consistent with the rest of the 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/fi/common.json (2)

123-123: Finnish hyphenation: prefer “Round-robin” compound

Use the hyphenated compound without the spaced 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."

3445-3475: Clarify “created_at” semantics

Use a wording that explicitly denotes creation time.

-  "webhook_created_at": "Webhookin aika",
+  "webhook_created_at": "Webhookin luontiaika",
apps/web/public/static/locales/ar/common.json (5)

875-878: Use the glossary term “المنظمة” and tighten OAuth microcopy

Same request was raised previously and remains unresolved here.

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

1844-1845: Terminology consistency: “المنظمة” instead of “المؤسسة”

Matches existing 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"

3315-3320: PBAC attribute permissions: use “المنظمة” consistently

Prior suggestion still applies.

   "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-3334: PBAC scopes: replace “المؤسسة” with “المنظمة” across scopes

Keep the same entity term across all organization-scoped strings.

-  "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: 3341-3341, 3356-3356


3445-3472: Fix webhook metadata microcopy and standardize “ويبهوك”

Previous suggestions remain unaddressed. Use “ويبهوك” consistently and correct meanings.

-  "webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
-  "webhook_created_at": "وقت الويب هوك",
-  "webhook_type": "رابط نوع الحدث",
-  "webhook_title": "اسم نوع الحدث",
+  "webhook_trigger_event": "اسم حدث المشغِّل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
+  "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": "المنطقة الزمنية للمنظم (مثل '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": "رابط مكالمة الفيديو للاجتماع",
-  "webhook_hide_variables": "إخفاء المتغيرات",
-  "webhook_show_variable": "إظهار المتغيرات المتاحة",
+  "webhook_hide_variables": "إخفاء المتغيرات",
+  "webhook_show_variable": "إظهار المتغير المتاح",
   "webhook_event_and_booking": "الفعالية والحجز",
   "webhook_people": "الأشخاص",
   "webhook_teams": "الفرق",
   "webhook_metadata": "البيانات الوصفية",

If “webhook_type” intended “Webhook type” (not the event type), use:

-  "webhook_type": "رابط نوع الحدث",
+  "webhook_type": "نوع الويبهوك"
apps/web/public/static/locales/ro/common.json (2)

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

Align with UI tone guidance used across the file.

-  "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",

3475-3475: Use “Starea rezervării” (terminology consistency)

Follow prior guidance for booking state terminology.

-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/ja/common.json (1)

123-123: JP phrasing nit: drop the extra “の”

More natural and consistent with nearby strings.

-  "round_robin_host_unavailable_for_booking": "ラウンドロビンのホストは予約できません。",
+  "round_robin_host_unavailable_for_booking": "ラウンドロビンホストは予約できません。",
apps/web/public/static/locales/pt/common.json (1)

123-123: PT-PT phrasing for Round Robin host unavailability

Align with PT-PT and past guidance: prefer “reserva” and “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.",
apps/web/public/static/locales/es/common.json (7)

123-123: Spanish phrasing tweak (singular article sounds more natural).
El anfitrión de Round Robin no está disponible para la reserva.

Apply:

-"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: Tone consistency: prefer “Administra” over “Gestiona”.
To match prevalent tone elsewhere in this file.

 "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",

1844-1845: Admin-only restriction strings — LGTM; ensure cross-locale coverage.
Spanish reads well and matches similar patterns. Verify these keys exist in all locales to avoid English fallbacks.

#!/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)
echo "Locales: $locales"
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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

3292-3292: PBAC workflows: unify wording (“configuración” singular; word order).
Apply consistent style in Spanish as previously suggested.

 "pbac_resource_workflow": "Flujos de trabajo",
 "pbac_desc_create_workflows": "Crear y configurar nuevos flujos de trabajo",
-"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_delete_workflows": "Eliminar flujos de trabajo del sistema",
-"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_delete_workflows": "Eliminar flujos de trabajo del sistema",
+"pbac_desc_manage_workflows": "Acceso de gestión completo a todos los flujos de trabajo",

Also applies to: 3325-3329


3324-3324: PBAC “manage … across org teams” — LGTM; ensure cross-locale presence.
Spanish scope “a través de los equipos de la organización” matches prior PBAC entries. Confirm these keys exist in all locales.

#!/bin/bash
keys=(
  "pbac_desc_manage_roles"
  "pbac_desc_manage_event_types"
  "pbac_desc_manage_teams"
  "pbac_desc_manage_bookings"
)
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
echo "Locales: $locales"
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
done

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


3416-3416: Analytics/status keys — LGTM; verify cross-locale coverage to avoid fallbacks.
Spanish terms are correct. Ensure all locales define these keys.

#!/bin/bash
set -euo pipefail
keys=("failed_bookings" "stats" "booking_status")
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
echo "Locales: $locales"
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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

Also applies to: 3473-3475


3292-3292: Cross-locale coverage for PBAC workflow keys.
Spanish additions look good; ensure the following keys exist in all locales to avoid regressions:

  • pbac_resource_workflow
  • pbac_desc_create_workflows
  • pbac_desc_view_workflows
  • pbac_desc_update_workflows
  • pbac_desc_delete_workflows
  • pbac_desc_manage_workflows
#!/bin/bash
set -euo pipefail
keys=(
  "pbac_resource_workflow"
  "pbac_desc_create_workflows"
  "pbac_desc_view_workflows"
  "pbac_desc_update_workflows"
  "pbac_desc_delete_workflows"
  "pbac_desc_manage_workflows"
)
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
done
apps/web/public/static/locales/sk-SK/common.json (2)

123-123: Duplicate comment: "Round Robin" casing still inconsistent

The translation still uses capitalized "Round Robin" which is inconsistent with the lowercase usage elsewhere in the file. This matches the previous review feedback.


2255-2256: Duplicate comment: "headless" mistranslation persists

The translation still uses "headless smerovanie API" which maintains the English term "headless" but the description on line 2256 may still have the "bezstavové" (stateless) issue mentioned in previous reviews. The current text needs verification for technical accuracy.

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

123-123: Previous review issue not addressed - standardize Round-Robin terminology

The same issue identified in the previous review remains unresolved. The translation should use consistent terminology and proper hyphenation.

Apply the previously suggested fix:

-  "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.",
apps/web/public/static/locales/vi/common.json (1)

879-879: Unify OAuth term with the rest of the file

This mixes English “OAuth client” with the chosen Vietnamese phrasing “Ứng dụng OAuth”.

-  "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",

To spot any remaining mixed terms in vi locale:

#!/bin/bash
rg -n --hidden '"oauth_client[^"]*"|OAuth client|Ứng dụng OAuth' apps/web/public/static/locales/vi/common.json -A 0 -B 0

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

Optional: run quick checks for terminology consistency and webhook spelling

Use these to surface remaining instances to edit in-place.

Also applies to: 1844-1845, 3315-3320, 3324-3334, 3341-3341, 3356-3356, 3445-3472


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) Find mixed Organization terms around changed sections
echo "— Checking inconsistent use of 'المؤسسة' vs 'المنظمة' —"
rg -n --json '"(only_admin_can_manage_[^"]+|pbac_desc_[^"]+|organization[^"]*)":\s*"[^"]*(المؤسسة|المنظمة)[^"]*"' apps/web/public/static/locales/ar/common.json | jq -r '.data.path.text + ":" + (.data.line_number|tostring) + " " + .data.lines.text' || true

# 2) Check 'Webhook' spelling variants
echo -e "\n— Checking 'ويب هوك' vs 'ويبهوك' vs 'ويبهوكس' —"
rg -n 'ويب هوك|ويبهوك|ويبهوكس' apps/web/public/static/locales/ar/common.json

# 3) Check round-robin mixed forms in Arabic/English
echo -e "\n— Checking 'round robin' occurrences and Arabic variants —"
rg -n 'round robin|دوار|التناوب|الترتيب الدوري' apps/web/public/static/locales/ar/common.json

Length of output: 11097


Ensure consistent Arabic terminology for “المؤسسة”, “ويب هوك”, and “الترتيب الدوري”

The AR locale is currently mixing المؤسسة vs المنظمة, ويب هوك vs ويبهوك/ويبهوكس, and round robin vs Arabic variants. Please unify as follows:

• Use “المؤسسة” everywhere (no instances of “المنظمة”):

  • apps/web/public/static/locales/ar/common.json:892 ("organization"), 1843 ("only_admin_can_manage_sso_org"), 2291–2293 ("organization_name"/"_url"), 2305 ("organization_logo")

• Use “ويب هوك” (singular) and “ويب هوكس” (plural) with a space:

  • apps/web/public/static/locales/ar/common.json: lines ~230–240, 534–556, 692, 911, 1941–1942, 2148–2151, 2272–2273, 3190–3192, 3445

• Use “الترتيب الدوري” for round-robin, replacing all “round robin”, “دوار”, and “التناوب”:

  • apps/web/public/static/locales/ar/common.json: lines 73, 806, 123, 1751, 1849–1853, 1885, 1950, 2032–2033, 2277, 2608, 2701, 2779, 2783, 2882–2884, 3103, 3118, 3259, 3263, 3364–3368
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ar/common.json around lines 875 to 878 and the
other ranges called out (e.g., ~73, ~123, ~230–240, 534–556, 692, 806, 911,
1843, 1751, 1849–1853, 1885, 1941–1942, 1950, 2032–2033, 2148–2151, 2272–2273,
2277, 2291–2293, 2305, 2608, 2701, 2779, 2783, 2882–2884, 3103, 3118, 3190–3192,
3259, 3263, 3364–3368, 3445), unify Arabic terminology: replace every occurrence
of "المنظمة" with "المؤسسة"; normalize all webhook terms to "ويب هوك" (singular)
and "ويب هوكس" (plural) with a space; and replace all variants of round-robin
("round robin", "دوار", "التناوب", etc.) with "الترتيب الدوري". Ensure exact
string keys/values in the JSON are updated consistently and preserve surrounding
punctuation and formatting, then run a JSON linter to validate the file.

Comment on lines +3444 to +3473
"webhook_trigger_event": "Името на задействащото събитие (напр. BOOKING_CREATED, BOOKING_CANCELLED)",
"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": "Статистика",
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: improve natural BG and fix singular/plural inconsistency

Several labels can be made more idiomatic; also 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: consider “Време на създаване” vs “Създаден на” depending on UI context.

Scan for inconsistent “Round Robin” vs “Round‑Robin” and fix across BG locale:


🏁 Script executed:

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

Length of output: 1138


Improve BG translations & unify “Round-Robin” spelling

Refine several webhook labels for more natural Bulgarian and align singular/plural usage, plus make all “Round Robin” occurrences consistent as “Round-Robin”.

• Update webhook metadata labels:

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

• Unify “Round-Robin” spelling in apps/web/public/static/locales/bg/common.json:

  • Change all values containing “Round Robin” or “Round-Robin” to use a hyphen: “Round-Robin”.
  • Affected keys include (but are not limited to):
    • round_robin_host_unavailable_for_booking
    • round_robin
    • round_robin_hosts
    • reschedule_with_same_round_robin_host_title
    • salesforce_route_to_owner
    • salesforce_do_not_route_to_owner
    • rr_load_balancing_disabled_with_groups

Example diff for one entry:

-  "round_robin": "Round Robin",
+  "round_robin": "Round-Robin",

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

🤖 Prompt for AI Agents
In apps/web/public/static/locales/bg/common.json around lines 3444 to 3473,
several webhook label translations need slight wording refinements to sound more
natural in Bulgarian (e.g., adjust phrases like "Слъгът на типа събитие" →
correct Bulgarian wording) and the project requires all occurrences of “Round
Robin”/“Round-Robin” be unified to the hyphenated form “Round-Robin”; update the
listed webhook keys' values to more natural Bulgarian and replace any “Round
Robin” or inconsistent forms with “Round-Robin” throughout the file (including
keys such as round_robin_host_unavailable_for_booking, round_robin,
round_robin_hosts, reschedule_with_same_round_robin_host_title,
salesforce_route_to_owner, salesforce_do_not_route_to_owner,
rr_load_balancing_disabled_with_groups and any other occurrences), ensuring
singular/plural consistency and correct Bulgarian grammar for the webhook
labels.

Comment on lines 3445 to 3475
"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": "예약 상태",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하세요 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
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 variable labels — generally solid; approve after “이벤트 타입” consistency change.

Aside from the earlier “이벤트 타입” unification, the rest read well.

After applying the “이벤트 타입” unification, no further changes needed here. If desired, run a quick grep to ensure “이벤트 유형” isn’t used inconsistently in this file:


🏁 Script executed:

#!/bin/bash
rg -n '이벤트 유형' apps/web/public/static/locales/ko/common.json || true

Length of output: 9530


Unify “이벤트 유형” → “이벤트 타입” in webhook labels

Please update the webhook-related entries in apps/web/public/static/locales/ko/common.json so that they consistently use “이벤트 타입” instead of “이벤트 유형”:

  • Line 3446 (webhook_type):
    change "이벤트 유형 슬러그""이벤트 타입 슬러그"
  • Line 3447 (webhook_title):
    change "이벤트 유형 이름""이벤트 타입 이름"
  • Line 3450 (webhook_description):
    change "이벤트 유형 설정에 설명된 이벤트 설명"
    "이벤트 타입 설정에 설명된 이벤트 설명"

After making these changes, run a quick grep to catch any remaining “이벤트 유형” occurrences:

rg -n '이벤트 유형' apps/web/public/static/locales/ko/common.json

Once all have been converted to “이벤트 타입,” this section is good to merge.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ko/common.json around lines 3445 to 3475,
normalize the webhook labels by replacing “이벤트 유형” with “이벤트 타입” for the
specified keys: change webhook_type value from "이벤트 유형 슬러그" to "이벤트 타입 슬러그",
change webhook_title value from "이벤트 유형 이름" to "이벤트 타입 이름", and change
webhook_description value from "이벤트 유형 설정에 설명된 이벤트 설명" to "이벤트 타입 설정에 설명된 이벤트
설명"; after editing, run rg -n '이벤트 유형' on that file and update any remaining
occurrences to “이벤트 타입.”

Comment on lines +3445 to 3475
"webhook_created_at": "A hora do webhook",
"webhook_type": "O slug do tipo de evento",
"webhook_title": "O nome do tipo de evento",
"webhook_start_time": "A hora de início do evento",
"webhook_end_time": "A hora de fim do evento",
"webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
"webhook_location": "Localização do evento",
"webhook_uid": "O UID da reserva",
"webhook_reschedule_uid": "O UID para reagendamento",
"webhook_cancellation_reason": "Motivo do cancelamento",
"webhook_rejection_reason": "Motivo da rejeição",
"webhook_organizer_name": "Nome do organizador",
"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_attendee_name": "Nome do primeiro participante",
"webhook_attendee_email": "Email do primeiro participante",
"webhook_attendee_timezone": "Fuso horário do primeiro participante",
"webhook_attendee_locale": "Idioma do primeiro participante",
"webhook_team_name": "Nome da equipe reservada",
"webhook_team_members": "Membros da equipe reservada",
"webhook_video_call_url": "URL de chamada de vídeo para a reunião",
"webhook_hide_variables": "Ocultar variáveis",
"webhook_show_variable": "Mostrar variáveis disponíveis",
"webhook_event_and_booking": "Evento e agendamento",
"webhook_people": "Pessoas",
"webhook_teams": "Equipas",
"webhook_metadata": "Metadados",
"stats": "Estatísticas",
"booking_status": "Status do agendamento",
"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

Webhooks and booking status: fix “equipe”→“equipa”, and use “Estado da reserva”

Keep consistent with broader file (“equipa”, “reserva”).

-  "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",
📝 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": "A hora do webhook",
"webhook_type": "O slug do tipo de evento",
"webhook_title": "O nome do tipo de evento",
"webhook_start_time": "A hora de início do evento",
"webhook_end_time": "A hora de fim do evento",
"webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
"webhook_location": "Localização do evento",
"webhook_uid": "O UID da reserva",
"webhook_reschedule_uid": "O UID para reagendamento",
"webhook_cancellation_reason": "Motivo do cancelamento",
"webhook_rejection_reason": "Motivo da rejeição",
"webhook_organizer_name": "Nome do organizador",
"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_attendee_name": "Nome do primeiro participante",
"webhook_attendee_email": "Email do primeiro participante",
"webhook_attendee_timezone": "Fuso horário do primeiro participante",
"webhook_attendee_locale": "Idioma do primeiro participante",
"webhook_team_name": "Nome da equipe reservada",
"webhook_team_members": "Membros da equipe reservada",
"webhook_video_call_url": "URL de chamada de vídeo para a reunião",
"webhook_hide_variables": "Ocultar variáveis",
"webhook_show_variable": "Mostrar variáveis disponíveis",
"webhook_event_and_booking": "Evento e agendamento",
"webhook_people": "Pessoas",
"webhook_teams": "Equipas",
"webhook_metadata": "Metadados",
"stats": "Estatísticas",
"booking_status": "Status do agendamento",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"webhook_created_at": "Data de criação do webhook",
"webhook_type": "O slug do tipo de evento",
"webhook_title": "O nome do tipo de evento",
"webhook_start_time": "A hora de início do evento",
"webhook_end_time": "A hora de fim do evento",
"webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
"webhook_location": "Localização do evento",
"webhook_uid": "O UID da reserva",
"webhook_reschedule_uid": "O UID para reagendamento",
"webhook_cancellation_reason": "Motivo do cancelamento",
"webhook_rejection_reason": "Motivo da rejeição",
"webhook_organizer_name": "Nome do organizador",
"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_attendee_name": "Nome do primeiro participante",
"webhook_attendee_email": "Email do primeiro participante",
"webhook_attendee_timezone": "Fuso horário do primeiro participante",
"webhook_attendee_locale": "Idioma do primeiro participante",
"webhook_team_name": "Nome da equipa reservada",
"webhook_team_members": "Membros da equipa reservada",
"webhook_video_call_url": "URL de chamada de vídeo para a reunião",
"webhook_hide_variables": "Ocultar variáveis",
"webhook_show_variable": "Mostrar variáveis disponíveis",
"webhook_event_and_booking": "Evento e agendamento",
"webhook_people": "Pessoas",
"webhook_teams": "Equipas",
"webhook_metadata": "Metadados",
"stats": "Estatísticas",
"booking_status": "Estado da reserva",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
🤖 Prompt for AI Agents
In apps/web/public/static/locales/pt/common.json around lines 3445 to 3475,
replace Portuguese inconsistent terms: change "equipe" -> "equipa" in
"webhook_team_name" and "webhook_team_members" values so they read "Nome da
equipa reservada" and "Membros da equipa reservada", and change the
"booking_status" value from "Status do agendamento" to "Estado da reserva" to
match the project's preferred terminology.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Bạn đã đăng ký cho lần đặt chỗ này.",
"hosts_unavailable_for_booking": "Một số người tổ chức không khả dụng để đặt chỗ.",
"fixed_hosts_unavailable_for_booking": "Một số người chủ trì cố định không khả dụng để đặt lịch.",
"round_robin_hosts_unavailable_for_booking": "Không có người chủ trì luân phiên nào 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.",
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 looks correct; verify cross-repo usage and fix capitalization

  • Good: singular key round_robin_host_unavailable_for_booking added.
  • Nit: use lowercase for “luân phiên” to match the rest of the file.

Apply:

-  "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.",

Run to confirm the old plural key is fully removed/renamed:


🏁 Script executed:

#!/bin/bash
rg -n --hidden $'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking'

Length of output: 5792


🏁 Script executed:

#!/bin/bash
rg -n 'Luân|luân' apps/web/public/static/locales/vi/common.json

Length of output: 1403


Update Vietnamese translation: lowercase “luân phiên”

  • File: apps/web/public/static/locales/vi/common.json
    Line 123
-  "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.",
📝 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": "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.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/vi/common.json around line 123, the Vietnamese
translation uses capitalized “Luân phiên”; update the string value for
"round_robin_host_unavailable_for_booking" to use lowercase “luân phiên” instead
(i.e., change "Người chủ trì Luân phiên không khả dụng để đặt lịch." to use
"luân phiên") so the translation follows the requested casing.

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

♻️ Duplicate comments (45)
apps/web/public/static/locales/es-419/common.json (2)

123-123: Consistency tweak: singular “la reserva” (matched with nearby copy).

For consistency with Line 121, switch “para reservas” → “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.",

3292-3292: PBAC descriptions: recheck for duplicate keys within the file.

These keys (e.g., pbac_desc_manage_roles / …event_types / …teams / …bookings) have previously collided as duplicates in this locale. JSON allows duplicate keys but only the last wins, masking issues.

Run this script to list any duplicate keys in this JSON (prints keys appearing >1 time):

#!/bin/bash
set -euo pipefail
FILE="apps/web/public/static/locales/es-419/common.json"

# Extract likely JSON keys (line-leading "key":) and count
gawk 'match($0, /^[[:space:]]*"([^"]+)"[[:space:]]*:/, a){print a[1]}' "$FILE" \
  | sort | uniq -c | gawk '$1>1 {print $1 "\t" $2}'

# Specifically check the PBAC keys introduced in this hunk
echo -e "\n-- Specific PBAC keys occurrences --"
for k in pbac_desc_manage_roles pbac_desc_manage_event_types pbac_desc_manage_teams pbac_desc_manage_bookings \
         pbac_resource_workflow pbac_resource_attributes pbac_desc_create_workflows pbac_desc_view_workflows \
         pbac_desc_update_workflows pbac_desc_delete_workflows pbac_desc_manage_workflows \
         pbac_desc_view_organization_attributes pbac_desc_update_organization_attributes \
         pbac_desc_delete_organization_attributes pbac_desc_create_organization_attributes
do
  printf "%-45s " "$k"
  rg -n -S "\"$k\"" "$FILE" | wc -l
done

If duplicates are reported, dedupe so each key appears once with the intended value.

Also applies to: 3315-3320, 3323-3323, 3325-3329, 3333-3333, 3341-3341, 3356-3356

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

123-123: Fix possessive in BN: use “বুকিংয়ের”

Contract the possessive for natural Bengali.

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

123-123: Rename verification: ensure old key/constant fully removed across the codebase

The locale now has the singular key. Please verify no references remain to the old plural key or its code constants.

Run this to confirm the migration is complete:

#!/bin/bash
set -euo pipefail

# 1) Old/legacy variants — expect NO results
rg -n --hidden --glob '!.git' -e 'round_robin_hosts_unavailable_for_booking' \
  -e 'roundRobinHostsUnavailableForBooking' \
  -e 'RoundRobinHostsUnavailableForBooking' || true

# 2) New key — expect occurrences in locale files only
rg -n --hidden --glob '!.git' 'round_robin_host_unavailable_for_booking' || true
apps/web/public/static/locales/no/common.json (2)

123-123: Use “bestilling” for Norwegian style consistency (per prior review).

Update to align with previous guidance.

-  "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 terminology (duplicate of prior review).

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: 3333-3333, 3342-3342, 3356-3356

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

123-123: Lowercase “round robin” for consistency (mid-sentence).

Keep “round robin” lowercase inside sentences to match existing style across locales and elsewhere in this file.

-  "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 SK translation for “headless” routing API

  • File: apps/web/public/static/locales/sk-SK/common.json
  • Line: 2256 (only occurrence of “bezstav”)
-  "use_our_headless_routing_api": "Použite naše bezstavové smerovacie API a použite vlastný formulár pre odosielanie.",
+  "use_our_headless_routing_api": "Použite naše headless (bez UI) smerovacie API a svoj vlastný formulár na odoslanie.",

Ran rg -n 'bezstav' across the file and confirmed no other occurrences.

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

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

Use “Round‑Robin” consistently 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.",

Also scan this file for “körforgó/körmérkőzés” and align to “Round‑Robin” to match UI.


875-878: Switch to formal tone and fix possessive in OAuth client section

These entries are still informal; switch to formal to match the locale’s tone.

   "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
+  "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ókhoz",
+  "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 entry

Align with formal voice and clarify the action.

   "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_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és az adatokat küldje be a saját űrlapjával.",
apps/web/public/static/locales/uk/common.json (1)

123-123: Rename key safety check: cross-locale follow-up still stands.

The new key exists here. The prior verification agent reported several locales missing it (hr, id, iw, lv, sk, ta, th). Ensure they’re updated to avoid runtime fallbacks.

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

875-878: Use “타사” instead of “서드파티” for consistency and tone

Prefer the more common “타사” in Korean UI copy.

   "oauth_clients": "OAuth 클라이언트",
   "oauth_clients_description": "조직의 OAuth 클라이언트 관리",
   "create_oauth_client": "OAuth 클라이언트 생성",
-  "create_oauth_client_description": "서드파티 통합을 위한 새 OAuth 클라이언트 생성"
+  "create_oauth_client_description": "타사 통합을 위한 새 OAuth 클라이언트 생성"

3444-3474: Normalize “이벤트 유형” → “이벤트 타입” in webhook labels

Earlier feedback requested this consistency. Apply to these keys:

   "webhook_trigger_event": "트리거 이벤트 이름(예: BOOKING_CREATED, BOOKING_CANCELLED)",
   "webhook_created_at": "웹훅 생성 시간",
-  "webhook_type": "이벤트 유형 슬러그",
-  "webhook_title": "이벤트 유형 이름",
+  "webhook_type": "이벤트 타입 슬러그",
+  "webhook_title": "이벤트 타입 이름",
   "webhook_start_time": "이벤트 시작 시간",
   "webhook_end_time": "이벤트 종료 시간",
-  "webhook_description": "이벤트 유형 설정에 설명된 이벤트 설명",
+  "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": "예약 상태",

Optional quick check to catch stragglers:

#!/bin/bash
# Find remaining occurrences of "이벤트 유형" in this file.
rg -n --fixed-strings '이벤트 유형' apps/web/public/static/locales/ko/common.json || true
apps/web/public/static/locales/de/common.json (1)

123-123: Standardize “Round‑Robin” and host term; fix hyphenation

Use the established term “Round‑Robin‑Veranstalter” (already present elsewhere in this file) and hyphenate “Round‑Robin”.

-  "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.",
apps/web/public/static/locales/bg/common.json (2)

123-123: Unify “Round‑Robin” branding (inconsistent with other BG strings).

Use the hyphenated “Round‑Robin” form to match the rest of the file (e.g., Line 1950), and past reviews.

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

Run a quick check for any lingering usage of the old plural key after the rename:

#!/bin/bash
rg -n --hidden --glob '!*node_modules*' $'round_robin_hosts_unavailable_for_booking'

3444-3475: Webhook labels: refine for natural BG and singular/plural consistency.

These mirror a past suggestion; apply the targeted improvements below.

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

Optional: depending on UI context, “Създаден на” can also work for created-at.

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

123-123: Danish phrasing tweak for naturalness

“til booking” reads more idiomatically than “for booking.”

-  "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.",

3445-3475: Webhook metadata: a few precise wording tweaks

Overall great coverage. Two small accuracy/consistency improvements:

  • created_at is the creation timestamp; clarify that explicitly.
  • Keep “UID for …” phrasing consistent with booking UID.
  • Optional: use “udløserbegivenheden” instead of “triggerbegivenheden” for less Denglish.
-  "webhook_trigger_event": "Navnet på triggerbegivenheden (f.eks. BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Navnet på udløserbegivenheden (f.eks. BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Tidspunktet for webhooken",
+  "webhook_created_at": "Oprettelsestidspunkt for webhooken",
-  "webhook_reschedule_uid": "UID til ombooking",
+  "webhook_reschedule_uid": "UID for ombooking",

Also, please ensure all newly added webhook_* keys are present across all locales to avoid i18n fallbacks.

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

base_dir="apps/web/public/static/locales"

# Collect the union of webhook_* keys from all locales
mapfile -t files < <(find "$base_dir" -type f -name common.json | sort)
all_keys=$(printf "%s\n" "${files[@]}" \
  | xargs -n1 jq -r 'keys[]' \
  | grep '^webhook_' \
  | sort -u)

missing=false
for f in "${files[@]}"; do
  locale=$(basename "$(dirname "$f")")
  for k in $all_keys; do
    if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null; then
      echo "Missing key $k in locale '$locale' ($f)"
      missing=true
    fi
  done
done

if [ "$missing" = false ]; then
  echo "✔ All webhook_* keys are present across all locales."
fi
apps/web/public/static/locales/ro/common.json (2)

875-878: Polite/plural tone for OAuth client strings (repeat of prior guidance)

UI copy generally uses the polite form and “dvs.”. Update these for tone consistency.

-  "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"

3475-3475: Use “Starea rezervării” instead of “Status programare”

Matches prior terminology guidance and other “Rezervare/Rezervări” usage.

-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/es/common.json (3)

123-123: Consistency with nearby phrasing (“para la reserva”)

Line 121 uses “para la reserva”. Align this key for 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 la reserva.",

875-878: Tone consistency for admin/UI strings (“Administra” vs “Gestiona”)

Optional tone tweak to match prevalent voice elsewhere.

-"oauth_clients_description": "Gestiona los clientes OAuth para tu organización",
+"oauth_clients_description": "Administra los clientes OAuth para tu organización",

1844-1845: Verify these admin-only restriction keys exist across all locales

These keys were previously missing in some locales. Please confirm coverage to avoid English fallbacks at runtime.

#!/bin/bash
# Count locales and check presence of keys in each locale/common.json
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
echo "Locales total: $locales"

for k in "only_admin_can_manage_directory_sync" "only_admin_can_manage_oauth_clients"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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
apps/web/public/static/locales/km/common.json (9)

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

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

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

875-878: OAuth clients block added — adjust “organization” terminology

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

   "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: use consistent term for “Organization”

Replace “អង្គភាព” with “អង្គការ” for consistency across km 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",

Quick scan script to catch remaining “អង្គភាព” occurrences in this file:

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

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) របស់យើង ហើយប្រើទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការដាក់ស្នើ។",

3315-3319: PBAC descriptors: “organization” term

Use “អង្គការ” instead of “អង្គភាព”.

   "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: scope phrasing

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

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

3333-3333: PBAC event types descriptor: scope phrasing

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

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

3341-3341: PBAC teams descriptor: scope phrasing

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

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

3356-3356: PBAC bookings descriptor: fix “organization” term

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

-  "pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាព",
+  "pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",
apps/web/public/static/locales/ru/common.json (1)

123-123: Unify RR terminology and “host” → “организатор”

Keep consistency with prior RU glossary: “организатор” and “по очереди”.

-  "round_robin_host_unavailable_for_booking": "Хост Round Robin недоступен для бронирования.",
+  "round_robin_host_unavailable_for_booking": "Организатор по очереди недоступен для бронирования."

To ensure the singular key rename doesn't break lookups, scan the repo for old vs new keys:

#!/bin/bash
set -euo pipefail

echo "Searching for old key usages:"
rg -n --hidden --glob '!.git' 'round_robin_hosts_unavailable_for_booking' || true

echo "Searching for new key usages:"
rg -n --hidden --glob '!.git' 'round_robin_host_unavailable_for_booking' || true

echo "Checking for mixed RU/EN RR phrasing near related keys:"
rg -n -A2 -B2 --hidden --glob '!.git' 'round_robin_.*(host|hosts|group|groups)' apps/web
apps/web/public/static/locales/et/common.json (3)

123-123: Use “võõrustaja” instead of “host” for consistency.
Matches prior guidance across this 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.",

2256-2256: Normalize “routing” terminology (“marsruutimine” instead of “suunamine”).
Aligns with prior decisions elsewhere in this file. Tighten copy slightly.

-  "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.",

3444-3474: Standardize webhook terminology and nouns (“veebihaak”, “lühinimi”, “ümberajastamine”, “lokaat”).
Align with earlier decisions and keep terms consistent across the locale.

   "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",
   "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",
apps/web/public/static/locales/fr/common.json (1)

123-123: Standardize “round-robin” hyphenation (FR).

Prefer “round-robin” (lowercase, hyphen) for consistency with existing FR strings (e.g., Line 1950 “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.",
apps/web/public/static/locales/he/common.json (3)

3292-3334: PBAC resources/descriptions: ensure EN parity and UI mapping

These new PBAC keys need EN coverage and UI wiring in permission matrices.

Check EN presence:

#!/bin/bash
EN=$(fd --absolute-path common.json . | rg '/locales/en/common.json$' | head -n1)
echo "Scanning EN: $EN"
rg -nE '"pbac_resource_workflow"| "pbac_resource_attributes"| "pbac_desc_(create|view|update|delete|manage)_(workflows|event_types|teams|bookings)"' "$EN" \
  || echo "Missing one or more PBAC keys in EN"

3473-3474: Possible duplicate key: stats — confirm uniqueness

This file previously had a "stats" key earlier; adding another will silently override. If both exist, rename the new one (e.g., "stats_section") or remove the duplicate.

Detect duplicates (exact duplicate keys) in this JSON:

#!/bin/bash
python - <<'PY'
import json, sys
from collections import Counter
import re
path = "apps/web/public/static/locales/he/common.json"
# Parse keys preserving order and detecting dups
class DupDetect(dict):
    def __init__(self): self._keys = []
    def __setitem__(self, k, v):
        self._keys.append(k); super().__setitem__(k, v)
with open(path, 'r', encoding='utf-8') as f:
    txt = f.read()
# Quick-and-dirty key scan (handles this flat JSON object)
keys = re.findall(r'^\s*"([^"]+)"\s*:', txt, re.M)
dups = [k for k,c in Counter(keys).items() if c>1]
if dups: print("Duplicate keys:", dups); sys.exit(1)
print("No duplicate keys found.")
PY

If duplicate exists, I can prep a rename patch.


875-878: Unify OAuth key casing to oauth_ and update references*

Mixed oAuth_* and oauth_* keys cause lookup drift. Standardize on oauth_* (lowercase).

Apply in this file:

-  "oAuth_client_creation_form": "טופס יצירת לקוח OAuth",
-  "oAuth_client_creation_form_description": "זהו הטופס ליצירת לקוח OAuth חדש",
-  "oAuth_client_updation_form": "טופס עדכון לקוח OAuth",
-  "oAuth_client_updation_form_description": "זהו הטופס לעריכת לקוח OAuth קיים",
+  "oauth_client_creation_form": "טופס יצירת לקוח OAuth",
+  "oauth_client_creation_form_description": "זהו הטופס ליצירת לקוח OAuth חדש",
+  "oauth_client_updation_form": "טופס עדכון לקוח OAuth",
+  "oauth_client_updation_form_description": "זהו הטופס לעריכת לקוח OAuth קיים",

Also update 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
  • apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/create/page.tsx
  • apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/page.tsx

Script:

#!/bin/bash
set -euo pipefail
echo "Translation keys still using oAuth_*:"
rg -n --hidden -e '"oAuth_[^"]+"' apps/web/public/static/locales

echo "Code references still using t('oAuth_*'):"
rg -n --hidden -e "t\\(['\"]oAuth_" apps web packages

Also applies to: 2441-2446

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

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

Use lowercase per prior guidance and common usage across 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 terminology: use “Ứng dụng OAuth” consistently

Keep phrasing consistent with other entries that use “Ứng dụng OAuth”.

-  "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",

1845-1845: Unify OAuth terminology in admin notice

Align with “Ứng dụng OAuth” used elsewhere.

-  "only_admin_can_manage_oauth_clients": "Chỉ quản trị viên hoặc chủ sở hữu của tổ chức mới có thể quản lý ứng dụng OAuth",
+  "only_admin_can_manage_oauth_clients": "Chỉ quản trị viên hoặc chủ sở hữu của tổ chức mới có thể quản lý Ứng dụng OAuth",
apps/web/public/static/locales/pl/common.json (1)

3473-3475: Re-check potential duplicate key “stats”

A past commit addressed a duplicate “stats”. The new “stats” at the end is fine, but let’s ensure it’s the only occurrence to avoid silent overwrite at load time.

Detect duplicates in this JSON:

#!/bin/bash
set -euo pipefail
FILE="apps/web/public/static/locales/pl/common.json"
# Extract top-level keys and report duplicates
awk -F'"' '/^[[:space:]]*"/{print $2}' "$FILE" | sort | uniq -d
# Show any occurrences of "stats" for sanity
rg -n '^\s*"stats"\s*:' "$FILE" || true

@@ -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.

🛠️ Refactor suggestion

Unify “host” terminology with the rest of the locale (“ведучий”).

Elsewhere you use “Ведучі” / “Почергові ведучі”. Here it switches to “Організатор”. For consistency, prefer “ведучий”.

Apply:

-  "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/uk/common.json around line 123, the key
"round_robin_host_unavailable_for_booking" uses "Організатор" which is
inconsistent with the rest of the locale; change the word "Організатор" to
"ведучий" (matching casing and grammatical form used elsewhere, e.g., "Почергові
ведучі") so the value becomes "Ведучий почергового розподілу недоступний для
бронювання." to unify terminology.

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.

🛠️ Refactor suggestion

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

Current strings miss the hyphen and read slightly awkwardly in UA.

-  "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‑клієнта для інтеграцій зі сторонніми сервісами",
📝 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": "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-клієнта для інтеграцій зі сторонніми сервісами",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/uk/common.json around lines 875 to 878, the
Ukrainian strings should use the hyphenated form "OAuth‑клієнт" and tighter
phrasing; update the four values to use "OAuth‑клієнти" and "OAuth‑клієнтами"
where appropriate and rephrase the descriptions to be more concise (e.g.,
"Керуйте OAuth‑клієнтами для вашої організації" and "Створіть OAuth‑клієнта для
інтеграції зі сторонніми сервісами") so all entries use the hyphenated form and
clearer wording.

Comment on lines +3445 to 3475
"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": "Статус бронювання",
"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.

💡 Verification agent

🧩 Analysis chain

Unify “вебгук” spelling and minor casing fix.

The file predominantly uses “вебгук” (with г). New strings mix in “вебхук”. Also prefer lowercase “слаг”.

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

To ensure consistency across this locale file, you can scan for mixed spellings:


🏁 Script executed:

#!/bin/bash
# Show counts and occurrences of both variants to harmonize across the file
rg -n --stats $'вебгук|вебхук' apps/web/public/static/locales/uk/common.json

Length of output: 3474


Unify “вебгук” spelling and lowercase “слаг”

Most of this file uses “вебгук” (з г), but a few entries—including our new strings—use “вебхук”. Let’s harmonize on “вебгук” and also lowercase “слаг”:

• apps/web/public/static/locales/uk/common.json
– Line 3445, key webhook_created_at
– Line 3446, key webhook_type
– Line 240, key webhook_update_form_description
– Line 2273, key create_instant_meeting_webhook_description

--- a/apps/web/public/static/locales/uk/common.json
+++ b/apps/web/public/static/locales/uk/common.json
@@ -3445,2 +3445,2 @@
-  "webhook_created_at": "Час створення вебхука",
+  "webhook_created_at": "Час створення вебгука",
-  "webhook_type": "Слаг типу події",
+  "webhook_type": "слаг типу події",

@@ -238,1 +238,1 @@
-  "webhook_update_form_description": "Додайте вебхук до вашого OAuthClient.",
+  "webhook_update_form_description": "Додайте вебгук до вашого OAuthClient.",

@@ -2273,1 +2273,1 @@
-  "create_instant_meeting_webhook_description": "Створіть свій перший вебхук з тригером 'Створено миттєву зустріч' для цього типу подій",
+  "create_instant_meeting_webhook_description": "Створіть свій перший вебгук з тригером 'Створено миттєву зустріч' для цього типу подій",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"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": "Статус бронювання",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"webhook_created_at": "Час створення вебгука",
"webhook_type": "слаг типу події",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/uk/common.json around lines 3445-3475 (and
also update occurrences at lines ~240 and ~2273), unify the spelling by
replacing “вебхук” with “вебгук” in the affected keys/values and ensure the word
“слаг” is lowercase where used; update the keys and corresponding translated
strings to use the consistent “вебгук” form and lowercase “слаг” so all
instances match the project's preferred Ukrainian spelling.

Comment on lines 875 to 879
"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 với bên thứ ba",
"oauth_client_deletion_message": "Đã xóa thành công OAuth client",
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

Sanity check: ensure all “OAuth client” occurrences are unified in this file

There are still mixed occurrences (“OAuth client” vs “Ứng dụng OAuth”). After applying the above diffs, verify and normalize remaining instances (e.g., admin form labels).

Also applies to: 1845-1845


🏁 Script executed:

#!/bin/bash
# Find remaining mixed uses to standardize phrasing across vi/common.json
rg -n --hidden $'"OAuth client"|"OAuth Client"' apps/web/public/static/locales/vi/common.json -A 0 -B 0

Length of output: 104


🏁 Script executed:

#!/bin/bash
# Re-verify any English “OAuth client” occurrences in the Vietnamese locale file
rg -n "OAuth client" apps/web/public/static/locales/vi/common.json
rg -n "OAuth Client" apps/web/public/static/locales/vi/common.json

Length of output: 1116


Unify “OAuth client” translation in vi/common.json

Several entries still use the English term “OAuth client”/“OAuth Client.” Please replace all remaining occurrences with the Vietnamese “Ứng dụng OAuth” (capitalized at sentence start or labels) or “ứng dụng OAuth” as appropriate:

• apps/web/public/static/locales/vi/common.json
– Line 879 (oauth_client_deletion_message)
– Lines 2442–2445 (oAuth_client_creation_form*, oAuth_client_updation_form*)
– Lines 2762–2763 (updating_oauth_client_error, creating_oauth_client_error)
– Line 3044 (managed_users_description)
– Line 3187 (oauth_client_updated_successfully)
– Line 1889 (admin_oAuth_description)
– Line 3049 (select_oAuth_client)
– Line 3188 (oauth_client_not_found)

Ensure these mirror the existing “oauth_clients”: “Ứng dụng OAuth”.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/vi/common.json at lines 879, 1889, 2442-2445,
2762-2763, 3044, 3049, 3187-3188, replace remaining occurrences of the English
phrase "OAuth client" / "OAuth Client" with the Vietnamese translation used by
the file ("Ứng dụng OAuth" for labels or sentence starts and "ứng dụng OAuth"
for mid-sentence/lowercase usage) so they exactly match the existing
oauth_clients entry; update the values for keys oauth_client_deletion_message,
the oAuth_client_creation_form* and oAuth_client_updation_form* keys,
updating_oauth_client_error, creating_oauth_client_error,
managed_users_description, select_oAuth_client,
oauth_client_updated_successfully, and oauth_client_not_found accordingly.

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: 12

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

3292-3333: Fix inconsistent “event types” terminology

Please update the pbac_desc_manage_event_types value to match the other event-type entries:

  • File: apps/web/public/static/locales/uk/common.json
    Line ~3333
-  "pbac_desc_manage_event_types": "Усі дії з типами подій у командах організації",
+  "pbac_desc_manage_event_types": "Усі дії з типами заходів у командах організації",
♻️ Duplicate comments (59)
apps/web/public/static/locales/km/common.json (7)

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

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

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

875-878: Use consistent term for “Organization”: replace អង្គភាព → អង្គការ

Update OAuth description to the preferred “អង្គការ”.

-  "oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គភាពរបស់អ្នក",
+  "oauth_clients_description": "គ្រប់គ្រងកម្មវិធី OAuth សម្រាប់អង្គការរបស់អ្នក",

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

Align 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",

2255-2256: “Headless” should remain in English

Avoid literal “ដោយគ្មានចំណងជើង”. Prefer “API Routing (Headless)”.

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

3315-3319: PBAC attribute descriptors: replace អង្គភាព → អង្គការ

Keep “អង្គការ” 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": "បង្កើតគុណលក្ខណៈអង្គការ",

3356-3356: PBAC bookings descriptor: replace phrase

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

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

3323-3323: PBAC roles descriptor: remove “ក្រុមអង្គភាព”

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

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

875-878: 用詞與既有翻譯不一致(「用戶端」vs「客戶端」)

現有字串(如 Line 879 OAuth 客戶端已成功刪除)使用「OAuth 客戶端」;此處 4 筆字串使用「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 客戶端"
apps/web/public/static/locales/es-419/common.json (2)

123-123: Spanish copy consistency with nearby key

For consistency with Line 121 (“para la reserva”), prefer singular here.

-  "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.",

3323-3323: Re-check for duplicate PBAC “manage_*” keys in this JSON

These manage descriptions were previously flagged as potentially duplicated elsewhere in the same file; JSON allows duplicates but the last one wins, which can mask issues.

Run a duplicate-keys scanner for this file to ensure each key appears only once:

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

FILE="apps/web/public/static/locales/es-419/common.json"

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

path = "apps/web/public/static/locales/es-419/common.json"

# Custom loader to detect duplicate keys
class DupKeyDict(dict):
    def __init__(self, *a, **kw):
        super().__init__(*a, **kw)
        self._counts = defaultdict(int)
    def __setitem__(self, k, v):
        self._counts[k] += 1
        super().__setitem__(k, v)

def object_pairs_hook(pairs):
    d = DupKeyDict()
    for k, v in pairs:
        d[k] = v
    return d

with open(path, "r", encoding="utf-8") as f:
    data = json.load(f, object_pairs_hook=object_pairs_hook)

dups = [k for k,c in data._counts.items() if c > 1]
if dups:
    print("Duplicate keys found:")
    for k in dups:
        print(f"  {k}")
    sys.exit(1)
else:
    print("No duplicate keys detected.")
PY

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

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

123-123: Rename safety check: ensure no usages of the old key remain

The key has been renamed to the singular form here. Please verify that references to the old plural key and common code-constant variants are fully removed across the codebase.

#!/bin/bash
# Search for old and variant identifiers across the repo
rg -n --hidden --glob '!.git' 'round_robin_hosts_unavailable_for_booking'
rg -n --hidden --glob '!.git' 'roundRobinHostsUnavailableForBooking'
rg -n --hidden --glob '!.git' 'RoundRobinHostsUnavailableForBooking'

# Also confirm the new key exists where expected
rg -n --hidden --glob '!.git' 'round_robin_host_unavailable_for_booking'
apps/web/public/static/locales/sk-SK/common.json (1)

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

Align with usage 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.",
apps/web/public/static/locales/ca/common.json (3)

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

Aligns with dominant “add_*” pattern across the file.

Apply:

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

2255-2256: Fix terminology and grammar (“routing” → “encaminament”; “headless” → “sense interfície”; “els enviaments”)

This mirrors earlier guidance and corrects gender agreement.

Apply:

-  "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.",

3324-3324: PBAC descriptions read awkwardly (“a través dels equips de l’organització”)

Prefer more natural phrasing without “a través de...”. Matches past feedback.

Apply:

-  "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

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

123-123: Harmonize Round Robin term and booking noun

Two inconsistencies:

  • Mixed term (“Round Robin” vs “kružno dodeljivanje”).
  • Mixed noun (“zakazivanje” vs “rezervaciju”) vs neighbors (Lines 121–122 use “rezervaciju”).

Suggested fully localized diff for consistency:

-  "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."

If you prefer keeping the English term, change only the noun:

-  "round_robin_host_unavailable_for_booking": "Round Robin domaćin nije dostupan za zakazivanje.",
+  "round_robin_host_unavailable_for_booking": "Round Robin domaćin nije dostupan za rezervaciju."

3341-3341: Align PBAC scope wording (“teams” scope)

To align with nearby PBAC entries that use the “organization teams” scope (e.g., Lines 3323, 3333), prefer:

-  "pbac_desc_manage_teams": "Sve akcije nad timovima u organizaciji",
+  "pbac_desc_manage_teams": "Sve akcije nad timovima organizacije"

This avoids the awkward repetition that would result from “nad timovima u timovima organizacije” and stays semantically consistent.


3366-3366: Round Robin terminology consistency in groups notice

Keep the chosen canonical term consistent (see Line 123 comment). If localizing:

-  "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 kružnog dodeljivanja"
apps/web/public/static/locales/fi/common.json (2)

123-123: Finnish hyphenation: prefer “Round-robin-isäntä”

Use consistent hyphenation without the extra space.

-  "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.",

3445-3474: Clarify “created_at” wording

Prefer explicitly “luontiaika” to match semantics used across locales and the English base.

-  "webhook_created_at": "Webhookin aika",
+  "webhook_created_at": "Webhookin luontiaika",
apps/web/public/static/locales/uk/common.json (3)

123-123: Unify “ведучий” terminology (consistency with the rest of the file).

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

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

-  "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‑клієнтами”.

-  "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-клієнтами",
apps/web/public/static/locales/pt/common.json (1)

3444-3475: Webhooks/booking status: PT-PT and terminology (“equipa”, “reserva”, better label for created_at”)

Align with previous feedback and file-wide terminology.

-  "webhook_created_at": "A hora do webhook",
+  "webhook_created_at": "Data de criação do webhook",
   "webhook_type": "O slug do tipo de evento",
   "webhook_title": "O nome do tipo de evento",
   "webhook_start_time": "A hora de início do evento",
   "webhook_end_time": "A hora de fim do evento",
   "webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
   "webhook_location": "Localização do evento",
   "webhook_uid": "O UID da reserva",
   "webhook_reschedule_uid": "O UID para reagendamento",
   "webhook_cancellation_reason": "Motivo do cancelamento",
   "webhook_rejection_reason": "Motivo da rejeição",
   "webhook_organizer_name": "Nome do organizador",
   "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_attendee_name": "Nome do primeiro participante",
   "webhook_attendee_email": "Email do primeiro participante",
   "webhook_attendee_timezone": "Fuso horário do primeiro participante",
   "webhook_attendee_locale": "Idioma do primeiro participante",
-  "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",
   "webhook_video_call_url": "URL de chamada de vídeo para a reunião",
   "webhook_hide_variables": "Ocultar variáveis",
   "webhook_show_variable": "Mostrar variáveis disponíveis",
-  "webhook_event_and_booking": "Evento e agendamento",
+  "webhook_event_and_booking": "Evento e reserva",
   "webhook_people": "Pessoas",
   "webhook_teams": "Equipas",
   "webhook_metadata": "Metadados",
   "stats": "Estatísticas",
-  "booking_status": "Status do agendamento",
+  "booking_status": "Estado da reserva",
apps/web/public/static/locales/da/common.json (2)

123-123: Danish phrasing tweak for naturalness (duplicate of prior suggestion)

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

-  "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.",

3445-3475: Cross-locale coverage checks for renamed/added keys (duplicate of prior verification)

Please ensure:

  • All references to the old key round_robin_hosts_unavailable_for_booking are removed.
  • New keys round_robin_host_unavailable_for_booking and all webhook_* keys exist across all locales to prevent runtime fallbacks.
#!/usr/bin/env bash
set -euo pipefail

base_dir="apps/web/public/static/locales"

echo "Validate JSON for all common.json files"
fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  jq -e . "$f" >/dev/null || echo "Invalid JSON: $f"
done

echo
echo "Check old vs new Round Robin key"
echo "Old key occurrences:"
rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base_dir" || true
echo
echo "New key occurrences (should appear in every locale file):"
rg -n --fixed-strings '"round_robin_host_unavailable_for_booking"' "$base_dir" || true

echo
echo "Report locales missing the new RR key"
for f in $(fd -H --glob 'common.json' "$base_dir"); do
  rg -q --fixed-strings '"round_robin_host_unavailable_for_booking"' "$f" || echo "Missing new RR key in: $f"
done

echo
echo "Verify all webhook_* keys present in every locale"
# Collect unique webhook_* keys across all locales
mapfile -t files < <(find "$base_dir" -type f -name common.json)
all_keys=$(printf "%s\n" "${files[@]}" | xargs -n1 jq -r 'keys[]' | grep '^webhook_' | sort -u)
missing=false
for file in "${files[@]}"; do
  locale=$(basename "$(dirname "$file")")
  for key in $all_keys; do
    jq -e --arg k "$key" 'has($k)' "$file" >/dev/null || { echo "Missing key $key in locale '$locale' ($file)"; missing=true; }
  done
done
if [ "$missing" = false ]; then
  echo "✔ All webhook_* keys are present across all locales."
fi

Also applies to: 123-123

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

123-123: Standardize “Round‑Robin” and use “Veranstalter” (consistent across file).

Match prior convention and hyphenation.

-  "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.",
apps/web/public/static/locales/tr/common.json (3)

123-123: Align round-robin term to “Döngüsel organizatör”.

Use the in-product preferred phrasing for consistency.

-  "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."

To ensure the old plural key isn’t referenced anywhere, run:

#!/bin/bash
rg -n 'round_robin_hosts_unavailable_for_booking'

1844-1845: Use “kuruluşun” (not “organizasyonun”) in admin-only notices.

Keeps Turkish terminology consistent across the locale.

-  "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-3334: PBAC phrases: “Organizasyon” → “Kuruluş” for consistency.

Prior feedback indicated this change; reapplying to these newer PBAC lines.

   "pbac_resource_attributes": "Öznitelikler",
-  "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",
apps/web/public/static/locales/ro/common.json (2)

3416-3416: Bold LGTM — matches earlier preference for “Rezervări”

This aligns with the prior guidance to prefer “Rezervări” over “Programări”.


3474-3474: Bold keep booking terminology consistent: use “Starea rezervării”

Matches earlier project preference and prior commentary.

-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/it/common.json (3)

123-123: Use “organizzatore round robin” for terminology consistency

Prefer “organizzatore round robin” over “host Round Robin” to match existing usage in this file (e.g., “Organizzatori round robin”) and keep casing lowercase.

-  "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: Normalize “Round Robin” → “round robin” (lowercase, no hyphen)

For internal consistency (see other entries like “Organizzatori round robin”), prefer 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",

123-123: Consistency sweep for “round robin” across file

In addition to the two changed lines above, ensure any remaining “Round Robin”/“Round-Robin” instances in this file are normalized to “round robin” for consistent voice.

#!/bin/bash
# List inconsistent capitalization/hyphenation of "Round Robin" in this file
rg -n 'Round[- ]Robin' apps/web/public/static/locales/it/common.json

Also applies to: 3366-3366

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

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

Prefer branded “Round‑Robin” over paraphrase to stay consistent across BG locale and product copy.

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

3445-3472: Webhook labels: make BG more idiomatic and fix singular form

Apply the earlier refinements for more natural phrasing and 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 tweaks (consistency):

-  "webhook_title": "Името на типа събитие",
+  "webhook_title": "Име на типа събитие",
-  "webhook_start_time": "Началното време на събитието",
+  "webhook_start_time": "Начален час на събитието",
-  "webhook_end_time": "Крайното време на събитието",
+  "webhook_end_time": "Краен час на събитието",
apps/web/public/static/locales/es/common.json (5)

123-123: Spanish phrasing tweak for naturalness

Prefer "para la reserva" over "para reservas".

-"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: OAuth client keys: add cross-locale coverage; optional tone “Administra”

  • Ensure these new keys exist across all locales to avoid EN fallback.
  • Optional: “Administra” aligns with tone elsewhere in ES.

Run to verify presence across locales:

#!/bin/bash
set -euo pipefail
keys=("oauth_clients" "oauth_clients_description" "create_oauth_client" "create_oauth_client_description")
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  printf "%s -> " "$k"
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$present/$locales"
  if [ "$present" -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

Optional tone adjustment in ES:

-"oauth_clients_description": "Gestiona los clientes OAuth para tu organización",
+"oauth_clients_description": "Administra los clientes OAuth para tu organización",

1844-1845: Admin-only restriction keys: ensure cross-locale coverage

These are commonly referenced in Admin UI; ensure they’re present in all locales.

#!/bin/bash
set -euo pipefail
for k in "only_admin_can_manage_directory_sync" "only_admin_can_manage_oauth_clients"; do
  echo "Checking $k"
  rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l
  echo "Missing 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
done

3325-3329: Unify Spanish wording for workflows (consistency and fluency)

Use singular “configuración” and adjust word order per prior guidance.

-"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",

3416-3416: Analytics/status keys — ensure cross-locale presence

Confirm failed_bookings (and related analytics labels) exist across all locales.

#!/bin/bash
set -euo pipefail
keys=("failed_bookings" "stats" "booking_status")
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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
apps/web/public/static/locales/et/common.json (3)

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

Standardize the Estonian terminology for host.

-  "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: Normalize “routing” to “marsruutimine”.

Keep “routing” terminology consistent across the Estonian locale.

-  "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 omaenda vormi esitamiseks.",

Run to spot remaining “suunamis/suunamine” vs “marsruutimine” in this file:

#!/bin/bash
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

3444-3463: Please standardize webhook-related terms and correct nouns in apps/web/public/static/locales/et/common.json

  • Line 3445: Change "Veebikonksu loomise aeg""Veebihaagi loomise aeg"
  • Line 3446: Change "Sündmuse tüübi slug""Sündmuse tüübi lühinimi"
  • Line 3453 (webhook_reschedule_uid): Change "Ümberplaneerimise UID""Ümberajastamise UID"
  • Line 3459: Change "Korraldaja lokaad (nt 'en', 'fr')""Korraldaja lokaat (nt 'en', 'fr')"
  • Line 3463: Change "Esimese osaleja lokaad""Esimese osaleja lokaat"
-  "webhook_created_at": "Veebikonksu loomise aeg",
-  "webhook_type": "Sündmuse tüübi slug",
-  "webhook_reschedule_uid": "Ümberplaneerimise UID",
-  "webhook_organizer_locale": "Korraldaja lokaad (nt 'en', 'fr')",
-  "webhook_attendee_locale": "Esimese osaleja lokaad",
+  "webhook_created_at": "Veebihaagi loomise aeg",
+  "webhook_type": "Sündmuse tüübi lühinimi",
+  "webhook_reschedule_uid": "Ümberajastamise UID",
+  "webhook_organizer_locale": "Korraldaja lokaat (nt 'en', 'fr')",
+  "webhook_attendee_locale": "Esimese osaleja lokaat",
apps/web/public/static/locales/pt-BR/common.json (9)

123-123: Round-robin: padronizar hífen, caixa e artigo definido

Trocar por uma forma mais natural e consistente com “round-robin” no arquivo.

-  "round_robin_host_unavailable_for_booking": "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 agendamento."

352-352: Clareza em “round_robin_groups_helper”

Cópia mais fluida e específica em pt-BR.

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

1842-1845: Unificar “proprietário” vs. “dono” (consistência terminológica)

As novas linhas (1844–1845) usam “proprietário”, mas 1842–1843 ainda usam “dono”. Padronize para “proprietário”.

-  "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_manage_sso_org": "Apenas o administrador ou dono da organização podem gerenciar configurações de SSO",
+  "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 proprietário da organização podem gerenciar configurações de SSO",

2255-2256: Aprimorar copy (reduzir repetição, soar natural)

Evite repetição de “formulário”; use texto direto.

-  "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."

3315-3334: PBAC “manage_*”: fluidez e consistência

Ajustes deixam os textos mais naturais e padronizados.

-  "pbac_desc_manage_roles": "Todas as ações em funções nas equipes da organização",
-  "pbac_desc_create_workflows": "Criar e configurar novos fluxos de trabalho",
-  "pbac_desc_manage_workflows": "Acesso completo de gerenciamento 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_roles": "Todas as ações nas funções das equipes da organização",
+  "pbac_desc_create_workflows": "Criar e configurar fluxos de trabalho",
+  "pbac_desc_manage_workflows": "Gerenciamento completo de todos os fluxos de trabalho",
+  "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”

Simplifique a frase.

-  "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”. Padronize aqui.

-  "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.

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

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

Melhora clareza e consistência de rótulos; preferir “E‑mail”, remover “O ” no início e encurtar quando possível.

-  "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_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": "O UID da reserva",
-  "webhook_reschedule_uid": "O UID para reagendamento",
+  "webhook_uid": "UID da reserva",
+  "webhook_reschedule_uid": "UID de reagendamento",
   "webhook_cancellation_reason": "Motivo do cancelamento",
   "webhook_rejection_reason": "Motivo da recusa",
   "webhook_organizer_name": "Nome do organizador",
-  "webhook_organizer_email": "Email do organizador",
+  "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.: 'en', 'fr')",
+  "webhook_organizer_locale": "Idioma do organizador (ex.: 'pt-BR', 'en')",
   "webhook_attendee_name": "Nome do primeiro participante",
-  "webhook_attendee_email": "Email do primeiro participante",
+  "webhook_attendee_email": "E-mail do primeiro participante",
   "webhook_attendee_timezone": "Fuso horário do primeiro participante",
   "webhook_attendee_locale": "Idioma 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_hide_variables": "Ocultar variáveis",
-  "webhook_show_variable": "Mostrar variáveis disponíveis",
-  "webhook_event_and_booking": "Evento e Agendamento",
+  "webhook_show_variable": "Mostrar variáveis disponíveis",
+  "webhook_event_and_booking": "Evento e reserva",
   "webhook_people": "Pessoas",
-  "webhook_teams": "Times",
+  "webhook_teams": "Equipes",
   "webhook_metadata": "Metadados",
   "stats": "Estatísticas",
-  "booking_status": "Status do agendamento",
+  "booking_status": "Status da reserva",
apps/web/public/static/locales/ru/common.json (1)

123-123: Unify “host” terminology and Round Robin phrasing (duplicate of prior feedback).

Use “организатор” and render “Round Robin” as “по очереди” for consistency.

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

123-123: Fix BN possessive: use “বুকিংয়ের”

Keep possessive compound contracted in BN.

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

3292-3356: PBAC additions: ensure en/common.json parity and UI wiring

New PBAC resource and description keys were added/clarified here. Confirm English locale contains the same set and that permission-matrix components map to these keys.

#!/bin/bash
# Locate English common.json
EN=$(fd --absolute-path common.json . | rg '/locales/en/common.json$' | head -n1)
echo "Scanning: $EN"

# Verify PBAC keys present in EN
rg -nE '"pbac_resource_workflow"| "pbac_resource_attributes"' "$EN" || true
rg -nE '"pbac_desc_(create|view|update|delete|manage)_(workflows)"' "$EN" || true
rg -nE '"pbac_desc_view_organization_attributes"| "pbac_desc_update_organization_attributes"| "pbac_desc_delete_organization_attributes"| "pbac_desc_create_organization_attributes"' "$EN" || true

# Previously reported missing EN keys; re-check
rg -nE '"pbac_desc_create_bookings"| "pbac_desc_view_teams"| "pbac_desc_update_teams"| "pbac_desc_delete_teams"| "pbac_desc_delete_bookings"' "$EN" || true

875-879: Unify OAuth key casing to avoid lookup inconsistencies

New keys use oauth_* while existing ones elsewhere still use oAuth_* (mixed case). Standardize on oauth_* across translations and code to prevent missed lookups.

Apply in this file (he/common.json):

-  "oAuth_client_creation_form": "טופס יצירת לקוח OAuth",
-  "oAuth_client_creation_form_description": "זהו הטופס ליצירת לקוח OAuth חדש",
-  "oAuth_client_updation_form": "טופס עדכון לקוח OAuth",
-  "oAuth_client_updation_form_description": "זהו הטופס לעריכת לקוח OAuth קיים",
+  "oauth_client_creation_form": "טופס יצירת לקוח OAuth",
+  "oauth_client_creation_form_description": "זהו הטופס ליצירת לקוח OAuth חדש",
+  "oauth_client_updation_form": "טופס עדכון לקוח OAuth",
+  "oauth_client_updation_form_description": "זהו הטופס לעריכת לקוח OAuth קיים",

Also update all code references from t("oAuth_") to t("oauth_") across the app as previously listed in the verification note.


3473-3474: Possible duplicate key: stats — verify and dedupe if needed

A stats key is added here. If stats already exists earlier in this file, the later one silently overrides it at runtime. Keep keys unique.

#!/bin/bash
# Count occurrences of the "stats" key in this file
FILE="apps/web/public/static/locales/he/common.json"
echo "Occurrences of \"stats\":"
rg -n '^\s*"stats"\s*:' "$FILE" || true

If a duplicate exists, either delete the new one here or rename it (e.g., stats_section) to reflect distinct usage:

-  "stats": "סטטיסטיקות",
+  "stats_section": "סטטיסטיקות",

Comment on lines +3315 to 3320
"pbac_resource_attributes": "Egenskaber",
"pbac_desc_view_organization_attributes": "Se organisationsattributter",
"pbac_desc_update_organization_attributes": "Opdater organisationsattributter",
"pbac_desc_delete_organization_attributes": "Slet organisationsattributter",
"pbac_desc_create_organization_attributes": "Opret organisationsattributter",
"pbac_desc_view_roles": "Vis 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

Align “attributes” terminology within PBAC block

You use “Egenskaber” (3315) but “organisationsattributter” (3316–3320). Recommend standardizing on “Attributter” here to match the rest of the PBAC phrasing.

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

Please verify the term is consistent across the locale (earlier sections mix “Attribut(ter)” and “Egenskaber”). If the product wording guideline prefers one, apply it consistently.


🏁 Script executed:

#!/bin/bash
rg -n 'Egenskaber' apps/web/public/static/locales/da/common.json
rg -n 'attribut' apps/web/public/static/locales/da/common.json

Length of output: 3808


Standardize PBAC “attributes” translation to “Attributter”

The PBAC block mixes “Egenskaber” (pbac_resource_attributes) with “organisationsattributter” in the descriptions. Update for consistency:

• apps/web/public/static/locales/da/common.json
– Line 3315:

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

Please ensure all PBAC-related keys consistently use “Attribut”/“Attributter.”

📝 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": "Egenskaber",
"pbac_desc_view_organization_attributes": "Se organisationsattributter",
"pbac_desc_update_organization_attributes": "Opdater organisationsattributter",
"pbac_desc_delete_organization_attributes": "Slet organisationsattributter",
"pbac_desc_create_organization_attributes": "Opret organisationsattributter",
"pbac_desc_view_roles": "Vis roller",
"pbac_resource_attributes": "Attributter",
"pbac_desc_view_organization_attributes": "Se organisationsattributter",
"pbac_desc_update_organization_attributes": "Opdater organisationsattributter",
"pbac_desc_delete_organization_attributes": "Slet organisationsattributter",
"pbac_desc_create_organization_attributes": "Opret organisationsattributter",
"pbac_desc_view_roles": "Vis roller",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/da/common.json around lines 3315 to 3320 the
PBAC block mixes "Egenskaber" (pbac_resource_attributes) with
"organisationsattributter" in the description keys; update
pbac_resource_attributes to use the same Danish term "Attributter" (or singular
"Attribut" where appropriate) so all PBAC-related keys consistently use
"Attribut"/"Attributter", and review neighbouring PBAC keys in this section to
ensure the same spelling and plurality are applied across
view/update/delete/create description strings.

"pbac_desc_view_roles": "Rollen anzeigen",
"pbac_desc_update_roles": "Rollen aktualisieren",
"pbac_desc_delete_roles": "Rollen löschen",
"pbac_desc_manage_roles": "Alle Aktionen für Rollen",
"pbac_desc_manage_roles": "Alle Aktionen für Rollen in den Teams der Organisation",
"pbac_desc_create_workflows": "Neue Workflows erstellen und einrichten",
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

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 across entries.

-  "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: 3334-3334, 3342-3342, 3356-3356

🤖 Prompt for AI Agents
In apps/web/public/static/locales/de/common.json around lines 3324, 3334, 3342
and 3356, several PBAC scope strings use awkward/repetitive phrasing like "in
den Teams der Organisation" — replace those phrases with "innerhalb der
Organisation" (maintaining surrounding wording and punctuation) to avoid
repetition and match the parallel style used across entries.

"pbac_desc_create_teams": "បង្កើតក្រុម",
"pbac_desc_view_team_details": "មើលព័ត៌មានលម្អិតរបស់ក្រុម",
"pbac_desc_update_team_settings": "ធ្វើបច្ចុប្បន្នភាពការកំណត់ក្រុម",
"pbac_desc_delete_team": "លុបក្រុម",
"pbac_desc_invite_team_members": "អញ្ជើញសមាជិកក្រុម",
"pbac_desc_remove_team_members": "ដកសមាជិកក្រុមចេញ",
"pbac_desc_change_team_member_role": "ផ្លាស់ប្តូរតួនាទីរបស់សមាជិកក្រុម",
"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុម",
"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាព",
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 teams descriptor: remove “ក្រុមអង្គភាព”

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

-  "pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាព",
+  "pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ",
📝 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_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងក្រុមអង្គភាព",
"pbac_desc_manage_teams": "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/km/common.json around line 3341, the PBAC
teams descriptor uses the phrase "ក្រុមអង្គភាព" which is inconsistent with the
rest of the translation; update the value to replace "ក្រុមអង្គភាព" with
"អង្គការ" so the string becomes "សកម្មភាពទាំងអស់លើក្រុមក្នុងអង្គការ" ensuring
consistent terminology across the locale file.

Comment on lines +3444 to +3473
"webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "Ora webhook-ului",
"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 încheiere 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_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_people": "Persoane",
"webhook_teams": "Echipe",
"webhook_metadata": "Metadate",
"stats": "Statistici",
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

Bold webhook labels: improve clarity and tone, and avoid “programare” (use “rezervare”)

  • created_at sounds like a timestamp label; “Creat la” is clearer than “Ora webhook-ului”.
  • keep consistent polite imperatives.
  • use “Rezervare” over “Programare”.

Proposed edits:

-  "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",
📝 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": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
"webhook_created_at": "Ora webhook-ului",
"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 încheiere 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_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_people": "Persoane",
"webhook_teams": "Echipe",
"webhook_metadata": "Metadate",
"stats": "Statistici",
"webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
"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 încheiere 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_video_call_url": "URL apel video pentru întâlnire",
"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",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ro/common.json around lines 3444 to 3473,
replace the ambiguous "Ora webhook-ului" with a clearer timestamp label "Creat
la", change all occurrences of "programare" to "rezervare" (e.g., in
webhook_event_and_booking, webhook_team_name, webhook_team_members and any other
keys using programare), and ensure labels use consistent polite imperatives
(e.g., keep "Afișează..." and "Ascunde..." forms); update the affected
translations accordingly.

@@ -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

Optional: verify global consistency for renamed/mixed keys

  • Ensure the old key isn’t lingering anywhere (round_robin_hosts_unavailable_for_booking).
  • Audit “Round Robin” vs “kružno dodeljivanje” usage in this locale to finalize a single canonical term.

Also applies to: 3366-3366


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) Verify the old key is not present in any locale files
echo "Checking for old key 'round_robin_hosts_unavailable_for_booking' across locales..."
rg -n -S '"round_robin_hosts_unavailable_for_booking"' apps/web/public/static/locales || true

# 2) Show all occurrences of Round Robin vs localized variants in Serbian
echo
echo "Auditing Round Robin terminology in Serbian locale..."
rg -n -S $'"Round Robin"|kružn|kružno dodeljiv' apps/web/public/static/locales/sr/common.json

# 3) Show noun consistency near related keys in Serbian (rezervaciju vs zakazivanje)
echo
echo "Auditing noun consistency near booking unavailability messages in Serbian..."
rg -n -S $'"hosts_unavailable_for_booking"| "fixed_hosts_unavailable_for_booking"| "round_robin_host_unavailable_for_booking"' apps/web/public/static/locales/sr/common.json

Length of output: 2256


Unify “Round Robin” translation and booking term in Serbian locale

  • ✅ Old key "round_robin_hosts_unavailable_for_booking" was not found anywhere.
  • ⚠️ Inconsistent translations for “Round Robin” in apps/web/public/static/locales/sr/common.json:
    • English “Round Robin”
      • line 806: "round_robin": "Round Robin"
      • line 123: value uses English again.
    • “kružno dodeljivanje” / “kružnog dodeljivanja”
      • lines 1751, 1853, 2032, 2033 use “kružno dodeljivanje”
      • lines 1849, 3103 use “kružnog dodeljivanja”
    • “kružnog rasporeda”
      • lines 3367, 3368
  • ⚠️ Mixed nouns for “booking” in unavailability messages:
    • lines 121–122: use rezervaciju
    • line 123: uses zakazivanje

Please choose a single Serbian term for “Round Robin” (for example, kružno dodeljivanje) and a single noun for “booking” (for example, rezervacija), then update all relevant entries.

Suggested update at line 123:

- "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."
📝 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 domaćin nije dostupan za zakazivanje.",
"round_robin_host_unavailable_for_booking": "Domaćin za kružno dodeljivanje nije dostupan za rezervaciju.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/sr/common.json around line 123, the
translation uses “zakazivanje” and English “Round Robin” causing inconsistency
with other lines that use variations like “kružno dodeljivanje”, “kružnog
dodeljivanja”, and different nouns for booking; pick and apply a single Serbian
term (e.g., "kružno dodeljivanje") and a single noun for booking (e.g.,
"rezervacija") consistently: update line 123 to use those chosen terms, then
search the file for all occurrences of “Round Robin”, “kružno dodeljivanje”,
“kružnog dodeljivanja”, “kružnog rasporeda”, “zakazivanje”, and “rezervaciju”
and normalize them to the chosen pair so all keys/messages use the same phrasing
and grammatical case.

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

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

1-3476: Fix duplicate key and standardize “round-robin” hyphenation

Please address two issues in apps/web/public/static/locales/fr/common.json:

• Duplicate JSON key

  • Key "count'" appears at lines 3 and 1164. Remove or rename one occurrence to prevent silent overrides.

• Inconsistent “round robin” vs. “Round Robin”
All French translations should use a hyphen: round-robin (or Round-Robin when capitalized). Current un-hyphenated occurrences:

Un-hyphenated “round robin” (should be “round-robin”):

  • line 73
  • line 2277
  • line 2779
  • line 2783
  • lines 2882–2885
  • line 2969
  • line 3259
  • line 3364

Capitalized “Round Robin” (should be “Round-Robin”):

  • line 123
  • lines 2963, 2965
  • lines 3101, 3118
  • lines 3263–3265
  • line 3366

— Please remove the duplicate key and update all occurrences to use the hyphenated form.

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

1-3476: Replace all remaining “អង្គភាព” with “អង្គការ” for consistency

The term “អង្គភាព” appears in multiple entries and should be updated to “អង្គការ” in km/common.json:

• your_org_updated_successfully
• organization_id / organization_id_copied
• org_description
• organization_members
• oauth_clients_description
• profile_org_description
• organization_description
• saml_sp_entity_id / saml_sp_entity_id_copied
• only_admin_can_manage_directory_sync
• only_admin_can_manage_oauth_clients
• saml_saml_entityid_copied
• org_admin_other_teams_description
• not_part_of_org
• no_other_teams_found_description
• admin_delete_organization_description_[1–4]
• email|existing_user_added_link_will_change
• email|existing_user_added_link_changed
• salesforce_check_owner_of
• could_not_find_slug_to_publish_org
• platform_customer_cant_create_organization
• organization_customer_cant_create_platform
• pbac_desc_view/update/delete/create_organization_attributes
• pbac_desc_manage_roles/event_types/teams/bookings in “…ក្នុងក្រុមអង្គភាព” contexts

Please update each value to use “អង្គការ” instead of “អង្គភាព” to ensure terminology consistency across the locale file.

♻️ Duplicate comments (61)
apps/web/public/static/locales/eu/common.json (1)

875-879: Mismatch with existing oAuth_ key namespace — align casing or update code*

These new keys use oauth_* while the app widely references oAuth_* (camel-cased “A”). This will cause missing strings unless the components were updated. Prior review already flagged this.

Preferred fix: rename to match existing namespace:

-  "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, consider renaming the existing (unchanged) deletion string for consistency:

  • From "oauth_client_deletion_message" to "oAuth_client_deletion_message"

Verification script to confirm actual usages:

#!/bin/bash
# Inspect references in UI for oauth vs oAuth keys
rg -n --fixed-strings 't("oauth_' apps packages
rg -n --fixed-strings 't("oAuth_' apps packages
apps/web/public/static/locales/es-419/common.json (1)

123-123: Consistency with nearby copy (“para la reserva”)

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/ja/common.json (1)

123-123: Rename applied — verify no lingering usages of the old key across the repo

Ensure all code references migrated from the old plural form to the new singular key and camelCase variants.

Run:

#!/bin/bash
# Search for old and new variants (snake_case and camelCase)
rg -n --hidden --glob '!.git' \
  'round_robin_hosts_unavailable_for_booking|roundRobinHostsUnavailableForBooking|round_robin_host_unavailable_for_booking|roundRobinHostUnavailableForBooking'
apps/web/public/static/locales/no/common.json (2)

123-123: Reapply Norwegian wording consistency (“bestilling” over “booking”)

This still uses “booking” despite earlier guidance. Align with “bestilling”.

-  "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.",

3292-3293: Align PBAC phrasing (“hendelsestyper”; “organisasjonens team”) per earlier guidance

These strings still use “arrangementstyper” and “organisasjonsteam”. Recommend consistent “hendelsestyper” and “på tvers av organisasjonens team”.

-  "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",

Note: Other PBAC additions (e.g., pbac_resource_workflow, organization attributes CRUD) look good.

Also applies to: 3315-3320, 3324-3329, 3333-3333, 3341-3341, 3356-3356

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

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

Elsewhere in this file it’s lowercase. Align this entry.

-  "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.",

2555-2556: Fix “headless” mistranslation (“bezstavové” ≠ headless)

Keep the English loanword “headless” with a short SK clarification to avoid meaning change.

-  "use_our_headless_routing_api": "Použite naše bezstavové smerovacie API a použite vlastný formulár pre odosielanie.",
+  "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/sr/common.json (2)

3341-3341: Harmonize PBAC scope phrasing for teams

Match other PBAC entries using “u timovima organizacije”.

-  "pbac_desc_manage_teams": "Sve akcije nad timovima u organizaciji",
+  "pbac_desc_manage_teams": "Sve akcije nad timovima u timovima organizacije"

If the broader “u organizaciji” scope is intentional, please confirm and we’ll keep it.


123-123: Unify Round Robin terminology and booking noun

Use localized Round Robin and keep “rezervacija” (matches Lines 121–122).

-  "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/ar/common.json (8)

1844-1845: Use “المنظمة” instead of “المؤسسة” (consistency with prior guidance)

These two strings still use “المؤسسة”.

-  "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: PBAC: Replace “المؤسسة” with “المنظمة”

Keep Organization term 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_resource_attributes": "السمات",
+  "pbac_desc_view_organization_attributes": "عرض سمات المنظمة",
+  "pbac_desc_update_organization_attributes": "تحديث سمات المنظمة",
+  "pbac_desc_delete_organization_attributes": "حذف سمات المنظمة",
+  "pbac_desc_create_organization_attributes": "إنشاء سمات المنظمة",

3333-3333: PBAC scope: “فرق المنظمة” not “فرق المؤسسة”

Align with standardized term.

-  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المؤسسة",
+  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المنظمة",

3341-3341: PBAC scope: use “المنظمة”

Consistency fix.

-  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المؤسسة",
+  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المنظمة",

3356-3356: PBAC scope: use “المنظمة”

Consistency fix.

-  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المؤسسة",
+  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المنظمة",

123-123: Unify round-robin terminology

Use the established “الترتيب الدوري” instead of “التناوب الدوري”.

-  "round_robin_host_unavailable_for_booking": "مضيف التناوب الدوري غير متاح للحجز.",
+  "round_robin_host_unavailable_for_booking": "مضيف الترتيب الدوري غير متاح للحجز.",

3366-3366: Avoid English “round robin” in AR string

Use the established Arabic term.

-  "rr_load_balancing_disabled_with_groups": "توزيع الحمل غير متاح مع مجموعات round robin",
+  "rr_load_balancing_disabled_with_groups": "توزيع الحمل غير متاح مع مجموعات الترتيب الدوري",

3444-3472: Fix webhook terminology and semantics

Standardize “Webhook” spelling and correct misleading strings.

-  "webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
-  "webhook_created_at": "وقت الويب هوك",
-  "webhook_type": "رابط نوع الحدث",
-  "webhook_title": "اسم نوع الحدث",
+  "webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
+  "webhook_created_at": "وقت إنشاء الويبهوك",
+  "webhook_type": "نوع الحدث",
+  "webhook_title": "عنوان الحدث",
@@
-  "webhook_show_variable": "إظهار المتغيرات المتاحة",
+  "webhook_show_variable": "إظهار المتغير المتاح",

Notes:

  • If “webhook_type” truly refers to the webhook type (not event type), use “نوع الويبهوك”.
  • “الويبهوك” chosen as the consistent form in this block.
apps/web/public/static/locales/fi/common.json (2)

123-123: Finnish hyphenation for “Round-robin”

Typographic tweak for compound: use “Round-robin” without the extra space before the 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."

3445-3475: Webhook metadata: creation time wording + verify singular/plural mismatch

  • created_at: Prefer “luontiaika” for clarity and alignment with base semantics.
  • Potential mismatch: The key “webhook_hide_variables” (plural) pairs with “webhook_show_variable” (singular). The Finnish string currently uses plural (“muuttujat”). Please confirm English base intent; if singular, adjust to “Näytä muuttuja”.

Proposed tweak for created_at:

-  "webhook_created_at": "Webhookin luomisaika",
+  "webhook_created_at": "Webhookin luontiaika",

Verification script to check EN base and other locales for “webhook_show_variable” vs “webhook_hide_variables” to align plurality:

#!/bin/bash
# Inspect occurrences across locales to confirm intended singular/plural semantics
rg -n $'"webhook_show_variable"| "webhook_hide_variables"' apps/web/public/static/locales -A 1 -B 1

If EN base is singular for show, consider:

-  "webhook_show_variable": "Näytä käytettävissä olevat muuttujat",
+  "webhook_show_variable": "Näytä muuttuja",
apps/web/public/static/locales/hu/common.json (3)

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

Prefer the English product term and correct HU phrasing.

-  "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 voice in OAuth client strings (HU)

Match the locale’s formal tone.

   "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
+  "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ókhoz",
+  "create_oauth_client_description": "Új OAuth kliens létrehozása harmadik fél integrációihoz",

2255-2256: Make headless routing line formal and clearer

Align tone and remove repetition.

   "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_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és a beküldésekhez használja a saját űrlapját."
apps/web/public/static/locales/uk/common.json (5)

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

For consistency with the rest of the locale (e.g., “Почергові ведучі”), prefer “ведучий”.

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

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

Matches UA style and prior strings; hyphenation is standard.

-  "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‑клієнтами”.

Aligns with style on neighboring lines and earlier guidance.

-  "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-3334: Terminology consistency: prefer “заходів” over “подій”.

Elsewhere the file standardizes on “Типи заходів”.

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

3444-3472: Unify “вебгук”, lowercase “слаг”, prefer “учасники”, and pluralize “Показати змінні”.

Align with prevailing usage in this locale.

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

Optional follow-up: harmonize all occurrences of “вебхук”→“вебгук” and “Слаг”→“слаг” across this file for consistency.

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

123-123: Danish phrasing tweak (“til booking”)

Reads more naturally as “til booking”.

-  "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.",

1844-1845: Use product term “Directory Sync” (avoid “synkronisering af mapper”)

Matches product wording and avoids filesystem connotation.

-  "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-3319: Standardize PBAC “attributes” to “Attributter”

Matches neighbouring “organisationsattributter” and prior PBAC phrasing.

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

Also consider standardizing “Se” vs “Vis” across PBAC view/read strings for consistency.


3445-3473: Webhook metadata keys: verify cross-locale coverage and consistency

Large, important key set; ensure all webhook_* keys exist across locales to avoid runtime fallbacks.

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

base_dir="apps/web/public/static/locales"

# 1) Collect all unique webhook_* keys across all locales (from any language)
mapfile -t files < <(find "$base_dir" -type f -name common.json)
all_keys=$(printf "%s\n" "${files[@]}" \
  | xargs -n1 jq -r 'keys[]' \
  | grep '^webhook_' \
  | sort -u)

missing=false

# 2) Verify each key exists in every locale/common.json and report missing
for f in "${files[@]}"; do
  locale=$(basename "$(dirname "$f")")
  for key in $all_keys; do
    if ! jq -e --arg k "$key" 'has($k)' "$f" >/dev/null; then
      echo "Missing key $key in: $f (locale: $locale)"
      missing=true
    fi
  done
done

# 3) Outcome
if [ "$missing" = false ]; then
  echo "✔ All webhook_* keys are present across all locales."
fi
apps/web/public/static/locales/tr/common.json (3)

123-123: RR terminology: align to “Döngüsel organizatör” (brand voice consistency).

Use the in-product term for Round Robin host.

-  "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."

1844-1846: Standardize “Kuruluş” and minor grammar fix.

Replace “organizasyonun” with “kuruluşun” and add “-u” buffer for “senkronizasyonu”.

-  "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-3334: PBAC descriptors: use “Kuruluş” consistently.

Switch “Organizasyon” → “Kuruluş” across these lines for consistency with TR locale.

-  "pbac_resource_attributes": "Öznitelikler",
-  "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_resource_attributes": "Öznitelikler",
+  "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"
apps/web/public/static/locales/de/common.json (3)

123-123: Standardize Round‑Robin terminology (“Veranstalter” + hyphenation).

Matches prior guidance; please update the German value.

-  "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.",

3323-3323: Fix awkward PBAC scope phrasing (“… in den Teams der Organisation”).

As previously noted, prefer “innerhalb der Organisation” to avoid repetition.

-  "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: 3333-3333, 3341-3341, 3356-3356


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

Apply 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/it/common.json (2)

123-123: Normalize Round Robin terminology and “host” noun for consistency

Use “organizzatore round robin” and lowercase “round robin” per existing terminology elsewhere in this 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.",

3366-3366: Lowercase “round robin” for internal consistency

Match previously requested normalization (“round robin” lowercase, no hyphen).

-  "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/et/common.json (4)

123-123: Standardize “host” → “võõrustaja” (terminology consistency).

Replace remaining English loanword “host” with “võõrustaja” to match the rest of the locale and prior guidance.

-  "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.",

Optional: also update nearby non-changed lines using “hostid/hoste” in this file for full consistency.


2255-2256: Use “marsruutimine” (not “suunamine”) and tighten wording.

Keep routing term consistent across file. Also simplify the sentence.

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

3324-3324: PBAC scope phrasing: avoid “…organisatsiooni meeskondades”.

Use the cleaner “organisatsioonis” (or “organisatsiooni meeskondadega” where intent is teams). Prior feedback suggested this.

-  "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-3341, 3356-3356


3444-3472: Standardize “webhook” and related nouns; fix “slug/lokaad/ümberplaneerimine”.

Use “veebihaak/veebihaagi” consistently; “lühinimi” instead of slug; “lokaat” instead of “lokaad”; “ümberajastamine” fits prior usage elsewhere.

-  "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_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",
   "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",
+  "webhook_metadata": "Metaandmed",

Quick audit script to find remaining inconsistent terms:

#!/bin/bash
# Host terminology
rg -n '"[^"]*host[^"]*":\s*"[^"]*host[^"]*"' apps/web/public/static/locales/et/common.json

# Webhook terminology
rg -n 'Webhook|Webhooki|Veebikonks' apps/web/public/static/locales/et/common.json -A1 -B1

# Routing terminology
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
apps/web/public/static/locales/ru/common.json (1)

123-123: Unify “host” terminology and Round Robin phrasing (duplicate of prior suggestion).

Keep RU glossary consistent: use “организатор” for host and “по очереди” for Round Robin.

Apply:

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

123-123: Standardize “round‑robin” casing/hyphenation (duplicate of earlier suggestion).

Use the consistent style “round-robin” (lowercase, hyphen) used elsewhere in FR locale.

-  "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.",
apps/web/public/static/locales/ko/common.json (2)

875-878: Use “타사” instead of “서드파티” for brand voice consistency

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

3446-3450: Unify “이벤트 유형” → “이벤트 타입” in webhook labels
Matches earlier recommendation and the rest of the file’s terminology.

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

123-123: Refine phrasing for natural Spanish; keep consistency with prior guidance

Prefer “para la reserva” over “para reservas.”

-"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: Tone consistency: prefer “Administra …”

Optional but matches prevalent tone in this file.

 "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",

1844-1845: Ensure admin-only restriction keys exist in all locales

These are present here; verify cross-locale coverage to avoid fallbacks.

#!/bin/bash
set -euo pipefail
for k in \
  only_admin_can_manage_directory_sync \
  only_admin_can_manage_oauth_clients
do
  echo "Checking $k"
  locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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

3416-3416: Add cross-locale coverage check for analytics/status keys

These commonly regress; verify presence across all locales for:
failed_bookings, stats, booking_status.

#!/bin/bash
set -euo pipefail
keys=("failed_bookings" "stats" "booking_status")
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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
apps/web/public/static/locales/km/common.json (9)

352-352: Fix Khmer phrasing for “take turns” in round-robin helper
Use “វេនគ្នា” instead of “លើកដៃ” for “take turns.”

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

875-878: Use consistent term for “Organization”: replace “អង្គភាព” with “អង្គការ”
These OAuth strings still use “អង្គភាព”; prefer “អង្គការ”.

-  "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: Admin-only notices: replace “អង្គភាព” with “អង្គការ”
Maintain the preferred term for Organization.

-  "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: Do not literally translate “Headless”
Keep “Headless” in English for clarity.

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

3315-3319: PBAC attribute descriptors: replace “អង្គភាព” with “អង្គការ”
Ensure the Org term is 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": "បង្កើតគុណលក្ខណៈអង្គការ",

3323-3323: PBAC roles descriptor: remove “ក្រុមអង្គភាព”
Use organization-scoped phrasing.

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

3333-3333: PBAC event types descriptor: replace team-scoped phrase
Use “ក្នុងអង្គការ”.

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

3341-3341: PBAC teams descriptor: replace team-scoped phrase
Use “ក្នុងអង្គការ”.

-  "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/zh-TW/common.json (1)

875-878: 用詞與既有翻譯不一致(「用戶端」vs「客戶端」)

現有字串(例如 Line 879「OAuth 客戶端已成功刪除」)使用「OAuth 客戶端」;本段新增為「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 客戶端"

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 với 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

Unify OAuth phrasing; minor copy edit

  • Keep using “Ứng dụng OAuth” consistently.
  • Remove superfluous “với” in description sentence.
    Also update the adjacent deletion message to match.
-  "create_oauth_client_description": "Tạo một ứng dụng OAuth mới cho tích hợp với bên thứ ba",
+  "create_oauth_client_description": "Tạo một ứng dụng OAuth mới cho tích hợp bên thứ ba",

And update line 879 for consistency:

-  "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",

Verify no leftover English “OAuth client/Client” in this file:


🏁 Script executed:

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

Length of output: 94


🏁 Script executed:

#!/bin/bash
# Verify current description and deletion message in Vietnamese locale
rg -n -C2 '"create_oauth_client_description"' apps/web/public/static/locales/vi/common.json
rg -n -C2 '"oauth_client_deletion_message"'    apps/web/public/static/locales/vi/common.json

Length of output: 925


Apply consistent OAuth phrasing in vi/common.json

Please update the following entries in apps/web/public/static/locales/vi/common.json:

• Line 878 – remove the superfluous “với”
• Line 879 – replace the English “OAuth client” with the Vietnamese “Ứng dụng OAuth”

-  "create_oauth_client_description": "Tạo một ứng dụng OAuth mới cho tích hợp với bên thứ ba",
+  "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",
📝 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": "Ứ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 với bên thứ ba",
"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 Ứng dụng OAuth",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/vi/common.json around lines 875 to 879, fix
two localization issues: on the entry at line 878 remove the extra word "với" so
the phrase reads naturally, and on the following entry (line 879) replace the
English phrase "OAuth client" with the Vietnamese "Ứng dụng OAuth" to ensure
consistent Vietnamese wording across keys; update the JSON values accordingly
and keep punctuation/spacing consistent with surrounding entries.

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/sk-SK/common.json (1)

1-3476: Audit: Normalize “round robin” terminology
We found mixed uses of “Round Robin” vs. “round-robin” vs. “round robin” in sk-SK/common.json. Please standardize all to a single form—e.g. “round-robin” (lowercase, hyphen)—for consistency.

Affected entries (update the value of each key):

  • round_robin_host_unavailable_for_booking (line 123)
  • round_robin (line 806)
  • billing_freeplan_description (line 1751)
  • round_robin_hosts (line 1950)
  • collective_or_roundrobin (line 2032)
  • book_your_team_members (line 2033)
  • organization_banner_description (line 2277)
  • scheduling_for_your_team_description (line 2451)
  • reschedule_with_same_round_robin_host_title (line 2829)
  • 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)

Ensure every occurrence uses the chosen form “round-robin”.

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

240-240: Unify OAuth terminology in Vietnamese locale

Please replace the remaining “OAuthClient” occurrence with “ứng dụng OAuth” for consistency:

• File: apps/web/public/static/locales/vi/common.json
• Line 240

@@ apps/web/public/static/locales/vi/common.json:240
-  "webhook_update_form_description": "Thêm một webhook vào OAuthClient của bạn.",
+  "webhook_update_form_description": "Thêm một webhook vào ứng dụng OAuth của bạn.",
♻️ Duplicate comments (71)
apps/web/public/static/locales/uk/common.json (5)

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

Use the hyphenated form and more concise UA phrasing.

-  "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-клієнта для інтеграцій зі сторонніми сервісами",

Scan for other occurrences that should be hyphenated:

#!/bin/bash
rg -n $'OAuth ?клієн' apps/web/public/static/locales/uk/common.json

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

Matches prior style (“Лише адміністратор…”) and 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-клієнтами",

3333-3333: Align terminology: use “заходів” (not “подій”).

The locale consistently uses “Типи заходів”.

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

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

Keep host terminology consistent with the rest of the locale (“Ведучі”, “Почергові ведучі”).

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

3445-3469: Standardize “вебгук”, lowercase “слаг”, prefer “учасники”, and pluralize “Показати змінні”.

Harmonize spelling and casing across webhook metadata labels.

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

Optionally unify remaining occurrences:

#!/bin/bash
# Find mixed spellings and casing to normalize
rg -n $'вебхук|вебгук|Слаг типу події' apps/web/public/static/locales/uk/common.json
apps/web/public/static/locales/zh-CN/common.json (2)

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

Use fully localized phrasing (prior feedback). Suggested:

-  "rr_load_balancing_disabled_with_groups": "负载均衡在 Round Robin 组中不可用",
+  "rr_load_balancing_disabled_with_groups": "轮流组中不支持负载均衡",
#!/bin/bash
# Verify no remaining "Round Robin" in zh-CN common.json
rg -n 'Round Robin' apps/web/public/static/locales/zh-CN/common.json || echo "No remaining occurrences"

3444-3475: Webhook metadata: optional concise Chinese and terminology tweaks

Parity looks good. Optional polish for brevity and consistency (drop 的, simplify terms, align with other strings):

-  "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": "事件类型 ID",

-  "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_uid": "预订的 UID",
+  "webhook_uid": "预订 UID",

-  "webhook_organizer_name": "组织者的姓名",
+  "webhook_organizer_name": "组织者姓名",

-  "webhook_organizer_email": "组织者的电子邮件",
+  "webhook_organizer_email": "组织者邮箱",

-  "webhook_organizer_timezone": "组织者的时区(例如:'America/New_York','Asia/Kolkata')",
+  "webhook_organizer_timezone": "组织者时区(如 'America/New_York')",

-  "webhook_organizer_locale": "组织者的语言环境(例如:'en','fr')",
+  "webhook_organizer_locale": "组织者语言(如 'en')",

-  "webhook_attendee_name": "第一位参与者的姓名",
+  "webhook_attendee_name": "参与者姓名",

-  "webhook_attendee_email": "第一位参与者的电子邮件",
+  "webhook_attendee_email": "参与者邮箱",

-  "webhook_attendee_timezone": "第一位参与者的时区",
+  "webhook_attendee_timezone": "参与者时区",

-  "webhook_attendee_locale": "第一位参与者的语言环境",
+  "webhook_attendee_locale": "参与者语言",

-  "webhook_team_name": "预订团队的名称",
+  "webhook_team_name": "团队名称",

-  "webhook_team_members": "预订团队的成员",
+  "webhook_team_members": "团队成员",

-  "webhook_video_call_url": "会议的视频通话 URL",
+  "webhook_video_call_url": "视频通话 URL",

-  "webhook_hide_variables": "隐藏变量",
+  "webhook_hide_variables": "隐藏变量",

-  "webhook_show_variable": "显示可用变量",
+  "webhook_show_variable": "显示变量",
apps/web/public/static/locales/ca/common.json (3)

2255-2256: Fix terminology and grammar for headless routing API.

This was previously flagged; it still uses “routing headless” and incorrect article “les 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.",

3323-3323: Tighten PBAC description phrasing (remove redundancies).

Earlier we suggested improving these to avoid “en els equips de l’organització”/duplications. Proposed concise, natural phrasing:

-  "pbac_desc_manage_roles": "Totes les accions sobre rols en els 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 en els 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 en els 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 en els 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 form for “add_group” to match other “add_*” keys.

Most action labels use imperative (“Afegeix …”). Align for consistency.

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

123-123: Consistency with nearby phrasing (“para la reserva”)

Align with Line 121 by switching to singular.

-  "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/sk-SK/common.json (2)

123-123: Unify casing: “round robin” should be lowercase (consistency with this file).

Update to lowercase to match other SK strings (e.g., Line 73 “pravdepodobnosť round robin”).

-  "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-2257: Fix “headless” mistranslation (currently says “bezstavové”).

Use “headless (bez UI)” to preserve the intended meaning.

-  "use_our_headless_routing_api": "Použite naše bezstavové smerovacie API a použite vlastný formulár pre odosielanie.",
+  "use_our_headless_routing_api": "Použite naše headless (bez UI) smerovacie API a svoj vlastný formulár na odoslanie.",

To ensure this didn’t regress elsewhere in SK locale:

#!/bin/bash
rg -n $'"use_our_headless_routing_api":\\s*"Použite naše[^"]*' apps/web/public/static/locales/sk-SK/common.json
apps/web/public/static/locales/sr/common.json (1)

123-123: Unify “Round Robin” term and booking noun (“rezervacija”), per locale conventions

Replace English “Round Robin” and “zakazivanje” with consistent Serbian terms used elsewhere.

-  "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."

Run to audit remaining inconsistencies in this locale:

#!/bin/bash
# RR terminology and booking noun audit in Serbian locale
rg -n -S $'"Round Robin"|kružn|kružno dodeljiv|kružnog raspored' apps/web/public/static/locales/sr/common.json
rg -n -S $'"rezervaci' apps/web/public/static/static/locales/sr/common.json || true
rg -n -S $'"zakaziv' apps/web/public/static/locales/sr/common.json || true
apps/web/public/static/locales/hu/common.json (3)

123-123: Unify Round‑Robin terminology and fix grammar (“nem érhető el”).

Use the same “Round‑Robin” wording across the locale and the correct predicate.

-  "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 and correct possessive in OAuth section.

Align with the rest of the locale’s formal address and possessives.

   "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
+  "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ókhoz",
+  "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 for embedding/headless routing string.

Switch to formal register and clearer wording.

   "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_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és saját űrlapját használja a beküldésekhez."
apps/web/public/static/locales/da/common.json (3)

123-123: Danish phrasing tweak for naturalness

Prefer “til booking” over “for booking”.

-  "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.",
#!/bin/bash
set -euo pipefail

base_dir="apps/web/public/static/locales"

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

echo "2) Ensure old key is gone and new key exists in all locales"
echo "Old key occurrences (should be none):"
rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base_dir" || true

echo
echo "New key occurrences by locale:"
fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  if ! rg -q --fixed-strings '"round_robin_host_unavailable_for_booking"' "$f"; then
    echo "Missing new key in: $f"
  fi
done

1844-1845: Use product term “Directory Sync” (not “synkronisering af mapper”)

Avoid implying filesystem folders; use the product name.

-  "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-3315: PBAC terminology consistency: use “Attributter”

The PBAC block elsewhere uses “organisationsattributter”. Align the resource label.

-  "pbac_resource_attributes": "Egenskaber",
+  "pbac_resource_attributes": "Attributter",
apps/web/public/static/locales/es/common.json (5)

123-123: Spanish: singular article reads more natural here

Prefer “para la reserva” over “para reservas”.

-"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: Tone consistency (Administra vs Gestiona)

Optional: elsewhere we commonly use “Administra …”.

 "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",

1844-1845: Admin-only restriction keys — presence looks good; ensure cross‑locale coverage

ES translations LGTM. Please ensure these keys exist in all locales to avoid EN fallbacks.

#!/bin/bash
set -euo pipefail
for k in only_admin_can_manage_directory_sync only_admin_can_manage_oauth_clients; do
  locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
  if [ "$present" -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

3324-3329: Unify PBAC workflow descriptions (minor Spanish tweaks)

Singular “configuración” and word order read more naturally; also slightly crisper “Acceso de gestión completo…”.

 "pbac_desc_manage_roles": "Todas las acciones en roles a través de los equipos de la organización",
-"pbac_desc_create_workflows": "Crear y configurar nuevos flujos de trabajo",
-"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_delete_workflows": "Eliminar flujos de trabajo del sistema",
-"pbac_desc_manage_workflows": "Acceso completo de gestión a todos los flujos de trabajo",
+"pbac_desc_create_workflows": "Crear y configurar nuevos 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_delete_workflows": "Eliminar flujos de trabajo del sistema",
+"pbac_desc_manage_workflows": "Acceso de gestión completo a todos los flujos de trabajo",

3416-3416: Analytics/status labels — present; ensure cross‑locale coverage

ES entries look good. Please verify these keys exist across all locales.

#!/bin/bash
set -euo pipefail
keys=("failed_bookings" "stats" "booking_status")
locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
for k in "${keys[@]}"; do
  present=$(rg -l "\"$k\"" apps/web/public/static/locales/*/common.json | wc -l)
  echo "$k -> $present/$locales"
done

Also applies to: 3473-3475

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

875-878: Standardize Organization as “المنظمة” (“منظمتك”)

Matches established usage elsewhere in this file.

-  "oauth_clients_description": "إدارة عملاء OAuth لمؤسستك",
+  "oauth_clients_description": "إدارة عملاء OAuth لمنظمتك"

1844-1845: Use “المنظمة” consistently in admin notices

Align with earlier decisions across 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",

3315-3320: Standardize Organization as “المنظمة” in PBAC attributes

Keep the same term across PBAC descriptors:

   "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": "إنشاء سمات المنظمة",

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

Align all scope notes:

-  "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: 3341-3341, 3356-3356


3444-3473: Correct webhook metadata translations and unify spelling (“ويبهوك”)

These keys need semantic and terminology fixes (per prior review):

-  "webhook_created_at": "وقت الويب هوك",
+  "webhook_created_at": "وقت إنشاء الويبهوك",

-  "webhook_type": "رابط نوع الحدث",
+  "webhook_type": "نوع الحدث",
+  // If meant as slug/identifier, prefer:
+  // "webhook_type": "معرّف نوع الحدث",

-  "webhook_title": "اسم نوع الحدث",
+  "webhook_title": "عنوان الحدث",

-  "webhook_show_variable": "إظهار المتغيرات المتاحة",
+  "webhook_show_variable": "إظهار المتغير المتاح",

Additionally, keep “ويبهوك” (without space) consistently across new strings in this block.

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

123-123: Fix BN possessive: use “বুকিংয়ের”
Use the correct contracted possessive form.

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

123-123: Finnish hyphenation: remove space and use “Round-robin” compound

Use the closed compound without a space before the hyphen to match Finnish style and similar keys elsewhere.

-  "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."

3444-3473: Clarify “created_at” to denote creation time explicitly

“Webhookin aika” is ambiguous; prefer explicit creation time to match en base and other locales.

- "webhook_created_at": "Webhookin aika",
+ "webhook_created_at": "Webhookin luontiaika",

Everything else in this block looks aligned (“type/title” semantics are correct).

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

123-123: RR terminology: prefer “Döngüsel organizatör” over “Sıralı ev sahibi”.

Align with existing TR locale usage for Round Robin hosts.

-  "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 “Kuruluş” terminology in OAuth section.

Replace “Organizasyonunuz” with “Kuruluşunuz”.

-  "oauth_clients_description": "Organizasyonunuz için OAuth istemcilerini yönetin",
+  "oauth_clients_description": "Kuruluşunuz için OAuth istemcilerini yönetin"

1844-1845: “Kuruluş” consistency for admin-only notices.

Replace “organizasyonun” with “kuruluşun” and keep natural phrasing.

-  "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-3334: PBAC descriptions: switch “Organizasyon” → “Kuruluş” for consistency.

Align with the locale’s preferred term.

-  "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 update nearby PBAC “organization” mentions within this vicinity if present (outside the diff) to avoid mixed terminology.


3444-3472: Webhook labels: use “Web kancası” and “Organizatör” consistently; tweak reschedule UID phrasing.

Align with earlier strings in this file that already use “Web kancası” and with “Organizatör” elsewhere.

-  "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 follow-up (not in this range): consider replacing remaining “Webhook” occurrences in other keys with “Web kancası” for full consistency.

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

875-879: Standardize OAuth key namespace with components

Existing components use oAuth_* while these new keys are oauth_* (lowercase). This will lead to unresolved translations unless code is updated.

Confirm current usage:

#!/bin/bash
rg -n --fixed-strings 'oauth_clients|create_oauth_client' apps packages
rg -n --fixed-strings 'oAuth_clients|create_oAuth_client|oAuth_client' apps packages

If keeping component calls as is, rename these keys:

-  "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, align the deletion message key nearby for consistency:

"oAuth_client_deletion_message": "OAuth bezeroa behar bezala ezabatu da"

3292-3292: Add missing “manage” descriptor for organization attributes

The Basque locale defines view/update/delete/create for organization attributes but lacks the corresponding pbac_desc_manage_organization_attributes. UIs that auto-compose “manage” labels will render an empty string without this key.

• File: apps/web/public/static/locales/eu/common.json
• Around lines 3315–3320

Suggested diff:

   "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",
   "pbac_desc_view_roles": "Rolak ikusi",
apps/web/public/static/locales/bg/common.json (2)

123-123: Unify “Round‑Robin” branding in BG value

Prefer brand-consistent “Round‑Robin” rather than generic “на ротационния принцип”.

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

Run to verify old key usages and new key coverage:

#!/bin/bash
set -euo pipefail

# 1) Find lingering usages of the deprecated plural key anywhere
rg -n --hidden --glob '!*node_modules*' $'round_robin_hosts_unavailable_for_booking|hosts_unavailable_for_booking'

# 2) Ensure the new singular key is referenced in code
rg -n --hidden --glob '!*node_modules*' 'round_robin_host_unavailable_for_booking'

# 3) Check that all locale files define the new key
fd -t f common.json apps/web/public/static/locales | while read -r f; do
  hit=$(rg -n '\"round_robin_host_unavailable_for_booking\"' "$f" | wc -l | tr -d ' ')
  if [ "$hit" -eq 0 ]; then echo "MISSING in $f"; fi
done

3445-3472: Webhook labels: improve natural BG and align singular/plural
These sound literal. Apply more natural phrasing and singular for “show_variable”.

-  "webhook_trigger_event": "Името на задействащото събитие (напр. BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Име на задействащото събитие (например BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Времето на уебхука",
+  "webhook_created_at": "Време на създаване на уебхука",
-  "webhook_type": "Слъгът на типа събитие",
+  "webhook_type": "Идентификатор (slug) на типа събитие",
-  "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_hide_variables": "Скрий променливите",
+  "webhook_hide_variables": "Скриване на променливите",
-  "webhook_show_variable": "Покажи наличните променливи",
+  "webhook_show_variable": "Покажи променлива",
-  "webhook_event_and_booking": "Събитие и резервация",
+  "webhook_event_and_booking": "Събитие и резервация",
-  "webhook_people": "Хора",
+  "webhook_people": "Хора",
-  "webhook_teams": "Екипи",
+  "webhook_teams": "Екипи",
-  "webhook_metadata": "Метаданни",
+  "webhook_metadata": "Метаданни",

Check UI for singular/plural expectation for “show variable”:

#!/bin/bash
# Find consumers of 'webhook_show_variable' to confirm UI intent (singular button vs list)
rg -n --hidden --glob '!*node_modules*' 'webhook_show_variable'
rg -n --hidden --glob '!*node_modules*' 'show variable|show variables|Покажи променлива|Покажи променливи'
apps/web/public/static/locales/it/common.json (2)

123-123: Normalize “round robin” + preferred term “organizzatore”

Keep terminology consistent with the rest of the file (lowercase “round robin”; prefer “organizzatore” over “host”).

-  "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: Normalize “Round Robin” → “round robin”

Align with style guide and other keys (“round robin” lowercase, no hyphen).

-  "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/et/common.json (7)

123-123: Standardize “host” → “võõrustaja” (consistency with rest of file)

Use “võõrustaja” instead of the English loanword “host”.

-  "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: Normalize “routing” terminology: use “marsruutimine” (not “suunamine”)

Keep “routing” consistently as “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.",

3324-3329: PBAC scope phrasing: simplify “organisatsiooni meeskondades”

Use “organisatsioonis” (or “organisatsiooni meeskondadega” where appropriate) for natural Estonian.

-  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsiooni meeskondades",
+  "pbac_desc_manage_roles": "Kõik toimingud rollidega organisatsioonis",
@@
   "pbac_desc_delete_workflows": "Eemalda töövood süsteemist",
   "pbac_desc_manage_workflows": "Täielik haldusõigus kõikidele töövoogudele",

3333-3333: PBAC phrasing: event types

-  "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",

3341-3341: PBAC phrasing: teams

-  "pbac_desc_manage_teams": "Kõik toimingud meeskondadega organisatsiooni meeskondades",
+  "pbac_desc_manage_teams": "Kõik toimingud organisatsiooni meeskondadega",

3356-3356: PBAC phrasing: bookings

-  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsiooni meeskondades",
+  "pbac_desc_manage_bookings": "Kõik toimingud broneeringutega organisatsioonis",

3444-3473: Standardize “webhook” terminology and fix nouns (“lühinimi”, “ümberajastamine”, “lokaat”)

Use “veebihaak/veebihaagi”; prefer “lühinimi”; and “lokaat”. Also “Ü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",
   "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",
apps/web/public/static/locales/pt/common.json (3)

3416-3416: Grammar fix: “Reservas falhadas”

Correct PT-PT phrase for failed bookings.

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

3444-3475: Webhooks + booking status: PT‑PT fixes (“equipa”, “Estado da reserva”, clearer created-at label)

Apply earlier normalization and fix two webhook “equipa” values.

-  "webhook_trigger_event": "O nome do evento de gatilho (ex., BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "A hora do webhook",
+  "webhook_trigger_event": "Nome do evento de acionamento (ex.: BOOKING_CREATED, BOOKING_CANCELLED)",
+  "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",

3292-3292: PBAC: normalize to PT‑PT (“Ver”, “Eliminar”, “gestão”, “equipas”)

Replace pt-BR variants and literal “gerenciamento” with PT-PT and domain wording used elsewhere in this file.

-  "pbac_resource_workflow": "Fluxos de trabalho",
+  "pbac_resource_workflow": "Fluxos de trabalho",
@@
-  "pbac_resource_attributes": "Atributos",
-  "pbac_desc_view_organization_attributes": "Visualizar 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_create_organization_attributes": "Criar 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": "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 em todas as equipes da organização",
+  "pbac_desc_manage_roles": "Todas as ações em funções em todas as 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_update_workflows": "Editar e modificar configurações de fluxo de trabalho",
-  "pbac_desc_delete_workflows": "Remover fluxos de trabalho do sistema",
-  "pbac_desc_manage_workflows": "Acesso completo de gerenciamento a todos os fluxos de trabalho",
+  "pbac_desc_create_workflows": "Criar e configurar novos fluxos de trabalho",
+  "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": "Eliminar fluxos de trabalho do sistema",
+  "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 em todas as equipes da organização",
+  "pbac_desc_manage_event_types": "Todas as ações em tipos de eventos em todas as equipas da organização",
@@
-  "pbac_desc_manage_teams": "Todas as ações em equipes em todas as equipes da organização",
+  "pbac_desc_manage_teams": "Todas as ações em equipas em todas as equipas da organização",
@@
-  "pbac_desc_manage_bookings": "Todas as ações em agendamentos em todas as equipes da organização",
+  "pbac_desc_manage_bookings": "Todas as ações em reservas em todas as equipas da organização",

Also applies to: 3315-3334, 3341-3341, 3356-3356

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

123-123: Standardize “round-robin” casing/hyphenation (duplicate of prior feedback).

Use “round-robin” (lowercase, hyphen) to match the file’s style (see Line 1950).

-  "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."
apps/web/public/static/locales/ro/common.json (3)

875-879: Switch to polite/plural voice (“dvs.”) in OAuth client UI

These four strings use informal imperatives and “ta/tău”. The project prefers polite/plural (“-ți/ți/țiți” forms and “dvs.”).

-  "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",

Optional follow-up (tone alignment):

-  "oauth_client_deletion_message": "Clientul OAuth a fost șters cu succes",
+  "oauth_client_deletion_message": "Clientul OAuth a fost șters cu succes.",

3445-3472: Webhook labels: clarity, tone, and “rezervare” consistency

  • Make created_at read like a timestamp label (“Creat la”).
  • Use polite imperatives.
  • 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",

3473-3474: Booking status wording

Prefer “Starea rezervării” over “Status programare” for consistency.

-  "booking_status": "Status programare",
+  "booking_status": "Starea rezervării",
apps/web/public/static/locales/he/common.json (2)

3292-3356: PBAC expansions (workflows, attributes, scoped descriptions) — ensure EN parity

Good additions. Please ensure EN locale contains all corresponding keys (workflows/actions, attributes and the scoped org/team descriptors) to keep fallback behavior consistent in UI.

#!/bin/bash
EN=$(fd --absolute-path common.json . | rg '/locales/en/common.json$' | head -n1)
echo "Scanning: $EN"

# Check presence of new resource keys
rg -n '"pbac_resource_workflow"| "pbac_resource_attributes"' "$EN" || true

# Verify scoped descriptors added here exist in EN as well
rg -nE '"pbac_desc_(create|view|update|delete|manage)_(workflows|event_types|teams|bookings)"' "$EN" || echo "One or more pbac_desc_* keys missing in EN"

# Organization-attributes descriptors
rg -n '"pbac_desc_view_organization_attributes"| "pbac_desc_update_organization_attributes"| "pbac_desc_delete_organization_attributes"| "pbac_desc_create_organization_attributes"' "$EN" || echo "Org attribute descriptors missing in EN"

875-879: OAuth: mixed key casing still present elsewhere (oAuth_ vs oauth_*)*

New keys use oauth_, but existing keys around Lines 2441–2445 still use oAuth_; this inconsistency risks i18n lookup errors. Standardize to oauth_* everywhere.

Apply this diff in this file to rename the legacy keys (update code references accordingly):

-  "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 קיים",
#!/bin/bash
# Audit for mixed casing across translations and code
echo "Translations:"
rg -n --hidden -e '"oAuth_[^"]+"' -e '"oauth_[^"]+"' apps/web/public/static/locales

echo "Code references:"
rg -n --hidden -e "t\\(['\"]oAuth_" -e "t\\(['\"]oauth_" apps web packages
apps/web/public/static/locales/nl/common.json (1)

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

Keep hyphenation consistent with product copy.

-  "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."
apps/web/public/static/locales/km/common.json (9)

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

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

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

875-878: Use consistent term for “Organization” (អង្គការ) in OAuth block

Replace “អង្គភាព” with “អង្គការ” for consistency across the km 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 “អង្គការ”

These two admin notices should use the consistent term.

-  "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: “Headless” should not be literally translated

Keep “Headless” in English for clarity, e.g., “API Routing (Headless)”.

   "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 “អង្គការ”

Align with the agreed term for Organization.

   "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": "បង្កើតគុណលក្ខណៈអង្គការ",

3323-3323: PBAC roles descriptor: remove “ក្រុមអង្គភាព”

Use organization-scoped phrasing.

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

3333-3333: PBAC event types descriptor: remove “ក្រុមអង្គភាព”

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

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

3341-3341: PBAC teams descriptor: remove “ក្រុមអង្គភាព”

Use organization scope consistently.

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

3356-3356: PBAC bookings descriptor: fix “organization” term

Replace the team-scoped phrase.

-  "pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងក្រុមអង្គភាព",
+  "pbac_desc_manage_bookings": "សកម្មភាពទាំងអស់លើការកក់ក្នុងអង្គការ",
apps/web/public/static/locales/vi/common.json (1)

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

Use lowercase to match other occurrences in this 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.",

Comment on lines +3416 to 3417
"failed_bookings": "Mislykkede bookinger",
"event_type_no_hosts": "Ingen værter er tildelt denne begivenhedstype",
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

Ensure “failed_bookings” exists across locales

Prevent UI fallback by adding this new key in all locales.


🏁 Script executed:

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

fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  if ! rg -q --fixed-strings '"failed_bookings"' "$f"; then
    echo "Missing failed_bookings in: $f"
  fi
done

Length of output: 5734


Add “failed_bookings” to all missing locale files

The following locale files are missing the new "failed_bookings" key—please add an appropriate translation (or English fallback) 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

Example entry:

  "failed_bookings": "Mislykkede bookinger",

(Replace the value with the correct translation for each language.)

🤖 Prompt for AI Agents
In apps/web/public/static/locales/hr/common.json lines ~3416-3417,
apps/web/public/static/locales/id/common.json lines ~3416-3417,
apps/web/public/static/locales/iw/common.json lines ~3416-3417,
apps/web/public/static/locales/lv/common.json lines ~3416-3417,
apps/web/public/static/locales/sk/common.json lines ~3416-3417,
apps/web/public/static/locales/ta/common.json lines ~3416-3417, and
apps/web/public/static/locales/th/common.json lines ~3416-3417 add the missing
"failed_bookings" key; insert a language-appropriate translation as the value
(or use the English fallback "Failed bookings" if you cannot provide a
translation) following the same JSON formatting as the other keys, ensuring
trailing commas and quotation marks remain valid for each file.

Comment on lines +1844 to 1846
"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",
"collective_scheduling": "Collectieve planning",
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

Wording consistency: “Mapsynchronisatie” and “OAuth-clients”

  • Use “mapsynchronisatie” to match the existing “Mapsynchronisatie” label elsewhere (key: directory_sync).
  • 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",
📝 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
"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",
"collective_scheduling": "Collectieve planning",
"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",
"collective_scheduling": "Collectieve planning",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/nl/common.json around lines 1844 to 1846,
update the Dutch strings for consistency: change the value for
"only_admin_can_manage_directory_sync" to use "mapsynchronisatie" (matching the
existing "Mapsynchronisatie" label) and change the value for
"only_admin_can_manage_oauth_clients" to hyphenate “OAuth‑clients” (use a hyphen
between OAuth and clients). Make those two text replacements exactly in the JSON
values while preserving surrounding punctuation and formatting.

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 (4)
apps/web/public/static/locales/pl/common.json (1)

3292-3334: Unify PBAC “manage_*” scope phrasing

Please standardize all pbac_desc_manage_* entries to use “w organizacji”:

Locations & updates:

  • apps/web/public/static/locales/pl/common.json:3323
    • from
      "pbac_desc_manage_roles": "Wszystkie działania na rolach w zespołach organizacji",
    • to
      "pbac_desc_manage_roles": "Wszystkie działania na rolach w organizacji",
  • apps/web/public/static/locales/pl/common.json:3333
    • from
      "pbac_desc_manage_event_types": "Wszystkie działania na typach wydarzeń w zespołach organizacji",
    • to
      "pbac_desc_manage_event_types": "Wszystkie działania na typach wydarzeń w organizacji",
  • apps/web/public/static/locales/pl/common.json:3356
    • from
      "pbac_desc_manage_bookings": "Wszystkie działania na rezerwacjach w zespołach organizacji",
    • to
      "pbac_desc_manage_bookings": "Wszystkie działania na rezerwacjach w organizacji",

No changes needed for pbac_desc_manage_teams (already “w organizacji”).

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

1-3475: Normalize “programare” → “rezervare” in Romanian locale
Multiple entries in apps/web/public/static/locales/ro/common.json still use “programare/Programare/Programări” (informal or incorrect). Please update them to “rezervare/Rezervare/Rezervări” and ensure polite, plural tone.

File: apps/web/public/static/locales/ro/common.json
Problematic keys (excerpt – update all similar occurrences):

  • calcom_explained: “…infrastructura de programare…” → “…infrastructura de rezervare…”
  • calcom_explained_new_user: “…problemele de programare.” → “…problemele de rezervare.”
  • check_in_assistant_description: “…verifica dacă programarea stabilită…” → “…verifica dacă rezervarea stabilită…”
  • rescheduled_event_type_subject: “…Cerere de reprogramare…” → “…Cerere de reprogramare…” (reţine pluralitate/context)
  • requested_to_reschedule_subject_attendee: “…Acțiunea necesită reprogramare…” → “…Acțiunea necesită reprogramare…”
  • no_booking: “Fără programare” → “Fără rezervare”
  • booking_cancel_redirect_uri: “…pagini…anula rezervarea” (uri key label is fine, ensure translation elsewhere)
  • edit_profile_info_description: “…afișate pe link-ul…de programare.” → “…afișate pe link-ul…de rezervare.”
  • your_upgrade_is_here_description: “…experiența de programare…” → “…experiența de rezervare…”
  • cal_invitee_phone_number_scheduling: “…înainte de programare.” → “…înainte de rezervare.”
  • you_will_need_to_generate: “…instrument de programare.” → “…instrument de rezervare.”
  • disable_rescheduling / allow_rescheduling_cancelled_bookings / request_reschedule_booking / reschedule_request_sent / reason_for_reschedule(_...): adjust “reprogramare”→“reprogramare” (ensure consistent context)
  • collective_scheduling / add_your_team_members / organization_banner_description / scheduling_for_your_team_description / workflow_automation_description / extensive_whitelabeling_description: update “programare…”→“rezervare…”

…plus the dozen+ other hits from your grep.

• Search for /programar/ in that file and batch-replace.
• Verify plurals (“rezervări”) where appropriate.
• Review any newly added strings for consistency.

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

2631-2632: Fix typo and grammar in “Travel schedule”.

Visible UI text has a stray letter and wrong gender/word order.

-  "travel_schedule": "П пътуване",
-  "travel_schedule_description": "Планирайте своята пътуване напред, за да запазите вашия съществуващ график в различна часова зона и да предотвратите резервацията в полунощ.",
+  "travel_schedule": "Пътуване",
+  "travel_schedule_description": "Планирайте своето пътуване предварително, за да запазите съществуващия си график в различна часова зона и да избегнете резервации в полунощ.",

2637-2637: Untranslated CTA.

Translate the admin CTA for consistency.

-  "org_admin_no_slots|cta": "Open users availability",
+  "org_admin_no_slots|cta": "Отворете наличността на потребителите",
♻️ Duplicate comments (71)
apps/web/public/static/locales/ca/common.json (6)

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

Use “encaminament” for “routing”, translate “headless”, and correct the article for “enviaments”. This was flagged previously and remains.

-  "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: Improve PBAC “manage roles” phrasing.

Avoid “a través dels equips de l’organització” and prefer direct genitive.

-  "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ó",

3333-3333: Improve PBAC “manage event types” phrasing.

Mirror the roles fix for natural Catalan.

-  "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ó",

3341-3341: Improve PBAC “manage teams” phrasing.

Remove redundant “a través dels equips”.

-  "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ó",

3356-3356: Improve PBAC “manage bookings” phrasing.

Keep structure consistent with the other PBAC fixes.

-  "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ó",

3383-3383: Use imperative mood for “add_group”.

Most “add_*” use “Afegeix …”. Align for consistency.

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

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

Keep locale fully localized and consistent with other RR strings.

- "rr_load_balancing_disabled_with_groups": "负载均衡在 Round Robin 组中不可用",
+ "rr_load_balancing_disabled_with_groups": "轮流组中不支持负载均衡"

3446-3451: Webhook copy: optional brevity polish

Drop “的” and remove redundancy in description for more concise Chinese.

- "webhook_created_at": "Webhook 的创建时间",
+ "webhook_created_at": "Webhook 创建时间",
- "webhook_description": "事件类型设置中描述的事件描述",
+ "webhook_description": "事件类型设置中的描述"
apps/web/public/static/locales/hu/common.json (3)

123-123: Unify Round‑Robin terminology + fix grammar

Use “Round‑Robin” consistently and correct “nem érhető el” phrasing.

-  "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 client section

Switch to formal register and fix possessive.

   "oauth_clients": "OAuth kliensek",
-  "oauth_clients_description": "Kezeld szervezeted OAuth klienseit",
+  "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ókhoz",
+  "create_oauth_client_description": "Új OAuth kliens létrehozása harmadik fél integrációihoz"

2255-2256: Formal tone + clarity for embedding/headless routing

Align to formal register and avoid duplicate “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_our_headless_routing_api": "Használja headless útválasztó API‑nkat, és a beküldéshez használja a saját űrlapját."
apps/web/public/static/locales/sk-SK/common.json (2)

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

Align with the established casing elsewhere in this file and other 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 (“bezstavové” → “headless (bez UI)”)

“Headless” ≠ “bezstavové (stateless)”. Keep the English term with a short SK clarification.

-  "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.",

Run to check for other occurrences of the mistranslation across locales:

#!/bin/bash
rg -n 'bezstavov' apps/web/public/static/locales
apps/web/public/static/locales/sr/common.json (5)

123-123: Unify Round Robin term and booking noun (“rezervacija”)

Prefer localized term and consistent noun use.

-  "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."

3366-3366: Localize “Round Robin” for consistency

Use agreed Serbian term instead of English.

-  "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",

3323-3323: Harmonize PBAC scope phrasing (roles) to “u organizaciji”

Align with other entries and past guidance.

-  "pbac_desc_manage_roles": "Sve akcije nad ulogama u timovima organizacije",
+  "pbac_desc_manage_roles": "Sve akcije nad ulogama u organizaciji",

3333-3333: Harmonize PBAC scope phrasing (event types) to “u organizaciji”

Remove “u timovima organizacije” for consistency.

-  "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",

3356-3356: Harmonize PBAC scope phrasing (bookings) to “u organizaciji”

Align with the rest of the PBAC manage_* entries.

-  "pbac_desc_manage_bookings": "Sve akcije nad zakazivanjima u timovima organizacije",
+  "pbac_desc_manage_bookings": "Sve akcije nad zakazivanjima u organizaciji",
apps/web/public/static/locales/bn/common.json (1)

123-123: Fix BN possessive: use “বুকিংয়ের”
Prior feedback still applies.

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

875-879: Key casing mismatch prevents translations from being used

This is the same issue identified in previous reviews - these new keys use oauth_* (lowercase) while the codebase expects oAuth_* (camelCase). The translations won't be picked up by UI components.

Please rename these keys to match the existing pattern:

  • oauth_clientsoAuth_clients
  • oauth_clients_descriptionoAuth_clients_description
  • create_oauth_clientcreate_oAuth_client
  • create_oauth_client_descriptioncreate_oAuth_client_description

3315-3319: Missing "manage" permission still not addressed

The PBAC organization attributes section includes view, update, delete, and create permissions, but is still missing the pbac_desc_manage_organization_attributes key that was identified in previous reviews. This breaks symmetry with other PBAC resources that all have manage permissions.

This will cause UI components that dynamically generate permission labels to show blank/undefined strings for "Manage attributes" in Basque.

+"pbac_desc_manage_organization_attributes": "Erakundeko atributuetan ekintza guztiak",
apps/web/public/static/locales/cs/common.json (1)

2255-2256: “Headless” wording: avoid “bezrozhraní”, keep explicit parenthetical.

“bezrozhraní” sounds unnatural. Use “headless (bez uživatelského rozhraní)” to avoid confusion and align with brand voice and past guidance. Also streamline the second clause.

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

875-879: Polite/plural tone for OAuth client labels (keep UI voice consistent)

Switch to polite “Gestionați/Creați … organizația dvs.” as used elsewhere.

-  "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-2256: Polite/plural tone for embedding/headless routing options

Align with project-wide voice; avoid “tău/meu”, 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: Webhooks and booking labels: clarify, adopt polite tone, and prefer “rezervare”

  • “webhook_created_at”: prefer a clear timestamp label “Creat la”.
  • Use polite “Ascundeți/Afișați …”.
  • Replace “programare” with “rezervare”.
  • “booking_status”: use “Starea rezervării”.
-  "webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Ora webhook-ului",
+  "webhook_trigger_event": "Numele evenimentului declanșator (de exemplu, BOOKING_CREATED, BOOKING_CANCELLED)",
+  "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_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",
apps/web/public/static/locales/fi/common.json (2)

123-123: Finnish hyphenation: prefer “Round‑robin” without spacing around the hyphen

Use “Round‑robin” as a compound adjective and remove the extraneous space before the 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."

3445-3475: Webhook “created_at” wording regressed; prefer explicit “luontiaika”

Earlier nit fixed this to explicitly denote creation time. Please keep the clearer phrasing.

-  "webhook_created_at": "Webhookin aika",
+  "webhook_created_at": "Webhookin luontiaika",

Note: Other webhook labels look good and align with the base semantics.

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

121-123: Unify “host/hosts” terminology and Round‑Robin casing across RU locale

Use a single term for “host” (prefer “организатор”), and standardize Round‑Robin phrasing/casing (e.g., “Round Robin” or “по кругу”) across changed strings.

I can run a quick scan to list remaining inconsistencies:

#!/bin/bash
# Find inconsistent host/organizer and Round-Robin phrasing in ru/common.json
rg -n 'Round[ -]?Robin|round[ -]?robin|роунд|по кругу|хост(?!инг)|организатор' apps/web/public/static/locales/ru/common.json

Also applies to: 352-354, 1850-1853, 2779-2784, 2829-2831, 2882-2885, 2963-2969, 3250-3266, 3361-3367, 3416-3417


123-123: Standardize “host” → “организатор” for Round Robin message

Align with the rest of RU locale where “host(s)” are translated as “организатор(ы)”.

Apply this diff:

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

123-123: Align RR term to “Döngüsel organizatör”.

Use the locale-preferred term for Round Robin.

-  "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 “Kuruluş” terminology in OAuth description.

TR locale prefers “Kuruluşunuz”.

-  "oauth_clients_description": "Organizasyonunuz için OAuth istemcilerini yönetin",
+  "oauth_clients_description": "Kuruluşunuz için OAuth istemcilerini yönetin",

1844-1845: Replace “organizasyon” → “kuruluş” in admin-only notices.

Keep terminology consistent.

-  "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 descriptors: use “Kuruluş” instead of “Organizasyon”.

Apply consistent terminology across PBAC 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: 3323-3323, 3333-3333, 3341-3341, 3356-3356


3444-3472: Webhook labels: align with locale (“Web kancası”, “Organizatör”) and tighten phrasing.

  • Use “Web kancası” instead of “Webhook”.
  • Prefer “Organizatör” over “Düzenleyen”.
  • Tighten the reschedule UID phrasing.
-  "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')",

Note: There are other unchanged “Webhook …” occurrences in this file; consider standardizing them separately to “Web kancası”.

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

123-123: Verify old→new key migration across locales and fix remaining PT-PT nits.

Past review flagged ensuring round_robin_hosts_unavailable_for_booking is fully migrated to round_robin_host_unavailable_for_booking across all locales and that webhook/booking terms align. Reconfirm after applying the above changes.

#!/bin/bash
# 1) Check for any lingering old key usages (should return nothing)
rg -n --hidden -S 'round_robin_hosts_unavailable_for_booking'

# 2) Check PT-PT consistency for common Brazilianisms in this file
rg -n -S 'gerenciar|equipe|agendamento|Visualizar|Excluir|Status' apps/web/public/static/locales/pt/common.json

# 3) Sanity-check presence of the new key in all locales (print missing files)
fd common.json apps/web/public/static/locales | while read -r f; do
  if ! rg -n '"round_robin_host_unavailable_for_booking"' "$f" > /dev/null; then
    echo "MISSING in: $f"
  fi
done

Also applies to: 3445-3475


3416-3416: Grammar fix: “Reservas falhadas”.

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

3445-3474: Webhooks and booking status: PT-PT and domain terms (“equipa”, “Estado da reserva”).

-  "webhook_trigger_event": "O nome do evento de gatilho (ex., BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "A hora do webhook",
+  "webhook_trigger_event": "Nome do evento de acionamento (ex.: BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_created_at": "Data de criação do webhook",
   "webhook_type": "O slug do tipo de evento",
   "webhook_title": "O nome do tipo de evento",
   "webhook_start_time": "A hora de início do evento",
   "webhook_end_time": "A hora de fim do evento",
   "webhook_description": "A descrição do evento conforme descrito nas configurações do tipo de evento",
   "webhook_location": "Localização do evento",
   "webhook_uid": "O UID da reserva",
   "webhook_reschedule_uid": "O UID para reagendamento",
   "webhook_cancellation_reason": "Motivo do cancelamento",
   "webhook_rejection_reason": "Motivo da rejeição",
   "webhook_organizer_name": "Nome do organizador",
   "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_attendee_name": "Nome do primeiro participante",
   "webhook_attendee_email": "Email do primeiro participante",
   "webhook_attendee_timezone": "Fuso horário do primeiro participante",
   "webhook_attendee_locale": "Idioma do primeiro participante",
-  "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",
   "webhook_video_call_url": "URL de chamada de vídeo para a reunião",
   "webhook_hide_variables": "Ocultar variáveis",
   "webhook_show_variable": "Mostrar variáveis disponíveis",
   "webhook_event_and_booking": "Evento e agendamento",
   "webhook_people": "Pessoas",
   "webhook_teams": "Equipas",
   "webhook_metadata": "Metadados",
   "stats": "Estatísticas",
-  "booking_status": "Status do agendamento",
+  "booking_status": "Estado da reserva",
apps/web/public/static/locales/no/common.json (2)

123-123: Revert to Norwegian “bestilling” for style consistency (as previously agreed)

Earlier review aligned on “bestilling”; this string appears to have regressed to “booking”.

-  "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-3356: Align PBAC scope phrasing and “hendelsestyper” terminology (as previously requested)

Use “organisasjonens team” and “hendelsestyper” consistently; this appears to have regressed.

-  "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",
apps/web/public/static/locales/km/common.json (8)

3356-3356: PBAC bookings descriptor: organization scope wording

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

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

3341-3341: PBAC teams descriptor: organization scope wording

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

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

3323-3323: PBAC roles descriptor: use organization scope

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

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

875-878: Use consistent term for “Organization” (“អង្គការ”, not “អង្គភាព”)

Update oauth description wording.

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

2255-2256: Do not translate “Headless” literally; keep “Headless” in English

Improves clarity for developers.

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

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

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

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

1844-1845: Replace “អង្គភាព” with “អង្គការ” in admin-only notices

Consistency with the rest of the locale and product wording.

-  "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: Replace all remaining instances of “អង្គភាព” with “អង្គការ” for consistency

After running the grep, we found the term “អង្គភាព” in the following lines of apps/web/public/static/locales/km/common.json:

  • 704, 708–710, 714, 876
  • 1633, 1635
  • 1791, 1793
  • 1844–1845
  • 2002
  • 2393–2394, 2396
  • 2537–2539
  • 2657–2658
  • 2877
  • 3163
  • 3227–3228
  • 3316–3319
  • 3323, 3333, 3341, 3356

Please update each translation by replacing “អង្គភាព” with “អង្គការ”. For example:

-  "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": "បង្កើតគុណលក្ខណៈអង្គការ",
apps/web/public/static/locales/vi/common.json (2)

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

Use lowercase for “luân phiên” to match terminology elsewhere.

-  "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.",

3444-3474: Polish webhook metadata labels for natural Vietnamese and consistency

Clarify “type” as slug, prefer concise phrasing, and normalize organizer/attendee wording; align capitalization/plurals; use “Siêu dữ liệu” for Metadata.

-  "webhook_trigger_event": "Tên của sự kiện kích hoạt (ví dụ: BOOKING_CREATED, BOOKING_CANCELLED)",
+  "webhook_trigger_event": "Tên sự kiện kích hoạt (ví dụ: BOOKING_CREATED, BOOKING_CANCELLED)",
-  "webhook_created_at": "Thời gian của webhook",
+  "webhook_created_at": "Thời gian tạo webhook",
-  "webhook_type": "Đường dẫn loại sự kiện",
+  "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_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_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_uid": "UID đặt lịch",
-  "webhook_reschedule_uid": "UID để đặt lại lịch",
+  "webhook_reschedule_uid": "UID dùng để đặt lại lịch",
-  "webhook_cancellation_reason": "Lý do hủy",
+  "webhook_cancellation_reason": "Lý do hủy",
-  "webhook_rejection_reason": "Lý do từ chối",
+  "webhook_rejection_reason": "Lý do từ chối",
-  "webhook_organizer_name": "Tên của nhà tổ chức",
+  "webhook_organizer_name": "Tên người tổ chức",
-  "webhook_organizer_email": "Email của nhà 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_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 nhà tổ chức (ví dụ: 'en', 'fr')",
+  "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_name": "Tên người tham dự (đầu tiên)",
-  "webhook_attendee_email": "Email của người tham dự đầu tiên",
+  "webhook_attendee_email": "Email người tham dự (đầu tiên)",
-  "webhook_attendee_timezone": "Múi giờ của 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ữ của 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_name": "Tên đội đã đặt lịch",
-  "webhook_team_members": "Thành viên của độ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_hide_variables": "Ẩn các biến",
-  "webhook_show_variable": "Hiển thị các biến có sẵ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_people": "Mọi người",
-  "webhook_teams": "Các nhóm",
+  "webhook_teams": "Các nhóm",
-  "webhook_metadata": "Metadata",
+  "webhook_metadata": "Siêu dữ liệu",
apps/web/public/static/locales/ko/common.json (2)

875-878: Use “타사” instead of “서드파티” (consistency with common KR usage)

This keeps terminology consistent and more standard in Korean.

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

If not already done, ensure these OAuth keys exist across all locales to avoid fallback-to-English.


3446-3450: Normalize webhook labels to “이벤트 타입” (consistency with product UI)

Replace “이벤트 유형” with “이벤트 타입” as used broadly elsewhere.

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

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

Keep “المنظمة” across the file.

-  "oauth_clients_description": "إدارة عملاء OAuth لمؤسستك",
+  "oauth_clients_description": "إدارة عملاء OAuth لمنظمتك",

1844-1845: Standardize “Organization” as “المنظمة” (permission notices)

Matches established usage 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-3319: Standardize “Organization” as “المنظمة” in PBAC attributes

Align with prior decisions for PBAC texts.

   "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": "إنشاء سمات المنظمة",

3323-3323: PBAC: replace “فرق المؤسسة” → “فرق المنظمة”

Keep scope wording consistent.

-  "pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المؤسسة",
+  "pbac_desc_manage_roles": "جميع الإجراءات على الأدوار عبر فرق المنظمة",

3333-3333: PBAC: replace “فرق المؤسسة” → “فرق المنظمة” (event types)

Consistency with the rest of PBAC texts.

-  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المؤسسة",
+  "pbac_desc_manage_event_types": "جميع الإجراءات على أنواع الفعاليات عبر فرق المنظمة",

3341-3341: PBAC: replace “فرق المؤسسة” → “فرق المنظمة” (teams)

-  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المؤسسة",
+  "pbac_desc_manage_teams": "جميع الإجراءات على الفرق عبر فرق المنظمة",

3356-3356: PBAC: replace “فرق المؤسسة” → “فرق المنظمة” (bookings)

-  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المؤسسة",
+  "pbac_desc_manage_bookings": "جميع الإجراءات على الحجوزات عبر فرق المنظمة",

3366-3366: Avoid English leakage: use “الترتيب الدوري”

Use Arabic rendering for Round‑Robin consistently.

-  "rr_load_balancing_disabled_with_groups": "توزيع الحمل غير متاح مع مجموعات round robin",
+  "rr_load_balancing_disabled_with_groups": "توزيع الحمل غير متاح مع مجموعات الترتيب الدوري",
apps/web/public/static/locales/es/common.json (4)

123-123: Spanish phrasing tweak for naturalness (duplicate of earlier suggestion)

Prefer “para la reserva” over “para reservas” for a more natural read.

-"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.",

3325-3329: PBAC workflows: unify wording; singular “configuración” and word order

Matches prior convention used elsewhere; improves readability.

-"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",

875-878: Ensure “Administra” is used and add missing OAuth keys across locales

The Spanish translation should use “Administra” for consistency, and the four OAuth keys must be present in every locale to avoid falling back to English.

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

"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",

• Missing keys in these locale files (add all four):

  • 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 update those files with the four keys—oauth_clients, oauth_clients_description, create_oauth_client, and create_oauth_client_description—using appropriate translations.


3473-3474: Add missing stats and booking_status translations across all locales

The stats and booking_status keys are currently absent in 7 of the 44 locale files. Please add appropriate translations (or English fallbacks) 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

Example diff for one locale (use correct translated strings per language):

diff --git a/apps/web/public/static/locales/hr/common.json b/apps/web/public/static/locales/hr/common.json
index abc1234..def5678 100644
--- a/apps/web/public/static/locales/hr/common.json
+++ b/apps/web/public/static/locales/hr/common.json
@@ -42,6 +42,8 @@
   "stats": "Statistika",
   "booking_status": "Status rezervacije"
+  // "stats": "Statistika",
+  // "booking_status": "Status rezervacije",

[fallbacks should be replaced with accurate translations before merge]

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

123-123: Padronizar “round-robin” (caixa, hífen, artigo definido)

Melhora a naturalidade e mantém a consistência ao longo do arquivo.

-  "round_robin_host_unavailable_for_booking": "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 agendamento."

352-352: Clareza e fluidez no helper de grupos round-robin

Texto mais direto e menos ambíguo.

-  "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: Headless routing: tornar a cópia mais natural e não repetitiva

Ajustes sutis para concisão e fluidez.

-  "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."

3315-3334: PBAC: fluidez, consistência e padronização de termos

Melhorias de estilo; manter “reservas” ao invés de “agendamentos”.

-  "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"
-  "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-3341, 3356-3356


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

Forma correta em pt-BR.

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

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

  • Usar “E‑mail” (com hífen).
  • Remover “O/Os” no início para rótulos mais concisos.
  • Ajustar “Times” → “Equipes”, “Agendamento” → “reserva” onde aplicável.
-  "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_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_uid": "O UID da reserva",
-  "webhook_reschedule_uid": "O UID para reagendamento",
+  "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/bg/common.json (2)

123-123: Unify Round‑Robin branding (consistency with rest of BG locale).

Keep the brand term instead of a paraphrase.

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

Run to ensure the deprecated plural key isn’t referenced and to audit branding consistency:

#!/bin/bash
# 1) Old key usage
rg -n --hidden --glob '!*node_modules*' $'round_robin_hosts_unavailable_for_booking'

# 2) Branding (hyphen, no-hyphen, unicode hyphen) within BG locale
rg -n --hidden 'apps/web/public/static/locales/bg/common.json' $'Round Robin|Round-?Robin|Round‑Robin'

3444-3468: Webhook metadata: improve natural BG and singular/plural as previously suggested.

Apply earlier refinements for more idiomatic labels and consistent singular.

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

Check for any remaining occurrences of the old phrases across BG:

#!/bin/bash
rg -n 'apps/web/public/static/locales/bg/common.json' $'Времето на уебхука|Слъгът на типа събитие|както е описано|Покажи наличните променливи'

@@ -349,6 +349,7 @@
"available_apps_lower_case": "Налични приложения",
"available_apps_desc": "Разгледайте популярните приложения по-долу и открийте повече в нашия <0>App Store</0>",
"fixed_host_helper": "Добавете всеки, който трябва да присъства на събитието. <0>Научете повече</0>",
"round_robin_groups_helper": "Хората в групата се редуват, един човек от всяка група ще се появи на събитието.",
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

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

Current text mixes singular “групата” with “всяка група”.

-  "round_robin_groups_helper": "Хората в групата се редуват, един човек от всяка група ще се появи на събитието.",
+  "round_robin_groups_helper": "Хората в групите се редуват; по един човек от всяка група ще присъства на събитието.",
📝 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": "Хората в групата се редуват, един човек от всяка група ще се появи на събитието.",
"round_robin_groups_helper": "Хората в групите се редуват; по един човек от всяка група ще присъства на събитието.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/bg/common.json around line 352, the Bulgarian
string mixes singular and plural ("групата" vs "всяка група") and needs tighter
phrasing; update the translation to use plural form and clearer wording (e.g.,
change to refer to "групите" and rephrase to a concise sentence stating that
people from the groups take turns, with one person from each group appearing at
the event).

Comment on lines +1844 to 1846
"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",
"collective_scheduling": "Yhteinen ajanvaraus",
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

Terminology consistency: use “ylläpitäjä” consistently (not “järjestelmänvalvoja”)

Elsewhere in this file you use “ylläpitäjä” for “admin.” Align these two strings for consistency.

-  "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"

Run to spot any remaining occurrences mixing the two terms:


🏁 Script executed:

#!/bin/bash
rg -n $'"järjestelmänvalvoja"|\"ylläpitäjä\"' apps/web/public/static/locales/fi/common.json -A 1 -B 1

Length of output: 100


🏁 Script executed:

#!/bin/bash
# Search separately for both terms with proper regex quoting and context
rg -n -e 'järjestelmänvalvoja|ylläpitäjä' -C 1 apps/web/public/static/locales/fi/common.json

Length of output: 6641


Use “ylläpitäjä” instead of “järjestelmänvalvoja” in these two entries

Update the following in apps/web/public/static/locales/fi/common.json to align with the rest of the file:

• Lines 1844–1845:

-  "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",

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

🤖 Prompt for AI Agents
In apps/web/public/static/locales/fi/common.json around lines 1844 to 1846, the
two translation entries still use "järjestelmänvalvoja"; replace that word with
"ylläpitäjä" for the keys "only_admin_can_manage_directory_sync" and
"only_admin_can_manage_oauth_clients" so they read "Vain organisaation
ylläpitäjä tai omistaja voi hallita ..." ensuring spelling and punctuation
remain consistent with surrounding entries.

"oauth_clients": "OAuth-klienter",
"oauth_clients_description": "Administrer OAuth-klienter for organisasjonen din",
"create_oauth_client": "Opprett OAuth-klient",
"create_oauth_client_description": "Opprett en ny OAuth-klient for tredjepartsintegrasjoner",
"oauth_client_deletion_message": "OAuth-klient ble slettet",
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

AI summary inconsistency: key not removed

Summary claims oauth_client_deletion_message was removed, but this key is present here.

Run to confirm usage outside locales (safe to keep/remove accordingly):


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "Searching for oauth_client_deletion_message outside locales..."
rg -n -S '"oauth_client_deletion_message"' --glob '!apps/web/public/static/locales/**' || true

Length of output: 363


Inconsistent AI summary: oauth_client_deletion_message wasn’t removed

The summary claims the oauth_client_deletion_message key was deleted, but:

  • It still exists in apps/web/public/static/locales/no/common.json (line 879).
  • It’s referenced in apps/web/modules/settings/platform/platform-view.tsx:33 via
    showToast(t("oauth_client_deletion_message"), "success");

Please update the summary to reflect that this key remains (or, if removal was intended, delete both the JSON entry and its usage).

🤖 Prompt for AI Agents
In apps/web/public/static/locales/no/common.json around line 879 the key
"oauth_client_deletion_message" still exists but the PR summary claims it was
removed; either update the PR summary to state the key remains, or if deletion
was intended remove the JSON entry and also delete or update the reference in
apps/web/modules/settings/platform/platform-view.tsx (line ~33) where
showToast(t("oauth_client_deletion_message"), "success") is called; ensure both
the localization key and all usages are consistently removed or the summary
reflects the key's continued presence.

@@ -120,7 +120,7 @@
"already_signed_up_for_this_booking_error": "Você já está registrado para esta reserva.",
"hosts_unavailable_for_booking": "Alguns dos anfitriões não estão disponíveis para reserva.",
"fixed_hosts_unavailable_for_booking": "Alguns dos anfitriões fixos não estão disponíveis para reserva.",
"round_robin_hosts_unavailable_for_booking": "Nenhum anfitrião de rodízio está disponível para reserva.",
"round_robin_host_unavailable_for_booking": "O anfitrião do Round Robin não está disponível para agendamento.",
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

PT-PT consistency: prefer “reserva” over “agendamento”.

Use domain term “reserva” consistently; suggested wording:

-  "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.",
📝 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": "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.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/pt/common.json around line 123, the Portuguese
translation uses “agendamento” but the project prefers the domain term
“reserva”; update the value to use “reserva” for PT-PT consistency (e.g.,
replace the string with the equivalent using “reserva”), keeping punctuation and
capitalization identical to surrounding entries.

@@ -349,6 +349,7 @@
"available_apps_lower_case": "Aplicações disponíveis",
"available_apps_desc": "Veja aplicativos populares abaixo e explore mais em nossa <0>App Store</0>",
"fixed_host_helper": "Adicione qualquer pessoa que precise participar do evento. <0>Saiba mais</0>",
"round_robin_groups_helper": "As pessoas em um grupo se revezam, uma pessoa de cada grupo aparecerá no evento.",
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

PT-PT phrasing for round-robin groups helper.

Avoid Brazilianisms (“em um”, “revezam”); suggested 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.",
📝 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": "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.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/pt/common.json around line 352, the current
PT-BR phrasing "As pessoas em um grupo se revezam, uma pessoa de cada grupo
aparecerá no evento." should be adapted to PT-PT; replace the value with a PT-PT
phrasing that avoids Brazilianisms — e.g. "As pessoas num grupo revezam‑se; uma
pessoa de cada grupo aparecerá no evento." — ensuring punctuation and
hyphenation follow project i18n conventions.

Comment on lines +3315 to 3334
"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": "Просмотр ролей",
"pbac_desc_update_roles": "Обновление ролей",
"pbac_desc_delete_roles": "Удаление ролей",
"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_create_event_types": "Создание типов событий",
"pbac_desc_view_event_types": "Просмотр типов событий",
"pbac_desc_update_event_types": "Обновление типов событий",
"pbac_desc_delete_event_types": "Удаление типов событий",
"pbac_desc_manage_event_types": "Все действия с типами событий",
"pbac_desc_manage_event_types": "Все действия с типами событий в командах организации",
"pbac_desc_create_teams": "Создание команд",
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 wording: adjust organization vs organization‑teams

Per scope updates:

  • manage_roles → organization scope
  • manage_bookings → organization scope
  • manage_event_types → organization teams (current text OK)

Apply this diff:

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

Also applies to: 3356-3357

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json around lines 3315-3334 (and
also at 3356-3357), update the PBAC scope Russian wording: change the value for
pbac_desc_manage_roles from "Все действия с ролями в командах организации" to
wording that reflects organization scope (e.g., "Все действия с ролями в
организации"), and change the value for pbac_desc_manage_bookings (at the other
mentioned lines) from a teams-scoped phrase to an organization-scoped phrase
(e.g., replace "в командах организации" with "в организации"); keep
pbac_desc_manage_event_types unchanged. Ensure both keys are updated
consistently where they appear.

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.

@@ -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

Repo-wide key rename and additions: verify consistency across locales

Given the cross-locale surface of:

  • round_robin_host_unavailable_for_booking (rename)
  • failed_bookings (new)
  • webhook_* (new set)

Run a single consistency check script to catch regressions.

Also applies to: 3445-3473, 3416-3417


🏁 Script executed:

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

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

echo
echo "2) Check that old RR key is gone and new one exists everywhere"
echo "Old key occurrences:"
rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base_dir" || true
echo
missing_rr=0
while read -r f; do
  if ! rg -q --fixed-strings '"round_robin_host_unavailable_for_booking"' "$f"; then
    echo "Missing round_robin_host_unavailable_for_booking in: $f"
    missing_rr=1
  fi
done < <(fd -H --glob 'common.json' "$base_dir")
[ $missing_rr -eq 0 ] && echo "✔ RR renamed key present in all locales"

echo
echo "3) Ensure 'failed_bookings' exists in every locale"
missing_fb=0
while read -r f; do
  if ! rg -q --fixed-strings '"failed_bookings"' "$f"; then
    echo "Missing failed_bookings in: $f"
    missing_fb=1
  fi
done < <(fd -H --glob 'common.json' "$base_dir")
[ $missing_fb -eq 0 ] && echo "✔ 'failed_bookings' present in all locales"

echo
echo "4) Ensure webhook_* keys (as defined in DA) exist across locales"
src="apps/web/public/static/locales/da/common.json"
mapfile -t webhook_keys < <(jq -r 'keys[]' "$src" | grep '^webhook_')
missing_wh=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_wh=true
    fi
  done
done < <(fd -H --glob 'common.json' "$base_dir")
[ "$missing_wh" = false ] && echo "✔ All webhook_* keys are present across all locales"

Length of output: 39014


🏁 Script executed:

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

echo "1) Validate JSON in all common.json files"
fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  echo "$f"
  jq -e . "$f"
done

echo
echo "2) Ensure old `round_robin_hosts_unavailable_for_booking` is gone"
rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base_dir" \
  && echo "  ✗ Found old key usages!" || echo "  ✓ No occurrences of old key"

echo
echo "3) Verify new `round_robin_host_unavailable_for_booking` exists everywhere"
missing=0
fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  if ! jq -e 'has("round_robin_host_unavailable_for_booking")' "$f" >/dev/null; then
    echo "  ✗ Missing RR key in $f"
    missing=1
  fi
done
[ $missing -eq 0 ] && echo "  ✓ New RR key present in all locales"

echo
echo "4) Verify `failed_bookings` exists everywhere"
missing=0
fd -H --glob 'common.json' "$base_dir" | while read -r f; 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"

echo
echo "5) Verify all DA `webhook_*` keys exist in other locales"
template="$base_dir/da/common.json"
mapfile -t webhook_keys < <(jq -r 'keys[] | select(startswith("webhook_"))' "$template")
missing=0
fd -H --glob 'common.json' "$base_dir" | while read -r f; do
  locale=$(basename "$(dirname "$f")")
  for key in "${webhook_keys[@]}"; do
    if ! jq -e --arg k "$key" 'has($k)' "$f" >/dev/null; then
      echo "  ✗ Missing $key in ($locale): $f"
      missing=1
    fi
  done
done
[ $missing -eq 0 ] && echo "  ✓ All webhook_* keys present in all locales"

Length of output: 264211


🏁 Script executed:

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

echo "2) Old key occurrences:"
rg -n --fixed-strings 'round_robin_hosts_unavailable_for_booking' "$base" || echo "  ✓ None"

echo
echo "3) New round_robin_host_unavailable_for_booking presence:"
miss_rr=0
fd -H --glob 'common.json' "$base" | while read -r f; do
  if ! jq -e 'has("round_robin_host_unavailable_for_booking")' "$f" >/dev/null; then
    echo "  ✗ Missing in: $f"
    miss_rr=1
  fi
done
(( miss_rr == 0 )) && echo "  ✓ Present everywhere"

echo
echo "4) failed_bookings presence:"
miss_fb=0
fd -H --glob 'common.json' "$base" | while read -r f; do
  if ! jq -e 'has("failed_bookings")' "$f" >/dev/null; then
    echo "  ✗ Missing in: $f"
    miss_fb=1
  fi
done
(( miss_fb == 0 )) && echo "  ✓ Present everywhere"

echo
echo "5) webhook_* keys consistency:"
wf=("$base/da/common.json")
mapfile -t keys < <(jq -r 'keys[]|select(startswith("webhook_"))' "${wf[0]}")
miss_wh=0
fd -H --glob 'common.json' "$base" | while read -r f; do
  locale=$(basename "$(dirname "$f")")
  for k in "${keys[@]}"; do
    if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null; then
      echo "$k missing in $locale ($f)"
      miss_wh=1
    fi
  done
done
(( miss_wh == 0 )) && echo "  ✓ All webhook_* keys present across all locales"

Length of output: 12268


Add missing localization keys to affected locales

Our consistency check shows the following issues across apps/web/public/static/locales:

  • Old key round_robin_hosts_unavailable_for_booking has been fully removed.

  • New key round_robin_host_unavailable_for_booking is present everywhere except:
    • 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/ta/common.json
    • apps/web/public/static/locales/th/common.json

  • Key failed_bookings is missing in:
    • 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 also verify that all webhook_* keys defined in da/common.json are present in every other locale.

Next steps:

  1. Add the missing round_robin_host_unavailable_for_booking and failed_bookings entries in the listed common.json files.
  2. Rerun your locale‐consistency script (ensure variables aren’t reset in subshells) to confirm no further omissions.
  3. Verify webhook keys across all locales.
🤖 Prompt for AI Agents
In apps/web/public/static/locales/da/common.json around line 123: the repository
introduced a new key round_robin_host_unavailable_for_booking (replacing the old
round_robin_hosts_unavailable_for_booking) and also requires the failed_bookings
key to exist across locales; add the missing keys
round_robin_host_unavailable_for_booking and failed_bookings with appropriate
translated strings to each of the listed locale files
(apps/web/public/static/locales/hr/common.json, id/common.json, iw/common.json,
lv/common.json, ta/common.json, th/common.json and additionally add
failed_bookings to sk/common.json), then run the locale-consistency script again
(ensuring environment variables are preserved and not reset in subshells) and
verify that all webhook_* keys present in da/common.json are also present in
every other locale, adding any missing webhook_* entries as needed.

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",

@@ -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

Cross-locale verification for newly added/renamed keys

Before merge, ensure all locales define these keys to prevent English fallbacks.

Also applies to: 875-878, 1844-1845, 3292-3292, 3315-3319, 3325-3329, 3333-3333, 3341-3341, 3356-3356, 3366-3366, 3383-3383, 3416-3416, 3445-3473


🏁 Script executed:

#!/bin/bash
set -euo pipefail

keys=(
  # round-robin rename
  "round_robin_host_unavailable_for_booking"
  # OAuth admin
  "oauth_clients" "oauth_clients_description" "create_oauth_client" "create_oauth_client_description"
  # admin-only notices
  "only_admin_can_manage_directory_sync" "only_admin_can_manage_oauth_clients"
  # PBAC workflow + attributes
  "pbac_resource_workflow" "pbac_desc_create_workflows" "pbac_desc_view_workflows" "pbac_desc_update_workflows" "pbac_desc_delete_workflows" "pbac_desc_manage_workflows"
  "pbac_resource_attributes" "pbac_desc_view_organization_attributes" "pbac_desc_update_organization_attributes" "pbac_desc_delete_organization_attributes" "pbac_desc_create_organization_attributes"
  # PBAC manage descriptors
  "pbac_desc_manage_roles" "pbac_desc_manage_event_types" "pbac_desc_manage_teams" "pbac_desc_manage_bookings"
  # RR groups/load balancing text
  "rr_load_balancing_disabled_with_groups" "add_group"
  # analytics/status
  "failed_bookings" "stats" "booking_status"
  # webhook metadata
  "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"
)

locales=$(fd -t d . apps/web/public/static/locales -d 1 | wc -l)
missing=0
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
    missing=$((missing+1))
    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
    echo
  fi
done

if [ $missing -eq 0 ]; then
  echo "All keys present across locales."
else
  echo "$missing key(s) missing in some locales."
fi

Length of output: 272247


Ensure all new locale keys have translations in every locale

Our verification shows each of these keys is defined in 37/44 locales and missing in the following seven:

• 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

Keys to add in those files:

• 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
• pbac_resource_workflow
• pbac_desc_create_workflows
• pbac_desc_view_workflows
• pbac_desc_update_workflows
• pbac_desc_delete_workflows
• pbac_desc_manage_workflows
• 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
• stats
• booking_status
• 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

Please add the corresponding translations in the seven locales above to avoid unintended English fallbacks.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/es/common.json around lines 123–123 the new
locale key "round_robin_host_unavailable_for_booking" is present in Spanish but
the same set of keys is missing in seven locales; add all listed 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,
pbac_resource_workflow, pbac_desc_create_workflows, pbac_desc_view_workflows,
pbac_desc_update_workflows, pbac_desc_delete_workflows,
pbac_desc_manage_workflows, 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, stats,
booking_status, 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) into
each of these 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; ensure you add valid JSON entries
with appropriate localized translations (do not leave English fallbacks),
maintain existing ordering/format, include trailing commas correctly, and run
the i18n/locale validation script or JSON lint to verify no syntax errors.

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 +3444 to +3474
"webhook_trigger_event": "اسم حدث المشغل (مثل BOOKING_CREATED، BOOKING_CANCELLED)",
"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": "المنطقة الزمنية للمنظم (مثل '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": "رابط مكالمة الفيديو للاجتماع",
"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

Fix webhook mistranslations + standardize spelling to “الويبهوك” and singularization

  • Use “الويبهوك” (not spaced “ويب هوك”).
  • “created_at” should indicate creation time.
  • “type” should denote type/slug, not a link.
  • “title” should be “عنوان الحدث”.
  • Singularize “webhook_show_variable”.
-  "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_title": "اسم نوع الحدث",
+  "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": "المنطقة الزمنية للمنظم (مثل '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": "رابط مكالمة الفيديو للاجتماع",
-  "webhook_hide_variables": "إخفاء المتغيرات",
+  "webhook_hide_variables": "إخفاء المتغيرات",
-  "webhook_show_variable": "إظهار المتغيرات المتاحة",
+  "webhook_show_variable": "إظهار المتغير المتاح",
   "webhook_event_and_booking": "الفعالية والحجز",
   "webhook_people": "الأشخاص",
   "webhook_teams": "الفرق",
   "webhook_metadata": "البيانات الوصفية",

Optional follow-ups outside this hunk for consistency:

  • Replace remaining “ويب هوك” with “الويبهوك” (e.g., keys near lines ~230–241).

Run to surface remaining inconsistencies:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "— Check Organization term —"
rg -n '"[^"]*":\s*"[^"]*(المؤسسة|المنظمة)[^"]*"' apps/web/public/static/locales/ar/common.json | head -n 80

echo -e "\n— Check Webhook spelling variants —"
rg -n 'ويب هوك|ويبهوك|الويبهوك' apps/web/public/static/locales/ar/common.json | head -n 80

echo -e "\n— Check round-robin wording —"
rg -n 'round robin|Round Robin|الترتيب الدوري|التناوب|دوار' apps/web/public/static/locales/ar/common.json | head -n 80

Length of output: 13568


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "webhook_title EN:"
rg -n '"webhook_title":' -A1 apps/web/public/static/locales/en/common.json

echo -e "\nwebhook_type EN:"
rg -n '"webhook_type":' -A1 apps/web/public/static/locales/en/common.json

echo -e "\nwebhook_created_at EN:"
rg -n '"webhook_created_at":' -A1 apps/web/public/static/locales/en/common.json

echo -e "\nwebhook_show_variable EN:"
rg -n '"webhook_show_variable":' -A1 apps/web/public/static/locales/en/common.json

echo -e "\nwebhook_hide_variables EN:"
rg -n '"webhook_hide_variables":' -A1 apps/web/public/static/locales/en/common.json

Length of output: 1241


Standardize “الويبهوك” spelling and correct webhook translations

– For singular webhook keys, update as follows to match the English source and use “الويبهوك” (singular) / “الويبهوكس” (plural):
webhook_trigger_event: keep “اسم حدث المُشغِّل (مثل BOOKING_CREATED، BOOKING_CANCELLED)”
webhook_created_at: change to “وقت إنشاء الويبهوك”
webhook_type: change to “معرّف نوع الحدث” (reflects the slug, not a link)
webhook_title: retain “اسم نوع الحدث” (matches “The event type name”)
webhook_hide_variables: keep “إخفاء المتغيرات”
webhook_show_variable: keep “إظهار المتغيرات المتاحة” (English uses plural “variables”)

– Globally replace all occurrences of:
• “ويب هوك” → “الويبهوك”
• “الويبهوك”/“ويبهوك” → “الويبهوك”
• “ويب هوكس”/“الويبهوكس” → “الويبهوكس”

Files/lines to update:
• apps/web/public/static/locales/ar/common.json – keys around lines 230–252, 534–556, 692, 911, 1941–1942, 2148–2151, 2272–2273, 3190–3192, plus the snippet at 3444–3474.
• Any other instance of webhook-related labels in the same file.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ar/common.json (around lines 230–252, 534–556,
692, 911, 1941–1942, 2148–2151, 2272–2273, 3190–3192, and 3444–3474) standardize
and correct webhook translations by replacing all variants of “ويب هوك”,
“ويبهوك”, “الويبهوك”, “ويب هوكس”, “الويبهوكس” with the singular “الويبهوك” and
plural “الويبهوكس” as appropriate; specifically update webhook_created_at to
"وقت إنشاء الويبهوك", webhook_type to "معرّف نوع الحدث" (reflecting a
slug/identifier), keep webhook_trigger_event as "اسم حدث المُشغِّل (مثل
BOOKING_CREATED، BOOKING_CANCELLED)", keep webhook_title as "اسم نوع الحدث",
keep webhook_hide_variables as "إخفاء المتغيرات", and set webhook_show_variable
to "إظهار المتغيرات المتاحة"; scan the entire file for any other webhook-related
keys and apply the same normalized spelling and the two explicit key changes.

@@ -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

Key rename: ensure code references updated; also unify “διοργανωτής/οικοδεσπότης” and “Round‑Robin” style

  • The key has been renamed to round_robin_host_unavailable_for_booking. Please update all usages and remove the old key to avoid dead references.
  • Consistency: elsewhere you use “διοργανωτής” and “Round‑Robin”. Recommend aligning this string.

Run this to find and update references:

Proposed copy tweak for consistency:

-  "round_robin_host_unavailable_for_booking": "Ο οικοδεσπότης Round Robin δεν είναι διαθέσιμος για κράτηση.",
+  "round_robin_host_unavailable_for_booking": "Ο διοργανωτής Round‑Robin δεν είναι διαθέσιμος για κράτηση."

🏁 Script executed:

#!/bin/bash
# Find old and new keys across the repo
rg -n $'round_robin_hosts_unavailable_for_booking|round_robin_host_unavailable_for_booking' -g '!node_modules'

# Optional: check all locale files carry the new key
rg -n $'^\\s*"round_robin_host_unavailable_for_booking"\\s*:' apps/web/public/static/locales

Length of output: 11398


Key rename verification – all references updated, no broken keys detected

  • The old round_robin_hosts_unavailable_for_booking key does not exist anywhere; only the singular round_robin_host_unavailable_for_booking appears (in packages/lib/errorCodes.ts, i18n.lock and every locale file).
  • No stale or missing references found after the rename.

Translation polish for Greek (apps/web/public/static/locales/el/common.json, line 123)
Please update for consistency with other “host” strings and hyphenation of “Round-Robin”:

-  "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/el/common.json around line 123, update the
Greek translation to match the project's host-string style and hyphenate
“Round-Robin”: replace the current value with a hyphenated form consistent with
other host strings, e.g. "Ο οικοδεσπότης Round-Robin δεν είναι διαθέσιμος για
κράτηση." so all locale files use the same wording and hyphenation.

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.

@@ -3343,6 +3363,7 @@
"use_booker_timezone_info": "Aplică programul de restricție selectat în fusul orar al rezervantului",
"load_balancing_warning": "Aceasta va dezactiva echilibrarea încărcării pentru toate tipurile de evenimente Round Robin",
"rr_load_balancing_disabled": "Echilibrarea încărcării este disponibilă doar atunci când baza de timp este setată la Timpul Creării Rezervării",
"rr_load_balancing_disabled_with_groups": "Distribuirea sarcinilor nu este disponibilă cu grupurile 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.

🛠️ Refactor suggestion

Use the same term as elsewhere: “Echilibrarea încărcării”

Stay consistent with 2984 “Echilibrarea încărcării”.

-  "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",
📝 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
"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",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/ro/common.json around line 3366, the
translation uses "Distribuirea sarcinilor" but should match the existing term
"Echilibrarea încărcării" used at line ~2984; update the value for
"rr_load_balancing_disabled_with_groups" to use "Echilibrarea încărcării" so it
reads "Echilibrarea încărcării nu este disponibilă cu grupurile Round Robin" and
keep punctuation/spacing consistent with the file.

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 +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 terminology looks good; fix nearby residuals

These four entries are consistent. There’s still a nearby residual English “OAuth client” (e.g., oauth_client_deletion_message) that should be unified to “Ứng dụng OAuth”.

Run to find remaining occurrences to normalize:

Suggested nearby fix (outside this hunk):

  • "oauth_client_deletion_message": "Đã xóa thành công Ứng dụng OAuth"

🏁 Script executed:

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

Length of output: 104


The initial grep didn’t catch any value occurrences. Let’s instead scan for any keys or values containing oauth_client to confirm whether oauth_client_deletion_message (or similar) still needs updating:


🏁 Script executed:

#!/bin/bash
rg -n "oauth_client" apps/web/public/static/locales/vi/common.json

Length of output: 885


Unify all “OAuth client” translations to “Ứng dụng OAuth”

The following keys still reference “OAuth client” in English. Please update them in apps/web/public/static/locales/vi/common.json:

• oauth_client_deletion_message
• updating_oauth_client_error
• creating_oauth_client_error
• oauth_client_updated_successfully
• oauth_client_not_found

Suggested diff:

@@ Line 879
-  "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",

@@ Line 2762
-  "updating_oauth_client_error": "Đã xảy ra lỗi khi cập nhật OAuth client, vui lòng thử lại sau",
+  "updating_oauth_client_error": "Đã xảy ra lỗi khi cập nhật Ứng dụng OAuth, vui lòng thử lại sau",

@@ Line 2763
-  "creating_oauth_client_error": "Đã xảy ra lỗi khi tạo OAuth client, vui lòng thử lại sau",
+  "creating_oauth_client_error": "Đã xảy ra lỗi khi tạo Ứng dụng OAuth, vui lòng thử lại sau",

@@ Line 3187
-  "oauth_client_updated_successfully": "Đã cập nhật OAuth client thành công",
+  "oauth_client_updated_successfully": "Đã 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.",
+  "oauth_client_not_found": "Không tìm thấy Ứng dụng OAuth.",
📝 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": "Ứ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",
--- a/apps/web/public/static/locales/vi/common.json
+++ b/apps/web/public/static/locales/vi/common.json
@@ Line 879
- "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",
@@ Line 2762
- "updating_oauth_client_error": "Đã xảy ra lỗi khi cập nhật OAuth client, vui lòng thử lại sau",
+ "updating_oauth_client_error": "Đã xảy ra lỗi khi cập nhật Ứng dụng OAuth, vui lòng thử lại sau",
@@ Line 2763
- "creating_oauth_client_error": "Đã xảy ra lỗi khi tạo OAuth client, vui lòng thử lại sau",
+ "creating_oauth_client_error": "Đã xảy ra lỗi khi tạo Ứng dụng OAuth, vui lòng thử lại sau",
@@ Line 3187
- "oauth_client_updated_successfully": "Đã cập nhật OAuth client thành công",
+ "oauth_client_updated_successfully": "Đã 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.",
+ "oauth_client_not_found": "Không tìm thấy Ứng dụng OAuth.",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/vi/common.json around lines 875 to 878,
several keys still use the English phrase "OAuth client"; update the
translations for oauth_client_deletion_message, updating_oauth_client_error,
creating_oauth_client_error, oauth_client_updated_successfully, and
oauth_client_not_found to use the unified Vietnamese term "Ứng dụng OAuth"
(e.g., replace any "OAuth client" occurrences with "Ứng dụng OAuth" and adjust
surrounding grammar as needed), then save the file and run the i18n/lint checks
to ensure formatting and JSON validity.

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

Comment on lines +3444 to +3474
"webhook_trigger_event": "Tetikleyici hadisənin adı (məs., BOOKING_CREATED, BOOKING_CANCELLED)",
"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",
"booking_status": "Rezervasiya statusu",
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: two small alignment fixes

  • Prefer “Tətikləyici” (Azeri spelling) over “Tetikleyici”.
  • Align “webhook_show_variable” with shorter phrasing used elsewhere (“Dəyişənləri göstər”).
-  "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",

Additionally, consider scanning other locales to ensure this complete set of webhook_* keys exists to avoid fallback-to-English in UI.


🏁 Script executed:

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

root="apps/web/public/static/locales"
# Minimal required webhook keys set (extend if needed)
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"
)

mapfile -t files < <(fd -t f -a 'common.json' "$root")

echo "→ Checking locales for missing webhook_* keys:"
missing_any=0
for f in "${files[@]}"; do
  miss=()
  for k in "${keys[@]}"; do
    if ! grep -q "\"$k\"" "$f"; then
      miss+=("$k")
    fi
  done
  if ((${#miss[@]})); then
    missing_any=1
    locale=$(basename "$(dirname "$f")")
    echo "- $locale missing: ${miss[*]}"
  fi
done
if ((missing_any==0)); then
  echo "All locales contain the required webhook_* keys."
fi

Length of output: 912


🏁 Script executed:

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

root="apps/web/public/static/locales"
# Minimal required webhook keys set
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 "→ Checking locales for missing webhook_* keys:"
missing_any=0

# Find all common.json files under each locale
while IFS= read -r f; do
  locale=$(basename "$(dirname "$f")")
  miss=()
  for k in "${keys[@]}"; do
    if ! grep -q "\"$k\"" "$f"; then
      miss+=("$k")
    fi
  done
  if [ "${#miss[@]}" -ne 0 ]; then
    missing_any=1
    echo "- $locale missing: ${miss[*]}"
  fi
done < <(find "$root" -type f -name 'common.json')

if [ "$missing_any" -eq 0 ]; then
  echo "All locales contain the required webhook_* keys."
fi

Length of output: 1020


🏁 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"
)

echo "→ Checking locales for missing webhook_* keys:"
missing_any=0

# Loop over each common.json without process substitution
for f in $(find "$root" -type f -name 'common.json'); do
  locale=$(basename "$(dirname "$f")")
  miss=()
  for k in "${keys[@]}"; do
    if ! grep -q "\"$k\"" "$f"; then
      miss+=("$k")
    fi
  done
  if [ "${#miss[@]}" -gt 0 ]; then
    missing_any=1
    echo "- $locale missing: ${miss[*]}"
  fi
done

if [ "$missing_any" -eq 0 ]; then
  echo "All locales contain the required webhook_* keys."
fi

Length of output: 155719


Align Azeri webhook translations and populate missing keys across locales

  • In apps/web/public/static/locales/az/common.json:
    - "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",
  • Several other locales lack the entire set of webhook_* keys—please add localized strings to avoid English fallbacks:
    • hr
    • id
    • iw
    • lv
    • sk
    • ta
    • th
📝 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": "Tetikleyici hadisənin adı (məs., BOOKING_CREATED, BOOKING_CANCELLED)",
"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",
"booking_status": "Rezervasiya statusu",
"webhook_trigger_event": "Tətikləyici hadisənin adı (məs., BOOKING_CREATED, BOOKING_CANCELLED)",
"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": "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",
"booking_status": "Rezervasiya statusu",
🤖 Prompt for AI Agents
In apps/web/public/static/locales/az/common.json around lines 3444 to 3474, the
webhook_* keys are present but need to be aligned/confirmed and the same full
set of webhook_* keys must be added to the following locale files to avoid
English fallbacks: hr, id, iw, lv, sk, ta, th (i.e.,
apps/web/public/static/locales/{hr,id,iw,lv,sk,ta,th}/common.json). For each
target locale, copy the complete webhook_* key set from az/common.json and
replace values with proper localized strings (or a translator-provided
equivalent), ensure valid JSON syntax (no trailing commas), preserve key order,
and add any missing related keys like "stats" and "booking_status" so all
locales contain the full set.

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

OAuth wording looks good; consider global casing consistency.

Text is fine. Elsewhere there are keys using “oAuth” (lowercase o) — prefer “OAuth” consistently across strings for professionalism.

To spot inconsistencies:


🏁 Script executed:

#!/bin/bash
# Find inconsistent OAuth casing in locale files
rg -n --glob 'apps/web/public/static/locales/**/*.json' '\boAuth\b|\bOAuth\b'

Length of output: 81967


Unify ‘oauth’ key casing across locale files
The new entries at lines 875–878 in de/common.json are perfect. However, I spotted several JSON keys using mixed-case oAuth elsewhere. To keep key naming consistent and avoid confusion, please:

  • In all apps/web/public/static/locales/*/common.json files, rename keys prefixed with oAuth to lowercase oauth:
    • admin_oAuth_description → admin_oauth_description
    • 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
    • (and any other keys starting with oAuth)
  • Update all corresponding code references (e.g. i18n.t('admin_oauth_description'), etc.).

This will ensure a consistent, professional naming scheme across our translations.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/de/common.json around lines 875–878 and across
all apps/web/public/static/locales/*/common.json files, keys starting with
mixed-case "oAuth" must be renamed to lowercase "oauth" (e.g.,
admin_oAuth_description → admin_oauth_description, 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, and any other keys beginning with "oAuth"); then update
every code reference to these keys (search the repo for occurrences of
i18n.t('...') or use of the keys in templates/components/services) to use the
new lowercase keys, run a quick locale JSON validation and unit/translation
tests, and commit the renames and code changes together to keep translations and
usage in sync.

@@ -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.

Comment on lines +3315 to 3320
"pbac_resource_attributes": "Attribútumok",
"pbac_desc_view_organization_attributes": "Szervezeti attribútumok megtekintése",
"pbac_desc_update_organization_attributes": "Szervezeti attribútumok frissítése",
"pbac_desc_delete_organization_attributes": "Szervezeti attribútumok törlése",
"pbac_desc_create_organization_attributes": "Szervezeti attribútumok létrehozása",
"pbac_desc_view_roles": "Szerepkörök megtekintése",
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 descriptions: refine “szervezeti csapatokon belül” phrasing

“Szervezeti csapatokon belül” is awkward. Prefer “a szervezet csapatain belül” for natural Hungarian. Keep consistent across entries.

-  "pbac_desc_manage_roles": "Minden szerepkörrel kapcsolatos művelet a szervezeti csapatokon belül",
+  "pbac_desc_manage_roles": "Minden szerepkörrel kapcsolatos művelet a szervezet csapatain belül",

-  "pbac_desc_create_workflows": "Új munkafolyamatok létrehozása és beállítása",
-  "pbac_desc_view_workflows": "Meglévő munkafolyamatok és konfigurációik megtekintése",
-  "pbac_desc_update_workflows": "Munkafolyamat-beállítások szerkesztése és módosítása",
-  "pbac_desc_delete_workflows": "Munkafolyamatok eltávolítása a rendszerből",
-  "pbac_desc_manage_workflows": "Teljes kezelési hozzáférés minden munkafolyamathoz",
+  "pbac_desc_create_workflows": "Új munkafolyamatok létrehozása és beállítása",
+  "pbac_desc_view_workflows": "Meglévő munkafolyamatok és beállításaik megtekintése",
+  "pbac_desc_update_workflows": "Munkafolyamatok beállításainak szerkesztése és módosítása",
+  "pbac_desc_delete_workflows": "Munkafolyamatok eltávolítása a rendszerből",
+  "pbac_desc_manage_workflows": "Teljes kezelési hozzáférés minden munkafolyamathoz",

-  "pbac_desc_manage_event_types": "Minden eseménytípussal kapcsolatos művelet a szervezeti csapatokon belül",
+  "pbac_desc_manage_event_types": "Minden eseménytípussal kapcsolatos művelet a szervezet csapatain belül",

-  "pbac_desc_manage_teams": "Minden csapattal kapcsolatos művelet a szervezeti csapatokon belül",
+  "pbac_desc_manage_teams": "Minden csapattal kapcsolatos művelet a szervezet csapatain belül",

-  "pbac_desc_manage_bookings": "Minden foglalással kapcsolatos művelet a szervezeti csapatokon belül",
+  "pbac_desc_manage_bookings": "Minden foglalással kapcsolatos művelet a szervezet csapatain belül"

Also applies to: 3323-3329, 3333-3333, 3341-3341, 3356-3357

🤖 Prompt for AI Agents
In apps/web/public/static/locales/hu/common.json around lines 3315-3320 (and
also update occurrences at 3323-3329, 3333, 3341, and 3356-3357), the Hungarian
phrase "szervezeti csapatokon belül" is awkward; replace it with the more
natural "a szervezet csapatain belül" in all PBAC description entries to ensure
consistent, idiomatic phrasing across the file.

@@ -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.

@@ -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",
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 Round Robin phrasing across file

String looks fine. As a follow-up, standardize casing to “Round Robin” everywhere (some places use “round robin”/“Round‑Robin”) to avoid UI inconsistency.

Quick scan:


🏁 Script executed:

#!/bin/bash
rg -n 'Round[ -]?Robin|round[ -]?robin' apps/web/public/static/locales/ru/common.json

Length of output: 2712


Standardize “Round Robin” Casing in ru/common.json

A scan of apps/web/public/static/locales/ru/common.json reveals mixed usages of “Round Robin”:

  • Lowercase “round robin”: lines 73, 2701, 2779, 2783, 2882–2885, 2969, 3259
  • Hyphenated “round-robin”/“Round-Robin”: lines 2451, 2829
  • Proper “Round Robin”: lines 123, 2032, 2963, 2965, 3101, 3118, 3263–3265, 3364, 3366

Please update all occurrences to use “Round Robin” (capital R, space) for consistent UI phrasing.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/ru/common.json around lines 3366 (and other
occurrences throughout the file), several variants of “Round Robin” are used;
update all instances to the standardized form "Round Robin" (capital R, space,
no hyphen) across the file — replace "round robin", "round-robin", "Round-Robin"
and any other variants with "Round Robin", preserving surrounding JSON
punctuation and translations, and run a quick search/replace over the file to
ensure no leftover variants remain.

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.

Comment on lines +3445 to 3475
"webhook_created_at": "Tidpunkten för webhooken",
"webhook_type": "Händelsetypens slug",
"webhook_title": "Händelsetypens namn",
"webhook_start_time": "Händelsens starttid",
"webhook_end_time": "Händelsens sluttid",
"webhook_description": "Händelsens beskrivning enligt inställningarna för händelsetypen",
"webhook_location": "Händelsens plats",
"webhook_uid": "Bokningens UID",
"webhook_reschedule_uid": "UID för ombokning",
"webhook_cancellation_reason": "Anledning till avbokning",
"webhook_rejection_reason": "Anledning till avslag",
"webhook_organizer_name": "Arrangörens namn",
"webhook_organizer_email": "Arrangörens e-postadress",
"webhook_organizer_timezone": "Arrangörens tidszon (t.ex. 'America/New_York', 'Asia/Kolkata')",
"webhook_organizer_locale": "Arrangörens språkinställning (t.ex. 'en', 'fr')",
"webhook_attendee_name": "Namn på den första deltagaren",
"webhook_attendee_email": "E-postadress till den första deltagaren",
"webhook_attendee_timezone": "Tidszon för den första deltagaren",
"webhook_attendee_locale": "Språkinställning för den första deltagaren",
"webhook_team_name": "Namnet på det bokade teamet",
"webhook_team_members": "Medlemmar i det bokade teamet",
"webhook_video_call_url": "Videomötes-URL för mötet",
"webhook_hide_variables": "Dölj variabler",
"webhook_show_variable": "Visa tillgängliga variabler",
"webhook_event_and_booking": "Händelse och bokning",
"webhook_people": "Personer",
"webhook_teams": "Team",
"webhook_metadata": "Metadata",
"stats": "Statistik",
"booking_status": "Bokningsstatus",
"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.

💡 Verification agent

🧩 Analysis chain

Webhook terminology consistency

New webhook descriptions look fine, but the file mixes “Webbhook” and “Webhook/webhook” elsewhere. Pick one term and standardize across the file for consistency (prefer “Webhook” or keep English “webhook” consistently).

Search current inconsistencies:


🏁 Script executed:

#!/bin/bash
rg -n $'"Webbhook|Webhook|webhook"' apps/web/public/static/locales/sv/common.json

Length of output: 1267


Standardize “Webhook” spelling and casing in sv/common.json
The file currently mixes “Webbhook” (e.g. lines 235–236, 553) with “Webhook”/“webhook” elsewhere. Please pick one form—such as English “Webhook”—and apply it consistently:

• apps/web/public/static/locales/sv/common.json
– Line 232: Redigera Webhook
– Line 235: “webhook_enabled”: currently “Webbhook aktiverad”
– Line 236: “webhook_disabled”: currently “Webbhook inaktiverad”
– Line 553: “webhooks”: currently “Webbhookar”
– …and any other “Webbhook” occurrences

Update those translations to your chosen form (e.g. “Aktiverad webhook”, “Webhookar”, etc.) so the term is uniform throughout.

🤖 Prompt for AI Agents
In apps/web/public/static/locales/sv/common.json around lines 3445-3475 and
elsewhere (notably lines ~232, 235, 236, 553), the Swedish file mixes "Webbhook"
and "Webhook"; standardize to the chosen form "Webhook" everywhere: find all
occurrences of "Webbhook" and replace with "Webhook", and update compound
phrases to correct Swedish word order (e.g. "Webbhook aktiverad" -> "Aktiverad
webhook", "Webbhook inaktiverad" -> "Inaktiverad webhook", "Webbhookar" ->
"Webhookar" or "Webhooks" per project convention) ensuring consistent casing and
grammar across the file.

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