🔧 chore(i18n): sync translations from Crowdin#545
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughAdds localization coverage for global update modes, cross-device appearance sync, container update previews and statuses, notification templates, list-view cards, dashboard resizing, table sorting, column picking, and legacy API-path banners across supported locales. Possibly related PRs
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 20
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@ui/src/locales/ar/configView.json`:
- Around line 9-26: Translate the newly added English UI strings into their
target locales while preserving the existing JSON keys and interpolation
placeholders. Update the update-mode entries in
ui/src/locales/ar/configView.json (lines 9-26) and
ui/src/locales/de/configView.json (lines 9-26); dry-run copy in
ui/src/locales/ar/containerComponents.json (lines 10-12) and
ui/src/locales/de/containerComponents.json (lines 10-12); resize-widget labels
in ui/src/locales/ar/dashboardView.json (line 6) and
ui/src/locales/de/dashboardView.json (line 6); audit action labels in
ui/src/locales/ar/listViews.json (lines 57-61) and
ui/src/locales/fr/listViews.json (lines 57-61); and column-picker labels in
ui/src/locales/ar/sharedComponents.json (lines 3-8) and
ui/src/locales/fr/sharedComponents.json (lines 3-8).
In `@ui/src/locales/de/listViews.json`:
- Around line 57-61: Translate every newly added English locale value in the
specified ranges: update audit, notification, security, and dry-run strings in
ui/src/locales/de/listViews.json:57-61; sorting strings in
ui/src/locales/de/sharedComponents.json:3-8 and
ui/src/locales/es/sharedComponents.json:3-8; error and appearance-sync additions
in ui/src/locales/es/configView.json:9-26 and
ui/src/locales/fr/configView.json:9-26; update-policy and status strings in
ui/src/locales/es/containerComponents.json:10-12 and
ui/src/locales/fr/containerComponents.json:10-12; resize labels in
ui/src/locales/es/dashboardView.json:6 and
ui/src/locales/fr/dashboardView.json:6; and the remaining list-view strings in
ui/src/locales/es/listViews.json:57-61. Preserve the existing locale keys and
JSON structure while replacing only the untranslated values.
In `@ui/src/locales/it/configView.json`:
- Around line 10-23: Translate the newly added English values in the Italian
catalog, including the update-mode strings under "title", "description", and
"options", plus the sync and error messages at the referenced entries. Preserve
all existing keys and JSON structure so ConfigGeneralTab.vue and ConfigView.vue
continue resolving the same configuration strings.
In `@ui/src/locales/it/containerComponents.json`:
- Around line 10-12: Translate all newly added container workflow strings in the
Italian catalog, including the referenced workflow, status, insight,
grouped-view, policy-toast, previewOnly, dryRunUpdateTooltip, and
dryRunCondition entries. Replace remaining English values with accurate Italian
translations while preserving every key, placeholder such as {trigger}, and
existing catalog structure.
In `@ui/src/locales/it/dashboardView.json`:
- Line 6: Update the resizeWidget entry in the Italian dashboard locale catalog
from English to the Italian wording used by the dashboard resize control,
preserving the existing key and JSON structure.
In `@ui/src/locales/it/listViews.json`:
- Line 57: Translate the newly added list-view entries in the Italian catalog,
including the audit, notification, security, scanner, and dry-run values
identified by the referenced ranges. Replace each remaining English string with
accurate Italian while preserving the existing JSON keys and formatting.
In `@ui/src/locales/it/sharedComponents.json`:
- Around line 3-8: Translate the Italian catalog’s shared table-control values
in columnPicker, including toggleTooltip, heading, reset, and
hiddenBadgeTooltip, into Italian while preserving the {count} placeholder
exactly.
In `@ui/src/locales/ja/configView.json`:
- Around line 10-23: Translate the newly added English strings in the Japanese
catalog to Japanese, including the update-mode title, description, and option
labels/descriptions near the visible "title", "description", and "options"
entries, along with the sync and error messages at the referenced locations.
Preserve the existing JSON keys and structure.
In `@ui/src/locales/ja/containerComponents.json`:
- Around line 10-12: Translate the newly added container workflow strings in the
Japanese catalog—including the visible previewOnly, dryRunUpdateTooltip, and
dryRunCondition entries and the referenced workflow, status, insight,
grouped-view, and policy-toast ranges—into natural Japanese while preserving all
keys, placeholders, and message meaning.
In `@ui/src/locales/ja/dashboardView.json`:
- Line 6: Update the resizeWidget entry in the Japanese dashboard catalog from
English to the Japanese wording used by the dashboard resize control, preserving
the existing key and JSON structure.
In `@ui/src/locales/ja/listViews.json`:
- Line 57: Translate the newly added list-view values in the Japanese catalog,
including the audit, notification, security, scanner, and dry-run entries
identified by keys such as update-applied-dryrun and the additional listed
ranges. Replace each remaining English value with accurate Japanese while
preserving the existing JSON keys and structure.
In `@ui/src/locales/ko/containerComponents.json`:
- Around line 372-421: Translate all newly added source-language English catalog
values into their target languages while preserving every interpolation token.
Update Korean entries in ui/src/locales/ko/containerComponents.json#L372-L421,
`#L10-L12`, `#L30-L32`, `#L39`, `#L196-L197`, `#L349-L354`, and `#L523-L524`;
ui/src/locales/ko/configView.json#L9-L26, `#L93`, `#L103-L107`, and `#L146-L147`;
ui/src/locales/ko/dashboardView.json#L6; ui/src/locales/ko/listViews.json#L57,
`#L60-L61`, `#L108-L109`, `#L129-L150`, `#L195`, `#L244-L247`, and `#L354-L357`; and
ui/src/locales/ko/sharedComponents.json#L3-L8 and `#L31-L33`. Update Dutch entries
in ui/src/locales/nl/configView.json#L9-L26, `#L93`, `#L103-L107`, and `#L146-L147`,
and ui/src/locales/nl/containerComponents.json#L10-L12, `#L30-L32`, `#L39`,
`#L196-L197`, `#L349-L354`, `#L372-L421`, and `#L523-L524`. Update Japanese labels in
ui/src/locales/ja/sharedComponents.json#L3-L8 and `#L31-L33`, and Russian labels
in ui/src/locales/ru/sharedComponents.json#L3-L8 and `#L31-L33`.
In `@ui/src/locales/nl/dashboardView.json`:
- Line 6: Translate every newly added English value in the affected locale
catalogs while preserving all existing keys, JSON structure, and placeholders:
ui/src/locales/nl/dashboardView.json:6; ui/src/locales/nl/listViews.json:57-61,
107-109, 129-150, 195, 244-247, 354-357;
ui/src/locales/nl/sharedComponents.json:3-8, 31-33;
ui/src/locales/pl/configView.json:9-26, 93, 103-107, 145-147;
ui/src/locales/ru/configView.json:9-26, 93, 103-107, 145-147;
ui/src/locales/ru/containerComponents.json:10-12, 30-32, 39, 196-197, 349-354,
372-421, 523-524; ui/src/locales/ru/dashboardView.json:6; and
ui/src/locales/ru/listViews.json:57-61, 107-109, 129-150, 195, 244-247, 354-357.
In `@ui/src/locales/pl/appShell.json`:
- Line 160: Update the legacyApiPathTitle translation to use the verb-first
Polish word order and correct plural forms, placing {total} after “Wykryto” as
in “Wykryto {total} starszych ścieżek API”.
In `@ui/src/locales/pl/containerComponents.json`:
- Around line 10-12: Translate every newly added English value in the specified
Polish and Brazilian Portuguese locale catalogs into its target language,
covering all listed container, dashboard, list, shared-component, and
configuration entries. Preserve each interpolation placeholder, key, JSON
structure, and existing locale-specific formatting; update every affected site,
including the Brazilian Portuguese registry card labels at
ui/src/locales/pt-BR/listViews.json lines 283-286.
In `@ui/src/locales/ru/containerComponents.json`:
- Around line 372-421: The updateStatus translation object is nested under
groupedViews while UpdateStatusPanel.vue resolves
containerComponents.updateStatus.*. Move updateStatus to the top-level
containerComponents object, preserving all existing keys and translations so the
requested paths resolve correctly.
In `@ui/src/locales/tr/appShell.json`:
- Line 160: Update the legacyApiPathTitle translations in
ui/src/locales/tr/appShell.json:160-160 and
ui/src/locales/zh-TW/appShell.json:160-160 to describe requests detected for
removed or unversioned API paths rather than old API paths, while preserving the
{total} placeholder.
In `@ui/src/locales/tr/configView.json`:
- Around line 9-26: Complete the missing translations for all newly added
English values while preserving interpolation placeholders. Update
ui/src/locales/tr/configView.json (lines 10-23, 93, 104-106, 147),
ui/src/locales/tr/containerComponents.json (10-12, 30-32, 39, 196-197, 350-353,
373-380, 382-420, 523-524), ui/src/locales/tr/dashboardView.json (6),
ui/src/locales/zh-CN/configView.json (10-23, 93, 104-106, 147),
ui/src/locales/zh-CN/containerComponents.json (10-12, 30-32, 39, 196-197,
350-353, 373-380, 382-420, 523-524), ui/src/locales/zh-CN/dashboardView.json
(6), ui/src/locales/zh-CN/listViews.json (57, 60-61, 108-109, 129-150, 195,
244-247, 354-357), and ui/src/locales/zh-CN/sharedComponents.json (4-7, 31-33),
translating each affected catalog value into its target language without
changing keys or placeholders.
In `@ui/src/locales/tr/listViews.json`:
- Around line 57-61: Replace the English values with accurate target-language
translations while preserving all JSON keys and interpolation placeholders.
Update ui/src/locales/tr/listViews.json ranges 57-61, 107-109, 129-150, 194-195,
244-247, 354-357 and ui/src/locales/tr/sharedComponents.json ranges 3-8, 30-33;
ui/src/locales/uk/configView.json ranges 9-26, 93, 103-107, 145-147 and
ui/src/locales/uk/containerComponents.json ranges 10-12, 30-39, 196-197,
349-354, 372-421, 523-524; ui/src/locales/zh-TW/configView.json ranges 9-26, 93,
103-107, 145-147, ui/src/locales/zh-TW/containerComponents.json ranges 10-12,
30-39, 196-197, 349-354, 372-421, 523-524,
ui/src/locales/zh-TW/dashboardView.json range 6,
ui/src/locales/zh-TW/listViews.json ranges 57-61, 107-109, 129-150, 194-195,
244-247, 354-357, and ui/src/locales/zh-TW/sharedComponents.json ranges 3-8,
30-33. Translate the affected audit, update, sync, container, notification,
scanner, security, dashboard, column-picker, and sorting labels for Turkish,
Ukrainian, and Traditional Chinese respectively.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: fe73148e-23f4-4285-a905-56cf083b699a
📒 Files selected for processing (96)
ui/src/locales/ar/appShell.jsonui/src/locales/ar/configView.jsonui/src/locales/ar/containerComponents.jsonui/src/locales/ar/dashboardView.jsonui/src/locales/ar/listViews.jsonui/src/locales/ar/sharedComponents.jsonui/src/locales/de/appShell.jsonui/src/locales/de/configView.jsonui/src/locales/de/containerComponents.jsonui/src/locales/de/dashboardView.jsonui/src/locales/de/listViews.jsonui/src/locales/de/sharedComponents.jsonui/src/locales/es/appShell.jsonui/src/locales/es/configView.jsonui/src/locales/es/containerComponents.jsonui/src/locales/es/dashboardView.jsonui/src/locales/es/listViews.jsonui/src/locales/es/sharedComponents.jsonui/src/locales/fr/appShell.jsonui/src/locales/fr/configView.jsonui/src/locales/fr/containerComponents.jsonui/src/locales/fr/dashboardView.jsonui/src/locales/fr/listViews.jsonui/src/locales/fr/sharedComponents.jsonui/src/locales/it/appShell.jsonui/src/locales/it/configView.jsonui/src/locales/it/containerComponents.jsonui/src/locales/it/dashboardView.jsonui/src/locales/it/listViews.jsonui/src/locales/it/sharedComponents.jsonui/src/locales/ja/appShell.jsonui/src/locales/ja/configView.jsonui/src/locales/ja/containerComponents.jsonui/src/locales/ja/dashboardView.jsonui/src/locales/ja/listViews.jsonui/src/locales/ja/sharedComponents.jsonui/src/locales/ko/appShell.jsonui/src/locales/ko/configView.jsonui/src/locales/ko/containerComponents.jsonui/src/locales/ko/dashboardView.jsonui/src/locales/ko/listViews.jsonui/src/locales/ko/sharedComponents.jsonui/src/locales/nl/appShell.jsonui/src/locales/nl/configView.jsonui/src/locales/nl/containerComponents.jsonui/src/locales/nl/dashboardView.jsonui/src/locales/nl/listViews.jsonui/src/locales/nl/sharedComponents.jsonui/src/locales/pl/appShell.jsonui/src/locales/pl/configView.jsonui/src/locales/pl/containerComponents.jsonui/src/locales/pl/dashboardView.jsonui/src/locales/pl/listViews.jsonui/src/locales/pl/sharedComponents.jsonui/src/locales/pt-BR/appShell.jsonui/src/locales/pt-BR/configView.jsonui/src/locales/pt-BR/containerComponents.jsonui/src/locales/pt-BR/dashboardView.jsonui/src/locales/pt-BR/listViews.jsonui/src/locales/pt-BR/sharedComponents.jsonui/src/locales/ru/appShell.jsonui/src/locales/ru/configView.jsonui/src/locales/ru/containerComponents.jsonui/src/locales/ru/dashboardView.jsonui/src/locales/ru/listViews.jsonui/src/locales/ru/sharedComponents.jsonui/src/locales/tr/appShell.jsonui/src/locales/tr/configView.jsonui/src/locales/tr/containerComponents.jsonui/src/locales/tr/dashboardView.jsonui/src/locales/tr/listViews.jsonui/src/locales/tr/sharedComponents.jsonui/src/locales/uk/appShell.jsonui/src/locales/uk/configView.jsonui/src/locales/uk/containerComponents.jsonui/src/locales/uk/dashboardView.jsonui/src/locales/uk/listViews.jsonui/src/locales/uk/sharedComponents.jsonui/src/locales/vi/appShell.jsonui/src/locales/vi/configView.jsonui/src/locales/vi/containerComponents.jsonui/src/locales/vi/dashboardView.jsonui/src/locales/vi/listViews.jsonui/src/locales/vi/sharedComponents.jsonui/src/locales/zh-CN/appShell.jsonui/src/locales/zh-CN/configView.jsonui/src/locales/zh-CN/containerComponents.jsonui/src/locales/zh-CN/dashboardView.jsonui/src/locales/zh-CN/listViews.jsonui/src/locales/zh-CN/sharedComponents.jsonui/src/locales/zh-TW/appShell.jsonui/src/locales/zh-TW/configView.jsonui/src/locales/zh-TW/containerComponents.jsonui/src/locales/zh-TW/dashboardView.jsonui/src/locales/zh-TW/listViews.jsonui/src/locales/zh-TW/sharedComponents.json
5a6c346 to
3622888
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@ui/src/locales/es/dashboardView.json`:
- Line 118: Translate the remaining English catalog values: update “Registries”
in ui/src/locales/es/dashboardView.json (118-118) to Spanish; translate the
audit action labels, unhealthy-container rule, notification-bell/template-editor
text, “Clean,” scanner asset actions/failure text, and dry-run badge/tooltip in
ui/src/locales/zh-TW/listViews.json (57-61, 107-109, 129-150, 195-195, 245-247,
354-357); and translate the column-picker and sorting labels in
ui/src/locales/zh-TW/sharedComponents.json (3-8, 31-33) into Traditional
Chinese.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: f4357993-406e-47fc-b7d9-97e4b5baa252
📒 Files selected for processing (101)
ui/src/locales/ar/appShell.jsonui/src/locales/ar/configView.jsonui/src/locales/ar/containerComponents.jsonui/src/locales/ar/dashboardView.jsonui/src/locales/ar/listViews.jsonui/src/locales/ar/sharedComponents.jsonui/src/locales/de/appShell.jsonui/src/locales/de/configView.jsonui/src/locales/de/containerComponents.jsonui/src/locales/de/dashboardView.jsonui/src/locales/de/listViews.jsonui/src/locales/de/sharedComponents.jsonui/src/locales/es/agentsView.jsonui/src/locales/es/appShell.jsonui/src/locales/es/common.jsonui/src/locales/es/configView.jsonui/src/locales/es/containerComponents.jsonui/src/locales/es/containersView.jsonui/src/locales/es/dashboardView.jsonui/src/locales/es/listViews.jsonui/src/locales/es/notificationOutboxView.jsonui/src/locales/es/sharedComponents.jsonui/src/locales/fr/appShell.jsonui/src/locales/fr/configView.jsonui/src/locales/fr/containerComponents.jsonui/src/locales/fr/dashboardView.jsonui/src/locales/fr/listViews.jsonui/src/locales/fr/sharedComponents.jsonui/src/locales/it/appShell.jsonui/src/locales/it/configView.jsonui/src/locales/it/containerComponents.jsonui/src/locales/it/dashboardView.jsonui/src/locales/it/listViews.jsonui/src/locales/it/sharedComponents.jsonui/src/locales/ja/appShell.jsonui/src/locales/ja/configView.jsonui/src/locales/ja/containerComponents.jsonui/src/locales/ja/dashboardView.jsonui/src/locales/ja/listViews.jsonui/src/locales/ja/sharedComponents.jsonui/src/locales/ko/appShell.jsonui/src/locales/ko/configView.jsonui/src/locales/ko/containerComponents.jsonui/src/locales/ko/dashboardView.jsonui/src/locales/ko/listViews.jsonui/src/locales/ko/sharedComponents.jsonui/src/locales/nl/appShell.jsonui/src/locales/nl/configView.jsonui/src/locales/nl/containerComponents.jsonui/src/locales/nl/dashboardView.jsonui/src/locales/nl/listViews.jsonui/src/locales/nl/sharedComponents.jsonui/src/locales/pl/agentsView.jsonui/src/locales/pl/appShell.jsonui/src/locales/pl/configView.jsonui/src/locales/pl/containerComponents.jsonui/src/locales/pl/dashboardView.jsonui/src/locales/pl/listViews.jsonui/src/locales/pl/sharedComponents.jsonui/src/locales/pt-BR/appShell.jsonui/src/locales/pt-BR/configView.jsonui/src/locales/pt-BR/containerComponents.jsonui/src/locales/pt-BR/dashboardView.jsonui/src/locales/pt-BR/listViews.jsonui/src/locales/pt-BR/sharedComponents.jsonui/src/locales/ru/appShell.jsonui/src/locales/ru/configView.jsonui/src/locales/ru/containerComponents.jsonui/src/locales/ru/dashboardView.jsonui/src/locales/ru/listViews.jsonui/src/locales/ru/sharedComponents.jsonui/src/locales/tr/appShell.jsonui/src/locales/tr/configView.jsonui/src/locales/tr/containerComponents.jsonui/src/locales/tr/dashboardView.jsonui/src/locales/tr/listViews.jsonui/src/locales/tr/sharedComponents.jsonui/src/locales/uk/appShell.jsonui/src/locales/uk/configView.jsonui/src/locales/uk/containerComponents.jsonui/src/locales/uk/dashboardView.jsonui/src/locales/uk/listViews.jsonui/src/locales/uk/sharedComponents.jsonui/src/locales/vi/appShell.jsonui/src/locales/vi/configView.jsonui/src/locales/vi/containerComponents.jsonui/src/locales/vi/dashboardView.jsonui/src/locales/vi/listViews.jsonui/src/locales/vi/sharedComponents.jsonui/src/locales/zh-CN/appShell.jsonui/src/locales/zh-CN/configView.jsonui/src/locales/zh-CN/containerComponents.jsonui/src/locales/zh-CN/dashboardView.jsonui/src/locales/zh-CN/listViews.jsonui/src/locales/zh-CN/sharedComponents.jsonui/src/locales/zh-TW/appShell.jsonui/src/locales/zh-TW/configView.jsonui/src/locales/zh-TW/containerComponents.jsonui/src/locales/zh-TW/dashboardView.jsonui/src/locales/zh-TW/listViews.jsonui/src/locales/zh-TW/sharedComponents.json
🚧 Files skipped from review as they are similar to previous changes (88)
- ui/src/locales/zh-TW/dashboardView.json
- ui/src/locales/zh-CN/dashboardView.json
- ui/src/locales/de/dashboardView.json
- ui/src/locales/nl/appShell.json
- ui/src/locales/vi/appShell.json
- ui/src/locales/vi/sharedComponents.json
- ui/src/locales/nl/sharedComponents.json
- ui/src/locales/ko/appShell.json
- ui/src/locales/zh-CN/appShell.json
- ui/src/locales/ru/appShell.json
- ui/src/locales/zh-TW/appShell.json
- ui/src/locales/tr/appShell.json
- ui/src/locales/pt-BR/dashboardView.json
- ui/src/locales/ar/sharedComponents.json
- ui/src/locales/zh-CN/sharedComponents.json
- ui/src/locales/uk/dashboardView.json
- ui/src/locales/pl/appShell.json
- ui/src/locales/ko/dashboardView.json
- ui/src/locales/fr/dashboardView.json
- ui/src/locales/vi/dashboardView.json
- ui/src/locales/ar/dashboardView.json
- ui/src/locales/de/appShell.json
- ui/src/locales/fr/sharedComponents.json
- ui/src/locales/pt-BR/sharedComponents.json
- ui/src/locales/nl/dashboardView.json
- ui/src/locales/pl/sharedComponents.json
- ui/src/locales/ru/sharedComponents.json
- ui/src/locales/tr/dashboardView.json
- ui/src/locales/pt-BR/appShell.json
- ui/src/locales/es/appShell.json
- ui/src/locales/ru/configView.json
- ui/src/locales/fr/appShell.json
- ui/src/locales/zh-CN/configView.json
- ui/src/locales/tr/configView.json
- ui/src/locales/ko/configView.json
- ui/src/locales/pl/configView.json
- ui/src/locales/it/dashboardView.json
- ui/src/locales/uk/appShell.json
- ui/src/locales/pl/dashboardView.json
- ui/src/locales/tr/sharedComponents.json
- ui/src/locales/ru/dashboardView.json
- ui/src/locales/nl/configView.json
- ui/src/locales/vi/configView.json
- ui/src/locales/pt-BR/configView.json
- ui/src/locales/ja/sharedComponents.json
- ui/src/locales/it/configView.json
- ui/src/locales/ja/appShell.json
- ui/src/locales/fr/configView.json
- ui/src/locales/ko/listViews.json
- ui/src/locales/ar/appShell.json
- ui/src/locales/es/configView.json
- ui/src/locales/tr/containerComponents.json
- ui/src/locales/it/sharedComponents.json
- ui/src/locales/zh-CN/listViews.json
- ui/src/locales/zh-CN/containerComponents.json
- ui/src/locales/it/appShell.json
- ui/src/locales/uk/listViews.json
- ui/src/locales/zh-TW/configView.json
- ui/src/locales/uk/configView.json
- ui/src/locales/vi/containerComponents.json
- ui/src/locales/ja/listViews.json
- ui/src/locales/de/listViews.json
- ui/src/locales/de/configView.json
- ui/src/locales/fr/listViews.json
- ui/src/locales/ja/containerComponents.json
- ui/src/locales/uk/sharedComponents.json
- ui/src/locales/nl/containerComponents.json
- ui/src/locales/de/containerComponents.json
- ui/src/locales/ar/configView.json
- ui/src/locales/tr/listViews.json
- ui/src/locales/es/listViews.json
- ui/src/locales/zh-TW/containerComponents.json
- ui/src/locales/ar/containerComponents.json
- ui/src/locales/it/listViews.json
- ui/src/locales/ko/containerComponents.json
- ui/src/locales/it/containerComponents.json
- ui/src/locales/ko/sharedComponents.json
- ui/src/locales/pl/listViews.json
- ui/src/locales/de/sharedComponents.json
- ui/src/locales/pt-BR/containerComponents.json
- ui/src/locales/es/containerComponents.json
- ui/src/locales/ar/listViews.json
- ui/src/locales/nl/listViews.json
- ui/src/locales/vi/listViews.json
- ui/src/locales/uk/containerComponents.json
- ui/src/locales/fr/containerComponents.json
- ui/src/locales/ru/listViews.json
- ui/src/locales/ru/containerComponents.json
3622888 to
c4068dc
Compare
c4068dc to
9868f17
Compare
9868f17 to
2db4663
Compare
2db4663 to
d502a29
Compare
d502a29 to
43cbc94
Compare
43cbc94 to
5761a34
Compare
5761a34 to
45be5b4
Compare
Routine dev → main sync, per the branch model (main only advances by merging from dev/v1.6). This one carries the CI-hardening and bot-config batch: - #590/#592 drift guard + integration-branch targeting (already on dev, now visible to the bot: Renovate reads renovate.json from the default branch, so baseBranchPatterns and skipInstalls only take effect on main) - #594 skipInstalls: false + the lockfile-sync guard (runs npm's own ci --dry-run check per workspace) - #593 .planning untracked + tracked-ignored-files guard - #545 Crowdin translation sync with all 21 review comments fixed upstream - Five Renovate dependency batches (#484/#485/#487/#489/#510) - postcss override 8.5.22 (GHSA-r28c-9q8g-f849) After merge, `git diff origin/main origin/dev/v1.6` must be empty (tree equality — the invariant release-cut enforces). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
) The Crowdin sync failed on main on 2026-07-24 with a bare `exit 1` and no message. Root cause turned out to be a bug class rather than a one-off, so this fixes both instances of it and adds coverage. ## The pattern Inside a `set -e`/`pipefail` region, a command that exits non-zero on an *empty* result aborts the step before an explicitly written fallback can run. The fallback is dead code. The tell: someone wrote handling for the empty case, and the empty case can't reach it. ## 1. Crowdin base-branch resolution `i18n-crowdin.yml` resolves the highest `dev/vX.Y` on origin and falls back to the default branch when there is none, so translations always have somewhere to land between a GA and the next dev branch being cut. Under `set -euo pipefail` a no-match `grep` exits 1, which fails the pipeline, which fails the assignment, which aborts the step. The `if [ -z ]` fallback below it could never run. It fired for real: merging sync PR #596 briefly deleted `dev/v1.6` via auto-delete-head-branches, the push-to-main sync run found no `dev/v*`, and the job died. Guards the grep only, so a failing `ls-remote` (network, auth) still propagates and fails loudly instead of silently retargeting translations at main. That distinction matters more than the fix itself. ## 2. Load-test report resolution Sweeping the other workflows for the same pattern turned up 8 more sites in `ci-verify.yml`: ``` report="$(find artifacts/load-test/<mode> ... | sort -rn | head -n1 | cut -d' ' -f2-)" ``` `find` exits 0 on a directory that exists but is empty — the case the downstream scripts handle. It exits 1 when the directory is *missing*, and GitHub runs these steps under the default `bash -eo pipefail`, so that aborts the step. `summarize-load-test-report.sh` and `check-load-test-correctness.sh` both open with an `if [ -z "${REPORT}" ]` block written for exactly this, and neither gets to run. Reachable, not theoretical: these steps are `if: always()`, and `run-load-test.sh` only does `mkdir -p` on the artifact dir at line 168 — after the docker build, compose up, and the health-check wait that exits 1 at line 136. A load test that fails the way load tests usually fail leaves the directory absent, and the step meant to explain that dies with a bare exit 1. ## Coverage `crowdin-base-branch-resolver.test.ts` executes the real `id: base` run block extracted from the workflow against a stubbed git, rather than asserting on workflow text, so it tracks the actual logic instead of a copy that can drift. Three cases: no dev branches falls back and exits 0; several picks `dev/v1.10` over `v1.9` (lexical sort gets this wrong); failing `ls-remote` still exits non-zero. That last one guards against "fixing" the bug by swallowing all errors, which would be worse than the bug. Verified it fails against the pre-fix snippet with `expected 1 to be +0`, and that the other two still pass — the bug only affects the one path. `ci-verify-find-pipefail-guard.test.ts` discovers the find sites by walking the parsed workflow rather than pinning line numbers, so it also catches a new unguarded `find` added later. Carries a sanity assertion so it can't pass vacuously if the shape stops matching. Verified it catches a revert by naming the exact offending step. Executing the load-test steps for real would need docker plus Artillery artifacts, so that one is a static assertion by design — noted in a comment in the file. ## Notes - Full pre-push gate green locally, including the 100% coverage gate and zizmor. - Related but separate: `main` is currently failing its scheduled CI Verify on `brace-expansion@5.0.7` (CVE-2026-14257). That is already fixed on `dev/v1.6` at 5.0.8 — it just needs the next dev → main sync, no code change. - Also closed #598 and deleted `l10n_crowdin`; it was cut before #545 landed and had gone conflicting. It regenerates from the dev tip on the next push here. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Changelog - 🐛 Fixed Crowdin base-branch resolver so “no matching dev/vX.Y” correctly falls back to `DEFAULT_BRANCH` under `set -euo pipefail`, while `git ls-remote` failures still propagate. - 🐛 Fixed CI load-test report discovery by guarding each `find artifacts/load-test/<site>/...*.json ...` command-substitution pipeline so missing artifact directories don’t abort later empty-report handling under `pipefail`. - 🔧 Changed `test/cpu-bench.sh` to guard the per-container `grep "^$c "` used to compute stats so missing samples don’t stop the script under `set -euo pipefail`. - ✨ Added Jest coverage for Crowdin fallback behavior, highest `dev/vX.Y` selection, and `ls-remote` error propagation. - ✨ Added static workflow analysis coverage to ensure every load-test report lookup assignment site uses a fully pipefail-safe `find` guard (including later pipeline stages). ## Concerns - Ensure the workflow-scan regex continues to correctly identify the intended `find`-into-variable command-substitution assignments and doesn’t miss new sites. - Verify the static “expected eight-site count” remains in sync with the number of load-test report lookup assignments across CI (ci/behavior/stress, summarize/correctness/regression). <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Automated sync from Crowdin. Review wording, then merge.
✨ Added
configViewacross multiple languages.configView.appearance.noSkippedEntries,updateInsight, and a full structuredupdateStatus(title/buttons/summary/conditions/actions).rules.container-unhealthy, notification bell/template controls, scanner runtime tool messaging, and variouscardlabel groups).dashboardView.resizeWidget.sortBy, ascending/descending).appShell.banners.legacyApiPathTitlebanner text variants using the{total}placeholder across supported locales.🔧 Changed
registryLinkmoved to an object form;containerComponents.updateStatusexpanded/replaced from the prior smaller structure).🗑️ Removed
updateStatus.summary.pinnedentries after migrating to the largerupdateStatusstructure in multiple locale files.containerComponents.updateStatus,dashboardView.resizeWidget, and nested objects likeregistryLink).{total},{count}) after restructuring.updateStatus/updateInsightblocks after the pinned-entry removal.