Skip to content

Add Czech locale to translation pipeline, fix time units and bucket selection#919

Open
lukyrys wants to merge 14 commits intorybbit-io:masterfrom
lukyrys:czech-translations
Open

Add Czech locale to translation pipeline, fix time units and bucket selection#919
lukyrys wants to merge 14 commits intorybbit-io:masterfrom
lukyrys:czech-translations

Conversation

@lukyrys
Copy link
Contributor

@lukyrys lukyrys commented Feb 26, 2026

Summary

  • Add cs (Czech) locale to extraction scripts and both translate workflows — was completely missing, so new keys never propagated to Czech
  • Fill 23 empty Czech translation keys (onboarding, pricing, workspace setup, trial messaging)
  • Extract hardcoded time unit labels in BucketSelection via useExtracted() and add translations for all 11 languages
  • Add check_translations.py and update_translations.py helper scripts with script-relative paths and CI-ready exit codes

Additional fixes from review

  • ko.json: wrong character for Korean minutes — used Chinese/Japanese instead of Korean
  • cs.json: inconsistent "funnel" replaced with "trychtýř" to match rest of the file
  • BucketSelection.tsx: off-by-one in range mode — days calculation was missing + 1 that the store uses, causing wrong bucket options on boundary ranges

Summary by CodeRabbit

  • New Features

    • Czech language added across the app (UI texts, docs, and language switcher).
    • New granular time intervals (Min, 5 min, 10 min, 15 min, Hour, Day, Week, Month) across locales.
    • Smarter time-bucket selection that adapts available options to the chosen time range.
  • Chores

    • Translation workflows and tooling updated to include Czech.
    • Added translation validation and update utilities to ensure completeness and ordering.

@vercel
Copy link

vercel bot commented Feb 26, 2026

@lukyrys is attempting to deploy a commit to the goldflag's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 26, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds Czech locale support across docs and client, bulk-adds time-interval translation keys to many locales, introduces two translation helper scripts, updates extraction and CI workflows to include cs, and refactors BucketSelection to use component-scoped translations with expanded bucket/time branching.

Changes

Cohort / File(s) Summary
Workflows
/.github/workflows/translate.yml, /.github/workflows/translate-docs.yml
Include cs.json in non‑English translation lists and language mappings; update prompts/documentation to list Czech.
Extraction Scripts
client/scripts/extract-messages.mjs, docs/scripts/extract-messages.mjs
Add cs to locales arrays so Czech messages are extracted.
Translation helper scripts
client/messages/check_translations.py, client/messages/update_translations.py
Add check_translations.py (validates empty/missing/stale/untranslated keys) and update_translations.py (applies translations, reorders locale JSONs to match en.json, writes files).
Locale Files — Czech (client & docs)
client/messages/cs.json, docs/messages/cs.json
New/expanded Czech translations: many UI strings populated (plans, onboarding, org/web, time labels, etc.). Large new docs/messages file added.
Locale Files — Time Units (multiple locales)
client/messages/en.json, client/messages/de.json, client/messages/es.json, client/messages/fr.json, client/messages/it.json, client/messages/ja.json, client/messages/ko.json, client/messages/pl.json, client/messages/pt.json, client/messages/zh.json
Add eight time-unit keys (A4AHkc, JIOFW/, 6uQnsi, IoiMPE, b11WUZ, 7pXrnq, sd2ieZ, TBovrx) across languages; minor reordering/formatting of an unrelated key.
Docs locale UI
docs/src/components/LanguageSwitcher.tsx, docs/src/i18n/routing.ts
Add Czech locale option and include cs in routing locales.
Component refactor
client/src/components/BucketSelection.tsx
Export BucketSelection; shift translation accessor (t) into component via useExtracted(); change getOptions to close over t and accept only time; expand time-mode branching and add range handling with richer option sets.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐇 I found a tiny "cs" beneath a log,

Min to Month now dancing through the fog.
Buckets opened wider, options hopped in line,
I stitched each string, one carrot at a time.
A soft thump — translations snug and fine.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately describes the main changes: adding Czech locale support and fixing time units/bucket selection logic in the translation pipeline.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

CodeRabbit can enforce grammar and style rules using `languagetool`.

Configure the reviews.tools.languagetool setting to enable/disable rules and categories. Refer to the LanguageTool Community to learn more.

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
client/src/components/BucketSelection.tsx (1)

6-6: ⚠️ Potential issue | 🟠 Major

Change useExtracted() to useTranslations() to align with client/src guidelines.

The file is located in client/src/components/, which requires using useTranslations() per the coding guidelines. While useExtracted() is designed for automatic inline message extraction and is intended for docs components, this file should follow the client/src pattern. If the inline message extraction workflow is needed, update the component to use useTranslations() with key-based message references instead.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@client/src/components/BucketSelection.tsx` at line 6, Replace useExtracted
with useTranslations in the BucketSelection component: update the import from
"next-intl" to import { useTranslations } and replace any call sites of
useExtracted() with useTranslations(<namespaceOrKey>) (e.g., const t =
useTranslations("BucketSelection") or appropriate namespace), then change inline
message references to use key-based lookups (t("yourKey")) instead of inline
extraction. Ensure the component's message keys are added to the locale JSON
under the chosen namespace and remove any extraction-specific usages that only
apply to useExtracted.
🧹 Nitpick comments (1)
client/messages/check_translations.py (1)

12-22: Return a failing exit code when issues are found.

As written, this validator always exits successfully, so it can’t gate CI even when empty/missing/stale keys are detected.

💡 Suggested fix
 files = ['cs.json', 'zh.json', 'ja.json', 'de.json', 'pl.json', 'pt.json', 'it.json', 'fr.json', 'ko.json', 'es.json']
+has_issues = False
 
 for fname in files:
@@
     english = [k for k, v in trans.items() if k in en and v == en[k] and v != '']
+    file_has_issues = bool(empty or stale or missing or english)
+    has_issues = has_issues or file_has_issues
@@
     print(f'  Still English (same as en.json): {english}')
     print()
+
+raise SystemExit(1 if has_issues else 0)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@client/messages/check_translations.py` around lines 12 - 22, The script
currently only prints findings (variables empty, stale, missing, english for
each fname) and never fails CI; modify the validator so that after printing the
report for a file (after the print() block that outputs fname and the lists) it
checks if any of empty, stale, missing, or english are non-empty and, if so,
calls sys.exit(1) (or raises SystemExit(1)) to return a failing exit code; add
an import sys at the top if not present and ensure the check runs for the
overall run (e.g., track a flag or perform the exit after each file) so the
process exits non-zero when issues are found.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@client/messages/check_translations.py`:
- Around line 3-4: The file opens 'en.json' (and the other JSON files around it)
using a relative path which breaks if the process CWD is not client/messages;
change these file opens to use a script-relative path by building the path from
Path(__file__).resolve().parent and joining the filename (e.g.,
Path(__file__).resolve().parent / 'en.json') before calling open() or
json.load(); update both occurrences that currently open 'en.json' and the other
translation file so they use this script-relative Path to avoid CWD-dependent
failures.

In `@client/messages/cs.json`:
- Around line 290-291: Replace the English word "funnel" in the cs.json
translation value for key "mV7XLc" with the Czech term "trychtýř" to match the
locale terminology; update the string for "mV7XLc" so it reads something like
"Vytvořte svůj první trychtýř pro sledování konverzí v uživatelské cestě na
vašem webu." and ensure spacing and punctuation remain consistent with
surrounding entries.

In `@client/messages/ko.json`:
- Around line 1167-1169: The three Korean translation entries for keys "JIOFW/",
"6uQnsi", and "IoiMPE" incorrectly use the Chinese/Japanese character "分";
update their values to use the correct Korean "분" (e.g., "5분", "10분", "15분") so
they match the neighboring correct translation for "Min" and maintain
consistency across the translations.

In `@client/messages/update_translations.py`:
- Around line 65-66: The code in update_translations.py opens JSON files using
relative paths (e.g., the en.json read around the en_content usage and other
reads/writes near lines 72–73 and 90–92), which depends on the current working
directory; change those file operations to build paths relative to the script
location by resolving Path(__file__).parent and joining the filenames (e.g.,
en.json, other JSONs, and any output files) so all open/read/write calls use
that resolved directory (update the code that reads en_content and the
subsequent file opens to use the script-dir-based Path).
- Around line 6-62: The translations dict in
client/messages/update_translations.py omits the new Czech locale; add a
'cs.json' entry to the translations mapping (the same dict that contains
'zh.json','ja.json',etc.) and populate it with the same message keys used
elsewhere (e.g. 'rd5F5r','5/hIKX','BdV5Om','HCYBYT' and, if needed, 'u9xEkD') so
Czech is included in the update target list; ensure the new 'cs.json' block
follows the same structure and key set as the other language entries.

In `@client/src/components/BucketSelection.tsx`:
- Line 117: The computed timeRangeLength (const timeRangeLength =
DateTime.fromISO(time.endDate).diff(DateTime.fromISO(time.startDate),
"days").days) omits the +1 used by the store's setTime for range mode; update
this calculation to match the store by adding 1 when the range mode is active
(e.g., add (time.mode === 'range' ? 1 : 0) to the diff) so BucketSelection's
bucket options align with setTime's logic; look for the timeRangeLength
declaration in BucketSelection.tsx and reference the store's setTime behavior to
ensure parity.

---

Outside diff comments:
In `@client/src/components/BucketSelection.tsx`:
- Line 6: Replace useExtracted with useTranslations in the BucketSelection
component: update the import from "next-intl" to import { useTranslations } and
replace any call sites of useExtracted() with useTranslations(<namespaceOrKey>)
(e.g., const t = useTranslations("BucketSelection") or appropriate namespace),
then change inline message references to use key-based lookups (t("yourKey"))
instead of inline extraction. Ensure the component's message keys are added to
the locale JSON under the chosen namespace and remove any extraction-specific
usages that only apply to useExtracted.

---

Nitpick comments:
In `@client/messages/check_translations.py`:
- Around line 12-22: The script currently only prints findings (variables empty,
stale, missing, english for each fname) and never fails CI; modify the validator
so that after printing the report for a file (after the print() block that
outputs fname and the lists) it checks if any of empty, stale, missing, or
english are non-empty and, if so, calls sys.exit(1) (or raises SystemExit(1)) to
return a failing exit code; add an import sys at the top if not present and
ensure the check runs for the overall run (e.g., track a flag or perform the
exit after each file) so the process exits non-zero when issues are found.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2d237e7 and c9cf117.

📒 Files selected for processing (18)
  • .github/workflows/translate-docs.yml
  • .github/workflows/translate.yml
  • client/messages/check_translations.py
  • client/messages/cs.json
  • client/messages/de.json
  • client/messages/en.json
  • client/messages/es.json
  • client/messages/fr.json
  • client/messages/it.json
  • client/messages/ja.json
  • client/messages/ko.json
  • client/messages/pl.json
  • client/messages/pt.json
  • client/messages/update_translations.py
  • client/messages/zh.json
  • client/scripts/extract-messages.mjs
  • client/src/components/BucketSelection.tsx
  • docs/scripts/extract-messages.mjs

@lukyrys lukyrys changed the title Add Czech language to auto-translation pipeline Add Czech locale to translation pipeline, fix time units and bucket selection Feb 26, 2026
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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
client/messages/cs.json (1)

876-900: ⚠️ Potential issue | 🟡 Minor

Same formality inconsistency continues in onboarding/trial messaging.

Lines 881, 883-884, 899-900 also use formal "vy" forms ("Začněte", "svou") instead of the informal "ty" forms used throughout the file.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@client/messages/cs.json` around lines 876 - 900, Change the
formal-second-person phrasing to informal (ty) for the onboarding/trial
messages: update the values for keys RpEtgF, FT1lfL and vYmJVk (replace
"Začněte" with "Začni" and adjust nearby wording to informal tone) and verify
aO7kNa uses the informal verb form as well; keep keys the same but edit their
string values so all four entries match the informal "ty" style used elsewhere.
🧹 Nitpick comments (2)
client/messages/update_translations.py (1)

85-91: Reordering currently preserves keys outside en.json, which can retain locale drift.

Lines 89-91 append non-English extra keys back into output. If the intent is strict locale parity, consider warning or failing on extras (or gating this behavior behind a --strict mode).
Based on learnings: Store i18n message files in messages/{locale}.json with consistent key structure across all 10 locales.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@client/messages/update_translations.py` around lines 85 - 91, The current
reordering loop (using en_key_order, ordered, data) re-appends keys not present
in en.json which preserves locale drift; change this to detect extras via extras
= set(data) - set(en_key_order) and then, instead of appending them back, either
(a) if a new CLI flag/argument like --strict is set (or a strict boolean in the
function), raise a clear error (ValueError/SystemExit) listing extras, or (b)
when not strict, emit a warning via the existing logger and skip those extra
keys so the output strictly follows en_key_order; remove the second for-loop
that appends non-English extras and ensure ordered only contains keys in
en_key_order (use en_key_order iteration to populate ordered from data).
client/messages/check_translations.py (1)

14-16: Consider adding error handling for missing or malformed files.

If a translation file is missing or contains invalid JSON, the script will crash with an unhelpful traceback. Wrapping the file load in a try-except would provide clearer diagnostics.

💡 Proposed improvement
 for fname in files:
-    with open(BASE_DIR / fname, encoding='utf-8') as f:
-        trans = json.load(f)
+    fpath = BASE_DIR / fname
+    try:
+        with open(fpath, encoding='utf-8') as f:
+            trans = json.load(f)
+    except FileNotFoundError:
+        print(f'{fname}: FILE NOT FOUND')
+        print()
+        has_issues = True
+        continue
+    except json.JSONDecodeError as e:
+        print(f'{fname}: INVALID JSON - {e}')
+        print()
+        has_issues = True
+        continue
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@client/messages/check_translations.py` around lines 14 - 16, The loop that
opens and json.load()s translation files (iterating over files, using BASE_DIR
and variable trans) lacks error handling; wrap the open(BASE_DIR / fname,
encoding='utf-8') and json.load(f) calls in a try-except that catches
FileNotFoundError and json.JSONDecodeError (and optionally OSError), log or
print a clear diagnostic including fname and the exception, and either continue
to the next file or collect errors to fail later so the script doesn't crash
with an unhelpful traceback.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@client/messages/cs.json`:
- Around line 842-858: Several new Czech translations use the formal "vy"/"vaší"
form creating inconsistency with the repo's informal "ty" tone; update the keys
uWRAQk ("Vyberte svůj plán"), Yyi9rs ("Nastavte svůj pracovní prostor"), 17v9l0
("Z vaší karty nebude strženo nic…") and any other new strings in this diff to
the informal equivalents (e.g., "Vyber svůj plán", "Nastav svůj pracovní
prostor", "Z tvé karty nebude strženo nic…") so they match existing informal
translations elsewhere (search for other keys like "Vlož tento kód" to confirm
tone).

In `@client/messages/update_translations.py`:
- Around line 81-84: The loop that applies updates (iterating over
updates.items() and assigning into data[key]) currently skips missing keys
silently while later printing "Updated {fname}"; modify the update logic in the
function handling translation file writes so you detect and record missing keys
per locale (e.g., collect missing_keys for each fname/locale when key not in
data), log or print which keys were skipped for each file (use fname and the
updates variable to reference context), avoid marking the file as fully updated
when missing_keys is non-empty, and after processing all locales return a
non-zero exit code (or raise an error) if any missing keys were skipped so the
caller can detect partial updates.

In `@client/src/components/BucketSelection.tsx`:
- Around line 141-145: The Select misses a matching "day" item when
timeRangeLength === 1 because the JSX only renders <SelectItem value="day"> when
timeRangeLength > 1 while setTime/setBucketToUse picks "day" for ranges up to
31; update the render condition so the "day" option appears for a 1-day range
(e.g., change the check from timeRangeLength > 1 to timeRangeLength >= 1 or
timeRangeLength > 0) so the Select's value ({bucket}) always has a corresponding
<SelectItem>, referencing timeRangeLength, <SelectItem value="day">,
setTime/bucketToUse and bucket/Select.
- Around line 15-50: The UI currently decides which bucket options to render
using time.pastMinutesStart alone, but the store chooses buckets based on the
time range (timeDiff = pastMinutesStart - pastMinutesEnd) so the UI can hide the
active "hour" bucket; update the BucketSelection logic to compute timeDiff =
time.pastMinutesStart - (time.pastMinutesEnd ?? 0) and use timeDiff for the
visibility thresholds (use the same thresholds the store uses: treat ranges >120
minutes as eligible for "hour", and keep your existing >=360 and >=1440 checks
for broader options) so the rendered SelectItem options (values
"minute","five_minutes","fifteen_minutes","hour") match the store's bucket
selection.

---

Outside diff comments:
In `@client/messages/cs.json`:
- Around line 876-900: Change the formal-second-person phrasing to informal (ty)
for the onboarding/trial messages: update the values for keys RpEtgF, FT1lfL and
vYmJVk (replace "Začněte" with "Začni" and adjust nearby wording to informal
tone) and verify aO7kNa uses the informal verb form as well; keep keys the same
but edit their string values so all four entries match the informal "ty" style
used elsewhere.

---

Nitpick comments:
In `@client/messages/check_translations.py`:
- Around line 14-16: The loop that opens and json.load()s translation files
(iterating over files, using BASE_DIR and variable trans) lacks error handling;
wrap the open(BASE_DIR / fname, encoding='utf-8') and json.load(f) calls in a
try-except that catches FileNotFoundError and json.JSONDecodeError (and
optionally OSError), log or print a clear diagnostic including fname and the
exception, and either continue to the next file or collect errors to fail later
so the script doesn't crash with an unhelpful traceback.

In `@client/messages/update_translations.py`:
- Around line 85-91: The current reordering loop (using en_key_order, ordered,
data) re-appends keys not present in en.json which preserves locale drift;
change this to detect extras via extras = set(data) - set(en_key_order) and
then, instead of appending them back, either (a) if a new CLI flag/argument like
--strict is set (or a strict boolean in the function), raise a clear error
(ValueError/SystemExit) listing extras, or (b) when not strict, emit a warning
via the existing logger and skip those extra keys so the output strictly follows
en_key_order; remove the second for-loop that appends non-English extras and
ensure ordered only contains keys in en_key_order (use en_key_order iteration to
populate ordered from data).

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c9cf117 and cfffe1b.

📒 Files selected for processing (5)
  • client/messages/check_translations.py
  • client/messages/cs.json
  • client/messages/ko.json
  • client/messages/update_translations.py
  • client/src/components/BucketSelection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • client/messages/ko.json

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
client/src/components/BucketSelection.tsx (1)

3-8: Import ordering does not follow guidelines.

Per coding guidelines, imports should be organized with external packages first, then internal imports, sorted alphabetically within groups. Current order mixes external and internal imports.

♻️ Suggested import ordering
 "use client";
 
-import { useStore } from "@/lib/store";
-import { SelectItem, Select, SelectContent, SelectTrigger, SelectValue } from "@/components/ui/select";
-import { DateTime } from "luxon";
-import { useExtracted } from "next-intl";
-import { Time } from "./DateSelector/types";
-import { TimerReset } from "lucide-react";
+import { TimerReset } from "lucide-react";
+import { DateTime } from "luxon";
+import { useTranslations } from "next-intl";
+
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
+import { useStore } from "@/lib/store";
+import { Time } from "./DateSelector/types";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@client/src/components/BucketSelection.tsx` around lines 3 - 8, Reorder the
imports so external packages come first (alphabetically) and then internal
imports (alphabetically) — locate the import lines referencing TimerReset,
DateTime, and useExtracted (from lucide-react, luxon, next-intl) and move them
above the internal imports; then sort the internal imports (the lines importing
Select/SelectItem/SelectContent/SelectTrigger/SelectValue, useStore, and Time
from "./DateSelector/types") alphabetically within that group so the file
imports appear in the correct grouped order.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@client/messages/cs.json`:
- Line 290: Replace the formal imperative and formal possessive in message
"mV7XLc" with the informal form to match the rest of the file: change the value
currently starting with "Vytvořte" and "vašem" to the informal imperative and
possessive, e.g. use "Vytvoř svůj první trychtýř pro sledování konverzí v
uživatelské cestě na tvém webu." Update the string identified by "mV7XLc".
- Line 899: The translation for key "GnHuiT" is using the formal imperative
"Začněte zdarma" which is inconsistent with nearby informal CTAs (e.g.,
"Začni"); update the value for "GnHuiT" to the informal form "Začni zdarma" and
scan the cs.json for any other occurrences of "Začněte" to replace them with the
informal variant so all CTAs in this user flow use the same tone.

---

Nitpick comments:
In `@client/src/components/BucketSelection.tsx`:
- Around line 3-8: Reorder the imports so external packages come first
(alphabetically) and then internal imports (alphabetically) — locate the import
lines referencing TimerReset, DateTime, and useExtracted (from lucide-react,
luxon, next-intl) and move them above the internal imports; then sort the
internal imports (the lines importing
Select/SelectItem/SelectContent/SelectTrigger/SelectValue, useStore, and Time
from "./DateSelector/types") alphabetically within that group so the file
imports appear in the correct grouped order.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cfffe1b and 16ec867.

📒 Files selected for processing (2)
  • client/messages/cs.json
  • client/src/components/BucketSelection.tsx

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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/src/i18n/routing.ts`:
- Line 4: Update the languages array in the i18n configuration so it matches
routing: open the languages export/constant in docs/src/lib/i18n.ts (the
languages: [...] declaration) and add the missing 'cs' entry to the array so it
becomes ['en','de','fr','zh','es','pl','it','ko','pt','ja','cs'], ensuring the
array ordering/format matches the existing style and exports.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c82545c and 46fe777.

📒 Files selected for processing (3)
  • docs/messages/cs.json
  • docs/src/components/LanguageSwitcher.tsx
  • docs/src/i18n/routing.ts
✅ Files skipped from review due to trivial changes (1)
  • docs/messages/cs.json

@lukyrys lukyrys force-pushed the czech-translations branch 3 times, most recently from 4fb31b9 to 3b333c0 Compare March 11, 2026 16:22
@lukyrys lukyrys force-pushed the czech-translations branch from 3b333c0 to 890bac8 Compare March 13, 2026 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant