Skip to content

New Crowdin updates#689

Open
feruzm wants to merge 117 commits intodevelopfrom
l10n_develop
Open

New Crowdin updates#689
feruzm wants to merge 117 commits intodevelopfrom
l10n_develop

Conversation

@feruzm
Copy link
Member

@feruzm feruzm commented Mar 4, 2026

Summary by CodeRabbit

  • New Features

    • Added localized UI strings for an AI Writing Assistant across many languages.
    • Added localized "Tip" label for entries and an "Updated" / "Start" label in general UI.
  • Chores

    • Standardized bookmark and favorite button wording and punctuation across locales for clearer, shorter messages.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 4, 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

This PR updates many i18n locale JSON files: adds g.start and g.updated, adds entry-tip.tip, standardizes bookmark/favorite copy (em‑dash and shorter phrasing), and introduces a new top-level ai-assist translation block across many locales. All edits are translation/data-only; no runtime logic changed.

Changes

Cohort / File(s) Summary
Locale JSON updates
apps/web/src/features/i18n/locales/ac-ace.json, apps/web/src/features/i18n/locales/bg-BG.json, apps/web/src/features/i18n/locales/de-DE.json, apps/web/src/features/i18n/locales/es-ES.json, apps/web/src/features/i18n/locales/fr-FR.json, apps/web/src/features/i18n/locales/hi-IN.json, apps/web/src/features/i18n/locales/id-ID.json, apps/web/src/features/i18n/locales/it-IT.json, apps/web/src/features/i18n/locales/ja-JP.json, apps/web/src/features/i18n/locales/lt-LT.json, apps/web/src/features/i18n/locales/nl-NL.json, apps/web/src/features/i18n/locales/pcm-NG.json, apps/web/src/features/i18n/locales/pl-PL.json, apps/web/src/features/i18n/locales/pt-PT.json, apps/web/src/features/i18n/locales/ru-RU.json, apps/web/src/features/i18n/locales/sr-CS.json, apps/web/src/features/i18n/locales/th-TH.json, apps/web/src/features/i18n/locales/tr-TR.json, apps/web/src/features/i18n/locales/uk-UA.json, apps/web/src/features/i18n/locales/ur-PK.json, apps/web/src/features/i18n/locales/uz-UZ.json, apps/web/src/features/i18n/locales/yo-NG.json, apps/web/src/features/i18n/locales/zh-CN.json
Added g.start and g.updated and entry-tip.tip in many locales; standardized bookmark-btn / favorite-btn strings to use em‑dash and shortened phrasing; added a new top-level ai-assist block (complete AI Writing Assistant UI strings) alongside existing AI sections. Changes are content-only and additive.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

patch

Poem

🐰 I hopped through strings and nudged a dash just right,
I planted start and updated under UI light,
A tiny tip I tucked in, neat and crisp,
Then whispered an AI helper into every list,
I munched a carrot, grinned, and bounded out of sight.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'New Crowdin updates' is vague and does not convey meaningful information about the specific changes, using non-descriptive generic phrasing typical of automated translation service commits. Consider a more descriptive title that highlights the primary changes, such as 'Add AI Writing Assistant (ai-assist) translations across all locales' or 'Update localization strings for new features and UI improvements'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ 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
  • Commit unit tests in branch l10n_develop

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.

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

Caution

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

⚠️ Outside diff range comments (1)
apps/web/src/features/i18n/locales/fr-FR.json (1)

465-471: ⚠️ Potential issue | 🟡 Minor

Untranslated English text in French locale file.

The new tip key uses the English value "Tip" while the adjacent title key is properly translated to "Pourboire". This appears inconsistent within the French locale.

If this is intentional (e.g., keeping "Tip" as a universal UI term), please disregard. Otherwise, consider using the French translation:

🌐 Suggested fix for consistency
   "entry-tip": {
     "title": "Pourboire",
-    "tip": "Tip",
+    "tip": "Pourboire",
     "send-tip": "Envoyer une astuce",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/fr-FR.json` around lines 465 - 471, The
French locale entry "entry-tip" contains an untranslated English value for the
"tip" key; update "entry-tip.tip" from "Tip" to the proper French translation
(e.g., "Astuce" or "Pourboire") so it matches "entry-tip.title" and other keys
("send-tip", "count", "count_plural") for consistency across the fr-FR.json
locale.
🧹 Nitpick comments (8)
apps/web/src/features/i18n/locales/lt-LT.json (2)

449-454: Incomplete translation: bookmark-btn.add remains in English.

The added, delete, and deleted keys are now properly translated to Lithuanian, but add on line 450 still contains English text. This creates an inconsistent user experience where some button states appear in English and others in Lithuanian.

Consider translating to something like: "Pridėti prie žymų — pranešti apie naujus komentarus" or similar Lithuanian equivalent.

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

In `@apps/web/src/features/i18n/locales/lt-LT.json` around lines 449 - 454, The
"bookmark-btn.add" localization value is still in English; update the
"bookmark-btn" object's "add" key to a Lithuanian translation (e.g., change the
value of bookmark-btn.add to "Pridėti prie žymų — pranešti apie naujus
komentarus" or another accurate Lithuanian phrase) so all bookmark button states
("add", "added", "delete", "deleted") are consistently translated.

645-650: Incomplete translation: favorite-btn.add remains in English.

Same issue as the bookmark-btn section — the added, delete, and deleted keys are now properly translated to Lithuanian, but add on line 646 still contains English text.

Consider translating to something like: "Pridėti prie mėgstamiausių — pranešti apie naujus įrašus" or similar Lithuanian equivalent.

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

In `@apps/web/src/features/i18n/locales/lt-LT.json` around lines 645 - 650, The
key favorite-btn.add is still in English; update its value to a Lithuanian
translation (e.g., "Pridėti prie mėgstamiausių — pranešti apie naujus įrašus")
so it matches the other translated keys in the favorite-btn / bookmark-btn group
(compare favorite-btn.added, favorite-btn.delete, favorite-btn.deleted) and
ensure the phrase follows the same tone and punctuation as the surrounding
translations.
apps/web/src/features/i18n/locales/id-ID.json (1)

450-450: Consider localizing the add labels to Indonesian for consistency.

Both keys are still English while adjacent states are Indonesian, which can feel mixed in UI.

Suggested wording update
-    "add": "Bookmark — get notified about new comments",
+    "add": "Penanda — dapatkan notifikasi tentang komentar baru",
...
-    "add": "Favorite — get notified about new posts",
+    "add": "Favorit — dapatkan notifikasi tentang postingan baru",

Also applies to: 1646-1646

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

In `@apps/web/src/features/i18n/locales/id-ID.json` at line 450, The two "add"
entries in the Indonesian locale file are still in English; replace both
occurrences of the "add" key in id-ID.json with an Indonesian translation such
as "Bookmark — dapatkan notifikasi tentang komentar baru" (or another preferred
Indonesian phrasing) so the label matches surrounding localized strings; search
for the "add" key in id-ID.json to find both instances and update their values
accordingly.
apps/web/src/features/i18n/locales/uz-UZ.json (3)

449-454: Translation inconsistency in bookmark-btn section.

The add label (line 450) is in English while added, delete, and deleted are translated to Uzbek. This creates an inconsistent user experience for Uzbek speakers.

Consider translating line 450 to Uzbek (e.g., "Saqlash — yangi izohlar haqida xabardor bo'lish") to match the other labels in this section.

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

In `@apps/web/src/features/i18n/locales/uz-UZ.json` around lines 449 - 454,
Translate the inconsistent English string under the "bookmark-btn" object:
replace the "add" key's value currently in English with an Uzbek translation
that matches the tone of the other keys (e.g., "Saqlash — yangi izohlar haqida
xabardor bo'lish") so all entries in "bookmark-btn" ("add", "added", "delete",
"deleted") are consistently localized.

645-650: Translation inconsistency in favorite-btn section.

Same pattern as bookmark-btn: the add label (line 646) is in English while added, delete, and deleted are translated to Uzbek.

Consider translating line 646 to Uzbek (e.g., "Sevimli — yangi postlar haqida xabardor bo'lish") for a consistent user experience.

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

In `@apps/web/src/features/i18n/locales/uz-UZ.json` around lines 645 - 650, The
"favorite-btn" localization key's "add" value is left in English causing
inconsistency with other keys ("added", "delete", "deleted"); update the
"favorite-btn" -> "add" string to an Uzbek translation (e.g., "Sevimlilarga
qo'shish — yangi postlar haqida xabardor bo'lish" or similar) so it matches the
existing Uzbek translations for "added"/"deleted" and maintains consistency in
the favorites UI.

465-471: New tip field is untranslated.

The newly added tip field (line 467) is in English while title is already translated to Uzbek ("Sovg'a"). Consider translating tip to Uzbek for consistency.

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

In `@apps/web/src/features/i18n/locales/uz-UZ.json` around lines 465 - 471, The
"entry-tip.tip" value is still in English; replace it with the Uzbek translation
to match "entry-tip.title" ("Sovg'a") — e.g., use an appropriate Uzbek term for
"tip" (gratuity) such as "Sovg'a" or another agreed-upon word, and update the
"entry-tip.tip" string (and optionally related strings like "send-tip", "count",
"count_plural" in the same "entry-tip" object) so all fields are consistently
translated into Uzbek.
apps/web/src/features/i18n/locales/pt-PT.json (1)

450-452: Minor capitalization inconsistency noted.

The bookmark button labels show mixed capitalization: "Favorito" (line 450) versus "de Favoritos" (line 452). While this may be intentional based on UI context, consider using consistent capitalization for better uniformity across the interface.

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

In `@apps/web/src/features/i18n/locales/pt-PT.json` around lines 450 - 452, The
three translation keys "add", "added", and "delete" in the pt-PT locale ("add",
"added", "delete") use inconsistent capitalization ("Favorito" vs "Favoritos");
pick a consistent style (e.g., sentence case or title case) and update the
string values so they match across these keys—for example change "Favorito —
seja notificado sobre novos comentários" to "favorito — seja notificado sobre
novos comentários" or change "Remover de Favoritos" to "Remover de
favoritos"—and ensure the same capitalization rule is applied to "add", "added"
and "delete".
apps/web/src/features/i18n/locales/de-DE.json (1)

465-468: entry-tip.tip appears unsynced and currently unused.

Line 467 adds entry-tip.tip, but apps/web/src/features/shared/entry-tip-btn/index.tsx:1-100 does not consume this key, and apps/web/src/features/i18n/locales/en-US.json:1-1 doesn’t define it. This creates locale drift.

♻️ Suggested cleanup (if not intentionally planned for upcoming usage)
   "entry-tip": {
     "title": "Hinweis",
-    "tip": "Tip",
     "send-tip": "Tipp senden",
     "count": "{{count}} tip",
     "count_plural": "{{count}} Tipps"
   },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/de-DE.json` around lines 465 - 468, The
de-DE locale contains an unused key entry-tip.tip that isn’t present in en-US
and isn’t consumed by the EntryTipBtn component; either remove entry-tip.tip
from de-DE.json to avoid locale drift, or add the same key to en-US.json and
update EntryTipBtn (entry-tip-btn/index.tsx) to read and use entry-tip.tip (or
consolidate to an existing key like entry-tip.send-tip) so both locales and the
component stay in sync.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/web/src/features/i18n/locales/bg-BG.json`:
- Line 467: The bg-BG locale currently contains an English string for the new
key "entry-tip.tip"; update the value in
apps/web/src/features/i18n/locales/bg-BG.json so "entry-tip.tip" is translated
to Bulgarian (e.g., replace "Tip" with the Bulgarian equivalent such as "Съвет")
to avoid mixed-language UI.

In `@apps/web/src/features/i18n/locales/es-ES.json`:
- Line 1648: The locale string key favorite-btn.delete currently uses sentence
case ("Eliminar de Favoritos"); update it to use consistent sentence case by
lowercasing "Favoritos" to "favoritos" so the value becomes "Eliminar de
favoritos", ensuring it matches adjacent locale entries and style conventions
for the es-ES JSON.
- Line 467: The JSON entry for the key "entry-tip.tip" currently uses the
English word "Tip"; change its value to the Spanish term "propina" to match
neighboring translations and ensure consistent UX terminology. Locate the
"entry-tip.tip" key in the locales JSON and replace "Tip" with "propina",
preserving surrounding punctuation and JSON formatting.

In `@apps/web/src/features/i18n/locales/hi-IN.json`:
- Line 450: Translate the English "add" labels into Hindi in the hi-IN locale
JSON: replace the value for the "add" key (currently "Bookmark — get notified
about new comments") at both occurrences in the file (the keys at the two
locations) with an appropriate Hindi localization string (e.g., "बुकमार्क — नई
टिप्पणियों की सूचनाएं प्राप्त करें") ensuring the same phrasing is used for both
entries so the UI is consistently localized.
- Line 467: The Hindi locale value for the key entry-tip.tip is still English
("Tip"); update the value in apps/web/src/features/i18n/locales/hi-IN.json by
replacing the current "tip": "Tip" entry with a proper Hindi translation (e.g.,
"tip": "सुझाव" or another preferred Hindi term) so the entry-tip.tip key is
localized consistently with surrounding keys.
- Line 1647: The key favorite-btn.added currently uses action phrasing; update
the translation to a completion-state phrasing (e.g., change "पसंदीदा में जोड़ें"
to a completed-status like "पसंदीदा में जोड़ा गया") so the string represents
"Added to favorites" rather than "Add to favorites"; locate the
favorite-btn.added entry and replace the value accordingly.

In `@apps/web/src/features/i18n/locales/it-IT.json`:
- Line 467: The locale entry for key "entry-tip.tip" is still in English; update
the JSON value for the "tip" key under the entry-tip section to the Italian
translation (e.g., replace "Tip" with "Suggerimento" or "Consiglio") so the
string is localized consistently with the rest of the it-IT file.
- Around line 450-452: The "delete" translation value is inconsistent with the
adjacent "add" and "added" keys—change the capitalized "Segnalibri" to lowercase
to match style; update the "delete" key's value from "Rimuovi dai Segnalibri" to
"Rimuovi dai segnalibri" so the keys "add", "added", and "delete" use consistent
capitalization for segnalibri.

In `@apps/web/src/features/i18n/locales/ja-JP.json`:
- Line 467: The en-US fallback locale is missing the entry-tip.tip key that
exists in ja-JP; add an "entry-tip": { "tip": "Tip" } entry (or add the
top-level "entry-tip.tip" key equivalent) to the en-US locale JSON so the
fallback contains the same key name used by other locales; update the en-US.json
locale object to include the entry-tip.tip key with value "Tip" to prevent
missing-key output when fallbackLng is en-US.

In `@apps/web/src/features/i18n/locales/pl-PL.json`:
- Line 450: Replace the en-dash with an em-dash for the localization key
"bookmark-btn.add" in pl-PL.json so it matches other locales; change the value
from "Zakładka – otrzymuj powiadomienia o nowych komentarzach" to "Zakładka —
otrzymuj powiadomienia o nowych komentarzach" (ensure you edit the string value
for "bookmark-btn.add").

In `@apps/web/src/features/i18n/locales/ru-RU.json`:
- Line 467: The ru-RU locale contains an untranslated/unused key "entry-tip.tip"
with value "Tip"; either remove this key from the ru-RU.json if the feature
isn't implemented, or replace the value with a correct Russian translation
(e.g., "Совет") so the UI won't show mixed-language text; update only the
"entry-tip.tip" entry and run locale linting/tests to confirm no missing-key
regressions.

In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Line 452: Change the "delete" translation from a past-tense status ("Uklonjeno
iz obeleživača") to an imperative action label (e.g., "Ukloni") so it reads
correctly on buttons and action contexts; update the "delete" key value in both
places where it appears (the two "delete" entries) and leave the separate
"deleted" status key untouched to avoid overlap.

In `@apps/web/src/features/i18n/locales/tr-TR.json`:
- Line 467: The JSON value for entry-tip.tip is currently English ("Tip") and
should be translated to Turkish to match the locale; update the "tip" value in
the entry-tip block (key: entry-tip.tip) from "Tip" to the Turkish equivalent
"Bahşiş" so it is consistent with "title": "Bahşiş".
- Around line 1646-1648: The key favorite-btn.add (JSON key "add" in this locale
file) is still in English; update its value to a Turkish translation matching
the other keys (e.g., "Favorilere ekle — yeni gönderiler hakkında bildirim al")
so it reads consistently with "added" and "delete" in the tr-TR.json; edit the
"add" entry to the Turkish string and save.
- Around line 450-452: The "bookmark-btn.add" key (JSON key "add") in tr-TR.json
is still in English; update its value to a proper Turkish translation (e.g.,
replace "Bookmark — get notified about new comments" with a Turkish string
conveying "Bookmark — get notified about new comments") by editing the "add"
entry so the UI is fully localized.

In `@apps/web/src/features/i18n/locales/uk-UA.json`:
- Around line 1646-1648: The "add" translation for the favorites button is a
long descriptive string; replace the value for the key favorite-btn.add with a
short action label consistent with the add/delete flow (e.g., "Додати до
обраного") so it matches neighboring keys favorite-btn.added and
favorite-btn.delete and keeps the UI concise and consistent.
- Line 467: The Ukrainian locale entry "entry-tip.tip" currently contains the
English string "Tip"; update the value to a proper Ukrainian translation (e.g.,
"Порада" or "Підказка") so the key "tip" in the uk-UA.json locale is fully
localized and no longer mixes languages.

In `@apps/web/src/features/i18n/locales/zh-CN.json`:
- Line 467: The zh-CN locale contains an English value for the new key
"entry-tip.tip"; update the value for the "tip" key under the entry-tip
namespace to a proper Chinese translation (e.g., "提示" or another appropriate
localized string) so the zh-CN JSON does not contain English text for
"entry-tip.tip".
- Around line 450-452: Update the Chinese locale string for the bookmark button
to use the same em dash style as the paired CTA: locate the JSON key "add"
(referenced as bookmark-btn.add) and replace the hyphen "-" in "书签-获得关于新评论的通知"
with an em dash "—" so it matches favorite-btn's punctuation and keeps UI copy
consistent.

---

Outside diff comments:
In `@apps/web/src/features/i18n/locales/fr-FR.json`:
- Around line 465-471: The French locale entry "entry-tip" contains an
untranslated English value for the "tip" key; update "entry-tip.tip" from "Tip"
to the proper French translation (e.g., "Astuce" or "Pourboire") so it matches
"entry-tip.title" and other keys ("send-tip", "count", "count_plural") for
consistency across the fr-FR.json locale.

---

Nitpick comments:
In `@apps/web/src/features/i18n/locales/de-DE.json`:
- Around line 465-468: The de-DE locale contains an unused key entry-tip.tip
that isn’t present in en-US and isn’t consumed by the EntryTipBtn component;
either remove entry-tip.tip from de-DE.json to avoid locale drift, or add the
same key to en-US.json and update EntryTipBtn (entry-tip-btn/index.tsx) to read
and use entry-tip.tip (or consolidate to an existing key like
entry-tip.send-tip) so both locales and the component stay in sync.

In `@apps/web/src/features/i18n/locales/id-ID.json`:
- Line 450: The two "add" entries in the Indonesian locale file are still in
English; replace both occurrences of the "add" key in id-ID.json with an
Indonesian translation such as "Bookmark — dapatkan notifikasi tentang komentar
baru" (or another preferred Indonesian phrasing) so the label matches
surrounding localized strings; search for the "add" key in id-ID.json to find
both instances and update their values accordingly.

In `@apps/web/src/features/i18n/locales/lt-LT.json`:
- Around line 449-454: The "bookmark-btn.add" localization value is still in
English; update the "bookmark-btn" object's "add" key to a Lithuanian
translation (e.g., change the value of bookmark-btn.add to "Pridėti prie žymų —
pranešti apie naujus komentarus" or another accurate Lithuanian phrase) so all
bookmark button states ("add", "added", "delete", "deleted") are consistently
translated.
- Around line 645-650: The key favorite-btn.add is still in English; update its
value to a Lithuanian translation (e.g., "Pridėti prie mėgstamiausių — pranešti
apie naujus įrašus") so it matches the other translated keys in the favorite-btn
/ bookmark-btn group (compare favorite-btn.added, favorite-btn.delete,
favorite-btn.deleted) and ensure the phrase follows the same tone and
punctuation as the surrounding translations.

In `@apps/web/src/features/i18n/locales/pt-PT.json`:
- Around line 450-452: The three translation keys "add", "added", and "delete"
in the pt-PT locale ("add", "added", "delete") use inconsistent capitalization
("Favorito" vs "Favoritos"); pick a consistent style (e.g., sentence case or
title case) and update the string values so they match across these keys—for
example change "Favorito — seja notificado sobre novos comentários" to "favorito
— seja notificado sobre novos comentários" or change "Remover de Favoritos" to
"Remover de favoritos"—and ensure the same capitalization rule is applied to
"add", "added" and "delete".

In `@apps/web/src/features/i18n/locales/uz-UZ.json`:
- Around line 449-454: Translate the inconsistent English string under the
"bookmark-btn" object: replace the "add" key's value currently in English with
an Uzbek translation that matches the tone of the other keys (e.g., "Saqlash —
yangi izohlar haqida xabardor bo'lish") so all entries in "bookmark-btn" ("add",
"added", "delete", "deleted") are consistently localized.
- Around line 645-650: The "favorite-btn" localization key's "add" value is left
in English causing inconsistency with other keys ("added", "delete", "deleted");
update the "favorite-btn" -> "add" string to an Uzbek translation (e.g.,
"Sevimlilarga qo'shish — yangi postlar haqida xabardor bo'lish" or similar) so
it matches the existing Uzbek translations for "added"/"deleted" and maintains
consistency in the favorites UI.
- Around line 465-471: The "entry-tip.tip" value is still in English; replace it
with the Uzbek translation to match "entry-tip.title" ("Sovg'a") — e.g., use an
appropriate Uzbek term for "tip" (gratuity) such as "Sovg'a" or another
agreed-upon word, and update the "entry-tip.tip" string (and optionally related
strings like "send-tip", "count", "count_plural" in the same "entry-tip" object)
so all fields are consistently translated into Uzbek.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3b1b78ce-a480-44c2-a74c-83096f8d45cd

📥 Commits

Reviewing files that changed from the base of the PR and between ba408de and 42403e2.

📒 Files selected for processing (23)
  • apps/web/src/features/i18n/locales/ac-ace.json
  • apps/web/src/features/i18n/locales/bg-BG.json
  • apps/web/src/features/i18n/locales/de-DE.json
  • apps/web/src/features/i18n/locales/es-ES.json
  • apps/web/src/features/i18n/locales/fr-FR.json
  • apps/web/src/features/i18n/locales/hi-IN.json
  • apps/web/src/features/i18n/locales/id-ID.json
  • apps/web/src/features/i18n/locales/it-IT.json
  • apps/web/src/features/i18n/locales/ja-JP.json
  • apps/web/src/features/i18n/locales/lt-LT.json
  • apps/web/src/features/i18n/locales/nl-NL.json
  • apps/web/src/features/i18n/locales/pcm-NG.json
  • apps/web/src/features/i18n/locales/pl-PL.json
  • apps/web/src/features/i18n/locales/pt-PT.json
  • apps/web/src/features/i18n/locales/ru-RU.json
  • apps/web/src/features/i18n/locales/sr-CS.json
  • apps/web/src/features/i18n/locales/th-TH.json
  • apps/web/src/features/i18n/locales/tr-TR.json
  • apps/web/src/features/i18n/locales/uk-UA.json
  • apps/web/src/features/i18n/locales/ur-PK.json
  • apps/web/src/features/i18n/locales/uz-UZ.json
  • apps/web/src/features/i18n/locales/yo-NG.json
  • apps/web/src/features/i18n/locales/zh-CN.json

},
"entry-tip": {
"title": "Бакшиш",
"tip": "Tip",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Localize the new entry-tip.tip key in bg-BG.

Line 467 adds a new English value ("Tip") in the Bulgarian locale, which introduces mixed-language UI for this new key.

Suggested fix
   "entry-tip": {
     "title": "Бакшиш",
-    "tip": "Tip",
+    "tip": "Бакшиш",
     "send-tip": "Send a tip",
📝 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
"tip": "Tip",
"entry-tip": {
"title": "Бакшиш",
"tip": "Бакшиш",
"send-tip": "Send a tip",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/bg-BG.json` at line 467, The bg-BG locale
currently contains an English string for the new key "entry-tip.tip"; update the
value in apps/web/src/features/i18n/locales/bg-BG.json so "entry-tip.tip" is
translated to Bulgarian (e.g., replace "Tip" with the Bulgarian equivalent such
as "Съвет") to avoid mixed-language UI.

"add": "Favorito - recibir notificaciones sobre nuevos posts",
"added": "¡Añadido a favoritos! Serás notificado cuando publiquen nuevos posts",
"delete": "Eliminar de favoritos y detener notificaciones",
"delete": "Eliminar de Favoritos",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Keep sentence case consistent in favorite-btn.delete (Line 1648).

"Favoritos" should be lowercase to match locale style and adjacent strings.

Suggested fix
-    "delete": "Eliminar de Favoritos",
+    "delete": "Eliminar de favoritos",
📝 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
"delete": "Eliminar de Favoritos",
"delete": "Eliminar de favoritos",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/es-ES.json` at line 1648, The locale
string key favorite-btn.delete currently uses sentence case ("Eliminar de
Favoritos"); update it to use consistent sentence case by lowercasing
"Favoritos" to "favoritos" so the value becomes "Eliminar de favoritos",
ensuring it matches adjacent locale entries and style conventions for the es-ES
JSON.

"add": "Bookmark - get notified about new comments",
"added": "Bookmarked! You'll be notified about new comments on this post",
"delete": "Remove bookmark and stop notifications",
"add": "Bookmark get notified about new comments",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Localize new add labels to Hindi for hi-IN.

Line 450 and Line 1646 are still in English, which creates mixed-language UI in the Hindi locale.

Suggested fix
-    "add": "Bookmark — get notified about new comments",
+    "add": "बुकमार्क — नई टिप्पणियों की सूचना पाएं",
...
-    "add": "Favorite — get notified about new posts",
+    "add": "पसंदीदा — नई पोस्ट की सूचना पाएं",

Also applies to: 1646-1646

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

In `@apps/web/src/features/i18n/locales/hi-IN.json` at line 450, Translate the
English "add" labels into Hindi in the hi-IN locale JSON: replace the value for
the "add" key (currently "Bookmark — get notified about new comments") at both
occurrences in the file (the keys at the two locations) with an appropriate
Hindi localization string (e.g., "बुकमार्क — नई टिप्पणियों की सूचनाएं प्राप्त
करें") ensuring the same phrasing is used for both entries so the UI is
consistently localized.

},
"entry-tip": {
"title": "टिप",
"tip": "Tip",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Translate entry-tip.tip for Hindi locale.

Line 467 is still English ("Tip"), while surrounding keys are localized.

Suggested fix
-    "tip": "Tip",
+    "tip": "टिप",
📝 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
"tip": "Tip",
"tip": "टिप",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/hi-IN.json` at line 467, The Hindi locale
value for the key entry-tip.tip is still English ("Tip"); update the value in
apps/web/src/features/i18n/locales/hi-IN.json by replacing the current "tip":
"Tip" entry with a proper Hindi translation (e.g., "tip": "सुझाव" or another
preferred Hindi term) so the entry-tip.tip key is localized consistently with
surrounding keys.

Comment on lines +1646 to +1648
"add": "Favorite get notified about new posts",
"added": "Favorilere eklendi",
"delete": "Favorilerden kaldır",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Localize favorite-btn.add for Turkish locale consistency.

Line 1646 remains English. Lines 1647-1648 are good Turkish translations.

💡 Proposed fix
-    "add": "Favorite — get notified about new posts",
+    "add": "Favori — yeni gönderilerden haberdar ol",
📝 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
"add": "Favoriteget notified about new posts",
"added": "Favorilere eklendi",
"delete": "Favorilerden kaldır",
"add": "Favoriyeni gönderilerden haberdar ol",
"added": "Favorilere eklendi",
"delete": "Favorilerden kaldır",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/tr-TR.json` around lines 1646 - 1648, The
key favorite-btn.add (JSON key "add" in this locale file) is still in English;
update its value to a Turkish translation matching the other keys (e.g.,
"Favorilere ekle — yeni gönderiler hakkında bildirim al") so it reads
consistently with "added" and "delete" in the tr-TR.json; edit the "add" entry
to the Turkish string and save.

},
"entry-tip": {
"title": "Порада",
"tip": "Tip",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Localize entry-tip.tip to Ukrainian.

"Tip" is still English in the Ukrainian locale, which causes mixed-language UI text.

💬 Suggested fix
-    "tip": "Tip",
+    "tip": "Порада",
📝 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
"tip": "Tip",
"tip": "Порада",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/uk-UA.json` at line 467, The Ukrainian
locale entry "entry-tip.tip" currently contains the English string "Tip"; update
the value to a proper Ukrainian translation (e.g., "Порада" or "Підказка") so
the key "tip" in the uk-UA.json locale is fully localized and no longer mixes
languages.

Comment on lines +1646 to +1648
"add": "Уподобання - отримувати повідомлення про нові повідомлення",
"added": "Додано до обраного",
"delete": "Видалити з обраного",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use an action label for favorite-btn.add to match add/delete flow.

Current copy reads like a long description and shifts meaning to “new messages.” A short action label would be clearer and consistent with neighboring keys.

✏️ Suggested fix
-    "add": "Уподобання - отримувати повідомлення про нові повідомлення",
+    "add": "Додати до обраного",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/uk-UA.json` around lines 1646 - 1648, The
"add" translation for the favorites button is a long descriptive string; replace
the value for the key favorite-btn.add with a short action label consistent with
the add/delete flow (e.g., "Додати до обраного") so it matches neighboring keys
favorite-btn.added and favorite-btn.delete and keeps the UI concise and
consistent.

Comment on lines +450 to +452
"add": "书签-获得关于新评论的通知",
"added": "已添加到书签",
"delete": "从书签中删除",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use the same dash style as favorite-btn for consistency.

bookmark-btn.add on Line 450 still uses -, while the paired CTA on Line 1646 uses an em dash (). Please align these to avoid inconsistent UI copy.

✏️ Suggested text adjustment
-    "add": "书签-获得关于新评论的通知",
+    "add": "书签 — 收到关于新评论的通知",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/zh-CN.json` around lines 450 - 452, Update
the Chinese locale string for the bookmark button to use the same em dash style
as the paired CTA: locate the JSON key "add" (referenced as bookmark-btn.add)
and replace the hyphen "-" in "书签-获得关于新评论的通知" with an em dash "—" so it matches
favorite-btn's punctuation and keeps UI copy consistent.

},
"entry-tip": {
"title": "礼物",
"tip": "Tip",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Localize the new entry-tip.tip string for zh-CN.

Line 467 introduces "tip": "Tip" in English inside the Chinese locale file.

✏️ Suggested localization
-    "tip": "Tip",
+    "tip": "打赏",
📝 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
"tip": "Tip",
"tip": "打赏",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/zh-CN.json` at line 467, The zh-CN locale
contains an English value for the new key "entry-tip.tip"; update the value for
the "tip" key under the entry-tip namespace to a proper Chinese translation
(e.g., "提示" or another appropriate localized string) so the zh-CN JSON does not
contain English text for "entry-tip.tip".

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

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

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

⚠️ Outside diff range comments (1)
apps/web/src/features/i18n/locales/lt-LT.json (1)

648-651: ⚠️ Potential issue | 🟡 Minor

Inconsistent language in favorite-btn block.

Same issue as bookmark-btn: the add value is in English while sibling keys are in Lithuanian.

-    "add": "Favorite — get notified about new posts",
+    "add": "Mėgstamiausi — gauti pranešimus apie naujus įrašus",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/lt-LT.json` around lines 648 - 651, The
"favorite-btn" block contains an English value for the "add" key which is
inconsistent with its Lithuanian siblings (same problem as "bookmark-btn");
locate the "favorite-btn" JSON object and replace the "add" value with the
correct Lithuanian translation (matching the style/terminology used in
"bookmark-btn") so all keys in favorite-btn are in Lithuanian.
♻️ Duplicate comments (10)
apps/web/src/features/i18n/locales/sr-CS.json (2)

1648-1650: ⚠️ Potential issue | 🟡 Minor

Mixed translation issues in favorite-btn section.

  1. Line 1648: add is entirely in English and should be translated to Serbian.
  2. Line 1650: The tense issue (delete using past-tense instead of imperative) was already flagged in previous reviews.
Suggested fix for untranslated "add" key
   "favorite-btn": {
-    "add": "Favorite — get notified about new posts",
+    "add": "Omiljeno — primajte obaveštenja o novim objavama",
     "added": "Dodato u omiljeno",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/sr-CS.json` around lines 1648 - 1650,
Translate the untranslated "add" value from English to Serbian and fix the tense
for the "delete" key in the sr-CS.json locale: replace "add": "Favorite — get
notified about new posts" with an appropriate Serbian translation (e.g.,
imperative/infinitive matching UI context), ensure "added": "Dodato u omiljeno"
remains correct, and change "delete": from past-tense to an imperative form
consistent with the button/action wording (e.g., "Ukloni iz omiljenih" or
similar) so keys "add", "added", and "delete" are consistent and localized.

452-454: ⚠️ Potential issue | 🟡 Minor

Mixed translation issues in bookmark-btn section.

  1. Line 452: add is entirely in English and should be translated to Serbian.
  2. Lines 453-454: The tense issues (added using imperative, delete using past-tense) were already flagged in previous reviews.
Suggested fix for untranslated "add" key
   "bookmark-btn": {
-    "add": "Bookmark — get notified about new comments",
+    "add": "Obeleživač — primajte obaveštenja o novim komentarima",
     "added": "Dodaj u obeleživače",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/sr-CS.json` around lines 452 - 454,
Translate the untranslated "add" key to Serbian and make the three bookmark keys
tense-consistent: change "add" to a Serbian imperative like "Dodaj u
obeleživače", change "added" to the past/state form "Dodato u obeleživače", and
change "delete" to the imperative "Ukloni iz obeleživača" (or alternatively make
all three past-state forms if you prefer state labels); update the keys "add",
"added", and "delete" in sr-CS.json accordingly.
apps/web/src/features/i18n/locales/id-ID.json (2)

106-108: ⚠️ Potential issue | 🟡 Minor

Localize new g keys for Indonesian.

Lines 106-108 introduce English values in the id-ID locale:

  • "pause": "Pause" → should be "Jeda"
  • "start": "Start" → should be "Mulai"
  • "updated": "Updated" → should be "Diperbarui" (as noted in prior review)
💡 Suggested fix
-    "pause": "Pause",
-    "start": "Start",
-    "updated": "Updated"
+    "pause": "Jeda",
+    "start": "Mulai",
+    "updated": "Diperbarui"

,

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

In `@apps/web/src/features/i18n/locales/id-ID.json` around lines 106 - 108, Update
the Indonesian locale values for the keys "pause", "start", and "updated" in the
id-ID JSON so they are translated to Indonesian: change the value for "pause" to
"Jeda", "start" to "Mulai", and "updated" to "Diperbarui" (ensure you edit the
entries with keys "pause", "start", and "updated" in the locales file).

3280-3317: ⚠️ Potential issue | 🟡 Minor

ai-assist block contains English values instead of Indonesian translations.

All 37 keys in the new ai-assist namespace have English values. For the id-ID locale, these should be translated to Indonesian. Examples:

  • "title": "AI Writing Assistant""Asisten Penulisan AI"
  • "submit-button": "Run AI Assist""Jalankan Asisten AI"
  • "error-text-too-short" message and others

Additionally, as noted in a prior review, this namespace is missing from the base locale en-US.json, creating a schema mismatch that should be resolved first before translations are added to other locales.

,

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

In `@apps/web/src/features/i18n/locales/id-ID.json` around lines 3280 - 3317, The
ai-assist localization block currently contains English strings for all keys
(e.g., "ai-assist" -> "title", "submit-button", "error-text-too-short", etc.);
fix by first adding the same "ai-assist" namespace and all 37 keys with English
values to the base en-US.json to keep schemas consistent, then replace the
English values in apps/web/src/features/i18n/locales/id-ID.json under the
"ai-assist" object with proper Indonesian translations (examples: "title" ->
"Asisten Penulisan AI", "submit-button" -> "Jalankan Asisten AI", translate
"error-text-too-short" and all other keys) ensuring keys are unchanged and
placeholders like {{count}}, {{required}}, {{available}} are preserved.
apps/web/src/features/i18n/locales/tr-TR.json (3)

1648-1650: ⚠️ Potential issue | 🟡 Minor

favorite-btn.add is still English.

Line 1648 keeps the English copy while the other states are Turkish, so this still surfaces mixed-language UI.

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

In `@apps/web/src/features/i18n/locales/tr-TR.json` around lines 1648 - 1650, The
key favorite-btn.add has English text while sibling keys are Turkish; update the
value for "add" (favorite-btn.add) to a Turkish translation such as "Favorilere
ekle — yeni gönderiler hakkında bildirim al" so the three states ("add",
"added", "delete") are consistently localized.

452-454: ⚠️ Potential issue | 🟡 Minor

bookmark-btn.add is still English.

Line 452 remains untranslated, so this action will still render mixed-language copy in the Turkish locale.

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

In `@apps/web/src/features/i18n/locales/tr-TR.json` around lines 452 - 454, The
"bookmark-btn.add" translation is still in English; update the value for the
"add" key in the tr-TR JSON (alongside "added" and "delete") to the correct
Turkish phrase so the locale is consistent — replace "Bookmark — get notified
about new comments" with an appropriate Turkish translation (e.g., a concise
Turkish string conveying bookmarking and notification about new comments)
ensuring proper punctuation and JSON escaping.

467-470: ⚠️ Potential issue | 🟡 Minor

entry-tip.tip is still English.

title is localized, but Line 469 still uses "Tip", so this CTA stays inconsistent in the Turkish UI.

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

In `@apps/web/src/features/i18n/locales/tr-TR.json` around lines 467 - 470, The
"entry-tip.tip" value is still English; update the "entry-tip" object so the
"tip" key is translated into Turkish (matching the localized "title"), e.g.
replace the current "tip" value with the correct Turkish term (refer to the
"entry-tip" object and keys "tip" and "send-tip" to keep consistency across the
CTA).
apps/web/src/features/i18n/locales/ja-JP.json (1)

469-469: ⚠️ Potential issue | 🟡 Minor

Localize entry-tip.tip instead of leaving it in English.

"tip": "Tip" will show mixed-language UI in ja-JP. Using the same Japanese term as the rest of the tipping flow, e.g. チップ, keeps this section consistent.

💬 Suggested fix
-    "tip": "Tip",
+    "tip": "チップ",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/ja-JP.json` at line 469, Replace the
English string for the JSON key "tip" under the "entry-tip" namespace (currently
'"tip": "Tip"') with the Japanese localized term used elsewhere in the tipping
flow (e.g. '"tip": "チップ"') so the ja-JP locale is consistent; update the
"entry-tip.tip" value to "チップ" in the ja-JP locale file and ensure the JSON
remains valid (quotes, commas) after the change.
apps/web/src/features/i18n/locales/zh-CN.json (2)

469-469: ⚠️ Potential issue | 🟡 Minor

Translate the new entry-tip.tip label.

"Tip" is still English in the zh-CN locale, so this label will leak untranslated UI text.

✏️ Suggested localization
-    "tip": "Tip",
+    "tip": "打赏",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/zh-CN.json` at line 469, The zh-CN locale
contains the key "entry-tip.tip" currently set to the English string "Tip";
update the value to the Chinese translation (e.g., "提示" or the preferred
localized term) so the entry-tip UI doesn't show English text—edit the "tip"
value under the "entry-tip" object in the zh-CN.json file to the correct Chinese
string.

452-452: ⚠️ Potential issue | 🟡 Minor

Use the same dash style as the paired favorite CTA.

bookmark-btn.add still uses -, while favorite-btn.add on Line 1648 uses an em dash. Keeping them aligned avoids visibly inconsistent CTA copy.

✏️ Suggested text adjustment
-    "add": "书签-获得关于新评论的通知",
+    "add": "书签 — 收到关于新评论的通知",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/zh-CN.json` at line 452, The translation
key "bookmark-btn.add" currently uses a hyphen "-" while the paired
"favorite-btn.add" uses an em dash "—"; update the value for bookmark-btn.add to
replace the hyphen with the same em dash character so both CTA strings use the
same dash style (match "favorite-btn.add" formatting).
🟡 Minor comments (29)
apps/web/src/features/i18n/locales/sr-CS.json-469-469 (1)

469-469: ⚠️ Potential issue | 🟡 Minor

Untranslated string.

entry-tip.tip should be translated to Serbian ("Napojnica" or "Doniraj").

Suggested fix
-    "tip": "Tip",
+    "tip": "Napojnica",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/sr-CS.json` at line 469, The JSON key
entry-tip.tip currently contains the English string "Tip"; update its value to
the Serbian translation by replacing "Tip" with an appropriate Serbian word such
as "Napojnica" (or "Doniraj" if context implies donating), ensuring proper JSON
string quoting and preserving the existing key structure in the locales file.
apps/web/src/features/i18n/locales/sr-CS.json-106-108 (1)

106-108: ⚠️ Potential issue | 🟡 Minor

Untranslated strings in Serbian locale.

g.start and g.updated are in English. They should be translated to Serbian:

  • "Start" → "Započni" or "Pokreni"
  • "Updated" → "Ažurirano"
Suggested fix
     "pause": "Pause",
-    "start": "Start",
-    "updated": "Updated"
+    "start": "Započni",
+    "updated": "Ažurirano"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/sr-CS.json` around lines 106 - 108, The
Serbian locale contains English values for the keys "start" and "updated";
update the values in sr-CS.json for "start" to a Serbian translation such as
"Započni" or "Pokreni" and for "updated" to "Ažurirano" so g.start and g.updated
are localized correctly.
apps/web/src/features/i18n/locales/hi-IN.json-107-108 (1)

107-108: ⚠️ Potential issue | 🟡 Minor

Localize g.start and g.updated to Hindi.

These new keys are in English while other keys in the g namespace are localized to Hindi.

Suggested fix
-    "start": "Start",
-    "updated": "Updated"
+    "start": "शुरू करें",
+    "updated": "अपडेट किया गया"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/hi-IN.json` around lines 107 - 108, The
two keys "g.start" and "g.updated" in the hi-IN locale are still in English;
replace their values with correct Hindi translations (e.g., "Start" -> "शुरू
करें" or "शुरू" and "Updated" -> "अपडेट किया गया" or "अद्यतन"), updating the
values for the "start" and "updated" entries in the hi-IN JSON so they match the
rest of the g namespace; preserve JSON syntax/quoting and run your
locale/formatting lint to ensure validity after the change.
apps/web/src/features/i18n/locales/hi-IN.json-3280-3317 (1)

3280-3317: ⚠️ Potential issue | 🟡 Minor

Translate the entire ai-assist block to Hindi.

The newly added ai-assist block contains ~38 keys, all in English. For consistency with the rest of the Hindi locale, these strings should be translated.

Example translations for key strings
-    "title": "AI Writing Assistant",
+    "title": "AI लेखन सहायक",
-    "toolbar-button": "AI Assist",
+    "toolbar-button": "AI सहायता",
-    "balance-label": "Balance",
+    "balance-label": "शेष राशि",
-    "action-improve": "Improve Writing",
+    "action-improve": "लेखन सुधारें",
-    "action-summarize": "Summarize",
+    "action-summarize": "सारांश",
-    "submit-button": "Run AI Assist",
+    "submit-button": "AI सहायता चलाएं",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/hi-IN.json` around lines 3280 - 3317,
Translate the entire "ai-assist" JSON object into Hindi: replace each English
string value under the "ai-assist" key (e.g., "title", "toolbar-button",
"balance-label", "points-unit", "free-label", "free-remaining", "cost-label",
"action-label", "text-label", "text-placeholder", "chars-remaining",
"min-chars", "action-improve", "action-improve-desc", "action-suggest_tags",
"action-suggest_tags-desc", "action-generate_title",
"action-generate_title-desc", "action-summarize", "action-summarize-desc",
"action-check_grammar", "action-check_grammar-desc", "submit-button",
"submitting", "result-title", "apply-button", "copy-button", "copied",
"try-again", "try-another", "success", "error-insufficient-points",
"error-content-policy", "error-rate-limit", "error-auth", "error-generic",
"error-text-too-short") with idiomatic Hindi strings, preserving interpolation
tokens like {{count}}, {{required}}, and {{available}} exactly as-is and keeping
punctuation/formatting consistent with the rest of hi-IN.json.
apps/web/src/features/i18n/locales/ac-ace.json-452-454 (1)

452-454: ⚠️ Potential issue | 🟡 Minor

Avoid mixed-language bookmark/favorite copy.

These updates introduce English CTA/state text into the ac-ace locale, and bookmark-btn now mixes English and Acehnese in the same block. That makes the saved/favorited flows feel inconsistent for this locale. Please translate these strings, or rely on fallback behavior consistently instead of partially localizing the block.

Also applies to: 1648-1650

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

In `@apps/web/src/features/i18n/locales/ac-ace.json` around lines 452 - 454, The
three keys "add", "added", and "delete" in the ac-ace locale currently mix
English and Acehnese (e.g., "Bookmark — get notified about new comments") which
breaks consistency; update these values to full Acehnese translations (or remove
them so the app falls back consistently) for the bookmark/favorite flow (keys:
"add", "added", "delete" in ac-ace.json and any related "bookmark-btn" block)
ensuring all strings in that block are either fully localized or fully
fallback-driven.
apps/web/src/features/i18n/locales/ac-ace.json-106-108 (1)

106-108: ⚠️ Potential issue | 🟡 Minor

Keep new global labels localized in ac-ace.

g.start and g.updated are added as English strings, so users on the Acehnese locale will see mixed-language chrome for common actions. Please translate these values here, or leave them to the fallback locale if untranslated copy is expected.

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

In `@apps/web/src/features/i18n/locales/ac-ace.json` around lines 106 - 108, The
Acehnese locale file ac-ace.json contains English strings for the keys "start"
and "updated" (alongside "pause"); update those entries so they are translated
into Acehnese (replace the values for "start" and "updated" with proper Acehnese
text), or remove those keys so the app falls back to the default locale if you
intentionally want untranslated copy; locate the keys "start" and "updated" in
ac-ace.json and apply the translation or removal accordingly.
apps/web/src/features/i18n/locales/nl-NL.json-3299-3300 (1)

3299-3300: ⚠️ Potential issue | 🟡 Minor

Untranslated English strings in Dutch locale file.

These two entries are in English while all other ai-assist entries are translated to Dutch. This appears to be an oversight.

Suggested translations
-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "Samenvatten",
+    "action-summarize-desc": "Maak een korte samenvatting",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/nl-NL.json` around lines 3299 - 3300, The
Dutch locale contains two untranslated keys ("action-summarize" and
"action-summarize-desc") left in English; update their values to proper Dutch
translations consistent with other ai-assist entries (e.g., replace "Summarize"
and "Create a TL;DR summary" with equivalent Dutch strings), ensuring you only
change the values for the keys action-summarize and action-summarize-desc and
preserve JSON formatting and punctuation.
apps/web/src/features/i18n/locales/nl-NL.json-3294-3294 (1)

3294-3294: ⚠️ Potential issue | 🟡 Minor

Mistranslation: "Polish" translated as nationality instead of verb.

"Poolse grammatica" translates to "Polish (nationality) grammar" — the English source likely uses "Polish" as a verb meaning "to refine/improve." Consider using "Verfijn" or "Verbeter" instead.

Suggested fix
-    "action-improve-desc": "Poolse grammatica, helderheid en stijl",
+    "action-improve-desc": "Verfijn grammatica, helderheid en stijl",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/nl-NL.json` at line 3294, The translation
for the key "action-improve-desc" uses "Poolse grammatica" which reads as the
nationality "Polish"; change the value to use the verb form (e.g., "Verbeter
grammatica, helderheid en stijl" or "Verfijn grammatica, helderheid en stijl")
so it matches the English intent to "polish" text; update the JSON value for
"action-improve-desc" accordingly.
apps/web/src/features/i18n/locales/es-ES.json-3299-3300 (1)

3299-3300: ⚠️ Potential issue | 🟡 Minor

Untranslated English strings.

Both "action-summarize" and "action-summarize-desc" contain English text instead of Spanish.

Suggested fix
-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "Resumir",
+    "action-summarize-desc": "Crear un resumen breve",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/es-ES.json` around lines 3299 - 3300, The
two keys "action-summarize" and "action-summarize-desc" in the es-ES locale
contain English text; replace their values with Spanish translations (for
example, set "action-summarize" to "Resumir" and "action-summarize-desc" to
"Crear un resumen breve" or "Crear un resumen tipo TL;DR") so the UI shows
Spanish strings for those identifiers.
apps/web/src/features/i18n/locales/es-ES.json-3291-3291 (1)

3291-3291: ⚠️ Potential issue | 🟡 Minor

Untranslated English string.

"chars-remaining" contains English text instead of Spanish.

Suggested fix
-    "chars-remaining": "{{count}} characters remaining",
+    "chars-remaining": "{{count}} caracteres restantes",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/es-ES.json` at line 3291, The key
"chars-remaining" currently contains English text; update its value to the
Spanish translation (e.g., "Quedan {{count}} caracteres" or "Quedan {{count}}
caracteres restantes") so the JSON entry for "chars-remaining" in es-ES.json is
fully localized; ensure the interpolation token {{count}} is preserved exactly.
apps/web/src/features/i18n/locales/es-ES.json-3294-3294 (1)

3294-3294: ⚠️ Potential issue | 🟡 Minor

Mistranslation: "polish" translated as nationality.

"Gramática polaca" means "Polish grammar" (the nationality). The original intent was likely "Polish grammar" as in "to polish/refine grammar."

Suggested fix
-    "action-improve-desc": "Gramática polaca, claridad y estilo",
+    "action-improve-desc": "Pulir gramática, claridad y estilo",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/es-ES.json` at line 3294, The translation
for the key "action-improve-desc" erroneously uses a nationality ("Gramática
polaca") instead of the verb "to polish"; update the value for
"action-improve-desc" to a Spanish phrase that conveys refining text (e.g.,
"Pulir gramática, claridad y estilo" or "Mejorar gramática, claridad y estilo")
so it matches the original intent of polishing/refining grammar, clarity and
style.
apps/web/src/features/i18n/locales/uk-UA.json-3311-3311 (1)

3311-3311: ⚠️ Potential issue | 🟡 Minor

Incorrect translation: "Автор виконаний" doesn't convey success.

"Автор виконаний!" literally means "The author is done/completed!" which doesn't make sense as a success message. The original English "AI assist completed!" should be translated appropriately.

💬 Suggested fix
-    "success": "Автор виконаний!",
+    "success": "ШІ допомогу надано!",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/uk-UA.json` at line 3311, The "success"
translation value is incorrect — replace the literal "Автор виконаний!" with a
proper Ukrainian rendering of "AI assist completed!" such as "Допомога ШІ
завершена!" or "Допомога штучного інтелекту завершена!" by updating the
"success" key in the locales JSON (key: "success") to the chosen corrected
string.
apps/web/src/features/i18n/locales/uk-UA.json-3294-3294 (1)

3294-3294: ⚠️ Potential issue | 🟡 Minor

Incorrect translation: "Польська" means "Polish (language)".

The description "Польська граматика, ясність і стиль" translates back as "Polish [language] grammar, clarity and style" rather than "Polish [verb: refine] grammar...". The intended meaning is to refine/improve writing.

💬 Suggested fix
-    "action-improve-desc": "Польська граматика, ясність і стиль",
+    "action-improve-desc": "Покращити граматику, ясність і стиль",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/uk-UA.json` at line 3294, The value for
the JSON key "action-improve-desc" is using "Польська" (Polish language) instead
of an imperative verb; update the string value to convey "refine/improve"
writing — for example replace "Польська граматика, ясність і стиль" with
"Удосконалити граматику, ясність і стиль" or "Поліпшити граматику, чіткість і
стиль" so the key action-improve-desc reads as an instruction to improve
grammar, clarity and style.
apps/web/src/features/i18n/locales/uk-UA.json-3299-3300 (1)

3299-3300: ⚠️ Potential issue | 🟡 Minor

Untranslated English strings in Ukrainian locale.

Both action-summarize and action-summarize-desc contain English text instead of Ukrainian translations.

💬 Suggested fix
-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "Підсумувати",
+    "action-summarize-desc": "Створити короткий виклад",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/uk-UA.json` around lines 3299 - 3300,
Replace the English placeholder values for the keys "action-summarize" and
"action-summarize-desc" in the Ukrainian locale with proper Ukrainian
translations; update "action-summarize" to something like "Підсумувати" and
"action-summarize-desc" to "Створити короткий виклад (TL;DR)" or an equivalent
Ukrainian phrase that conveys "Create a TL;DR summary."
apps/web/src/features/i18n/locales/lt-LT.json-452-455 (1)

452-455: ⚠️ Potential issue | 🟡 Minor

Inconsistent language in bookmark-btn block.

The add value is in English while added, delete, and deleted are in Lithuanian. This creates an inconsistent UX for Lithuanian users where the tooltip appears in a different language than the confirmation messages.

Consider translating:

-    "add": "Bookmark — get notified about new comments",
+    "add": "Žymė — gauti pranešimus apie naujus komentarus",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/lt-LT.json` around lines 452 - 455, The
"add" translation string is in English while the sibling keys "added", "delete",
and "deleted" are Lithuanian; update the "add" key to a Lithuanian translation
to keep the bookmark-btn block consistent (replace the "add" value with
something like "Įtraukti į žymes — gauti pranešimus apie naujus komentarus" or
another equivalent Lithuanian phrasing) so all four keys ("add", "added",
"delete", "deleted") are in the same language.
apps/web/src/features/i18n/locales/lt-LT.json-469-469 (1)

469-469: ⚠️ Potential issue | 🟡 Minor

Untranslated tip value in entry-tip block.

The tip value is English while the adjacent title key is properly translated to Lithuanian ("Arbatpinigiai").

-    "tip": "Tip",
+    "tip": "Arbatpinigiai",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/lt-LT.json` at line 469, The entry-tip
block in the Lithuanian locale has the "tip" value still in English ("Tip");
update the "tip" string in apps/web/src/features/i18n/locales/lt-LT.json (the
"entry-tip" object) to the correct Lithuanian translation (e.g., match the
context of the "title" key like "Arbatpinigiai" or use the appropriate
Lithuanian word for "Tip") so the key "tip" is fully localized.
apps/web/src/features/i18n/locales/fr-FR.json-469-469 (1)

469-469: ⚠️ Potential issue | 🟡 Minor

Translate "Tip" to French.

This string remains in English while surrounding keys in the same entry-tip block are already translated (e.g., "title": "Pourboire"). For consistency, this should also be in French.

🌐 Suggested fix
-    "tip": "Tip",
+    "tip": "Pourboire",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/fr-FR.json` at line 469, The "tip"
translation key in the French locale is still in English; update the value of
the "tip" key in the entry-tip block (key name "tip") in
apps/web/src/features/i18n/locales/fr-FR.json to its French equivalent ("Astuce"
or "Pourboire" depending on context) so it matches the surrounding translated
keys like "title": "Pourboire".
apps/web/src/features/i18n/locales/id-ID.json-452-452 (1)

452-452: ⚠️ Potential issue | 🟡 Minor

Localize bookmark-btn.add for Indonesian.

The value is English but should be Indonesian for the id-ID locale.

💡 Suggested fix
-    "add": "Bookmark — get notified about new comments",
+    "add": "Tandai — dapatkan notifikasi tentang komentar baru",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/id-ID.json` at line 452, Update the id-ID
translation for the key "bookmark-btn.add" so it's in Indonesian instead of
English; replace the current English value with an Indonesian phrase such as
"Tambahkan ke bookmark — dapatkan pemberitahuan tentang komentar baru" (or
another natural Indonesian equivalent) in the locales file to ensure correct
localization.
apps/web/src/features/i18n/locales/id-ID.json-1648-1648 (1)

1648-1648: ⚠️ Potential issue | 🟡 Minor

Localize favorite-btn.add for Indonesian.

The value is English but should be Indonesian for the id-ID locale.

💡 Suggested fix
-    "add": "Favorite — get notified about new posts",
+    "add": "Favorit — dapatkan notifikasi tentang postingan baru",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/id-ID.json` at line 1648, The locale key
"favorite-btn.add" is still in English; update its value in the id-ID locale
JSON to the correct Indonesian translation (e.g., "Favorit — dapatkan
pemberitahuan tentang postingan baru" or another preferred Indonesian phrasing).
Edit the "favorite-btn.add" entry in
apps/web/src/features/i18n/locales/id-ID.json to replace the English string with
the Indonesian string, keeping JSON syntax (quotes and trailing comma) intact.
apps/web/src/features/i18n/locales/it-IT.json-3280-3318 (1)

3280-3318: ⚠️ Potential issue | 🟡 Minor

Multiple untranslated strings and a mistranslation in ai-assist section.

Several values remain in English, breaking locale consistency:

Line Key Issue
3282 toolbar-button "Assist AI" is English
3299 action-summarize "Summarize" is English
3300 action-summarize-desc "Create a TL;DR summary" is English
3317 error-text-too-short Entire string is English

Additionally, line 3294 has a mistranslation:

  • "Grammatica polacca, chiarezza e stile" — "polacca" means "Polish" (nationality), not "polish" (to refine). Likely intended: "Perfeziona grammatica, chiarezza e stile".
Suggested fixes
-    "toolbar-button": "Assist AI",
+    "toolbar-button": "Assistenza IA",
-    "action-improve-desc": "Grammatica polacca, chiarezza e stile",
+    "action-improve-desc": "Perfeziona grammatica, chiarezza e stile",
-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "Riassumi",
+    "action-summarize-desc": "Crea un riassunto breve",
-    "error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
+    "error-text-too-short": "Il testo è troppo corto. Sono richiesti almeno {{count}} caratteri."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/it-IT.json` around lines 3280 - 3318, Fix
untranslated and mistranslated strings in the ai-assist locale: replace
"toolbar-button" value with a proper Italian label (e.g., "Assistente AI"),
change "action-summarize" to "Riepiloga" and "action-summarize-desc" to "Crea un
riepilogo TL;DR", correct "action-improve-desc" from "Grammatica polacca,
chiarezza e stile" to something like "Perfeziona grammatica, chiarezza e stile",
and translate "error-text-too-short" to Italian (e.g., "Il testo è troppo corto.
Minimo {{count}} caratteri richiesti"). Ensure you update the values for keys:
"toolbar-button", "action-summarize", "action-summarize-desc",
"action-improve-desc", and "error-text-too-short".
apps/web/src/features/i18n/locales/tr-TR.json-106-108 (1)

106-108: ⚠️ Potential issue | 🟡 Minor

Localize the new g labels.

Lines 106-108 add pause, start, and updated in English, so the Turkish UI will still show mixed-language controls here.

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

In `@apps/web/src/features/i18n/locales/tr-TR.json` around lines 106 - 108, The
tr-TR locale file contains English values for the keys "pause", "start", and
"updated"; update those entries in locales/tr-TR.json to their Turkish
equivalents (replace "Pause" -> "Duraklat", "Start" -> "Başlat", "Updated" ->
"Güncellendi") so the UI displays consistent Turkish labels for the pause,
start, and updated controls.
apps/web/src/features/i18n/locales/pl-PL.json-3280-3317 (1)

3280-3317: ⚠️ Potential issue | 🟡 Minor

Complete the Polish localization in ai-assist.

Several new strings are still English on Lines 3286, 3291, 3292, 3299-3300, and 3317, and Line 3294 reads like a mistranslation. This will ship a mixed-language AI assistant UI.

💬 Suggested copy fixes
   "ai-assist": {
     "title": "Asystent pisania SI",
     "toolbar-button": "Asystent SI",
     "balance-label": "Saldo",
     "points-unit": "PUNKTY",
     "free-label": "Darmowe",
-    "free-remaining": "{{count}} free left today",
+    "free-remaining": "Pozostało dziś {{count}} darmowych użyć",
     "cost-label": "Koszt",
     "action-label": "Co chciałbyś zrobić?",
     "text-label": "Twoje treści",
     "text-placeholder": "Wklej lub wpisz wersję roboczą tutaj...",
-    "chars-remaining": "{{count}} characters remaining",
-    "min-chars": "Minimum {{count}} characters required",
+    "chars-remaining": "Pozostało {{count}} znaków",
+    "min-chars": "Wymagane minimum {{count}} znaków",
     "action-improve": "Ulepsz pisanie",
-    "action-improve-desc": "Polskie gramy, jasność i styl",
+    "action-improve-desc": "Popraw gramatykę, jasność i styl",
     "action-suggest_tags": "Zaproponuj tagi",
     "action-suggest_tags-desc": "Uzyskaj odpowiednie tagi dla swojego posta",
     "action-generate_title": "Wygeneruj tytuł",
     "action-generate_title-desc": "Utwórz ważne opcje tytułu",
-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "Podsumuj",
+    "action-summarize-desc": "Utwórz podsumowanie TL;DR",
     "action-check_grammar": "Sprawdź Gramatykę",
     "action-check_grammar-desc": "Napraw gramatykę i pisownię",
     "submit-button": "Uruchom Asystent SI",
@@
-    "error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
+    "error-text-too-short": "Twój tekst jest za krótki. Wymagane minimum {{count}} znaków."
   }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/pl-PL.json` around lines 3280 - 3317, The
ai-assist Polish locale has several untranslated/mistranslated keys; update the
values for "free-remaining", "chars-remaining", "min-chars",
"action-improve-desc", "action-generate_title-desc", "action-summarize",
"action-summarize-desc", and "error-text-too-short" to proper Polish. Replace
"free-remaining" with e.g. "{{count}} darmych pozostało dziś", "chars-remaining"
with "{{count}} znaków pozostało", "min-chars" with "Wymagane minimum {{count}}
znaków", change "action-improve-desc" to a natural Polish phrase about
grammar/clarity/style, "action-generate_title-desc" to a Polish string about
generating title options, translate "action-summarize" to "Skróć" and
"action-summarize-desc" to a Polish TL;DR description, and set
"error-text-too-short" to a Polish error like "Tekst jest za krótki. Wymagane
minimum {{count}} znaków." Ensure wording is idiomatic and consistent with other
locale entries.
apps/web/src/features/i18n/locales/pl-PL.json-467-470 (1)

467-470: ⚠️ Potential issue | 🟡 Minor

Translate the new entry-tip.tip label.

Line 469 is still English ("Tip"), so this section will render mixed Polish/English copy.

💬 Suggested fix
   "entry-tip": {
     "title": "Napiwek",
-    "tip": "Tip",
+    "tip": "Napiwek",
     "send-tip": "Wyślij napiwk",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/pl-PL.json` around lines 467 - 470,
Replace the English value "Tip" for the JSON key entry-tip.tip with its Polish
translation (for example "Wskazówka") so the locale entry is fully Polish;
update the value of "entry-tip.tip" in
apps/web/src/features/i18n/locales/pl-PL.json to the correct Polish string.
apps/web/src/features/i18n/locales/ja-JP.json-3286-3291 (1)

3286-3291: ⚠️ Potential issue | 🟡 Minor

Translate the remaining English labels in ai-assist.

Several newly added strings are still English (free left today, characters remaining, Summarize, Create a TL;DR summary), so the Japanese assistant flow will render with mixed-language UI.

💬 Suggested fix
-    "free-remaining": "{{count}} free left today",
+    "free-remaining": "今日はあと{{count}}回無料",
-    "chars-remaining": "{{count}} characters remaining",
+    "chars-remaining": "残り{{count}}文字",
-    "action-summarize": "Summarize",
+    "action-summarize": "要約",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize-desc": "TL;DR 要約を作成",

Also applies to: 3299-3300

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

In `@apps/web/src/features/i18n/locales/ja-JP.json` around lines 3286 - 3291, The
JSON contains untranslated English strings in the ai-assist locale keys (e.g.,
"free-remaining", "chars-remaining" and the other ai-assist labels like
"Summarize" and "Create a TL;DR summary" referenced at 3299-3300); replace the
English text values with concise Japanese translations so the UI is fully
localized (update the values for "free-remaining" from "{{count}} free left
today" to a Japanese phrase preserving the {{count}} placeholder, for
"chars-remaining" from "{{count}} characters remaining" to Japanese preserving
{{count}}, and translate the "Summarize" and "Create a TL;DR summary" keys
likewise), ensuring you keep the JSON key names and placeholder syntax intact.
apps/web/src/features/i18n/locales/zh-CN.json-3286-3317 (1)

3286-3317: ⚠️ Potential issue | 🟡 Minor

Finish localizing the new ai-assist block.

Several new values are still English or mistranslated in zh-CN — for example free-remaining, chars-remaining, min-chars, action-summarize*, error-insufficient-points, error-text-too-short, and action-improve-desc on Line 3294 currently reads as “波兰语法…”. This will surface mixed-language UI in the new feature.

✏️ Suggested direction
-    "free-remaining": "{{count}} free left today",
+    "free-remaining": "今天还剩 {{count}} 次免费使用",
-    "chars-remaining": "{{count}} characters remaining",
+    "chars-remaining": "还可输入 {{count}} 个字符",
-    "min-chars": "Minimum {{count}} characters required",
+    "min-chars": "至少需要 {{count}} 个字符",
-    "action-improve-desc": "波兰语法、 清晰度 和风格",
+    "action-improve-desc": "优化语法、清晰度和风格",
-    "action-summarize": "Summarize",
+    "action-summarize": "总结",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize-desc": "生成摘要",
-    "error-insufficient-points": "Insufficient points. You need {{required}} but have {{available}}.",
+    "error-insufficient-points": "积分不足。需要 {{required}},当前只有 {{available}}。",
-    "error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
+    "error-text-too-short": "文本太短。至少需要 {{count}} 个字符。"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/zh-CN.json` around lines 3286 - 3317, The
zh-CN locale is incomplete/mixed-language for the new ai-assist block; update
the listed keys to proper Chinese translations: "free-remaining",
"chars-remaining", "min-chars", "action-summarize", "action-summarize-desc",
"action-improve-desc" (replace the incorrect "波兰语法" with "语法、清晰度和风格"),
"action-improve", "error-insufficient-points" (include localized phrasing and
interpolations {{required}}/{{available}}), and "error-text-too-short" (localize
the minimum characters message). Locate these keys in the zh-CN JSON, replace
the English/mistranslated values with concise Chinese equivalents that preserve
placeholders (e.g., "{{count}} 剩余免费次数" / "{{count}} 字符剩余" / "最低需 {{count}} 字符")
and keep interpolation tokens intact.
apps/web/src/features/i18n/locales/ur-PK.json-106-108 (1)

106-108: ⚠️ Potential issue | 🟡 Minor

These ur-PK additions are still English.

The newly added/updated labels will surface English-only copy for users who selected Urdu, especially across the new AI assistant UI. Please provide Urdu translations here, or intentionally rely on the base-locale fallback instead of checking in mixed-language strings.

Also applies to: 452-454, 469-469, 1648-1650, 3280-3317

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

In `@apps/web/src/features/i18n/locales/ur-PK.json` around lines 106 - 108, The
ur-PK locale contains English strings for keys like "pause", "start", "updated"
(and other ranges mentioned) which will surface English for Urdu users; update
each affected key in apps/web/src/features/i18n/locales/ur-PK.json to provide
proper Urdu translations for those keys (e.g., replace "pause"/"start"/"updated"
with their Urdu equivalents) or remove those keys so the app falls back to the
base-locale, ensuring you update all referenced blocks (lines ~452-454, 469,
1648-1650, 3280-3317) and keep the JSON valid.
apps/web/src/features/i18n/locales/pcm-NG.json-3286-3292 (1)

3286-3292: ⚠️ Potential issue | 🟡 Minor

Make the count-based copy singular-safe.

These strings read awkwardly for count === 1 ("1 characters remaining", "Minimum 1 characters required"). Use count-neutral wording or pluralized variants here.

✏️ Suggested wording
-    "free-remaining": "{{count}} free left today",
-    "chars-remaining": "{{count}} characters remaining",
-    "min-chars": "Minimum {{count}} characters required",
+    "free-remaining": "Free uses left today: {{count}}",
+    "chars-remaining": "Characters remaining: {{count}}",
+    "min-chars": "At least {{count}} characters required",
...
-    "error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
+    "error-text-too-short": "Your text is too short. At least {{count}} characters required."

Also applies to: 3317-3317

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

In `@apps/web/src/features/i18n/locales/pcm-NG.json` around lines 3286 - 3292, The
count-based strings ("free-remaining", "chars-remaining", "min-chars") are not
singular-safe; update these translation entries to use pluralization or
count-neutral wording so they render correctly for count === 1 (e.g., supply
plural ICU-style messages or separate one/other variants so "1 character
remaining" and "Minimum 1 character required" are shown correctly). Locate and
replace the values of the keys "free-remaining", "chars-remaining", and
"min-chars" with plural-aware strings following your i18n system's plural syntax
(or use neutral phrasing) so singular and plural counts display properly.
apps/web/src/features/i18n/locales/de-DE.json-469-469 (1)

469-469: ⚠️ Potential issue | 🟡 Minor

Translate entry-tip.tip to German.

Line 469 reintroduces the English noun Tip, while the adjacent strings already use Tipp / Tipps. That will show mixed-language UI in the German locale.

💬 Suggested fix
   "entry-tip": {
     "title": "Hinweis",
-    "tip": "Tip",
+    "tip": "Tipp",
     "send-tip": "Tipp senden",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/de-DE.json` at line 469, The German locale
string entry "entry-tip.tip" is still English ("Tip"); update its value to the
correct German noun "Tipp" so it matches adjacent keys ("Tipp"/"Tipps") and
avoids mixed-language UI; locate the "entry-tip.tip" key in
apps/web/src/features/i18n/locales/de-DE.json and replace "Tip" with "Tipp".
apps/web/src/features/i18n/locales/de-DE.json-3294-3300 (1)

3294-3300: ⚠️ Potential issue | 🟡 Minor

Fix the mistranslated and untranslated AI Assist actions.

Line 3294 currently reads as "Polish grammar..." instead of the verb "polish", and Lines 3299-3300 are still English. This leaves the new assistant flow partially misleading and partially untranslated for German users.

💬 Suggested translations
     "action-improve": "Schreiben verbessern",
-    "action-improve-desc": "Polnische Grammatik, Klarheit und Stil",
+    "action-improve-desc": "Grammatik, Klarheit und Stil verbessern",
     "action-suggest_tags": "Tags vorschlagen",

     "action-generate_title": "Titel generieren",
     "action-generate_title-desc": "Erstelle überzeugende Titeloptionen",
-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "Zusammenfassen",
+    "action-summarize-desc": "Eine TL;DR-Zusammenfassung erstellen",
     "action-check_grammar": "Grammatik prüfen",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/de-DE.json` around lines 3294 - 3300, The
German translation entries are incorrect or left in English: update
"action-improve-desc" to use the verb form (e.g., "Grammatik, Klarheit und Stil
verbessern"), translate "action-summarize" to "Zusammenfassen" and change
"action-summarize-desc" to a German phrase such as "Erstelle eine kurze
TL;DR-Zusammenfassung" (or "Erstelle eine kurze Zusammenfassung"); ensure the
keys "action-improve-desc", "action-summarize", and "action-summarize-desc" are
replaced with these corrected German strings.
🧹 Nitpick comments (1)
apps/web/src/features/i18n/locales/lt-LT.json (1)

106-108: Consider translating these common UI terms to Lithuanian.

These new entries are in English while many similar short UI terms elsewhere in the g section are translated (e.g., cancel: "Atšaukti", delete: "Ištrinti"). However, the section has mixed patterns, so this is optional.

Possible translations:

  • pause: "Pauzė" or "Pristabdyti"
  • start: "Pradėti"
  • updated: "Atnaujinta"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/features/i18n/locales/lt-LT.json` around lines 106 - 108, The
entries "pause", "start", and "updated" in the i18n JSON are left in English;
update their values to Lithuanian (e.g., "pause": "Pauzė" or "Pristabdyti",
"start": "Pradėti", "updated": "Atnaujinta") so they match other short UI term
translations in the g section; modify the values for the keys "pause", "start",
and "updated" accordingly in the locales file.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5468aa89-9da0-4c93-8459-f5e12bae927a

📥 Commits

Reviewing files that changed from the base of the PR and between 3c47660 and bc91df6.

📒 Files selected for processing (23)
  • apps/web/src/features/i18n/locales/ac-ace.json
  • apps/web/src/features/i18n/locales/bg-BG.json
  • apps/web/src/features/i18n/locales/de-DE.json
  • apps/web/src/features/i18n/locales/es-ES.json
  • apps/web/src/features/i18n/locales/fr-FR.json
  • apps/web/src/features/i18n/locales/hi-IN.json
  • apps/web/src/features/i18n/locales/id-ID.json
  • apps/web/src/features/i18n/locales/it-IT.json
  • apps/web/src/features/i18n/locales/ja-JP.json
  • apps/web/src/features/i18n/locales/lt-LT.json
  • apps/web/src/features/i18n/locales/nl-NL.json
  • apps/web/src/features/i18n/locales/pcm-NG.json
  • apps/web/src/features/i18n/locales/pl-PL.json
  • apps/web/src/features/i18n/locales/pt-PT.json
  • apps/web/src/features/i18n/locales/ru-RU.json
  • apps/web/src/features/i18n/locales/sr-CS.json
  • apps/web/src/features/i18n/locales/th-TH.json
  • apps/web/src/features/i18n/locales/tr-TR.json
  • apps/web/src/features/i18n/locales/uk-UA.json
  • apps/web/src/features/i18n/locales/ur-PK.json
  • apps/web/src/features/i18n/locales/uz-UZ.json
  • apps/web/src/features/i18n/locales/yo-NG.json
  • apps/web/src/features/i18n/locales/zh-CN.json
🚧 Files skipped from review as they are similar to previous changes (4)
  • apps/web/src/features/i18n/locales/pt-PT.json
  • apps/web/src/features/i18n/locales/uz-UZ.json
  • apps/web/src/features/i18n/locales/ru-RU.json
  • apps/web/src/features/i18n/locales/bg-BG.json

Comment on lines +3280 to +3317
"ai-assist": {
"title": "AI Writing Assistant",
"toolbar-button": "AI Assist",
"balance-label": "Balance",
"points-unit": "POINTS",
"free-label": "Free",
"free-remaining": "{{count}} free left today",
"cost-label": "Cost",
"action-label": "What would you like to do?",
"text-label": "Your content",
"text-placeholder": "Paste or type your draft content here...",
"chars-remaining": "{{count}} characters remaining",
"min-chars": "Minimum {{count}} characters required",
"action-improve": "Improve Writing",
"action-improve-desc": "Polish grammar, clarity, and style",
"action-suggest_tags": "Suggest Tags",
"action-suggest_tags-desc": "Get relevant tags for your post",
"action-generate_title": "Generate Title",
"action-generate_title-desc": "Create compelling title options",
"action-summarize": "Summarize",
"action-summarize-desc": "Create a TL;DR summary",
"action-check_grammar": "Check Grammar",
"action-check_grammar-desc": "Fix grammar and spelling",
"submit-button": "Run AI Assist",
"submitting": "Processing...",
"result-title": "Result",
"apply-button": "Apply to post",
"copy-button": "Copy",
"copied": "Copied!",
"try-again": "Try Again",
"try-another": "Try Another Action",
"success": "AI assist completed!",
"error-insufficient-points": "Insufficient points. You need {{required}} but have {{available}}.",
"error-content-policy": "Content violates policy. Points were not refunded.",
"error-rate-limit": "Too many requests. Please wait a moment and try again.",
"error-auth": "Authentication expired. Please refresh the page and try again.",
"error-generic": "AI assist failed. Please try again.",
"error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Translate the new ai-assist surface before shipping this locale update.

This block is entirely English in ac-ace, so the whole AI assistant flow will appear untranslated for users who selected this locale. Since this is a brand-new feature surface, it will feel much more jarring than a couple of fallback labels. Please add Acehnese copy here, or omit the block until the locale is ready and let the app's fallback strategy handle it consistently.

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

In `@apps/web/src/features/i18n/locales/ac-ace.json` around lines 3280 - 3317, The
ai-assist translation block is still in English; either provide Acehnese
translations for the entire "ai-assist" key group (e.g., "ai-assist",
"toolbar-button", "balance-label", "free-remaining", "action-improve",
"action-suggest_tags", "action-generate_title", "action-summarize",
"action-check_grammar", "submit-button", "result-title", "error-*" and other
keys) or remove/temporarily omit the whole "ai-assist" object so the app falls
back to the default locale; update the JSON accordingly ensuring all keys remain
present or removed as a unit to avoid partial untranslated strings.

Comment on lines +3280 to +3317
"ai-assist": {
"title": "AI Writing Assistant",
"toolbar-button": "AI Assist",
"balance-label": "Balance",
"points-unit": "POINTS",
"free-label": "Free",
"free-remaining": "{{count}} free left today",
"cost-label": "Cost",
"action-label": "What would you like to do?",
"text-label": "Your content",
"text-placeholder": "Paste or type your draft content here...",
"chars-remaining": "{{count}} characters remaining",
"min-chars": "Minimum {{count}} characters required",
"action-improve": "Improve Writing",
"action-improve-desc": "Polish grammar, clarity, and style",
"action-suggest_tags": "Suggest Tags",
"action-suggest_tags-desc": "Get relevant tags for your post",
"action-generate_title": "Generate Title",
"action-generate_title-desc": "Create compelling title options",
"action-summarize": "Summarize",
"action-summarize-desc": "Create a TL;DR summary",
"action-check_grammar": "Check Grammar",
"action-check_grammar-desc": "Fix grammar and spelling",
"submit-button": "Run AI Assist",
"submitting": "Processing...",
"result-title": "Result",
"apply-button": "Apply to post",
"copy-button": "Copy",
"copied": "Copied!",
"try-again": "Try Again",
"try-another": "Try Another Action",
"success": "AI assist completed!",
"error-insufficient-points": "Insufficient points. You need {{required}} but have {{available}}.",
"error-content-policy": "Content violates policy. Points were not refunded.",
"error-rate-limit": "Too many requests. Please wait a moment and try again.",
"error-auth": "Authentication expired. Please refresh the page and try again.",
"error-generic": "AI assist failed. Please try again.",
"error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Entire ai-assist block is untranslated.

The new ai-assist section contains 38 keys, all in English. This block should be fully translated to Serbian to maintain consistency with the rest of the locale file.

Would you like me to help generate Serbian translations for the ai-assist block, or open an issue to track this translation work?

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

In `@apps/web/src/features/i18n/locales/sr-CS.json` around lines 3280 - 3317, The
entire "ai-assist" locale object (keys like "toolbar-button", "balance-label",
"free-remaining", "action-improve", "action-suggest_tags",
"action-generate_title", "action-summarize", "action-check_grammar",
"submit-button", "result-title", "error-insufficient-points",
"error-content-policy", "error-rate-limit", "error-auth", "error-generic",
"error-text-too-short", etc.) is still in English; replace each English string
with its accurate Serbian translation (preserve placeholders like {{count}},
{{required}}, {{available}} and punctuation/HTML exactly), keeping the same keys
and JSON structure so i18n lookups continue to work. Ensure translations match
the tone used elsewhere in the locale file (formal/informal as appropriate) and
validate the JSON afterward to avoid syntax errors.

Comment on lines +3280 to +3317
"ai-assist": {
"title": "AI Writing Assistant",
"toolbar-button": "AI Assist",
"balance-label": "Balance",
"points-unit": "POINTS",
"free-label": "Free",
"free-remaining": "{{count}} free left today",
"cost-label": "Cost",
"action-label": "What would you like to do?",
"text-label": "Your content",
"text-placeholder": "Paste or type your draft content here...",
"chars-remaining": "{{count}} characters remaining",
"min-chars": "Minimum {{count}} characters required",
"action-improve": "Improve Writing",
"action-improve-desc": "Polish grammar, clarity, and style",
"action-suggest_tags": "Suggest Tags",
"action-suggest_tags-desc": "Get relevant tags for your post",
"action-generate_title": "Generate Title",
"action-generate_title-desc": "Create compelling title options",
"action-summarize": "Summarize",
"action-summarize-desc": "Create a TL;DR summary",
"action-check_grammar": "Check Grammar",
"action-check_grammar-desc": "Fix grammar and spelling",
"submit-button": "Run AI Assist",
"submitting": "Processing...",
"result-title": "Result",
"apply-button": "Apply to post",
"copy-button": "Copy",
"copied": "Copied!",
"try-again": "Try Again",
"try-another": "Try Another Action",
"success": "AI assist completed!",
"error-insufficient-points": "Insufficient points. You need {{required}} but have {{available}}.",
"error-content-policy": "Content violates policy. Points were not refunded.",
"error-rate-limit": "Too many requests. Please wait a moment and try again.",
"error-auth": "Authentication expired. Please refresh the page and try again.",
"error-generic": "AI assist failed. Please try again.",
"error-text-too-short": "Your text is too short. Minimum {{count}} characters required."
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Translate the new ai-assist surface before shipping.

This block is almost entirely copied in English, so the whole AI assistant flow will appear untranslated in tr-TR.

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

In `@apps/web/src/features/i18n/locales/tr-TR.json` around lines 3280 - 3317, The
ai-assist localization block is still in English; translate all keys under the
"ai-assist" object (e.g., "title", "toolbar-button", "balance-label",
"free-remaining", "action-improve", "action-summarize", "submit-button",
"error-*" and other keys shown) into Turkish so the AI assistant UI is fully
localized for tr-TR; keep placeholders like {{count}}, {{required}}, and
{{available}} intact and preserve punctuation and key names exactly.

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