Skip to content

New Crowdin updates#689

Merged
feruzm merged 399 commits intodevelopfrom
l10n_develop
Mar 26, 2026
Merged

New Crowdin updates#689
feruzm merged 399 commits intodevelopfrom
l10n_develop

Conversation

@feruzm
Copy link
Copy Markdown
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
Copy Markdown
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
  • 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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

♻️ Duplicate comments (5)
apps/web/src/features/i18n/locales/uk-UA.json (2)

468-468: ⚠️ Potential issue | 🟡 Minor

Localize entry-tip.tip in Ukrainian locale.

Line 468 still uses English ("Tip"), which causes mixed-language UI in uk-UA.

💬 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/uk-UA.json` at line 468, The Ukrainian
locale JSON still has the English value for the entry-tip.tip key; update the
uk-UA locale entry "tip" (under the entry-tip namespace) to the proper Ukrainian
translation (e.g., "Порада" or "Підказка") so the UI shows a consistent
Ukrainian string for entry-tip.tip.

1647-1647: ⚠️ Potential issue | 🟡 Minor

Use a short action label for favorite-btn.add.

Line 1647 reads like a description, not a button action, and is inconsistent with added/delete.

✏️ 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` at line 1647, The key
favorite-btn.add currently contains a descriptive sentence; replace its value
with a short action label (e.g., "Додати" or "Додати в уподобання") to match the
concise style used by favorite-btn.added/favorite-btn.delete and ensure it reads
like a button action; update the string for the "favorite-btn.add" entry
accordingly.
apps/web/src/features/i18n/locales/it-IT.json (2)

451-453: ⚠️ Potential issue | 🟡 Minor

Normalize segnalibri capitalization in bookmark actions.

Line 453 still uses Segnalibri (capitalized), while Line 452 and Line 454 use lowercase, so the UI copy is inconsistent.

Suggested fix
-    "delete": "Rimuovi dai Segnalibri",
+    "delete": "Rimuovi dai segnalibri",
🤖 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 451 - 453, The
"delete" translation value uses inconsistent capitalization ("Rimuovi dai
Segnalibri") compared to "add" and "added"; update the "delete" key's string to
use lowercase "segnalibri" (e.g., "Rimuovi dai segnalibri") so it matches the
other keys ("add", "added") and keeps UI copy consistent.

468-468: ⚠️ Potential issue | 🟡 Minor

Localize entry-tip.tip to Italian.

Line 468 is still English ("Tip"), which breaks locale consistency in this section.

Suggested fix
-    "tip": "Tip",
+    "tip": "Suggerimento",
🤖 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` at line 468, The key
entry-tip.tip in the Italian locale file is still English ("Tip"); update the
value to the Italian translation (e.g., "Suggerimento" or "Consiglio") so the
entry-tip.tip string in apps/web/src/features/i18n/locales/it-IT.json is fully
localized.
apps/web/src/features/i18n/locales/sr-CS.json (1)

453-453: ⚠️ Potential issue | 🟡 Minor

Use imperative wording for delete action labels (still overlapping with deleted).

Line 453 and Line 1649 still read like completion states, which duplicates the meaning of deleted and can make action labels incorrect in UI contexts.

Suggested fix
  "bookmark-btn": {
    "add": "Bookmark — get notified about new comments",
    "added": "Dodaj u obeleživače",
-   "delete": "Uklonjeno iz obeleživača",
+   "delete": "Ukloni iz obeleživača",
    "deleted": "Uklonjeno iz obeleživača"
  },

  "favorite-btn": {
    "add": "Favorite — get notified about new posts",
    "added": "Dodato u omiljeno",
-   "delete": "Uklonjeno iz omiljeno",
+   "delete": "Ukloni iz omiljenog",
    "deleted": "Uklonjeno iz omiljeno"
  },

Also applies to: 1649-1649

🤖 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 453, The "delete"
action label is written as a completion state ("Uklonjeno iz obeleživača") and
should use an imperative verb to represent an action; change the value for the
JSON key "delete" (both occurrences) to an imperative Serbian form like "Ukloni
iz obeleživača" or "Obriši iz obeleživača" so it differs from the "deleted" key
and is correct for UI action labels; update every "delete" key in this locale
file while leaving the "deleted" translation untouched.
🧹 Nitpick comments (2)
apps/web/src/features/i18n/locales/ur-PK.json (1)

106-107: Note: Updated strings are in English for this Urdu (ur-PK) locale.

The new and updated translation values are in English rather than Urdu. This appears to be expected behavior for Crowdin-managed locale files where translations may be pending. Verify that Urdu translations will be provided in a follow-up Crowdin sync if localization coverage is a priority.

Also applies to: 451-453, 468-468, 1647-1649

🤖 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 - 107, The
Urdu locale contains English strings for keys like "pause" and "updated" (and
similar entries around the other mentioned ranges); replace these English
strings with the correct Urdu translations (or a clear placeholder token such as
"__TRANSLATION_PENDING__") for each key (e.g., "pause", "updated" and the other
affected keys) so the locale file doesn’t ship English text, and add a short
inline comment at the top of the JSON noting that final translations will be
populated via Crowdin sync so reviewers know these are temporary placeholders.
apps/web/src/features/i18n/locales/id-ID.json (1)

451-451: Consider localizing the new tooltip labels fully in id-ID.

Line 451 and Line 1647 still use English tooltip text (Bookmark — ..., Favorite — ...). This is acceptable as fallback, but translating them would avoid mixed-language UX in this locale.

Also applies to: 1647-1647

🤖 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 451, Two tooltip
values in the Indonesian locale are still in English; update the locale keys
"add" and "favorite" in the id-ID.json file to fully translated Indonesian
strings (e.g., replace "Bookmark — get notified about new comments" and
"Favorite — get notified about new comments" with appropriate Indonesian
equivalents) so the UI uses consistent localized tooltip text; keep the keys
"add" and "favorite" unchanged and only replace the English message strings with
the translated versions.
🤖 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/id-ID.json`:
- Line 107: Replace the English string for the key "updated" in the id-ID locale
with the proper Indonesian translation (e.g., "Diperbarui") so the g.updated
label is fully localized; edit the "updated" value in the id-ID JSON (the same
key added at line with "updated": "Updated") to the Indonesian text and ensure
the JSON stays valid (preserve quotes and comma placement).

In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Line 452: Change the "bookmark-btn.added" string from the imperative "Dodaj u
obeleživače" to a completed-state phrase (e.g., "Dodato u obeleživače") so it
represents the "added" state like "favorite-btn.added"; update the value for the
"added" key under bookmark-btn to "Dodato u obeleživače" to match state
semantics.

In `@apps/web/src/features/i18n/locales/uz-UZ.json`:
- Line 107: The "updated" translation key (g.updated) is still in English;
replace its value with the Uzbek translation (e.g., "Yangilangan") in the
locales JSON so the key "updated" maps to the Uzbek string and ensure the JSON
stays valid (quotes and trailing commas intact) after the change.
- Line 468: The "entry-tip.tip" locale entry currently has the English value
"Tip" in uz-UZ.json; replace that value with an appropriate Uzbek translation
(e.g., "Sovg'a" or another context-appropriate Uzbek term) so the "tip" key in
the "entry-tip" namespace is fully localized.

In `@apps/web/src/features/i18n/locales/yo-NG.json`:
- Line 468: Remove the unused locale key "tip" from the yo-NG JSON to match
other locales and avoid dead translation data: locate the "tip" entry under the
entry-tip namespace (entry-tip.tip) in the yo-NG locale file and delete that key
so only the referenced keys remain (entry-tip.title, entry-tip.count,
entry-tip.count_plural, entry-tip.send-tip).

In `@apps/web/src/features/i18n/locales/zh-CN.json`:
- Around line 467-471: Remove the unused locale key "entry-tip.tip" from all
locale JSON files: locate the entries under the "entry-tip" section (e.g., keys
entry-tip.title, entry-tip.count, entry-tip.count_plural, entry-tip.send-tip)
and delete the "tip" key since the entry-tip-btn component only references
entry-tip.count, entry-tip.count_plural, entry-tip.title, and
entry-tip.send-tip; ensure no other code references entry-tip.tip before
removing.

---

Duplicate comments:
In `@apps/web/src/features/i18n/locales/it-IT.json`:
- Around line 451-453: The "delete" translation value uses inconsistent
capitalization ("Rimuovi dai Segnalibri") compared to "add" and "added"; update
the "delete" key's string to use lowercase "segnalibri" (e.g., "Rimuovi dai
segnalibri") so it matches the other keys ("add", "added") and keeps UI copy
consistent.
- Line 468: The key entry-tip.tip in the Italian locale file is still English
("Tip"); update the value to the Italian translation (e.g., "Suggerimento" or
"Consiglio") so the entry-tip.tip string in
apps/web/src/features/i18n/locales/it-IT.json is fully localized.

In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Line 453: The "delete" action label is written as a completion state
("Uklonjeno iz obeleživača") and should use an imperative verb to represent an
action; change the value for the JSON key "delete" (both occurrences) to an
imperative Serbian form like "Ukloni iz obeleživača" or "Obriši iz obeleživača"
so it differs from the "deleted" key and is correct for UI action labels; update
every "delete" key in this locale file while leaving the "deleted" translation
untouched.

In `@apps/web/src/features/i18n/locales/uk-UA.json`:
- Line 468: The Ukrainian locale JSON still has the English value for the
entry-tip.tip key; update the uk-UA locale entry "tip" (under the entry-tip
namespace) to the proper Ukrainian translation (e.g., "Порада" or "Підказка") so
the UI shows a consistent Ukrainian string for entry-tip.tip.
- Line 1647: The key favorite-btn.add currently contains a descriptive sentence;
replace its value with a short action label (e.g., "Додати" or "Додати в
уподобання") to match the concise style used by
favorite-btn.added/favorite-btn.delete and ensure it reads like a button action;
update the string for the "favorite-btn.add" entry accordingly.

---

Nitpick comments:
In `@apps/web/src/features/i18n/locales/id-ID.json`:
- Line 451: Two tooltip values in the Indonesian locale are still in English;
update the locale keys "add" and "favorite" in the id-ID.json file to fully
translated Indonesian strings (e.g., replace "Bookmark — get notified about new
comments" and "Favorite — get notified about new comments" with appropriate
Indonesian equivalents) so the UI uses consistent localized tooltip text; keep
the keys "add" and "favorite" unchanged and only replace the English message
strings with the translated versions.

In `@apps/web/src/features/i18n/locales/ur-PK.json`:
- Around line 106-107: The Urdu locale contains English strings for keys like
"pause" and "updated" (and similar entries around the other mentioned ranges);
replace these English strings with the correct Urdu translations (or a clear
placeholder token such as "__TRANSLATION_PENDING__") for each key (e.g.,
"pause", "updated" and the other affected keys) so the locale file doesn’t ship
English text, and add a short inline comment at the top of the JSON noting that
final translations will be populated via Crowdin sync so reviewers know these
are temporary placeholders.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 03931878-8fdb-4166-a710-247279bbf7ff

📥 Commits

Reviewing files that changed from the base of the PR and between ab131e0 and 2dd0606.

📒 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 (13)
  • apps/web/src/features/i18n/locales/tr-TR.json
  • apps/web/src/features/i18n/locales/bg-BG.json
  • apps/web/src/features/i18n/locales/pt-PT.json
  • apps/web/src/features/i18n/locales/ja-JP.json
  • apps/web/src/features/i18n/locales/fr-FR.json
  • apps/web/src/features/i18n/locales/ac-ace.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/pl-PL.json
  • apps/web/src/features/i18n/locales/th-TH.json
  • apps/web/src/features/i18n/locales/ru-RU.json
  • apps/web/src/features/i18n/locales/hi-IN.json
  • apps/web/src/features/i18n/locales/lt-LT.json

"play": "Play",
"pause": "Pause"
"pause": "Pause",
"updated": "Updated"
Copy link
Copy Markdown
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 g.updated value for Indonesian.

Line 107 introduces "updated": "Updated" in English, which will show mixed-language UI for a global status label in id-ID.

💡 Suggested fix
-    "updated": "Updated"
+    "updated": "Diperbarui"
📝 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
"updated": "Updated"
"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` at line 107, Replace the
English string for the key "updated" in the id-ID locale with the proper
Indonesian translation (e.g., "Diperbarui") so the g.updated label is fully
localized; edit the "updated" value in the id-ID JSON (the same key added at
line with "updated": "Updated") to the Indonesian text and ensure the JSON stays
valid (preserve quotes and comma placement).

"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",
"added": "Dodaj u obeleživače",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

added key should read as a completed state, not an action.

Line 452 (bookmark-btn.added) is currently imperative (“Dodaj...”), which conflicts with the added state semantics and with favorite-btn.added.

Suggested fix
-   "added": "Dodaj u obeleživače",
+   "added": "Dodato u obeleživače",
📝 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
"added": "Dodaj u obeleživače",
"added": "Dodato 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` at line 452, Change the
"bookmark-btn.added" string from the imperative "Dodaj u obeleživače" to a
completed-state phrase (e.g., "Dodato u obeleživače") so it represents the
"added" state like "favorite-btn.added"; update the value for the "added" key
under bookmark-btn to "Dodato u obeleživače" to match state semantics.

"play": "O‘ynash",
"pause": "To‘xtatib turish"
"pause": "To‘xtatib turish",
"updated": "Updated"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Missing Uzbek translation for g.updated.

The value "Updated" remains in English. For consistency with this locale file, it should be translated to Uzbek (e.g., "Yangilangan").

🤖 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` at line 107, The "updated"
translation key (g.updated) is still in English; replace its value with the
Uzbek translation (e.g., "Yangilangan") in the locales JSON so the key "updated"
maps to the Uzbek string and ensure the JSON stays valid (quotes and trailing
commas intact) after the change.

},
"entry-tip": {
"title": "Sovg'a",
"tip": "Tip",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Missing Uzbek translation for entry-tip.tip.

The value "Tip" remains in English. Consider translating it to Uzbek for consistency (e.g., "Sovg'a" similar to the existing title key, or another appropriate Uzbek term).

🤖 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` at line 468, The
"entry-tip.tip" locale entry currently has the English value "Tip" in
uz-UZ.json; replace that value with an appropriate Uzbek translation (e.g.,
"Sovg'a" or another context-appropriate Uzbek term) so the "tip" key in the
"entry-tip" namespace is fully localized.

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

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for usage of entry-tip.tip in web app sources
echo "=== Searching for entry-tip.tip usage ==="
rg -n 'entry-tip\.tip|entry-tip\.tip' apps/web/src --type tsx --type ts --type json -C2

echo ""
echo "=== Searching for i18next references to entry-tip.tip ==="
rg -n "entry-tip\.tip|'entry-tip\.tip'|\"entry-tip\.tip\"\`entry-tip\.tip" apps/web/src -C2

echo ""
echo "=== Check if entry-tip.tip exists in English locale ==="
rg -n "entry-tip" apps/web/src/features/i18n/locales/en.json | head -20

Repository: ecency/vision-next

Length of output: 347


🏁 Script executed:

#!/bin/bash
# Find locale directory structure
echo "=== Locale directory structure ==="
find apps/web/src -type d -name "*locale*" -o -name "*i18n*" 2>/dev/null | head -20

echo ""
echo "=== List locale files ==="
ls -la apps/web/src/features/i18n/locales/ 2>/dev/null || find apps/web -name "*.json" -path "*locale*" -o -path "*i18n*" 2>/dev/null | head -20

echo ""
echo "=== Search for entry-tip.tip (unrestricted) ==="
rg -n 'entry-tip\.tip' apps/web/src 2>/dev/null || echo "No matches found"

echo ""
echo "=== Check yo-NG.json and list entry-tip keys ==="
rg -n '"entry-tip' apps/web/src/features/i18n/locales/yo-NG.json 2>/dev/null | head -30

echo ""
echo "=== Search for any component using entry-tip strings ==="
rg -n 'entry-tip\.' apps/web/src --max-count=30 2>/dev/null

Repository: ecency/vision-next

Length of output: 2548


🏁 Script executed:

#!/bin/bash
echo "=== entry-tip section in yo-NG.json ==="
rg -n -A 10 '"entry-tip"' apps/web/src/features/i18n/locales/yo-NG.json

echo ""
echo "=== Compare with en-US.json entry-tip section ==="
rg -n -A 10 '"entry-tip"' apps/web/src/features/i18n/locales/en-US.json

Repository: ecency/vision-next

Length of output: 694


Remove unused entry-tip.tip locale key.

entry-tip.tip is not referenced anywhere in the codebase and does not exist in the English locale file (en-US.json). This creates inconsistency and dead locale data across translations.

Details

The key appears only in yo-NG.json at line 468:

"tip": "Tip",

Actual entry-tip component references are limited to: entry-tip.title, entry-tip.count, entry-tip.count_plural, and entry-tip.send-tip. Remove the unused "tip" entry.

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

In `@apps/web/src/features/i18n/locales/yo-NG.json` at line 468, Remove the unused
locale key "tip" from the yo-NG JSON to match other locales and avoid dead
translation data: locate the "tip" entry under the entry-tip namespace
(entry-tip.tip) in the yo-NG locale file and delete that key so only the
referenced keys remain (entry-tip.title, entry-tip.count,
entry-tip.count_plural, entry-tip.send-tip).

Comment on lines 467 to 471
"title": "礼物",
"tip": "Tip",
"send-tip": "发送提示",
"count": "{{count}} tip",
"count_plural": "{{count}} tips"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for any usage of the entry-tip.tip translation key across the codebase

# Search for direct references to "entry-tip.tip" in TypeScript/TSX files
echo "=== Direct references to 'entry-tip.tip' ==="
rg -n "entry-tip\.tip" --type=ts --type=tsx -g '!*.json'

# Search for t() or useTranslation calls using entry-tip keys
echo "=== entry-tip key references in component code ==="
rg -n 'entry-tip\.' --type=ts --type=tsx -g '!*.json' -B 2 -A 2

# Check for the entry-tip-btn component specifically
echo "=== Looking for entry-tip-btn component ==="
fd -e ts -e tsx | xargs grep -l "entry-tip-btn" | head -20

Repository: ecency/vision-next

Length of output: 472


🏁 Script executed:

#!/bin/bash
# Read the entry-tip-btn component
echo "=== entry-tip-btn component ==="
cat apps/web/src/features/shared/entry-tip-btn/index.tsx

# Also search for entry-tip usage more broadly
echo -e "\n=== Search for entry-tip in all files ==="
rg "entry-tip" --type=js --type=jsx -i

# And check other locale files for entry-tip
echo -e "\n=== entry-tip keys in all locale files ==="
rg "entry-tip" apps/web/src/features/i18n/locales/

Repository: ecency/vision-next

Length of output: 6044


Remove unused entry-tip.tip key from locale files.

The entry-tip.tip key is not referenced by the entry-tip-btn component. The component only uses entry-tip.count, entry-tip.count_plural, entry-tip.title, and entry-tip.send-tip. This key should be removed from all locale files.

🤖 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 467 - 471, Remove
the unused locale key "entry-tip.tip" from all locale JSON files: locate the
entries under the "entry-tip" section (e.g., keys entry-tip.title,
entry-tip.count, entry-tip.count_plural, entry-tip.send-tip) and delete the
"tip" key since the entry-tip-btn component only references entry-tip.count,
entry-tip.count_plural, entry-tip.title, and entry-tip.send-tip; ensure no other
code references entry-tip.tip before removing.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

Note

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

♻️ Duplicate comments (4)
apps/web/src/features/i18n/locales/bg-BG.json (1)

468-468: ⚠️ Potential issue | 🟡 Minor

entry-tip.tip is still untranslated.

Line 468 still uses the English value Tip in the Bulgarian 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/bg-BG.json` at line 468, The Bulgarian
locale key "entry-tip.tip" still has the English value "Tip"; update the value
to the proper Bulgarian translation (e.g., "Съвет" or "Подсказка") in
apps/web/src/features/i18n/locales/bg-BG.json by replacing "Tip" with the chosen
Bulgarian string, keeping the JSON formatting and trailing comma intact.
apps/web/src/features/i18n/locales/sr-CS.json (2)

1647-1649: ⚠️ Potential issue | 🟡 Minor

Multiple localization issues in favorite-btn.

  1. Line 1647: The add key is in English and should be translated to Serbian.
  2. Line 1649: The delete key uses past tense "Uklonjeno" (Removed) instead of imperative "Ukloni" (Remove). Also, "iz omiljeno" has a grammatical error—it should be "iz omiljenih" (genitive plural).

The delete issue was already flagged in a previous review.

Suggested fixes
   "favorite-btn": {
-    "add": "Favorite — get notified about new posts",
+    "add": "Omiljeno — dobijajte obaveštenja o novim objavama",
     "added": "Dodato u omiljeno",
-    "delete": "Uklonjeno iz omiljeno",
-    "deleted": "Uklonjeno iz omiljeno"
+    "delete": "Ukloni iz omiljenih",
+    "deleted": "Uklonjeno iz omiljenih"
   },
🤖 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 1647 - 1649, The
localization keys for the favorite button need correction: translate the "add"
key from English to Serbian (use an appropriate phrase like "Dodaj u omiljene —
budi obavešten o novim objavama"), keep "added" as "Dodato u omiljeno" only if
that phrasing is intended (otherwise consider "Dodato u omiljene"), and change
the "delete" key from "Uklonjeno iz omiljeno" to the imperative and correct
grammar "Ukloni iz omiljenih"; update the values for keys "add" and "delete"
accordingly in the favorite-btn locale entries.

451-453: ⚠️ Potential issue | 🟡 Minor

Multiple localization issues in bookmark-btn.

  1. Line 451: The add key is in English and should be translated to Serbian.
  2. Line 452: The added key uses imperative "Dodaj" (Add) instead of a completed-state phrase like "Dodato u obeleživače" (Added to bookmarks).
  3. Line 453: The delete key uses past tense "Uklonjeno" (Removed) instead of imperative "Ukloni" (Remove) for an action button.

Issues 2 and 3 were already flagged in previous reviews.

Suggested fixes
   "bookmark-btn": {
-    "add": "Bookmark — get notified about new comments",
-    "added": "Dodaj u obeleživače",
-    "delete": "Uklonjeno iz obeleživača",
+    "add": "Obeleživač — dobijajte obaveštenja o novim komentarima",
+    "added": "Dodato u obeleživače",
+    "delete": "Ukloni iz obeleživača",
     "deleted": "Uklonjeno iz obeleživača"
   },
🤖 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 451 - 453, Update
the three i18n values for the bookmark button: replace the "add" English string
with a Serbian translation (e.g., "Dodaj u obeleživače — obavesti me o novim
komentarima"), change "added" to the completed-state phrase "Dodato u
obeleživače", and change "delete" to the imperative action "Ukloni iz
obeleživača" so the keys "add", "added", and "delete" reflect correct Serbian
wording and grammatical tense.
apps/web/src/features/i18n/locales/uz-UZ.json (1)

107-107: ⚠️ Potential issue | 🟡 Minor

Localize the newly added updated and tip labels.

Line 107 and Line 468 are still English, so these new Uzbek locale keys will render mixed-language UI. Please translate both before merging.

Also applies to: 468-468

🤖 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` at line 107, The uz-UZ locale
file contains English values for the keys "updated" and "tip"; replace the
English strings for these keys with proper Uzbek translations (e.g., translate
"Updated" and "Tip" into Uzbek) in the uz-UZ JSON so the UI is fully localized,
then run the i18n validation/linter (or unit tests) to ensure the JSON remains
valid and keys match other locales.
🟡 Minor comments (24)
apps/web/src/features/i18n/locales/pl-PL.json-3279-3316 (1)

3279-3316: ⚠️ Potential issue | 🟡 Minor

Multiple untranslated English strings and one incorrect translation in the ai-assist block.

Several strings in this new block remain in English instead of Polish:

Line Key Current Value Suggested Polish
3285 free-remaining "{{count}} free left today" "{{count}} darmowych pozostało dziś"
3290 chars-remaining "{{count}} characters remaining" "Pozostało {{count}} znaków"
3291 min-chars "Minimum {{count}} characters required" "Wymagane minimum {{count}} znaków"
3298 action-summarize "Summarize" "Podsumuj"
3299 action-summarize-desc "Create a TL;DR summary" "Utwórz krótkie podsumowanie"
3316 error-text-too-short "Your text is too short..." "Twój tekst jest za krótki..."

Additionally, line 3293 contains an incorrect translation:

  • Current: "Polskie gramy, jasność i styl" (translates to "Polish grams, clarity and style")
  • Should be: "Popraw gramatykę, jasność i styl" (Improve grammar, clarity and style)
🤖 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 3279 - 3316, The
ai-assist locale block contains multiple untranslated English strings and one
wrong Polish phrase; update the values for keys free-remaining, chars-remaining,
min-chars, action-summarize, action-summarize-desc, and error-text-too-short to
the provided Polish translations, and correct action-improve-desc from "Polskie
gramy, jasność i styl" to "Popraw gramatykę, jasność i styl"; ensure you edit
the entries with the exact keys (free-remaining, chars-remaining, min-chars,
action-summarize, action-summarize-desc, error-text-too-short,
action-improve-desc) so the JSON remains valid and translations match the
suggested text.
apps/web/src/features/i18n/locales/pl-PL.json-468-468 (1)

468-468: ⚠️ Potential issue | 🟡 Minor

Untranslated string: "Tip" should be localized to Polish.

The value remains in English while the adjacent title key on line 467 uses the Polish translation "Napiwek". Consider using "Napiwek" here as well for consistency within this locale file.

🤖 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` at line 468, The "tip"
translation value is still in English; update the JSON entry for the "tip" key
in the Polish locale (pl-PL.json) to the Polish translation used nearby
("Napiwek") so it matches the adjacent "title" key and keeps the locale
consistent.
apps/web/src/features/i18n/locales/ur-PK.json-106-107 (1)

106-107: ⚠️ Potential issue | 🟡 Minor

These ur-PK additions are still English.

Line 3279 adds an entire AI assistant surface, and the smaller updates on Lines 106-107, 451-453, 468, and 1647-1649 are also English strings inside the Urdu locale file. That will show mixed-language UI to ur-PK users, which is especially noticeable for the new AI flow. Please replace these values with Urdu translations before merging.

Also applies to: 451-453, 468-468, 1647-1649, 3279-3316

🤖 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 - 107, The
Urdu locale file contains English text for several keys which must be
translated: replace the English values for keys such as "pause" and "updated"
(and the other noted entries around lines referenced, including the AI assistant
block and keys at 451-453, 468, 1647-1649, 3279-3316) with proper Urdu strings;
update each JSON value in apps/web/src/features/i18n/locales/ur-PK.json so the
value for "pause" and "updated" and every English string in the AI assistant
section are translated into Urdu, preserving the existing key names and JSON
structure and ensuring no trailing commas or syntax changes are introduced.
apps/web/src/features/i18n/locales/hi-IN.json-3279-3316 (1)

3279-3316: ⚠️ Potential issue | 🟡 Minor

Entire ai-assist block is in English — needs Hindi translation.

The newly added ai-assist block contains approximately 38 keys, all with English values. For the Hindi (hi-IN) locale, these should be translated to maintain UI consistency. Key examples:

Key Current (English) Suggested (Hindi)
title "AI Writing Assistant" "AI लेखन सहायक"
balance-label "Balance" "शेष राशि"
free-label "Free" "मुफ़्त"
action-improve "Improve Writing" "लेखन सुधारें"
submit-button "Run AI Assist" "AI सहायता चलाएं"
success "AI assist completed!" "AI सहायता पूर्ण!"

This affects user experience for Hindi-speaking users who will see mixed-language UI elements.

🤖 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 3279 - 3316, The
ai-assist localization block in the hi-IN locale currently contains English
strings and must be translated to Hindi; update all keys inside the "ai-assist"
object (examples: "title", "balance-label", "free-label", "action-improve",
"submit-button", "success", and all other keys present) with appropriate Hindi
translations (e.g., "AI लेखन सहायक", "शेष राशि", "मुफ़्त", "लेखन सुधारें", "AI
सहायता चलाएं", "AI सहायता पूर्ण!"), ensuring placeholders like {{count}},
{{required}}, and {{available}} remain unchanged and punctuation/spacing match
existing locale conventions.
apps/web/src/features/i18n/locales/hi-IN.json-107-107 (1)

107-107: ⚠️ Potential issue | 🟡 Minor

Translate g.updated to Hindi.

The value "Updated" is in English, which creates inconsistency in the Hindi locale. Surrounding keys like "pause" are properly localized.

Suggested fix
-    "updated": "Updated"
+    "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` at line 107, The Hindi locale
currently has the key "g.updated" set to the English string "Updated"; update
the value of "g.updated" in apps/web/src/features/i18n/locales/hi-IN.json to an
appropriate Hindi translation (e.g., "अद्यतनित" or "अपडेट किया गया") so it
matches surrounding localized entries and maintains consistency for the
g.updated key.
apps/web/src/features/i18n/locales/zh-CN.json-3279-3316 (1)

3279-3316: ⚠️ Potential issue | 🟡 Minor

Localize untranslated English strings in zh-CN locale.

Several strings in the new ai-assist block contain English text instead of Chinese translations:

Line Key Current Value
3285 free-remaining "{{count}} free left today"
3290 chars-remaining "{{count}} characters remaining"
3291 min-chars "Minimum {{count}} characters required"
3298 action-summarize "Summarize"
3299 action-summarize-desc "Create a TL;DR summary"
3311 error-insufficient-points "Insufficient points..."
3316 error-text-too-short "Your text is too short..."

These should be translated to Chinese for consistency with the rest of the zh-CN locale file.

🤖 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 3279 - 3316,
Several values in the ai-assist block are still in English; replace the English
strings for the keys free-remaining, chars-remaining, min-chars,
action-summarize, action-summarize-desc, error-insufficient-points, and
error-text-too-short with Chinese translations (e.g. free-remaining -> "今天还剩
{{count}} 次免费使用", chars-remaining -> "还剩 {{count}} 字符", min-chars -> "最少需要
{{count}} 个字符", action-summarize -> "总结", action-summarize-desc -> "创建摘要(要点概览)",
error-insufficient-points -> "点数不足。需要 {{required}},但只有 {{available}}。",
error-text-too-short -> "文本太短。最少需要 {{count}} 个字符。"); update those values in the
ai-assist JSON object so the zh-CN locale is fully localized.
apps/web/src/features/i18n/locales/nl-NL.json-3298-3299 (1)

3298-3299: ⚠️ Potential issue | 🟡 Minor

Untranslated English strings in Dutch locale.

These two entries contain English text instead of Dutch translations, which is inconsistent with the rest of the file.

📝 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 3298 - 3299, The
Dutch locale contains two keys with English values: "action-summarize" and
"action-summarize-desc"; update their string values to proper Dutch translations
(e.g., "action-summarize": "Samenvatten" and "action-summarize-desc": "Maak een
TL;DR-samenvatting" or another accurate Dutch phrasing) so the entries match the
rest of the nl-NL.json translations and preserve JSON formatting and quotes.
apps/web/src/features/i18n/locales/nl-NL.json-3293-3293 (1)

3293-3293: ⚠️ Potential issue | 🟡 Minor

Mistranslation: "Poolse" should be a verb, not a nationality.

"Poolse" means "Polish" (the nationality/language). The intended meaning is "polish" as in "refine/improve". Consider using "Verbeter" or "Polijst" instead.

📝 Suggested fix
-    "action-improve-desc": "Poolse grammatica, helderheid en stijl",
+    "action-improve-desc": "Verbeter 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 3293, The translation
for the key "action-improve-desc" incorrectly uses "Poolse" (Polish) as a
nationality; change it to a verb that conveys "polish/refine" (e.g., "Verbeter"
or "Polijst") so the string reads like an imperative: update the value of
"action-improve-desc" in nl-NL.json from "Poolse grammatica, helderheid en
stijl" to a verb-based phrase such as "Verbeter grammatica, helderheid en stijl"
(or "Polijst grammatica, helderheid en stijl") to correct the mistranslation.
apps/web/src/features/i18n/locales/lt-LT.json-107-107 (1)

107-107: ⚠️ Potential issue | 🟡 Minor

Localize the newly added Lithuanian strings.

These entries are still English in lt-LT.json, so Lithuanian users will get mixed-language labels/tooltips in the updated UI.

Also applies to: 451-451, 468-468, 1647-1647

🤖 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 107, The Lithuanian
locale file contains English strings (e.g., the "updated" key and other entries
noted around the file) that need proper Lithuanian translations; update the
values for "updated" and the other flagged keys (the entries reported at the
other locations) to their Lithuanian equivalents so the lt-LT.json file contains
all localized strings instead of English, ensuring the keys remain unchanged and
only the string values are replaced with correct Lithuanian text.
apps/web/src/features/i18n/locales/bg-BG.json-451-451 (1)

451-451: ⚠️ Potential issue | 🟡 Minor

Localize the new bookmark/favorite CTA copy.

The new add labels are still English, so Bulgarian users will see mixed-language tooltips in both flows.

Also applies to: 1647-1647

🤖 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 451, The "add"
localization key in the Bulgarian locale (key: "add") is still in English;
update the value for the "add" key in
apps/web/src/features/i18n/locales/bg-BG.json (and the other occurrence at the
same key) to the proper Bulgarian translation of the CTA "Bookmark — get
notified about new comments" so the tooltip/CTA is fully localized for Bulgarian
users.
apps/web/src/features/i18n/locales/bg-BG.json-106-107 (1)

106-107: ⚠️ Potential issue | 🟡 Minor

Translate the new shared g labels.

Lines 106-107 add generic UI strings in English. Since g is reused across the app, this will leak mixed-language buttons/status text into multiple Bulgarian screens.

🤖 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` around lines 106 - 107, The
English strings for shared UI labels "pause" and "updated" were added to
bg-BG.json and must be translated to Bulgarian; replace the values for the keys
"pause" and "updated" in the bg-BG.json locale with their Bulgarian equivalents
(e.g., "pause" -> "Пауза", "updated" -> "Актуализирано") so the shared "g"
labels do not leak English into Bulgarian screens.
apps/web/src/features/i18n/locales/it-IT.json-3279-3317 (1)

3279-3317: ⚠️ Potential issue | 🟡 Minor

Several strings in ai-assist block are not localized to Italian.

The following keys contain English text instead of Italian translations:

Line Key Current Value Suggested Italian
3281 toolbar-button "Assist AI" "Assistenza AI"
3298 action-summarize "Summarize" "Riassumi"
3299 action-summarize-desc "Create a TL;DR summary" "Crea un riassunto breve"
3316 error-text-too-short "Your text is too short..." Italian equivalent

Additionally, line 3280 uses "Ia" (mixed case) for the AI acronym—consider "IA" for consistency with standard Italian acronym capitalization.

Suggested fix for untranslated strings
 "ai-assist": {
-    "title": "Assistente Di Scrittura Ia",
-    "toolbar-button": "Assist AI",
+    "title": "Assistente Di Scrittura IA",
+    "toolbar-button": "Assistenza IA",
     "balance-label": "Saldo",
     ...
-    "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 tuo testo è troppo breve. 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 3279 - 3317, The
ai-assist localization contains untranslated English strings and inconsistent
casing for the AI acronym; update the keys "title" (change "Assistente Di
Scrittura Ia" -> "Assistente di Scrittura IA"), "toolbar-button" (change "Assist
AI" -> "Assistenza AI"), "action-summarize" (change "Summarize" -> "Riassumi"),
"action-summarize-desc" (change "Create a TL;DR summary" -> "Crea un riassunto
breve"), and "error-text-too-short" (change the English message to Italian, e.g.
"Il testo è troppo corto. Sono richiesti almeno {{count}} caratteri.") to ensure
all strings in the ai-assist block are fully localized and acronym casing is
consistent.
apps/web/src/features/i18n/locales/ru-RU.json-3293-3293 (1)

3293-3293: ⚠️ Potential issue | 🟡 Minor

Mistranslation: "Польская" means "Polish" (nationality), not "polish" (verb).

The English phrase "Polish grammar, clarity and style" uses "polish" as a verb (to improve/refine), but "Польская" in Russian means "Polish" as in the nationality/language. This creates a nonsensical translation.

Suggested fix
-    "action-improve-desc": "Польская грамматика, ясность и стиль",
+    "action-improve-desc": "Улучшить грамматику, ясность и стиль",

Alternative: "Отшлифовать грамматику, ясность и стиль"

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

In `@apps/web/src/features/i18n/locales/ru-RU.json` at line 3293, The translation
for the key "action-improve-desc" incorrectly uses "Польская" (Polish
nationality) instead of the verb "polish"; update the value for
"action-improve-desc" in apps/web/src/features/i18n/locales/ru-RU.json to a
correct Russian verb phrase such as "Отшлифовать грамматику, ясность и стиль"
(or "Улучшить грамматику, ясность и стиль") so it conveys "polish/improve
grammar, clarity and style."
apps/web/src/features/i18n/locales/ru-RU.json-3298-3299 (1)

3298-3299: ⚠️ Potential issue | 🟡 Minor

Untranslated English values in Russian locale.

Both action-summarize and action-summarize-desc contain English text which will cause mixed-language UI for Russian users.

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/ru-RU.json` around lines 3298 - 3299, The
Russian locale contains English strings for the keys "action-summarize" and
"action-summarize-desc"; update these values to proper Russian translations
(e.g., "Краткое содержание" or similar for "action-summarize" and a short
Russian description for "action-summarize-desc"), replacing the English text
while preserving the JSON key names and string encoding so the UI shows fully
localized Russian text.
apps/web/src/features/i18n/locales/sr-CS.json-3279-3317 (1)

3279-3317: ⚠️ Potential issue | 🟡 Minor

Entire ai-assist block is untranslated.

This new block contains 38 keys all in English. For the Serbian locale file, these strings should be translated to Serbian to maintain consistency with the rest of the file and provide a proper localized experience.

Given the coordinated addition of ai-assist across multiple locales noted in the summary, this may be intentional placeholder text pending translation. Consider adding a TODO comment or tracking this for future 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 3279 - 3317, The
ai-assist translation block is still in English—update the "ai-assist" JSON
object keys (e.g., "title", "toolbar-button", "balance-label", "free-remaining",
"action-improve", "action-summarize", "submit-button",
"error-insufficient-points", "error-text-too-short", etc.) in the sr-CS.json
file to Serbian equivalents to match the locale; translate all 38 values
consistently (or mark them with a clear TODO/comment for translators if
intentional), ensuring placeholders like {{count}}, {{required}}, and
{{available}} remain unchanged and the JSON structure and quotations are
preserved.
apps/web/src/features/i18n/locales/sr-CS.json-106-107 (1)

106-107: ⚠️ Potential issue | 🟡 Minor

Untranslated strings in Serbian locale.

The pause and updated keys are in English. For consistency with the rest of this locale file, these should be translated to Serbian (e.g., "Pauza" and "Ažurirano").

Suggested Serbian translations
-    "pause": "Pause",
-    "updated": "Updated"
+    "pause": "Pauza",
+    "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 - 107,
Replace the English values for the "pause" and "updated" keys in the sr-CS.json
locale file with Serbian translations; locate the entries for "pause" and
"updated" and update their values to the correct Serbian strings (e.g., "Pauza"
for pause and "Ažurirano" for updated) so the locale remains consistent.
apps/web/src/features/i18n/locales/sr-CS.json-468-468 (1)

468-468: ⚠️ Potential issue | 🟡 Minor

Remove the unused entry-tip.tip translation key.

The entry-tip.tip key is not referenced anywhere in the codebase. The entry-tip-btn component references only entry-tip.title, entry-tip.send-tip, entry-tip.count, and entry-tip.count_plural.

🤖 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 468, Remove the unused
translation key "entry-tip.tip" from the sr-CS.json locale file; locate the key
in the JSON (it appears alongside other entry-tip.* keys) and delete that single
entry so only the keys referenced by the entry-tip-btn component remain
("entry-tip.title", "entry-tip.send-tip", "entry-tip.count",
"entry-tip.count_plural").
apps/web/src/features/i18n/locales/ja-JP.json-3298-3299 (1)

3298-3299: ⚠️ Potential issue | 🟡 Minor

Untranslated strings: "Summarize" and "Create a TL;DR summary".

These strings are in English while other action items in the same block are translated to Japanese. Consider translating for consistency:

-    "action-summarize": "Summarize",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize": "要約する",
+    "action-summarize-desc": "TL;DR(要約)を作成",
🤖 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 3298 - 3299, The
JSON keys "action-summarize" and "action-summarize-desc" are still in English;
update their values to Japanese to match the surrounding translations (replace
"Summarize" and "Create a TL;DR summary" with appropriate Japanese equivalents),
ensuring the keys remain unchanged and the translated strings follow the
project's wording style and punctuation conventions used for other action items.
apps/web/src/features/i18n/locales/id-ID.json-106-106 (1)

106-106: ⚠️ Potential issue | 🟡 Minor

Localize g.pause value for Indonesian.

The value "Pause" is English. For consistency with other Indonesian translations in this file, consider using the Indonesian translation.

💡 Suggested fix
-    "pause": "Pause",
+    "pause": "Jeda",
🤖 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 106, The g.pause entry
currently uses English ("Pause"); update the id-ID locale by replacing the value
for the "pause" key with the Indonesian translation (e.g., "Jeda") in the id-ID
JSON so it matches other localized strings; ensure you preserve JSON syntax
(quotes and trailing comma) for the "pause" key.
apps/web/src/features/i18n/locales/id-ID.json-1647-1647 (1)

1647-1647: ⚠️ Potential issue | 🟡 Minor

Localize favorite-btn.add value for Indonesian.

The value "Favorite — get notified about new posts" is in English while other values in this namespace are properly translated to Indonesian.

💡 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 1647, The key
favorite-btn.add currently contains an English string; replace it with an
Indonesian translation (e.g., "Favorit — dapatkan pemberitahuan tentang
postingan baru" or "Tambahkan ke Favorit — dapatkan pemberitahuan tentang
postingan baru") to match the locale; update the value for "favorite-btn.add" in
the JSON while preserving surrounding formatting and escaping.
apps/web/src/features/i18n/locales/id-ID.json-451-451 (1)

451-451: ⚠️ Potential issue | 🟡 Minor

Localize bookmark-btn.add value for Indonesian.

The value "Bookmark — get notified about new comments" is in English while other values in this namespace (added, delete, deleted) are properly translated to Indonesian.

💡 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 451, Replace the
English value for the localization key "bookmark-btn.add" with an Indonesian
translation to match the other keys in that namespace (e.g., use a concise
Indonesian phrase conveying “add bookmark and get notified about new comments”
such as "Tambahkan bookmark — dapatkan pemberitahuan tentang komentar baru");
update the value for the "bookmark-btn.add" entry in id-ID.json accordingly so
it aligns with the existing translated keys like "added", "delete", and
"deleted".
apps/web/src/features/i18n/locales/uz-UZ.json-451-453 (1)

451-453: ⚠️ Potential issue | 🟡 Minor

Translate the new bookmark/favorite tooltip copy.

Line 451 and Line 1647 are still English while the paired status strings in both sections are Uzbek. That leaves these controls partially untranslated in uz-UZ.

Also applies to: 1647-1649

🤖 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 451 - 453, The
"add" tooltip string in uz-UZ.json is still English ("Bookmark — get notified
about new comments"); update the "add" key (both occurrences) to the Uzbek
translation and keep consistency with the paired status keys ("added",
"delete"); replace the English text with something like "Belgilang — yangi
izohlardan xabardor bo'ling" in both places so the tooltip is fully translated
and matches the existing "added" / "delete" strings.
apps/web/src/features/i18n/locales/es-ES.json-3290-3299 (1)

3290-3299: ⚠️ Potential issue | 🟡 Minor

Finish localizing the new ai-assist copy.

This block still ships English strings (characters remaining, Summarize, Create a TL;DR summary) and action-improve-desc mistranslates “Polish” as the nationality. That leaves the es-ES experience partially untranslated.

💬 Suggested copy fixes
-    "chars-remaining": "{{count}} characters remaining",
+    "chars-remaining": "{{count}} caracteres restantes",
-    "action-improve-desc": "Gramática polaca, claridad y estilo",
+    "action-improve-desc": "Mejora la gramática, la claridad y el estilo",
-    "action-summarize": "Summarize",
+    "action-summarize": "Resumir",
-    "action-summarize-desc": "Create a TL;DR summary",
+    "action-summarize-desc": "Crear un resumen TL;DR",
🤖 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 3290 - 3299,
Update the untranslated and incorrect Spanish strings in the ai-assist block:
replace "chars-remaining" value with a Spanish sentence keeping the {{count}}
placeholder (e.g., "{{count}} caracteres restantes"), correct
"action-improve-desc" to use “pulir”/“mejorar” instead of the nationality (e.g.,
"Pulir gramática, claridad y estilo"), and translate "action-summarize" and
"action-summarize-desc" into Spanish (e.g., "Resumir" and "Crear un resumen
breve (TL;DR)") so all keys "chars-remaining", "action-improve-desc",
"action-summarize", and "action-summarize-desc" are fully localized.
apps/web/src/features/i18n/locales/fr-FR.json-1647-1649 (1)

1647-1649: ⚠️ Potential issue | 🟡 Minor

Keep the favorite success toast explicit about notifications.

favorite-btn.added is the toast fired after enabling author notifications in apps/web/src/features/shared/favorite-btn/index.tsx:33-44. Reducing it to "Ajouté aux favoris" hides the side effect that the user will now be notified about new posts.

💬 Suggested wording
-    "add": "Favoris — être informé des nouveaux messages",
-    "added": "Ajouté aux favoris",
+    "add": "Favoris — être informé des nouvelles publications",
+    "added": "Ajouté aux favoris — vous serez informé des nouvelles publications",
🤖 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 1647 - 1649,
Update the fr-FR translation for the "added" key in locales/fr-FR.json so the
success toast from favorite-btn (the favorite-btn.added message used in
apps/web/src/features/shared/favorite-btn/index.tsx) explicitly mentions
notifications/being notified about new posts instead of the shortened "Ajouté
aux favoris"; keep the message concise but make the notification side-effect
clear (e.g., include phrasing equivalent to "— vous serez informé des nouveaux
messages").
🧹 Nitpick comments (2)
apps/web/src/features/i18n/locales/th-TH.json (1)

106-107: New key g.updated added with English placeholder.

The value "Updated" is in English rather than Thai. This is acceptable as a Crowdin placeholder, but ensure Thai translations are provided in a follow-up sync. The same applies to the existing untranslated strings in this file.

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

In `@apps/web/src/features/i18n/locales/th-TH.json` around lines 106 - 107, The
new localization key "g.updated" currently has an English placeholder
("Updated") in th-TH JSON; replace its value with the proper Thai translation
(for example "อัปเดตแล้ว") in apps/web/src/features/i18n/locales/th-TH.json
under the "g.updated" key, and scan the same file for any other English
placeholders to either provide Thai translations or mark them for a Crowdin sync
so a follow-up translation pass can supply localized strings.
apps/web/src/features/i18n/locales/fr-FR.json (1)

468-468: Remove or translate the new entry-tip.tip key.

In the provided context, apps/web/src/features/shared/entry-tip-btn/index.tsx:44-47 still reads entry-tip.title, entry-tip.count, and entry-tip.count_plural, so Line 468 adds an extra English-only key without a matching consumer here. Either wire it up in the same PR or drop it until needed.

🤖 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 468, The fr-FR locale
contains a new English-only key "tip" under entry-tip that is unused by the
consumer; either remove that "tip" key from
apps/web/src/features/i18n/locales/fr-FR.json or provide a proper French
translation for "entry-tip.tip" (e.g., "Astuce") and ensure consistency with the
consumer at apps/web/src/features/shared/entry-tip-btn/index.tsx which currently
references "entry-tip.title", "entry-tip.count", and "entry-tip.count_plural";
update the locale file so keys match the consumer or remove the extraneous key
until you wire it up.
🤖 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`:
- Around line 3279-3316: The ai-assist locale object is entirely in English;
translate all strings 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-*
keys like action-improve, action-improve-desc, action-suggest_tags,
action-generate_title, action-summarize, action-check_grammar and their -desc
variants, submit-button, submitting, result-title, apply-button, copy-button,
copied, try-again, try-another, success, and all error-* keys) into Bulgarian so
the bg-BG locale is fully localized; update each value in the "ai-assist" JSON
to the correct Bulgarian translations while preserving interpolation tokens like
{{count}}, {{required}}, and {{available}} and the exact key names.

In `@apps/web/src/features/i18n/locales/fr-FR.json`:
- Around line 451-453: The French translations in fr-FR.json use "Marque-page"
and "favoris" which collides with the existing "Signets" terminology and makes
bookmark actions ambiguous; update the keys "add", "added", and "delete" to use
the same bookmark wording used elsewhere (e.g., "Signet"/"Signets") and keep
"Favoris" reserved for favorites so the bookmark flow (see bookmark-btn.added
used in apps/web/src/features/shared/bookmark-btn/index.tsx) remains distinct —
for example change "add" to a phrase like "Ajouter aux signets", "added" to
"Ajouté aux signets", and "delete" to "Retirer des signets" (or equivalent
consistent "Signet"/"Signets" forms) so translations are consistent across the
locale.
- Around line 3279-3316: The ai-assist locale contains several English or
incorrect translations; update the following keys: replace "free-remaining" with
a French string like "{{count}} gratuit(s) restant(s) aujourd'hui", change
"chars-remaining" to "{{count}} caractères restants" and "min-chars" to "Minimum
{{count}} caractères requis", fix "action-improve-desc" from "grammaire, clarté
et style polonais" to "grammaire, clarté et style soigné", translate
"action-summarize" to "Résumer" and "action-summarize-desc" to "Créer un résumé
TL;DR" (or equivalent French), change "copy-button" from "Copie" to "Copier" if
desired, and translate "error-text-too-short" to French like "Votre texte est
trop court. Minimum {{count}} caractères requis"; update each key value in the
ai-assist block accordingly.

In `@apps/web/src/features/i18n/locales/id-ID.json`:
- Around line 3279-3316: The base locale en-US.json is missing the entire
"ai-assist" namespace that exists in id-ID.json (keys like "ai-assist",
"action-improve", "action-suggest_tags", "error-insufficient-points",
"error-text-too-short", etc.), causing a schema mismatch; fix this by either (A)
adding the full "ai-assist" block to en-US.json (populate with English strings
and preserve placeholders like {{count}}, {{required}}, {{available}} exactly)
so the base defines the keys before translations, or (B) if the feature was
added accidentally and no code uses it, remove the "ai-assist" block from
non-English locale files (e.g., id-ID.json) to match the current base; ensure
whichever option you choose keeps key names and interpolation tokens identical
across locales.

In `@apps/web/src/features/i18n/locales/ja-JP.json`:
- Around line 3293-3294: The translation for the key "action-improve-desc"
incorrectly renders "Polish" as the Polish language; update the value for
"action-improve-desc" to use the verb meaning "to improve/refine" in Japanese
(e.g., "文章の文法・明瞭さ・スタイルを改善" or similar) so it reads "Improve grammar, clarity,
style" rather than referencing the Polish language.

In `@apps/web/src/features/i18n/locales/lt-LT.json`:
- Around line 3279-3316: The ai-assist translation block is still in English;
update the entire "ai-assist" JSON object (keys such as "title",
"toolbar-button", "balance-label", "points-unit", "free-label",
"free-remaining", "cost-label", "action-label", "text-label",
"text-placeholder", "chars-remaining", "min-chars", all "action-*" entries,
"submit-button", "submitting", "result-title", "apply-button", "copy-button",
"copied", "try-again", "try-another", "success", and all "error-*" keys
including "error-text-too-short") with proper Lithuanian translations that match
tone and placeholders (e.g., preserve {{count}}, {{required}}, {{available}}),
ensuring grammar and context are correct for lt-LT users before merging.

In `@apps/web/src/features/i18n/locales/uz-UZ.json`:
- Around line 3279-3316: The "ai-assist" locale block is still in English for
uz-UZ (the "ai-assist" object and its keys like "title", "toolbar-button",
"balance-label", "free-remaining", "action-*" entries, "submit-button",
"error-*" etc.), causing mixed-language UI; either replace each English string
under the "ai-assist" key with the correct Uzbek translations (ensuring
placeholders like {{count}}, {{required}}, {{available}} are preserved) or
temporarily disable/gate the AI Assist feature for uz-UZ until a full Uzbek
translation is added.

---

Minor comments:
In `@apps/web/src/features/i18n/locales/bg-BG.json`:
- Line 451: The "add" localization key in the Bulgarian locale (key: "add") is
still in English; update the value for the "add" key in
apps/web/src/features/i18n/locales/bg-BG.json (and the other occurrence at the
same key) to the proper Bulgarian translation of the CTA "Bookmark — get
notified about new comments" so the tooltip/CTA is fully localized for Bulgarian
users.
- Around line 106-107: The English strings for shared UI labels "pause" and
"updated" were added to bg-BG.json and must be translated to Bulgarian; replace
the values for the keys "pause" and "updated" in the bg-BG.json locale with
their Bulgarian equivalents (e.g., "pause" -> "Пауза", "updated" ->
"Актуализирано") so the shared "g" labels do not leak English into Bulgarian
screens.

In `@apps/web/src/features/i18n/locales/es-ES.json`:
- Around line 3290-3299: Update the untranslated and incorrect Spanish strings
in the ai-assist block: replace "chars-remaining" value with a Spanish sentence
keeping the {{count}} placeholder (e.g., "{{count}} caracteres restantes"),
correct "action-improve-desc" to use “pulir”/“mejorar” instead of the
nationality (e.g., "Pulir gramática, claridad y estilo"), and translate
"action-summarize" and "action-summarize-desc" into Spanish (e.g., "Resumir" and
"Crear un resumen breve (TL;DR)") so all keys "chars-remaining",
"action-improve-desc", "action-summarize", and "action-summarize-desc" are fully
localized.

In `@apps/web/src/features/i18n/locales/fr-FR.json`:
- Around line 1647-1649: Update the fr-FR translation for the "added" key in
locales/fr-FR.json so the success toast from favorite-btn (the
favorite-btn.added message used in
apps/web/src/features/shared/favorite-btn/index.tsx) explicitly mentions
notifications/being notified about new posts instead of the shortened "Ajouté
aux favoris"; keep the message concise but make the notification side-effect
clear (e.g., include phrasing equivalent to "— vous serez informé des nouveaux
messages").

In `@apps/web/src/features/i18n/locales/hi-IN.json`:
- Around line 3279-3316: The ai-assist localization block in the hi-IN locale
currently contains English strings and must be translated to Hindi; update all
keys inside the "ai-assist" object (examples: "title", "balance-label",
"free-label", "action-improve", "submit-button", "success", and all other keys
present) with appropriate Hindi translations (e.g., "AI लेखन सहायक", "शेष राशि",
"मुफ़्त", "लेखन सुधारें", "AI सहायता चलाएं", "AI सहायता पूर्ण!"), ensuring
placeholders like {{count}}, {{required}}, and {{available}} remain unchanged
and punctuation/spacing match existing locale conventions.
- Line 107: The Hindi locale currently has the key "g.updated" set to the
English string "Updated"; update the value of "g.updated" in
apps/web/src/features/i18n/locales/hi-IN.json to an appropriate Hindi
translation (e.g., "अद्यतनित" or "अपडेट किया गया") so it matches surrounding
localized entries and maintains consistency for the g.updated key.

In `@apps/web/src/features/i18n/locales/id-ID.json`:
- Line 106: The g.pause entry currently uses English ("Pause"); update the id-ID
locale by replacing the value for the "pause" key with the Indonesian
translation (e.g., "Jeda") in the id-ID JSON so it matches other localized
strings; ensure you preserve JSON syntax (quotes and trailing comma) for the
"pause" key.
- Line 1647: The key favorite-btn.add currently contains an English string;
replace it with an Indonesian translation (e.g., "Favorit — dapatkan
pemberitahuan tentang postingan baru" or "Tambahkan ke Favorit — dapatkan
pemberitahuan tentang postingan baru") to match the locale; update the value for
"favorite-btn.add" in the JSON while preserving surrounding formatting and
escaping.
- Line 451: Replace the English value for the localization key
"bookmark-btn.add" with an Indonesian translation to match the other keys in
that namespace (e.g., use a concise Indonesian phrase conveying “add bookmark
and get notified about new comments” such as "Tambahkan bookmark — dapatkan
pemberitahuan tentang komentar baru"); update the value for the
"bookmark-btn.add" entry in id-ID.json accordingly so it aligns with the
existing translated keys like "added", "delete", and "deleted".

In `@apps/web/src/features/i18n/locales/it-IT.json`:
- Around line 3279-3317: The ai-assist localization contains untranslated
English strings and inconsistent casing for the AI acronym; update the keys
"title" (change "Assistente Di Scrittura Ia" -> "Assistente di Scrittura IA"),
"toolbar-button" (change "Assist AI" -> "Assistenza AI"), "action-summarize"
(change "Summarize" -> "Riassumi"), "action-summarize-desc" (change "Create a
TL;DR summary" -> "Crea un riassunto breve"), and "error-text-too-short" (change
the English message to Italian, e.g. "Il testo è troppo corto. Sono richiesti
almeno {{count}} caratteri.") to ensure all strings in the ai-assist block are
fully localized and acronym casing is consistent.

In `@apps/web/src/features/i18n/locales/ja-JP.json`:
- Around line 3298-3299: The JSON keys "action-summarize" and
"action-summarize-desc" are still in English; update their values to Japanese to
match the surrounding translations (replace "Summarize" and "Create a TL;DR
summary" with appropriate Japanese equivalents), ensuring the keys remain
unchanged and the translated strings follow the project's wording style and
punctuation conventions used for other action items.

In `@apps/web/src/features/i18n/locales/lt-LT.json`:
- Line 107: The Lithuanian locale file contains English strings (e.g., the
"updated" key and other entries noted around the file) that need proper
Lithuanian translations; update the values for "updated" and the other flagged
keys (the entries reported at the other locations) to their Lithuanian
equivalents so the lt-LT.json file contains all localized strings instead of
English, ensuring the keys remain unchanged and only the string values are
replaced with correct Lithuanian text.

In `@apps/web/src/features/i18n/locales/nl-NL.json`:
- Around line 3298-3299: The Dutch locale contains two keys with English values:
"action-summarize" and "action-summarize-desc"; update their string values to
proper Dutch translations (e.g., "action-summarize": "Samenvatten" and
"action-summarize-desc": "Maak een TL;DR-samenvatting" or another accurate Dutch
phrasing) so the entries match the rest of the nl-NL.json translations and
preserve JSON formatting and quotes.
- Line 3293: The translation for the key "action-improve-desc" incorrectly uses
"Poolse" (Polish) as a nationality; change it to a verb that conveys
"polish/refine" (e.g., "Verbeter" or "Polijst") so the string reads like an
imperative: update the value of "action-improve-desc" in nl-NL.json from "Poolse
grammatica, helderheid en stijl" to a verb-based phrase such as "Verbeter
grammatica, helderheid en stijl" (or "Polijst grammatica, helderheid en stijl")
to correct the mistranslation.

In `@apps/web/src/features/i18n/locales/pl-PL.json`:
- Around line 3279-3316: The ai-assist locale block contains multiple
untranslated English strings and one wrong Polish phrase; update the values for
keys free-remaining, chars-remaining, min-chars, action-summarize,
action-summarize-desc, and error-text-too-short to the provided Polish
translations, and correct action-improve-desc from "Polskie gramy, jasność i
styl" to "Popraw gramatykę, jasność i styl"; ensure you edit the entries with
the exact keys (free-remaining, chars-remaining, min-chars, action-summarize,
action-summarize-desc, error-text-too-short, action-improve-desc) so the JSON
remains valid and translations match the suggested text.
- Line 468: The "tip" translation value is still in English; update the JSON
entry for the "tip" key in the Polish locale (pl-PL.json) to the Polish
translation used nearby ("Napiwek") so it matches the adjacent "title" key and
keeps the locale consistent.

In `@apps/web/src/features/i18n/locales/ru-RU.json`:
- Line 3293: The translation for the key "action-improve-desc" incorrectly uses
"Польская" (Polish nationality) instead of the verb "polish"; update the value
for "action-improve-desc" in apps/web/src/features/i18n/locales/ru-RU.json to a
correct Russian verb phrase such as "Отшлифовать грамматику, ясность и стиль"
(or "Улучшить грамматику, ясность и стиль") so it conveys "polish/improve
grammar, clarity and style."
- Around line 3298-3299: The Russian locale contains English strings for the
keys "action-summarize" and "action-summarize-desc"; update these values to
proper Russian translations (e.g., "Краткое содержание" or similar for
"action-summarize" and a short Russian description for "action-summarize-desc"),
replacing the English text while preserving the JSON key names and string
encoding so the UI shows fully localized Russian text.

In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Around line 3279-3317: The ai-assist translation block is still in
English—update the "ai-assist" JSON object keys (e.g., "title",
"toolbar-button", "balance-label", "free-remaining", "action-improve",
"action-summarize", "submit-button", "error-insufficient-points",
"error-text-too-short", etc.) in the sr-CS.json file to Serbian equivalents to
match the locale; translate all 38 values consistently (or mark them with a
clear TODO/comment for translators if intentional), ensuring placeholders like
{{count}}, {{required}}, and {{available}} remain unchanged and the JSON
structure and quotations are preserved.
- Around line 106-107: Replace the English values for the "pause" and "updated"
keys in the sr-CS.json locale file with Serbian translations; locate the entries
for "pause" and "updated" and update their values to the correct Serbian strings
(e.g., "Pauza" for pause and "Ažurirano" for updated) so the locale remains
consistent.
- Line 468: Remove the unused translation key "entry-tip.tip" from the
sr-CS.json locale file; locate the key in the JSON (it appears alongside other
entry-tip.* keys) and delete that single entry so only the keys referenced by
the entry-tip-btn component remain ("entry-tip.title", "entry-tip.send-tip",
"entry-tip.count", "entry-tip.count_plural").

In `@apps/web/src/features/i18n/locales/ur-PK.json`:
- Around line 106-107: The Urdu locale file contains English text for several
keys which must be translated: replace the English values for keys such as
"pause" and "updated" (and the other noted entries around lines referenced,
including the AI assistant block and keys at 451-453, 468, 1647-1649, 3279-3316)
with proper Urdu strings; update each JSON value in
apps/web/src/features/i18n/locales/ur-PK.json so the value for "pause" and
"updated" and every English string in the AI assistant section are translated
into Urdu, preserving the existing key names and JSON structure and ensuring no
trailing commas or syntax changes are introduced.

In `@apps/web/src/features/i18n/locales/uz-UZ.json`:
- Around line 451-453: The "add" tooltip string in uz-UZ.json is still English
("Bookmark — get notified about new comments"); update the "add" key (both
occurrences) to the Uzbek translation and keep consistency with the paired
status keys ("added", "delete"); replace the English text with something like
"Belgilang — yangi izohlardan xabardor bo'ling" in both places so the tooltip is
fully translated and matches the existing "added" / "delete" strings.

In `@apps/web/src/features/i18n/locales/zh-CN.json`:
- Around line 3279-3316: Several values in the ai-assist block are still in
English; replace the English strings for the keys free-remaining,
chars-remaining, min-chars, action-summarize, action-summarize-desc,
error-insufficient-points, and error-text-too-short with Chinese translations
(e.g. free-remaining -> "今天还剩 {{count}} 次免费使用", chars-remaining -> "还剩 {{count}}
字符", min-chars -> "最少需要 {{count}} 个字符", action-summarize -> "总结",
action-summarize-desc -> "创建摘要(要点概览)", error-insufficient-points -> "点数不足。需要
{{required}},但只有 {{available}}。", error-text-too-short -> "文本太短。最少需要 {{count}}
个字符。"); update those values in the ai-assist JSON object so the zh-CN locale is
fully localized.

---

Duplicate comments:
In `@apps/web/src/features/i18n/locales/bg-BG.json`:
- Line 468: The Bulgarian locale key "entry-tip.tip" still has the English value
"Tip"; update the value to the proper Bulgarian translation (e.g., "Съвет" or
"Подсказка") in apps/web/src/features/i18n/locales/bg-BG.json by replacing "Tip"
with the chosen Bulgarian string, keeping the JSON formatting and trailing comma
intact.

In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Around line 1647-1649: The localization keys for the favorite button need
correction: translate the "add" key from English to Serbian (use an appropriate
phrase like "Dodaj u omiljene — budi obavešten o novim objavama"), keep "added"
as "Dodato u omiljeno" only if that phrasing is intended (otherwise consider
"Dodato u omiljene"), and change the "delete" key from "Uklonjeno iz omiljeno"
to the imperative and correct grammar "Ukloni iz omiljenih"; update the values
for keys "add" and "delete" accordingly in the favorite-btn locale entries.
- Around line 451-453: Update the three i18n values for the bookmark button:
replace the "add" English string with a Serbian translation (e.g., "Dodaj u
obeleživače — obavesti me o novim komentarima"), change "added" to the
completed-state phrase "Dodato u obeleživače", and change "delete" to the
imperative action "Ukloni iz obeleživača" so the keys "add", "added", and
"delete" reflect correct Serbian wording and grammatical tense.

In `@apps/web/src/features/i18n/locales/uz-UZ.json`:
- Line 107: The uz-UZ locale file contains English values for the keys "updated"
and "tip"; replace the English strings for these keys with proper Uzbek
translations (e.g., translate "Updated" and "Tip" into Uzbek) in the uz-UZ JSON
so the UI is fully localized, then run the i18n validation/linter (or unit
tests) to ensure the JSON remains valid and keys match other locales.

---

Nitpick comments:
In `@apps/web/src/features/i18n/locales/fr-FR.json`:
- Line 468: The fr-FR locale contains a new English-only key "tip" under
entry-tip that is unused by the consumer; either remove that "tip" key from
apps/web/src/features/i18n/locales/fr-FR.json or provide a proper French
translation for "entry-tip.tip" (e.g., "Astuce") and ensure consistency with the
consumer at apps/web/src/features/shared/entry-tip-btn/index.tsx which currently
references "entry-tip.title", "entry-tip.count", and "entry-tip.count_plural";
update the locale file so keys match the consumer or remove the extraneous key
until you wire it up.

In `@apps/web/src/features/i18n/locales/th-TH.json`:
- Around line 106-107: The new localization key "g.updated" currently has an
English placeholder ("Updated") in th-TH JSON; replace its value with the proper
Thai translation (for example "อัปเดตแล้ว") in
apps/web/src/features/i18n/locales/th-TH.json under the "g.updated" key, and
scan the same file for any other English placeholders to either provide Thai
translations or mark them for a Crowdin sync so a follow-up translation pass can
supply localized strings.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 14b570a1-2853-4103-acc5-3ee65135c983

📥 Commits

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

📒 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 (3)
  • apps/web/src/features/i18n/locales/pt-PT.json
  • apps/web/src/features/i18n/locales/tr-TR.json
  • apps/web/src/features/i18n/locales/de-DE.json

Comment on lines +3279 to +3316
"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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

The new ai-assist section is entirely English.

This adds the whole AI Assistant surface in English—actions, helper text, errors, and success states—so the new feature will be mixed-language for bg-BG users.

🤖 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` around lines 3279 - 3316, The
ai-assist locale object is entirely in English; translate all strings 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-* keys like action-improve,
action-improve-desc, action-suggest_tags, action-generate_title,
action-summarize, action-check_grammar and their -desc variants, submit-button,
submitting, result-title, apply-button, copy-button, copied, try-again,
try-another, success, and all error-* keys) into Bulgarian so the bg-BG locale
is fully localized; update each value in the "ai-assist" JSON to the correct
Bulgarian translations while preserving interpolation tokens like {{count}},
{{required}}, and {{available}} and the exact key names.

Comment on lines +451 to +453
"add": "Marque-page — être informé des nouveaux commentaires",
"added": "Ajouté aux favoris",
"delete": "Retirer des favoris",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Keep bookmark copy distinct from favorites.

Bookmarks are already called "Signets" elsewhere in this locale on Line 239 and Line 2075, but this block switches to "Marque-page" and "favoris". That makes the bookmark flow indistinguishable from favorites, and bookmark-btn.added is the toast shown after enabling comment notifications in apps/web/src/features/shared/bookmark-btn/index.tsx:47-58.

💬 Suggested wording
-    "add": "Marque-page — être informé des nouveaux commentaires",
-    "added": "Ajouté aux favoris",
-    "delete": "Retirer des favoris",
+    "add": "Signet — être informé des nouveaux commentaires",
+    "added": "Ajouté aux signets — vous serez informé des nouveaux commentaires",
+    "delete": "Retirer des signets",
📝 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": "Marque-page — être informé des nouveaux commentaires",
"added": "Ajouté aux favoris",
"delete": "Retirer des favoris",
"add": "Signet — être informé des nouveaux commentaires",
"added": "Ajouté aux signets — vous serez informé des nouveaux commentaires",
"delete": "Retirer des signets",
🤖 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 451 - 453, The
French translations in fr-FR.json use "Marque-page" and "favoris" which collides
with the existing "Signets" terminology and makes bookmark actions ambiguous;
update the keys "add", "added", and "delete" to use the same bookmark wording
used elsewhere (e.g., "Signet"/"Signets") and keep "Favoris" reserved for
favorites so the bookmark flow (see bookmark-btn.added used in
apps/web/src/features/shared/bookmark-btn/index.tsx) remains distinct — for
example change "add" to a phrase like "Ajouter aux signets", "added" to "Ajouté
aux signets", and "delete" to "Retirer des signets" (or equivalent consistent
"Signet"/"Signets" forms) so translations are consistent across the locale.

Comment on lines +3293 to +3294
"action-improve-desc": "ポーランド語の文法、明瞭度、スタイル",
"action-suggest_tags": "タグを提案",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Translation error: "Polish" mistranslated as Polish language.

Line 3294 translates "Polish grammar, clarity, style" as "ポーランド語の文法、明瞭度、スタイル" which means "Polish language grammar, clarity, style." The word "Polish" in the original English is a verb meaning to improve/refine, not the Polish language.

Suggested correction:

-    "action-improve-desc": "ポーランド語の文法、明瞭度、スタイル",
+    "action-improve-desc": "文法、明瞭さ、スタイルを磨く",

Alternative: "文章の文法・明瞭さ・スタイルを改善" (Improve grammar, clarity, style of writing)

📝 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
"action-improve-desc": "ポーランド語の文法、明瞭度、スタイル",
"action-suggest_tags": "タグを提案",
"action-improve-desc": "文法、明瞭さ、スタイルを磨く",
"action-suggest_tags": "タグを提案",
🤖 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 3293 - 3294, The
translation for the key "action-improve-desc" incorrectly renders "Polish" as
the Polish language; update the value for "action-improve-desc" to use the verb
meaning "to improve/refine" in Japanese (e.g., "文章の文法・明瞭さ・スタイルを改善" or similar)
so it reads "Improve grammar, clarity, style" rather than referencing the Polish
language.

Comment on lines +3279 to +3316
"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
Copy Markdown
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 ai-assist block before shipping it in lt-LT.

This block is effectively the English source locale pasted into Lithuanian. If the feature is enabled, the whole AI assistant flow will render in English for lt-LT users.

🤖 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 3279 - 3316, The
ai-assist translation block is still in English; update the entire "ai-assist"
JSON object (keys such as "title", "toolbar-button", "balance-label",
"points-unit", "free-label", "free-remaining", "cost-label", "action-label",
"text-label", "text-placeholder", "chars-remaining", "min-chars", all "action-*"
entries, "submit-button", "submitting", "result-title", "apply-button",
"copy-button", "copied", "try-again", "try-another", "success", and all
"error-*" keys including "error-text-too-short") with proper Lithuanian
translations that match tone and placeholders (e.g., preserve {{count}},
{{required}}, {{available}}), ensuring grammar and context are correct for lt-LT
users before merging.

Comment on lines +3279 to +3316
"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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

The new ai-assist surface is entirely untranslated.

This whole block is English in the Uzbek locale, so the AI assistant will ship as mixed-language UI end to end. Please import the Uzbek copy here, or gate the feature for uz-UZ until the translations are ready.

🤖 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 3279 - 3316, The
"ai-assist" locale block is still in English for uz-UZ (the "ai-assist" object
and its keys like "title", "toolbar-button", "balance-label", "free-remaining",
"action-*" entries, "submit-button", "error-*" etc.), causing mixed-language UI;
either replace each English string under the "ai-assist" key with the correct
Uzbek translations (ensuring placeholders like {{count}}, {{required}},
{{available}} are preserved) or temporarily disable/gate the AI Assist feature
for uz-UZ until a full Uzbek translation is added.

Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 26, 2026

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
{"name":"HttpError","status":500,"request":{"method":"PATCH","url":"https://api.github.com/repos/ecency/vision-next/issues/comments/3996718020","headers":{"accept":"application/vnd.github.v3+json","user-agent":"octokit.js/0.0.0-development octokit-core.js/7.0.6 Node.js/24","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":{"body":"<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comment: review paused by coderabbit.ai -->\n\n> [!NOTE]\n> ## Reviews paused\n> \n> 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.\n> \n> Use the following commands to manage reviews:\n> - `@coderabbitai resume` to resume automatic reviews.\n> - `@coderabbitai review` to trigger a single review.\n> \n> Use the checkboxes below for quick actions:\n> - [ ] <!-- {\"checkboxId\": \"7f6cc2e2-2e4e-497a-8c31-c9e4573e93d1\"} --> ▶️ Resume reviews\n> - [ ] <!-- {\"checkboxId\": \"e9bb8d72-00e8-4f67-9cb2-caf3b22574fe\"} --> 🔍 Trigger review\n\n<!-- end of auto-generated comment: review paused by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nThis 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.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Locale JSON updates** <br> `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.|\n\n## Estimated code review effort\n\n🎯 3 (Moderate) | ⏱️ ~20 minutes\n\n## Possibly related PRs\n\n- ecency/vision-next#670 — modifies the same i18n locale sections (bookmark/favorite translations).\n- ecency/vision-next#592 — updates `entry-tip` and related locale keys overlapping these changes.\n\n## Suggested labels\n\n`patch`\n\n## Poem\n\n> 🐰 I hopped through strings and nudged a dash just right,  \n> I planted `start` and `updated` under UI light,  \n> A tiny `tip` I tucked in, neat and crisp,  \n> Then whispered an AI helper into every list,  \n> I munched a carrot, grinned, and bounded out of sight.\n\n</details>\n\n<!-- walkthrough_end -->\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 2 | ❌ 1</summary>\n\n### ❌ Failed checks (1 inconclusive)\n\n|  Check name | Status         | Explanation                                                                                                                                                                                              | Resolution                                                                                                                                                                                                                   |\n| :---------: | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 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'. |\n\n<details>\n<summary>✅ Passed checks (2 passed)</summary>\n\n|     Check name     | Status   | Explanation                                                                                                |\n| :----------------: | :------- | :--------------------------------------------------------------------------------------------------------- |\n|  Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled.                                                |\n| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |\n\n</details>\n\n<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>\n\n</details>\n\n<!-- pre_merge_checks_walkthrough_end -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Create PR with unit tests\n- [ ] <!-- {\"checkboxId\": \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Commit unit tests in branch `l10n_develop`\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=ecency/vision-next&utm_content=689)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.\n\n<details>\n<summary>❤️ Share</summary>\n\n- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)\n- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)\n- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)\n- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)\n\n</details>\n\n<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>\n\n<!-- tips_end -->\n\n<!-- internal state start -->\n\n\n<!-- DwQgtGAEAqAWCWBnSTIEMB26CuAXA9mAOYCmGJATmriQCaQDG+Ats2bgFyQAOFk+AIwBWJBrngA3EsgEBPRvlqU0AgfFwA6NPEgQAfACgjoCEejqANiS4A5EgHdIAYQr57teFmzda1aQZtsZgFKLgA2AA4ATgMAVQAlABkuWFxcbkQOAHosonVYbAENJmYs0TIGWSyJJHh8DDByAA9cLO5sCwssyJjYxFDIADNKbAAvZgMAZXxsCgYSSAEqDAZYLgsARgAGDAB9JSkLfG4DaDQKUlxF5dWuA5Ijk8ncamxM/m4yA3iSGodKd4GRIqB6AlwkPz0ahcABMWxhYTAWwAzEiACzQbYcZEAVg4aIA7AAtIz6YzgKBkej4QY4AjEMjKGj0EpsDCcHh8QQiMSSaSLeRMJRUVTqLQ6MkmKBwVCoTB0wikchUZkKVjsLhURyIILMc7yOQKYUqNSabS6MCGcmmAxobgZLL2EgCLKIOZZYavCjSLLwDYRDBZI4MNBWRBZNAMMCRkgaISIeocAwAIlTBgAxOnIABBACSDOVkMgOtY+v4tNWmFIiFJkES+BDFngo2odSwvheXDQtCU9HIjnaAibDEgAGsSLJkJh6BJQ9hpAAaFArCzYDwYIhJyC6SBEDSIF4UDnd3uQftjieQZMH864ZOQez5SCz1cLZPPW/37AYYW7jQGbcoD3bwOzoLsezoM8HAveRkxAyF70fXBYGfOc31iHwEMgb9fz3ACdwEfB8FHPUKFHMABFwDAuHg1VkxPe8X3nSACGw/p0CwEhmDAXxEFgABuK8Tzoe9pyvJQrBoRi0OQb1uAsGN6CQlDz24WAqH6RBBOTCSSGZe9vT1TxkG/SsNzof9AMgdgKFkMBxG4cDT3PcdYIcxCnyYt9zG4ZNLJ3QY0AkfAKHUEgKKomjMLohjUNfFj8Gs7jeJQg9ZCsbThNoaT4sQeBmHk+BBngSDWOTbMIPoVjAuC0KaEQZNtN0qS4uY2jSsS5MfmYfApCGVxmCGIKQrChqmoePSROw6LIMjJgKHXIgLHkTwFHZEgWn8qBtGjRA8oPLhBg6Zb0Eq9ApygxwCG4MArEOSBg1DBZuVEK4mHZbQME8IgzyCSgZmQWJc2LXBQo3ZBBhCnNgYAdTq76cz2pAXnZSAAApmA6ByrCGEqLFoZBPAYVdFpYyxFwekELEQJclEQBhQu4cR6hp9BeRZpdKFcChWbEm9cDeaQAEotusjwCAoeyiIsARzic9Q23LdBLvQeBdv2q5vQU1UhwbUdlxY2AFkepsW2ZrADwobAxFmWN8O2tW0CRg9FmDUcnMg5T0E6KCD0g4qHgJ9HxFwKwlwIfAZfOCi8AIDAl1lhSVnChSQgsJduHwTxcEQMBv3UJdBm9FOqcL4uwEMz7vqXJgD1u0u2fN+u0/DjbcGbh5W5aMB5JjWBI+FGvYHOXPK88avIGYTwwErHml0jJv8t4XqSHn9mGiX1wpB46QGDXpudSIatcF2F4iF59ewEP4/T7Qc+d/p/e2wLJkSFP8mn/qF+VTfkOrAfvejdn4llIs2VeQCv4gPOGAgBn8GirFEKOXYRAqClgoHAmeRsGBIJQWgNBsDiyFCnu3AQsd6hLh1AIYh4gNxLm9DqCw7c/7gLtPJOypC0jkIUNwdhZD47cJKrQcOtloxEE+sIuymB8DIUoBQ628w9qcwoNzMAxlsCDGKgwEq7Ie5Z3ZKzLmIUZ71BoDozOw5ZBKJUT/W6+UC7WWUUYtAeBYBWKMUqSg8BAGGMljQbuEcr79yPCLAwUAnAmNcBYIYRxHBiR8ZAYeP4mwbi4NnVwtBrbmyVmgFWeYHzww3EMCEAtvQGxkSgf07ZqA5KXk2fk54gYgz8MgNGlDqETx1AwBRBjHF8FnKFTAOchZDChnk7MzsrjHCZG2KcP4FDKOkJnH8CNGmp1BEuZSMwrihhoGDH6Vt2T5WNvgPII5VrIVQB4DR6N6gnQ7Dkk8CsWZZHaogEJGYszZkYdMlmCVDYLCUMTc4rZfk0msk0TOR5IJQ0HMOayhzxD+FCZAAACoUOFrlTq9i4AAAz3DeI8OKHyeTQleD8R57xo24NQNYu4DaRmjPMOMCYMBC2RWiocXiYJYrApAPFGh2q0CJV7LyV4MKgWyujalyEuA/VWgymMzL6hsqgByjFl5RVmWrFuHcOLCLEVIuRSiGAtA9iJZqxJpAqqdQAEJERIucfWgAUAl3HpM80iiqCPQIRPAKtWTsAavbPl+qHVkQiiarK5rSVao6leAAIjoF4eoULYEWPaw1garJ6vTY68NGhmokCjfFGN1qrwos8GgFCvhQppoNY6zNuqaojRoHmk8RbmIlr+cmAAYsNOqCwXWXHdeIAOUIfVXFUvgA8DaoA4qbf21tlV20LE7WVCqp5qp9tGsmINc6t0tuNfmiaNBl2MEtbGrqXEV79RYENWq272Xoq5ZirKuKbJ2QchoBywqSXxWTD5Hdqqn0jhfT2J51EVY4p2k7DWRKXpiHQFca6D1fgPDWi8cehSMB/VcG8XGgdMi7uYTipcOKI5R0lhwuOJHg2hkwPMDuFgaM4sztnXO+dcDMaLiQEuacuPlzHl9DczHa7tzWUx0jC9n7ieY34sTVNZNtx7gpeY/d8aUBE8PHmFcuJV2E6Rqe8CtOIGY1Jr+m8V6mcvhZ7edMGBWYPtgI+0gT5nxM5Jy+18XO33vnZhzz8PE/3fqHQtHmm6Bb8MF/+fmwvAN1NA0YoW+VmYaFA0KiWAH+a/gg7ByDUGkSy0ZxBeW8GkUy6Rtp6gY6cIwMxyraRvrMfoVjey5NTP2mWtV6jpGmA8K6/UETxxBGyZEXfT6I3JEYGkUbCgdX5HSHc3ynxqiMA6g0V47R7dWP6OY8t96pituRy8bIXbvSK5+FscQ07KjnHIWu+4xkoV7OkeW3JqWhA+IhU4/+R9nKRzsHUPIR55suDnig47CZRLdbYOJchb2UTyB+3oAHfGyA7OhRCGO69aNrq3VQ1E2FXLs6UECvMd5NgADyNgACiRhEieH5CWrgABqNEUQshgAJCmNMoSbSsPDE6F0boGAemKbbcMfoAxBgbE9cMAgiBgBtQAcSVdRbnO7MzQ2/kWNL8gwUxprMi+XiulcPRlzjV5OqgL7kPNsuZwEZr0FclOSqXBry2+TG78ld4OL0Dgo7z3YqA+CWpYLSAgnkDJhRc4/oHk4c5NBtoZJP1WQPNoEIN4uA2SaCDSGw14adVWXoj2e8cnpoSr+WH+UXFIApV95AG1HQxEDKwIn1b2sZmnQz0j/yResql+WIgbWsbG8WGb/ATAvedw6WPSQAfmAh9FlYqP8fk+g3vta45fCVksoq0xcmdysOUKiv/fAXyosdpayLMDmZhedzGUoKqc89EIca3vP0deR/ICNMtt9WZUJ14IYoZ5Q8k4YFZClxkNZBklwiYSYEZxML5zYeluZJ4Fs74KYxJ0cz8kDRZ50woC9t9p9Yoy9BVK92Jq9BoUpBIV9oF5Q29F8kDy8ixIY+Bi9exRI5kZ9JI59RY6B1AjFyN/9w8HgddXpb9CCHZVE9RSBtcJZdxPpkBzx9s250BcNODEAgpwp6QxFOhKBZAOD6Ar9VRndBJn9oMJl38xD6geUoR08YxUZWINpkYEY8wdNh96AbISpEB/woAbBEoDc/lCcRxswUVgYoYNpIVVRAUFIVQZlBIAjzhjlGwAVqkmD6p+AMBloftNcvldkQVVs/lylojgVGCwUIivtoU+Agj4UQ4vDaw/DwVIi6A2hgMajAdix4AiAMAvR+QeorlBFsiswABZTAIqFzSAbteAHGbMbo5aRLCgIwSnGnIwTXEYr6YYF2SY6Y2Y2QeYunBnZAJnSAVnMIDnLYfYxHM9KsXlVnCIDnLnIEA4q48yWgFnNne49XUkPne0AXZ0V0d0T0EpH0SXQME2H0JQMAONanVXJMVMDXT5fMCLVUXXJWA3WsddRQ6Caok2ZsfImCEyH8SgXcVJdkdJa2fkd3T8evf3CVUSI4cGeAJQcFZwwpZ3MpI2SAJXSgPULANGCEqE4ZegjvFmHw2tUNI1KiVqfkb0ewEKbFLFCMSqLIAtNI2NVSdSJ2b6QSb0DDAopwg8BGLgyaSVd9UUjfByeQ4yZWVSVo1yN3dyUUvAg9SUryWSBwOU3lE8RU3sZU2fVU0tdUjSLU4Q3U5AfUmhH6I0/SGo2yUU8wjWV2PWGwxDcPIiK4O6NDKlVogHXAWQYZL2HEs2RWNksSV0+ZehJZUmViEA4GewApH6GDZGaAyeeAXpBGcMhGHafKdA2QqGS2TJW2H7IwX7OFHMoHV3PfS8HFAlTjevHFQVIlHCIk8pao+DK4PFIlVaKDH4x0P44XUXHoiXSpaXZI8Mfk6E+MAbdGFgtgCgE6FQfodkFVVFbMhFeQQVXFPPXNY1IlVc4QV6A2bch0QXf4kXQE8XX0Y8sEs88KKE1XHFINAAaQnHDDLKOKgzNUkyXVIwLQQqAz+zaNzP9LfVJI/TP1/NaLXMAv513KFwBLF3oUgql2gt9MhIvJZQQqsjsEcDtL5W/RHK5THOIr5SdPCh/J4Eov/IQy3JopAv3PAsYpBJPNl1YrgsvNqyQpQuqBkmeKtVxTbSwt7GY1woEv+zfJsNB2glxwzIJ1fJDnkHB3VmRk3KwCAt+LorAoYuBKgvN3BNgvYoGyDXCQ+mMnWHN1xKyRYOhnyXAIbImUGSKUPODg/gSkjllkoz4QTjo2Tk5lwAYA0DZRxSKouMZ3PVeOOPeM5yMGpwNL1FVCFAWG9D+EcBIA0S+y4AAAlOjYBPjecwAjBZK9z6LDymLQTfLwxpAwBqdJgYTPicjETHsdd4tbJUTz1DcoB11IJzwhS8TPD+RVpJrprZqrJ8VbdkzQx6hz5GSFg9xQ92JlJzkOSfoPB159RRYHcK9d8LqGSmTbqY8FgHrW8nra8vFzY3r19SLN8v0z9zqLpzwUd6Aly+BzSz9RTxUiwOzCkdqQcg1RK80VTO0i5b1kxqcmxDNzha8FgnSp1IB5AlBTEiSpsR0vFIw2xpBS9OpSa7Fui+AmTe170CAGpRTcxSTFByS+wsS7L2iDrc4jr1KrdVYnKXYvZMZGEz8cZsbiyULkqQtw5pZ0r+t+FE56NeNO5rI8qCrRTngrYbYqAokb9Ewg14zkYJKCKhKvqLprL8duVvqrqmSuzpDwokSQpOYIVpwEYVzWiQTCEKBSc7ZhyPkcxvlYjflWIijRAYj8jkAyiIUKjqQqipbEV1qXyCKEaLK+VTrbwXLcYcY3LaLQKDygSjzmLxqyhZaZr1KiVAAkwilL5WTHCTZBbAoGTDwpLrhTLtfQroFUd2ruKlrsGo8sbogqUpYsOo7o4sgB7tFRxXKhtlDFxNoHwBHtMvw3xnLpxRRu4Ghu4FnqmIWDrrkuGqbtGuUrDDbqmvXqvK3tJR3pRVcG4ArWPvwrhV/0KQ/JEv3TEqoiPW4Nvvnp3Mfs8pGpXtbrXvgt0v9gGj7q5vJt5qpv3RprpsmmVGHU9RDC0XqHZu7uwbJorTwYmIIYalHrVS5QnonMcsbIPDgfvoXoboUu8pbtPPfrlo3q9jZM6RQidj4ra1I3IwNqowG1I2NuTkY2Y22xzjzi+k41I241NokxEoE100wyIEGzrhk1iy/nMb4qUysbIyU17lUwHg0x62Mx0yMiExMYM2nlnkWyg2swKi3iSz8cXgCZXnK2S08ycxvjc0Kyviie8zc3CeCYC0WpoCiyCZS1kN/nJiScybSzAVifyYyxiwiabhyxwXy3OFifKZK3wRKenKISqwUdqwq0aYa30z5Wa0YVaxC3azYUNsGz62acGeG1kdGzEU8Am2jCZpmzmy6QW3u0ljUXWy0XYF0TY0WeMXWjMSO0qE2ZsVoe0aWzO1u1gE2cCy8U2bewCU+0JRPvdvYedq4fQHtAhB5nOmVi9vumqKEpkoQaGqQefpQaEbQc7vRl9ryiZMcu7JkODtmyFlDupWWSxo5PKKhVoBaIIpCOBh1FjpjCVk1pFJKsOLKreLRA5xhF6ogH6ttH+cXv4ebrGqEaLjAG7XiFmrhMTtcKRMghRP1zWvRLOm2sH2FKwDZKRr/DuusCDRnLdzjQAEuOEd0rJwHkwhjUAAADyAIQGYYe5FdG1UaowlrAMsqKr8sNY1BWk8L3To8gK4KAAAK9BgWE8BvPlcpsUJmCkGcSaDVGz20HoXvB7rVfOAAEd5we50DIAXUnXSlXWQpmB3W6Z3VsBvXsBfX/UQrA2naJyQ2KBw3wpqVSBIAQBIAAA1AGYsSgEgUYZcN1j1lNtNjNlgf11s/kXFxgBYTOA8INq8bMHVvAd1n1u9EaGdSm7gr3bwXgI5PgHGPKLot1N1c4CgJ1oksMUhzRLO3ty9cQb0PBiGLdQNSkSGi0iZgolyCcBWhyN3ADZFJ548M6KRnJG0gi41xMmHCF66xWmFoO1JqGNGc8PKTlQpaHUcZ8gOnsuF2VBQ606CID5Pd9/We9qVVo41l3XsNlFYz5ZOrOwojk4olOgonOpo/O120chFOok+zFcB/lKV7h5LOlvhryxl1+n0Fltl9Bnu3fZ3BW2j/6m3Kur/E/BVpV3dP6wWaeiVH9OHE/dV5ALVgdvV4B59S8Gj81iUiNM1A2Oenhxj+S5jl+li9j9lsF7+4tMqm9Qad8W1t1R151uthNpN+pL1iEdNv19gAN9mrtEY/NiNotgdSAWNl1jAet5NqbVN1z5t9ULN9mqj1Tx3T8nNC16ByNbTu+hj4CgFpexSny5lyWDj0z3uwmrBvNgtyN4t0titvDfob0Wt+NigRNht8Lpt9zmL5ADt+YHgKdH3NdAd3AIdtzvAo9selT98hL4NJLjTmByaejh+rLhlwz1u4zzjorizomqzyYKd0KW8lDDohdq4Jd5RVd2d5z5mkMJAjmq8H4Xdok5NobwDEbkDeLiVEi0GMim+tL+BzL+lgz4FlS5bwr7jy9ojcioT0lU/XyOL8c+UjhyHdGYVhfUVxD4ZCV8pL5tDZCagZcYmNcfkaFwO3s2bT73T77pj5B3L/7/LkzjetGJ9jo4Dn6UD58lhp76H3lWH2DeHqykVvEpn7CQkvgfHyDv9onh23k/s220MLFcDJWeDhGJn4ljB8q1ndnKqgwGq8QOqyCBq4Q5q6yNqo8LgIYvgoIKl740n/T8nwRlShAMAXMGwDltMearJ+gPlisAV5FaO23+346ncTa+gao8VgXyV/6u/KAGcyAAAXjJQ9wkP9Kj6D1pNz0m/DRYh58YI/Lj+tavDtTrTIh3CHSZs9VmnHT9RbYDW3dz/FOjddQnQ9VHW9S2TL+i5zmVe3B3EnuTCr8NToFLYAE0ZgAByH2EIDdr1FQJvpQ8v/RDIw2VAbtn3YNwAKkhABhSEAHZIQAWUhAACSEgEAA5IDfwAOkgV/AASSEAH5ISAA/wAcUhAAgSEgEABxIQAQUhAAdSEgEAHRIQAekhAA+SDb6sgLTd26mvTqd68B4Y4GP3O4zJt2gAGkgH+gAVEgD+n/QAAyQG/GAXv0v6QBAAnJCAB8SE/5f8f+O4AtIYSMarY3c0AuAYgOQGoCMB2A3ARDTe6b4PYEtHisD3b47gLS0fCHm3ygB41jUafRHrh0z4sDtoPYN3PzWbQLAgIbqIvg3wn6+pJ006bdqIP7Q19C+9fcfqXzkGt8s+ubf3n8lEqIB++Q/EfgsCkFep7ARsIGpeEJx8QVYC/BqJvSvBL9d+1/QAGSQgAAUhnBn/C/jf3v6ABpSCf4388BUAP/ldyvR9RRKwA5DCYPAEsxt2jglwe4M8G780BWAz/oAHhIa/oEPHbGlhC7jd4MmDiFuCPBlAwABSQp/GAZ/0ABMkJ4I/6f9AAJpCcDv2BPKDsmW2rHA8c90N9qBxGR8BkOaMeABoFjDzwVY6PKJC+npJ+0FgEHWFiLzZQ75X8yMBgR82fZWU2hNlXge3l55uwv8OSEoPJEmhVtJktIH/KDD/zokcOjBNOvhwzolFO8xHPOvwALpu0KO/gKyCz3WEMEtabPcquJ36ACcjw9KPTk/WXoU8363vB3upSDRvC321Hcbup0XT0B5UgIwFsCOt6gi1YPvdSvYPPCiovYNeFKJCNQ7p9PhwlOEYel3yIiLeQInLqiJ9BgjVc9grqssilIEjX2RI6wjCJe5il88h6FUhSPcpk8gWII2keiPBEsoGRngDwMyNeGEi+BWSUDPKVJHQMCBNyAQDVykBQgwyTQFknKgtgsAV0JiNuG8hyEwcpGIQFgiQBZFwpoRl4SepfWvoAjKRyI6kUyxt4ijVclorlNaLG6cjuBKXHsA6P5GW9BRNI8MHSMxE91sRpKXEZQSdg9VpRrI2UcSPAa+jNOp4PkfXSDEoiXRaIu3qKOsI91GRkoryB6JHBejhKKY6bjQADEZiqRAjbMcKNzH0iCxEonQMWPjFWi2RYrG0ROSmG/tCwEscUErSuDpjEG2XOsax1DFuiIR7Yz0Z2J9oTkRhitThsOKwC8NMxzoicVkDDFiivYOwlgHsKrH9BDh3+HFicPBiK8jiKvD4pyz6oDUkRY4ljixUZJ2840jveElrh5au9lqeud3tcWLo6CX2cKMEviQVo/DjBbgbHiTApIzkDCV4QVPeFWjPjcwr49SqLG4oJQboawt9ighmDcAhI8wntsmVxEtAyAeUPqKAXrKIwoCDhTsd4RPrAT30qpQjFZEVEQY2COUDtGtxK7d9HUBfSQaoJL6T9oImbVvl2h4n59B0/E5moJNkHCTp+rfTKJVHvCrpOoCaJNLLFgCjh5Q44HgGQGnBoBGo4kWfMpIs5lQOqdoPDNWh0CfBuiP4AyeNG4KSoI88aeAMPHaBo5oEuk2yb4D8i0CRE17FodBDLoH4z8ceY/ODwAy4FIGBeISCXlW7XFkcJXRQWFD4l19pJWOWSQOG652CyoyUqsZJLSnF8MpE6LEtlMMlsEpoKklyepMrRaSuxI7OqOVILQmSEpXacye5NryeTfAgwQ8A1PUBNTZ8TkogZHgTRuTLJnkp0r5N8KS0nh9lcur0Owm4ZuAKPYPkhJQk7inwR0H2EeKVgUTYqVEpsjoiMKQRncgxJOnkQuGJR06QKQjtnVpBotVQMKQupR2U5mU5pNHExqmWkRm5kiu4JadRXvELc/ub9NaStyB6TheOUrP4Zxl3RQyFy9zcympxT7iU0YgNPlKtkaCIBBg9gIlPTCmTDI/mjoh8YtyEagzCupBBGsxN1RtopR1MpdLTNnS4UGZ6MccEzGGQ4oCBzDQut6MhCvd/JoPLjmdARq8d+Kr0wijzOZC4oUx1DCmXjAJi8caZbYumUZWZkczZ8y6INGjFZm4B2ZnMhGXNMnoc9nKWI7nomOsI4TvAX+NuKRL5D4kdaYcVKhRkNpZUk4DGcTLlXyqYd6clxS8WiDuJq9FiVOWnI8R9mksKqqvLnDeOpZ3iiZQMoURLnbi5hoAb4rlgtX7G8tvxq1P8bWB+hgkFaAE6CGyUpIUowef6EWs2AnywSaSWEEVOD2zBHw6gFAbogQC/DB9ykyYIgPeFA4/YoArE94aKypm9zkZfo8qsV2JqTASAXRfeksEShQAnsvwHQN+GfaqCQwhCHQNhl6g6ARJ8AS7u+EnmzF4AM8mvp8D4DzypApSJeWAJyQ6h152ATea13EC+SWJw81MbyjHkbd95081wKW3MDPguYmAKbFfPEC/R7528whJAALYgCuuhEtdA3O/DVkdA/QKeU2CWA7zRYrEysdYCV6Wcru+UO+efJdZRIkFB8o+cF12QDQT5xscCWdyNi7z4geC++b4B0ATzkFh80KE/IIgvzMF5VZyV1HyhToEwnUxBZ/JQXsL4eiUI6CsDBpRIY07yY9nQOvZ+T3uiwi9m5FCmlzmIHAnuX1OdKt5aJCtCsdn3fllpvQwwOqLPPDxeIF5/PZeWd2vnYBb598hfrvL/qtVPErEF1GfMXndEr5a8kBTUGgV3gopAtKBq/NHlcTia9cvIPAsSjmheAbi+GKW0mDAodAQUGoBoVYjhtpwiUQcH9ikT+LrJ3XXeVEvgAxLVYOitBbjWik8jZ8XAYxXwsxj3ycYUQjkvErMUpSyFhiAqDvK7T0LGlASphRUt8l3sdADLK1mrB/aE8VFcHQ+Qhw/xZIX8Q4ylBLyBItlek2dGRHwDyTzKZkCLZcKDDFpaJCkOSLaUQrdRgovRQBLZbWUonLiTaiVJuhoBgAIBCYK4XHu8GYR600q0cZpi7JNqMYM4eiDRhxjLg8YAV/UMFYJgniiZwVmTd2SxBsYNw3sDjEgGpkHhXFtMUK2hC2SMwjwMENmFhP42Xi2Zd4GCLzAeB8yIE4szmClYkzswYIeW6TBlak2yYhYCEeTZamAjJWcrimpKiBEVlyy4I0EGCGpkKrKz0rCEVCJpplUlXtJsVXTJhClVYSdZfl3CXhDVhrhDY6AEiUROIjT6TZpssiQhPM0UQOIVEyzTRJtnWb6I3EksZQjswsS2rzsLaQ5k6tOZOqLm3iM7NcyIiBIvs2it4QRyzqWUBwdlFashy+pIZQBawz9v7QmVNCRegkTGj9ED7a1BM/PTtIaooCPhfhCdHIucM7yXCAU1w26UrAemVEyOglZ4cXUmKBxz6ldQlAbD6IdASAHodLnNx+5W96xCcu3snMK4n5y5owSucilrVn1DZH1SENXWbVWA21X3QMbWMfGt0qsSclbifhKUhRm5R9EdXLOErZo8+U3GmYTPnVOjxxT4xOX2o3o911uZKERWwosVeKbFvim+QUofk9KyoLCkha4GPlEkz51bR9VEPsWOKAl28h7qOsRrjc914peEXQGrodqBRWYzccuovVf0cFe81hTPJ/mtj/5GAQBQBuAUbzgN8kxBamkgWsRnFXaEpWUvNDEKv5O87dXWqRn7r8a6sgGbHN+7xzfQ56lbteoaX4K/1UxKtuhq/WdLHEBUP9c0pXm0LelDCgZeaA/W0bQNO6yeqoqWwntUa36VjceuJnAzgSXG/tRFNCn0az6NHQxVpyPU1iT1i60mXpsvWobXF7S1iHPKsUBLL5AGvxQRsKUwLOo9m9xYlE8XObvFtishoBpfXOKjN4GzkXuhCXQahUmmizdpo41IbuNJXSjeyFiXWTTF7i+AEkpSXoAJA6S6gIlCyU/gclhQPJbhvwWeaeunUVLQgqGXhbd1FYpmeZtHFxyQxnG3tcluJp9LKtu3FpV20y1KCRNFCt9Z1B62MLzQTpOjVADA3l1AJVauaUbOeYtb5u7G9rUlrBa09xhkLBYMmuSzxrhe/YkKDimGT7Y9MP0U5QcIJZzi2SUVPJHWX2l3Lk4Dy8XMYCaolR7AuwcgHQDoC7AM8X0EKLsEQBOgrQqxUYhsSuBbEFgMxUMLsUoAXiw5V4tXhr27L1VFAjVBedBFaosEOQxvDwKbyjnm8tNbW7tVkCEBoAwAAAKRRQpznen4whGgh/EYNi65OqnTTvlqQARadKbomwEQDUp5gGcGPAjFFTOT+gPJcQI2BOjlINCbARYL6mQjFxJyk4B8H+s74wTqS8E0UqxK4AGtSoKhMsqxCrycQYx1gqKieHnhzJO0WUX0twT+Q9RSk70LROxBvJaQQyn0SCHtuVFeQzSamxyDmCFbQRBAaolQHOzPGbgrw7kG9uotjW7atRBpVkihUdLVLIo3+R3AipaBSlkAhu8gsbs6mm7gCPYC3SyAs7W6VSrEe3fqJWBIAqaCbV3TqXd0eE49EZLIaqG90jKpCh2pkCFC4DZhXmhJRgZWrentELZeExZcuNEgXQ5eWNK6aiyb2dkDt0wo7XwFA4wFRaGSI5Q2SGDHQTxIMPZO1zdR3bgYDLOMgRI5A6C6erQzCd7R+ZvlV9By9fbNG21ftexhPDOFvEZKdk1QB4hYDtLBTHC99opCnKqMoCzg1ATYXMrYAkWmRpFZuU5MzsEi3J5Ab7UBufHrxBEwApOBGGySdClJd8UMQVGdNyI/ICiRaymjdNw53D0WDwwfYRRemPdxZ59GctXSoobkj8q0HThl2J1rbSdrO6nStxU21y/0gAaNTAA05pTT6DDzGHguQNgsHPpaMjg3BvXGnrW6vB9nbZoEO/pNFgAF7NAADaaABT00ABCZuIbeFCU+iRU9GGWUFRCwFaXOlg6xOk4IBXKa4hdSTJUqqH4KYfZLFp3nbNzbY8fbPbtpN1xj2+s6VLqKlIKsRHd1e7oRMEEF8omZ4RtPZEfqBO6a9DXINLYakrrlpZbBpw4DO4Obj3DndTwxhVi0+Gei/hxKGHjxGxi4+pRmDb3QiP+EUj0Rm8nUYSOkomja0VIzEf1ntFDZ97XGbMojqJQ9tQvRfV3qJ5dCVtna4MTwYp18GwWXsS7f/r/zdD/k0VY/X0aIoDHT9RKVpKIHqDVo9cXSWYN6GTgrTfw4xvsZMdxlWEsAMx+DRuJYpFGN6UjalP8IuUclzweSBlgcJ+zezSqCUt4hHLN40tnDlm1w2/W6aJBkNauTlnTpZVfjGdWc8yP+ID2hqCKbJVaDCbhOgToZGit8N7lgkTrVQghzRbrslRowg9IByCKj1n3ai6UOy5VGhJWFX77oXQ5DirSxjq0qacslpJ8sdnyMZVyjN2Q3HUbsYtGHsgqt7Euo7bmS8ehsgvpuMqgoY3coNOhMYkWkJWl9Qk1eEinIohiigcw3ttTWThtKr4QeVyO/Ip6Tw8Ul4qhvEn6wJBhU6QeoLkkt87BmBP0jxoAF9QgBfMSISvK3ZiTJuygqSeYZkElTHAIkr05wWjyABDQH3qHIUACZyAIAD9AWQMwEADOgAZEWRiFDgsgQSNbvr0M56AhZf2Am3WMVTsoWQKMlNDmhylvoWRJRfQOTIhTfIp9JSJoe8ihTeCkNb0LrCICFxk9Fse4+137iOBSCKBq5QqQLTelmiyor2OeHpzIRsAoxTAFkBFqhwYjdEuYUOMQ4vNPgI8JYU0jsn0ljBcHe41BAz0IKO9Ex1U+gmXAvVWwxy3fQOTtrCEQoYiL6EWWsJkaVMkw0/bKZ+qx7GTrhY6cjmY5W1QYH5qXt6G/OjE/zaufc8uMPMMxiks0SfSQA+N+B6ecy683ecmVwt2SCwSnZMCpzvnba4CUxVYF5CFIbw55yhnlqTwqApi7RMFHtOb2QFDpK46XlklYh5JcwgdTkiL1FLBU5M65qJMBMtxBopW/FxWKtD3CsJ0MbcDOKuHa624XkaepS8WF6x2wrIZbaBJW0gu761jq0VWtjB/3jmu8meWNLRYAoRHaJaB6A+uayRoxYwe4TmEEefDIBYAsgNSGQDYjoFhkYkVoeOAKJpJDllZ65S9voRDkuWBa1OjPuLXkHSi903OlQaemzSFYSKKAMb2QiKBz6xGQ81FXm1D6iKS22cuwfbUQmEt7W3E/BUNN6R+4thGHoMYwntC0MQa9y0EQJl5G2NXazcY1cK7lXOrawrocuZwyVsUDdsnHClTkY/KRT2VMUy3C65sZNG9iXRuCr0ieyGthsjTatGqI9XFYF9X3Q4ceNKGrNKlEaxxX2tKkzDo6fSphS8NGUcK6sovcIXcKZ6DYx1ktXiUg3ciqIF1ga1waGssVbrgVGbUpvYZMG5y0ho660ROvWFWDOOVYd7Wdz5l8gl1lwzpvDCQ2NK0NutcptNkbCskQ+aRASSuMv64WUOVqiFBXRHA8o0+4QoMDovbI7C8wVGFVaJRi8UOf2fq5wfi0k7hr7cWE01ZDlAmXiIJ68Tzmjm0tBrcxzcZkTAA2BEgtOhEi7wZ2kQmdaJZFPWEbARU2wsqDQPJbPaYkmByu4uT7jEjVzoyq0FW2rdVxPK4AYFxU1eClZ5nQyKAHOFW3F1eIZAsgiCUwHDLIAvY1tquZrqNwvyuAZeM3YXpsKfWVS4rJI4lEDKakNwSaufYUnrMmlSKbussz7oUVn4Q13KDs6JEfZP6mSe2kKSFirmPlaAm+e8HtTomSFTLYvd4DTZF6WkCiyw7UMMZA5bCx9FhLru0G+vcm1aewtiJQAwOs0GLYegUwtf1rnA/lOVTkPuJzhwJkCIUAxBbT2XY6CzDwFaGvutif6fjNyx7fFVRj8N/jhpzwFDGUItApLCllmFwH6DnypeDE0kl4UqNsxWQigPC+UlUUtJPLGgJcBHY10B5+euEU2/9XAeH4dTvuz6+UmQ5dCIi4dQpMTibn5F96yFhQB/eLaH64rwsQg0lZIMpWyDmddK40XuHZXyOtRPK/7ph5gToZsGuqyLZYqO31bndfVhBowWHrQbwtgo5w4sCq3uHtm69fEpqCVtRUrEdO8zaIC8PIt/D+mTjchN42sgXDrrYNCkd1A8MsjtO1iQ1IKOlHvMibkxpqWwM4trW4R63S0eFdJH72mR6SjkdGOgyG4ZFP7z5nvdr6bD/I+DbseiOnbPDjao8z2OHm0Yuw23b/tpDY0TpKFQW4odxscb7Hd13wtIiwWu3IMHVksrgcfYXRsSvlBgzHo2NjGu7S+olC3YBNPFfZoJ9XrVSLA693tWOg3rjpN4TBCd4J/x0rZYrcAGA3EGwCrnlpzVNb9Ot3szsFbORoIhZPEkHxgdSs37Z1MSIKlX0YWM7DZWcFMRD0LA0O6xqVm4WvyAFRSTpg56qBmdZJwGKjxvUiw3RVGc98KPPeFJby4AE4XClUl0cvQ9QwhWDdTg1E+tXO6TqdvtmdFYi/PKUGC5UaZDKohJ5F/MvCebdg792GeMEWOzDXJO9nOz81kLMaKtIcCYXS4iZIeY9qIvxr3tc54rDHJ36ySG+8FKYjInQ7YYlEni4xauBsksXDsxa0+YQJb3bVu9z2V3nsJRqFTze8p5MfxIn77zKpwrXwARd92BXXNq4FPsZ5bDehgCwyL1Cl451GTorx8/iQQOZEkD3xmZci9lAn35gtAfF+qymx8BZSC0TsunkzzZ4pwDMARV9aLCgc0czEUgxPz6gG5VncBFFhjvSWQR2gUity4rEwKxjgrxbHE1TDomJWLphaih8jaI4ZWSO1Bm/Qw+Lp/0pkR4L4bijhurRZDINmuiTzBs9PW6fTgZ0M9s0n5iT7Kf+o/nzd8oEbWAYt7kdLdC2bHAToRlW9Vs1uUNJ+Skw9xzcnyiKjGqDWSLM1YAFD7D2x72/6f9vtHOfMMy6bH4yTozD8nKbajDMFT13xU5vk65HeNu83u6iFyxpqtzqhHPblSn28GfLvPngAsM4GdAF4aIBvS0IVTR+eTdhuo7pt2e64WpdL3Zb69xW4XfVuH3Tp3vpAAH7YBh+USUfiYI3eHuA0s/C5MgHI1roQXiUMFw29zc7H2Gdow6zO9qvdOENvTxd/e/01/pb200zE/Q8Bz6VwnVFSNRhJQz3Q1H9V0nXe4He1Yv8uw70OYPpfRUwC3Fq+6y5QrIp0Jmbxj/tqHG4zCgLLifAh5Vf5PlYSrvDm7eb3XHCeUOLYY9R/14Idn6N+6HjM+BSeZpDHiA+jAPu8hCzwyN4Xza+O7bDkpSHm/wCyMdvyk5ajFtBRzChEY6cdYwEsWpyg7hi4OlzAECDnGA9QOrCgLsFeRWhATJLYE+HNls7pbxCt8t+R8reiOUU4jx2gidGdIntbZYfltnM8cYm7ZErMCYs9vD14Vn2Pb0Os42MxOeA/1fla3etPJcTWOlJnDm3Ko8aiQaAUcIACFAbsFpJ3DSIKAowLM9gCEBddHw3YFgNognz8B3U9gWQKsDHB6iPoM3yMLAF3nDexvE3nJIAGQCfgKDFm+YwFvmcJb4fSnhkA1vadtwFt5Qijhdvh4FsKsAaGT1jFOSXR5WzUgaRjP8aAB4AsPqQAWwJ3pQKOAaHBD6lfQbAIABFAKHyN/G+0BRwgATEAUAaPq71mbQC3e3AE+B76t4MldokfqP2ttD4x8kA4fQaAgZqGGmchpA7AOXYq9gvUXbLSOVQjMDmTlJSCrpZFJfWmX0evEs9ml7NYtLov9T6iiVsmEvriGUxP1gQR32EGobYgq4NQMxagDTfrv83xbyT5W9PeckL3zb9t4X4Hfd5caABwt8h8dBCgbYN7794nI8abfvgcgLXiqNa+nfqwUtkSG66jFpAtbO70b6nj1BLEu4WgHrkJyjh5vgAUEANvXbbrvoS7Tu/8l9vn3xH5+8M/alGvnUKj4d/a/PfOgM2DN4J9E/7vxvr6OT7KiU+of2ELPxgGd/t7lxiwuV+gcwOD2kyXJp8BWdd4L31jkwC+yK/E+h1TEVZVpa0WxYu2Xlh501/fvFrQPlyHJaOisr8OQxOgxPwN40M726vmTJqWsDq+lddhgLnJs6PlDYAeA/A95HqUST232qXn+yyebEUKQPaIyQ4hKjOZAsTCNjP7V1EvqqWm0FhwI6qXkjqRyctkTqgeOXr27twKKHiYjOH4iV7jOetlABc6TMGADwBquPPD+i54OS7si2tBKz9IejvvqAEoEk5BXg6ujL7Jg5clojnAkdlA7UB2YALC4Oy3hwpDyFjinrA66gNt5x2BekIgt6LCHMjjgOFpd4zYrul6TtQ/crhyNmdrhuAtmVkCL77K1LpeaW2EeuorUBBplZApiUUKBDp6VwPHYCBWUEnZ+ksgYtAKBHfMqZTKWKMMImeaGMPZv4h5ruJb620ucq0glMvbLgInLs7KLAK1uAi7WBVPPBV2Ozgybu2x/nIRKAxUFowzIVtLpiHII4AESwEuPEz4OMCMPMBHgn0I84YqC8ACDbCxujxBRuq0MmCsSFdlVBqW3Ps3rA+LXoYGLmg0k0j1Qn1lFbr6Z9myZdWUSG+wPemQbTyn6gpIlA6g9oF9ha4y4p7CUSWxmEgRIkcNEgQScSL0gJI04AhzpqULglKCQMiOQQO6BouyBZAZeB3b14uzogYbI+QE3whAw8NI6fmOvAbgJW+aom7JWGxim53SNDllaPCVnnQZeOkAMhSwQVAT2ZXgtARPjD0y/k8ELa7RKwaceHDpW5wBcJqPSvB7wXBKMBXweVAsBpsGwH/BNBkJTAhgjt25get7uCFNWUAJSZcAJhuZSA2NphpRWQ0IexJ7cvhhfJp6PGnlIWK/QOTpXykPgmBLA4EsFCHEn3gACHoUFOgKCBDDXz0hQWpuxMhggKUhTYbIWqDsAXIXUBjsZIc1IUhFRhTIlcfpkSQ001NGGTteVAHwAAaAAOcAAr15zBsyofQy0hw3FCGXg5dnqYcCyITJ6VWl9KPR4hEhoSHSymlLBCxQ5RqsqKhxNLSE7gAoYyF9BIoayHvGwGGgB6hBocC4bY9QBTRoAqoYwwNCZIf3jyhHodSEpaL1G2DLe6ADGEC0U6JVwNgDrFWwUAHIX6EQK65iVqD6FNGKHvGgfkqB2CwbBVARh3RJD7RhB7FmEyh5oXKHuhfhp6FWcRoToo00XbMChahwZqGE1hIQl863cmYc2g8hlXvKToSi4jaEOUHVs4GXabXh4HsuXgcvYZUGqr4GuyejNKa9BhCAMH/C92rcpX28wFJ4ZOXAFk7ngqDvp6vKi/ua4pk0ukZ7seaGFIx7a4QVDCRB48EgR5q4XusTjEHBpgCw6exJLYpe0tml5VUnTjHLZezxq3RWwYAPECxAGtkgHpyyJjraom1YJM5bUlnqNxU2RJJuAystuG7iAAuCCAADCCAA4iCkRgAEIggADIgDQqqyAAeCCAAjCCAAvCCAAfCCAATCCAA3CCAArCDsRDQlSgdevCoAD4IKRGAAwiCAA7CCkRXcr6ioAm/jEiQQhoEA6FyCTsigTy/tpLoSykEPgEWwg/mawx2A3odAlcgAOggpEYABcIFxGkRgACwgZkaRE7ggAPwgbEVxFiRlEbRGQAYkRxE8RVkWxGAAPCC8RLEYAAcIIADyIJABsRkAOxEcRgANIggAKIgkAGZG+RPkXxFURpEYAACIMFHRRu8qZEWR1kbZE18jkc5GuRNEe5GeR3kX5F8RwUaFHhRnETFFxRCUUlGpR6US77ykPGllGWRNkaRGlsgAEggkUZABMRYkVZE8RVETxHFRXkb5H+RPUWFERRNUfFE+RiUSxHJRaUUFGxRZkZACAAsiBURvkWJGQAjkYACCIFRFiRu8oAAoIGxFMRpEdxF8RYURxGQAUkdlE2RAUfD55+PGoADEIFZGkRXEQFFuRN0W1FmRW0QFGhRe0aRERRH0UVEeRo0WVGBRQUbvJPRTESlHURRUQFESR10eZFtRbEWZEPcuprK7DCN2swKsCJdrL6Q8oTlM5XQdgdJZFOB/gS4JkU1reSVsq4cwisw3Lh6wMw2BDMi8uPLvXi86GhNWD7h/QZERDBEyCMH7SYwd14ac9eLqaP2b0CzBHYFeF7C4sahFWQqEryOIpb6UimmFRIbNsHZrUiwBOBHG+ga6Bh6TEvi4U4H9p0DCIZsgUQzy3YIyDdmcOMA714crouLASB/vEQTBasTEiixswYki0ACwUQIZqZVJcHYc1weQ63B/1tQ4+eGbs9KMOOgmaYFutuMwaeeqNvBGIRquLMI7gBtvkSag2AAhFIR4YnSg90M5NOEhutpJewtuM9DIbxxn0mjCJx2cSygpxUAGnEg44eJnFJxOcT9A90gqAXEB8RcbIC4oxHh548g65HaHowVccnFBo9ccbaNxWcU2Ixk73PYIOQHcTQaLiY5Ex7yeX+JZa8mZlgnrK6aMAzFYETMCzFmqO9p9YpYbyKPEy4DccPE5xqrlebrwz5Eab9EhcQRTf+aMkSE9eOKArLeGtrAqErAFnA7bPhHCI0aO4u6KlwdhF8t/GtSv8bLr/xiRhKi7oTMiAkLASwQ6YQJCwFAmdGgCaBFK8MtpBGQBXTorYwBKlG6BgATgJ/TwmTvMV6oRpXitTleaJrWDQAJMUyb3GovnbIQOttvBI/+8pjXae2xzmGbNM0gRnwJchkY6arutfPu6N8mUlu67yTpuGaumagkJIxm8kmOyT0PGlB60ABgnB5GCoiVGYoeM/P+Zz+mHqpK2+2EB54TQ6ZpIBoAgALCAc+Ln4TsqGsqHCxEQq+7BmF3BT6jg9JCICAKzYMYlWApibODmJBktYnZCvCrECuJ9QO4mJQniYIAmJZiX4kPc1OL7pMJmKAFJWhfQquJgYAlqMbZ2kZMwiB4eLiOqQM7PnHB8JneKr5CCg3klL5Ja7kh4HuGgtu5XgeUgFwqC6UmImbutgk1G8oPGjoKboISvoIwehggh7UK5hmYJBWMiPIBWCKkKVLyCafgA6G6/AFPAWAYSQ9E2Jvpp+46KkwnMggCeEm+4xCLiW4lkA4SbWwre8yXsmLJgScz7JgwSbskeJByXMkLJrfoS7n+2KBqY4RI4PchVsn+A4HIwYUr9DUxeGKsbgwngV8pOyqqqKZeBKhAzHHxtqqgR7Q6BHy4FUQaDKAyAKrq8wnmJTnto/4NlhIxLCVgXCyaqIVB4wahoYFYCjC2tGJAcxd8AjCH6YAO/4Up0Fu3rEW3duTElJTDpBAP4R4IrDqM1Zvexdy+nuqDX+NALf67I+EpK6E8zdt/bSAnhgikoAcNM8kMGXQlPBtkO/v2D3kj7MBZVOWHOdLEGWesm4hxtwmm60OAIRVZ0GgaqkTwJmCaS73Qs7mR6wRQjIQnEJYMmdBzOoQEGjh6u+NOSxxugHoAx8n4M6mLC85KXGWgifAhAn0ryaanoU9hm8kXOwfLakkJ9goKgLmTuChS8cVzpxS6oALkKi7o57rAzBpJqZ/GrK6FIPHkxgsqeB2kIPDfRR6BMfQYhpuaX4boUORoWn+k8aSBK7opmumlZoLaTBrNpo5pgpcyBFFWlTyeaWHLueAHDKljkWNjbHTWeGI6l8A0ae6JiyfaZSErog6R+FE89aV0ZJBTJGNZCUXQt0FDioVpzZs+jhJkm7+D5tK74koAeBHgBYJtBHQB1qSpTIQYANAAdUyEdyzIBmctQmYR7KB17iYtLlSCekPYJHjq6rCVA4t2yIWBLIoUicfFuuacGBCCJXfMImNJkZu6byJnpveABpcGfurSJmiUhkSJA3ryjoZ4pNB6we8HlrFYZciVu5oeeiUUoepwLrc7CxY7MEKPu/ps+7rJQZnYrOJaGXYnXquHlABxJb3GTB4SaHAknmhCDsHwK+vul8kn4tHiJ5Mu4nkUm/Ir6E8mOAHyYRLkxE9lZY763/muGApwpluHgpgBLTC7wjMEgSQpZKdWB7heSSEqdeUGRND0AKSZPA8mU9gf5vIVrOr49oFSSIlVJzSTYJlS1GW5mWZe7p5laJNSW0nlU5UNh6rJPSURkaJnmUMkWCoyU+jWCwWb5mdJEipAz0Zefoxn4MlmS+6bJTie+4cZKydep6CGXhtTAwwllGxckS+osLzQFZEcaGkXKRGmKwXsH8nnw9Er5RcA6Dv3rbCX+oJ42yfUIBzXmymT7gHGuFlWLXqy6ZhxXBmqZp6UONwqCh6pjwSiHVq9RJQznpelBBEQBJWVAEYh+CW/SgwD6dTyFeZCShGvwaEWV6/iNCfPFliyYJ7Y4uq2AnBB2sSF0j7iQfvQCGgwDm7iAZnBGwloy5SD9AH+iLBg4/Qf2YtQI4QUJ0R4kyBrMBx0aNEkYckxQS/Lz4ZNuIQ746vsonwZEZm6ZkZsZpIm7uHmQJLVJHpke64ZZSbeg5I4wjwDGOoPjkjQAswKOBIAKECQDhsZiVYCowyYH3xEk+UFYBgwu2q4lUgdGr/yPRSoSskBmLGY4lsZ77mVAc5fAFzmeIhJGKyhgtAIACMgHqyC5jkkz65CHzOzmc5zANzkSiQVlpL4wKuUrlG5D3FHFdx6gZ2by+ivsLRmus0LYHsmaGPOEUxLtFTH/QeGJcoApQpktZbhIKTtZ72fyDzGDBXFi4SyZQsVzree4sCFBZAeSIkRoAVLtFZQgwFqilHpy6S/b3ZjREDkbGRrHOK4scdOsa/GtKVAAww2NquLYpIvDgGnge4gsh86dWYUjO5yHOXqtkKBCHkQEsmSGDUoYBrlYtIGSIVDncrap35z2yrj37BBKACJZIknwm8ikOgcVqnBxaVrqkPBj0gam0GkcWdDzhy8cuL7GrgNIhtB1Yjtm3pe2ZLDQAh2ayhf42GD8kQw/JgrTU4TQHgiOZ1afQgb5EyNDS9MkmKfpfoG4QMxv5Q4hoB+5tjPeym2QKpKbqApmO/nbW/+WAWGM7jI1jf5y4sUDdcqjLAXP5cKgphIFGsF+iIqfGGgXIwGBd3AoqaKs4xyecBT4xuM52qAU/5hmJggjw5BXAWZMBKjQXIFRKoEy5M7+Ryo0qrmHfC+MABWwXRMnBSwU/5mTIyrEY2BQeBaAl8EIU5M9TNwWRMaCAUwiFZoDIWgIvKvTAMF6BZkyiqlTLNjyFYhWUxYIFTKVjRwUhe/n1YX+UQXP59WBGSqFOBQqo9MVgFYWiFyquqrdYZhegW9YThYowuFOBb1ijMnhaIV0CY2JMzaF/hTMyEFVVvuDzYe0PYWaAy2BaobYazBKZRFAwmdiP+uiBYiJFy2Acx2IRzGEXLYpzOkVnYnqvkUqIPqh9hBI32PPHRxqmsXZX0GmhKxnW1RfsaLiUOXixk4opOblYmxcWRig8dRYPGoypeRsb1FcLnBhZG+Lu0Xqo3cSXFScyIawaepyBm6isQQef8LtQpzpBCmZCMKtBAwbRWvncyT+Zzx1Fy6bzaT6A9sPkw4CxVOyDBzRfnkfG7REQ5bGidGsRjEmxHfQJ0sXoDqvIa2TcSVUm2V8S4JMEcoZCM2AORCxA2YM+lpyp2ZQm62HvITHYRV0NjHK6pZDJD4mCzsmRupgnNQGAAhCALRVEbBJ+pUxdQEMREUf5FsR7AcLExS1uqQRskpRqZjYUc5EzLLm0EMElUA48PKCuk/ZtUW+pGmpoF9mVStFqWs8fJSUGUr1jBqfWaslY70ljgIyVVwLJTJCikBIQbJpJMyNpagQVpmMWAh1nu57OBAnqip9Z1lseItZi9rrTe5m4XHCr2q1mbQBBeyiiqI0wfICVgAwJfSLkAFNCg7l5gAQf6iwqpRVYTFQ6b3nDgfgK6DHF6eWOmOGGxmnlx5S4PKncwEdEa6OArhNSkbgn/s9poc4li7FTBsSHMjxIaxZg4FQvpUgQK0DRAESsQByJrz9hyENnTI0HsfMHwEJyF4jFmPsAkR5O4sLcLTpiniHB4AC+cgYL2gOciy5y4VHg5MABDmkbteYeGwAvA9yK877qrMA5Cswegp9auEwwVBaHk0+dNmkGdwWWqZWS+UtlZuWEQHwnu6pSw6FuJHle775/xSpS2l9pUsZwhmJalHYlWxaeDLwY7l6UsOrbp25JO6jhxpnlIJReUyc4PASWcRRJeIaUmjafeWP4P9luThpVFCCHzup5UCWflHFO/GxaaGcdGvRVEX9HeRSMbdGoxlKID76OpKHJCAWFrkAn0yiFWxGvR7EZABoVX0dZGYVUqE444V8UHhWKQtcfEYsaaGZ1EBRr0e9EoV10ehUoxaMTRULyzjvRU4W+Fc+RRxu5V6VEeoPMB5duq2je5v0H5egxcl5+KY6Gsu5aBWuUORhBXohslZiHyVMFR4aEVCFZ6nJgT0Y5HeRp0SxEsRIUVABsRVEWlE+RHkdRF/RjkRxGAAaiClR/kVZXbRKUZNGcRrldtF+VHlXxFWVDQvUZGVV4EhWAxYUWhUnRsMexGAAzCDElsCSxXGVbFRxUfRf0YjGxVUVYlVm52xTlbqli4U+AnK2+m16aZgpt4HApfgf7n8ukFXJU+gClZtpWl8rgekUOOnrTbI8t5Q/FWeExVIibKvhbORdC9JjwwultxqoQQguKbqRpBIULVndlG8efBnSDxRDoTE6XDDpzE8OgYDAAIXkl41OiOl8VXpWXjeknl8lZLAooiFKCVa2KAVCV1gRTs4hEA/rDjQnUsDmHgIu14fumowPHJQEe4kDrSTow8qAqX/mGSYyZR4/1MmAhIz8pwEQYprFDDsS4Dv3ifW9Zl+BAu21G3CmEhjpbZ3hKgbQBslcLqXb74h+LvhKVJJfeyl2i4kNn3gwEg8mewT4NbKrYtsvqWeB9MXG5sxu8cZkHxPMMMhm6WAK3k/QzLijA54+5vSlVZKsN2Dk6CrunkEs9CeTXz+Zri4Qj+NKUlQlO//hPnWEM5jBY20JSFLydZeUI7RWQ1tHBYE4gFtniZ5P4LPnrpkwjYKtElNUPYNZWPMhg2UBwXDhalQnrbJ6g9oGsZEOcZcDnSw30EuWlqK5TqnzZi+RWo2hRqWGrNu7ntJWvlXHpuKzAmAedU8OXFDKnb5YmBjadFRVeOkX581ZPCsIHtaMiMu+0nzUJUfxlplGlPgX/nimT2AjAgqnXkuAMx+BU4xzwxqt0hlAswaZkUwFpbKXh1u6oPFR1c7vVXhgcdWdVNWVkAXKW2PcaDxE1XdbNIrUpBK0ic+QJFkCP+zOh257aHrkuC4aMyv2ni41hmJzPV/QEShTYjgObUW2IEnyhw2YkLiWTqFhtGiaxNJhQDqi7PomF+Gzkk+FsA4Namkvyy6CZBp6rSA/kIJYCS8Ro1ltR0XK6TQeLT4ucpeGpnQaMsmqKkYtWz4eueZSOn52uxivGVxaZG0GXGK/oZ6y65FlThBBtrAjBewykfYAnQ4DQ+GxlowbSnDkrxfF7vFGCbU4fE9TpryNO6Orrwfa+vDjqdU3VAdX91ulQ1WjAdpUSAXVYzm+kXZH6XXFFOZAIkjzATrkiUder1SpEQyX1VSRAZv1V9Sj5nCaDXTxaEivCdxj8YP6kEq0NrpaCxeq1Lo5GGZUkE5XmVPwoZoZhhkBZNjUFlE5FfFPilJpUM5ZdGsQKMAhA+sEzkOKL4AGiKS7BFrElAFJMkqhsScD+YxEYiBAr4Ag/HxBTEHgFXJyhIQOE2R4kTdE2YAMRB778AKCixCxiCkHxAklGMSaIgN4xZbkSZBmspXaBo5nJkFEqvqjnmNDpjSHuZCGVjniJrSV2j1JmGYFnYZrSe43JkxinElLQDOX8g+NfjV7gLyuuVs4XAOSKGwJNSTfjCVKYstiyBe+LNrUo5fvFV4OxRTpybAWErGMDCN2AcoGHKn+s7U6l0mYXVh5XlF/irIzNbXWMxRmfvEzB3MK6ARFWeoaLq1BtaqSr1R6Ug1BoVrk9JhueJKLWOuqHqtDv2ygMSlbxXEAUHWCbwCFZ/I+9F0Q76ZeOkpSWe5juA35jJt/6mWjhL7r146nB6D5J6sfYCaiE/rGiLFm7hBYiEqoI0iTWhwb6jquNQPXnchfAJIqvU4BrIB+1uHAHXz5QdWHF0OapWHUEUvGdA3tW4Tn3VWpx1YI0nNidTuDoSpqUNVty9CcBJZkbtOuXWGkAFnyn6XAAADe6gXXZu4PNQdIsuyYPA6f5zTDkljIFhOA4V1acDkk2ofgZa0e2QBZtZ3gbuCigU49vNACTAbrcmDgFVMDkndoxcIG3bWWKp3Ju4BrQa1MA8CgAC+CbRCpUKPUglC+A+hOA4wq4mDknhIPbHDWXwObW7gwww8FcCykHQPQCyAMwA9DwAOkqxCH0AAPyBtb2EW1XgsHnwCP+zbfYyAWBBcPTetTsFWJQwuZJ8C00urLXhUAabcvUzYsYBoAaAgbSQVRtOSbG3xt7IEm3ZBYgLkGLt4DpQU+MOSVa54Kg0Mu18+uAGu2zwOQe8zegzOd6DZQBbSEzEqc+G7jCW97ZACie30IG10FoTCSr0wOSSihHY1gmKor2jADESA4n1mlBWA77ZEzsFlKjkmbc7BTACcFEHY5hQddKrvA5JXJJrATQs4A4ScF6xlW2zAgSoh0pM6cukxodLKjADkwhHV/ASFbKnZi5tzXlWK7CDwAhzMIHwBdy3tcWLIWJYMHTypz47HZAg8dACHR2YWysNACJA/EHGjxAEJZR0Cq+hWgi5tehZySaF0nZgjFYAHZLC0dIgvAC+sancAKfAnQG+3gOJhTa3/834NFR81gbRYVvt3ra4DdIvtbO2BtNhdkn/80gFjDvtHWO4UYAtre52BERSlm3HAHnbm3+d87VqrZQbuOEgAMvfM23jMn0DknQAK1PXIxd8DqNghFfbfqbxdKXTmDrwFnZ822twMGhZROxpCACBtMRatjqIlqvEVAFOSSLRrY5XajASmTyrB5QQkELG2XtDite1rt/8ScELAsbUFCsWQ4CQBJtc7eA57YGwYdgWIgXdsxXA0jsPgYeuzLy2ooQBSrqih30qYpLk2NcV1nYmRcQixdREDnXN+whKRreEqKFYBOwANNoDbIk8J967B4amexDdV4LkUuItrS4gA40QpxAQobbNjXHdEIOxCmK9CChArkUbGJB8ZARSagbdKiJ6q5d50AmSBQd9J90ooJ3exDA9t3WD0CESmDcxlFOSe236BUqalTFgZRU8r7tmMIe1xtx7ae1aY57W6RXtFkPeAJttYFA3yAWzb8ikEa9W7Cz5DlghibpYqVaYnOpliBldG7PZu67OmrfQ6hQ/IPL4lBH9Txn52FpLTWng4pTQb413JeeE0Al4dGUu5LsNMbocCsH1CYE+AKdzCEKKsK4jGjubC2u6FDbyyRwR9ksKpJjZX1CFOv0rTU61h/onQheHxcrz7VUEYdXHl11m/RVtS7sM5FeJ2T/BnZVCRI2r5RMQr2EBwfOHqoljapfXSGKeYyZsuoDqRh0c+LpSY0GZdNDXL6z7mQEZpgHlpyWN1fNY1NJLjchlHuDjdXxONpfdhk45+fZDWmoKskX098qib0nqJ/SaRniJsZhRnz8VGVh60ZuHlmiZpM3LYki5zGQP7i5wWs4llQnGd+4TleVRH3VEZdD0XnWIspPVwhUmRn1L9O6tn2rJnXrxwtpRKG02WZJfYhlkZ3TblL5J1fWf1dNZUp2m8lI8g0YdJ4WXoJqJxGYh42NsWf8jxZnKIlkTJokv32xoxWff1iCzGlY7LJY4Xv05ZQCpLljahWVgzAD0JQPrVEnJlGp4SNlArLhOOkU4FPg5+e7mAwp4nvrzxl+rvnYDnJqPntVIvG/EZGdufQDuedPBp5dCrEJQMVONniRJzVheUlSrQfvVR41xv4ZABLV4xFDo5gOxCBHJeZqZeme9/Dbtk+gowLABEJeYqQnviL6RQlXVFXkgNcA8lsQGDIQhLbFKWn2d9XqNWEJE4tsFOrsjk0zIPuFyDCg87YqVvKH3KCZgiTxqAAZnKAAft5gAgAGymgAAxKgAM6KgAHFyOhoAAj0YABd0YAAhboABYCYACn7rvJuDYAIADtwYADp+v4NBDYQ1EMhZRkcTSAAT7qAABUqAApopuDgAID/gABUGgAGA63g/4OAAJtaAAaHqAACtqhDKQxEPRDXaJkOAA37bZDXg24MnJKvahqAABEqAAJmluDgAG56gADoKgAEbWaQ12iAAc3JuDgALRy/Qw9wOhyvo4PNNGQ1ZweDgAPOhgAJyaO4IkPJDtQ40O7yGw9sMuo5QwEP7DaQyTmrDV4G0NeDRwwUOAAyvpFDgAIvKgAMB6OhrUOAAb6aAAWPLeDEw2VCtD7Q0cNdDWCjxr9DRw4AAxKmMN/DnUJMNHDcw30MLD43EoG748NDuoWhRNejCAAFOpkw2LoADQcjoaAAeRqAA6tqAArdaiVPYsBY55ZsX9K4Sq8Q5k4wbLhVXWty1juHgqy8AVCb2TzT4iwp5I/KQ3hSZBKxp5rSM+Ej6R5m8yvKaaHDiPQjBBkig+VyBWAGiLQLfH32BdKC3mweselCTCDrgeBOubMK4B7Q/JSSn8+avfyPYIwDQWXNGotK7EQS4RBWVJI8vNrGW6o3UxJnS6qUQb+12qYK2puwdaRyh14fbyjVEs1piix9s5BKztuMrXgkH5sg/INOAig/sbixsduq1FOL1GDS2Qz5A6GBjg/kW7xx4ac/HSDUY+GDWDsYwZVZoNMl2FXgsQ6cMND0IxWPuDuwwEMhDBw4ZUNG5Y8mA5D+Q64PFDZQ74N+D1Q3UPVjTQ/8M3DnQ8lVWOrY/0NDDUI4OMwjsw/MN2D5VJmN76Zcf3EQMD/Xx55jsrT73RjNg8UaGVi5MmHE0RwzsNJDZwzUOQABw12hHjJwz2PvDdQxcOlj9Mq2M3Ddw48OvDt498O/D041eAAjtw1sOhVTMuON9DEI1OO7ysI1sPwjC/QGOtEQY1OS1FwfCwaDxG45GNythYzGNxjHcZoMyiyOebL/SGpU+BrxU9oyNL23ysaVcIjreaUB5+xZuNQm248WMhOzKQuNYTHwjhO0jeExcgWCjWdYTm9b2Ya5AWwqSRbbpzuauWy9s0M9lyBS0HmTqpggy7A6cbvVgnfFvOFaBSg8KNSC0gt2IqAleIkpqBoA2oJnKGgDVCKCmg4oBaCGAyk6yDqAuwIySIAuwM05OgtAEDpnUZIJtUUgkAGiAwgaICiAkAMIBEARAtAASC0AbOLQAwgCIAwA4gDAGEAeTqgGEAbAyIFsAEgWwIMBhAAgIMBbAIYBEAmTzkxADeoMUxsAkAWwGiBhAaABsDeTCUyQDIgUQDCBlTJANEAwgUQCiBoAOIIVO0AjUxEBhAuIOIKWgmU1AAwgPYFsBhAfUzxgbAUQGgDDTMIDiDIgyU2iBlTfsoVPDTfU1ECDAOINEACA/kwIAwgGU8pPIgDAISBhA/U1sACAyIASAwgGwAwC0A8IBEDbTMIAIC0AEQIMAMAW0wSBhABIBsBHT20w1PhTGU11N+sFk1ZM2TmOnZO7AVIBtMuT8SrsC3kpALsDlM1kxHxOTBrfhDJgSACijxANqG7B0AA9Nni/tSOIHiBQ1MKvDwzSAEbFcwjJEoCedh0KGD9AC4PDOH0DACgbhIA5duaUAsxB+BSQhrQm2Uz24MmANU8QCaDqAcMBk5/05gCa1DQuM+zOUB/cBW0ozesEjPYz5M3jMczHgLQDxA34Db4MA1tH/hOAehYHiwWcs+JCMkSsxgCCzVgBrOIIWs1bA6zOkHrPKzhmczH1Axs9ggyzIs/DPJI44LQC5ge0POCIA1tDkmWtTswO12zo4D8AMIrfFwAAA2oQRwzLAhzPlMNgEZ45JcaNbN7x1hP7M+zkc6o0CwDULHZmzosywIK+EKEnD5E8nYgjFg9Oa8z0A4wUoDczooLgCAAmAR+W3VLvkokqAHpL9d63dnPt8yYH0QPtV4PYDnAHjCnORzyYCNB5AsxP7MxzbADkms1bYHgJsz4c4QRRzehWPNdzp+Ni7lM/cznP8wbwA7MUzc8/d15zQEebCxdHJCx2D86Ei4BuA64ExKD8OPbOBEAzELr36970FIDyAbAKMQbgW0g5wNcYLaXzS6nwFoiaIzOkuBvACMFNgNAk831CeqlOe47A5AVizRRIYKOpNa8VULnkgGVit9M5wQ3TvPJg9CJHBtl9QBN07aPQpd2lIYCzs7kwhsFjwIARALABNgVC77Yrk23GWB+uxqpIzIAg/OujXNYntRJXAO6cuKCkzlpGD6jU4D7DQUV81DCD8uuj9KsB5NnpFQw8NMxz14jSASpOug/BgupzHc+jo5JPc03IGdmC96DvQxULfPegps/OBtzHM0PMVoFgKPOxz9pBR2EEM8ywIRzA89HPWLYPjTP6xdM8oCkAa8+3MbzGc2nwmLmCxET5zB827gNEXLYwSQwOEKRbYKOnLPm/Ac4HhbUzs1v2WeLsYJACTAJcwAyFISS/rEpLVAMWzlMqiwPPYLq4CEtXgongCgNg3/lFTlI4S53hTwSMIG6DQCxa2BYyvE/g6pLhsH90DwRSznOdzmi73M6Lai+YsjzC8y4s6QVSwvbTz+EAAC6os8mDFNuAEjOGzS861OHTfk1FNtTgwAFMbAiU1sC7L/oAwACArUwICRAvgASAMAQ0z2DRTPUwIBs440wSA4gBIMiC0AyIMiAqAaIEtM8YWwBEAnTO6LT1fToM+DNvwUM4DNzIkoC5PqTuwFKwOTkWDDOdTBgAa0LLA7dHiCwtAMwE/AzVGjMts6gOEjwKnuDiAAryk1Cswr/MG/BAz+gEAA= -->\n\n<!-- internal state end -->"},"request":{"retryCount":3,"retries":3,"retryAfter":16}}}

@feruzm feruzm merged commit ded4fd2 into develop Mar 26, 2026
1 check passed
@feruzm feruzm deleted the l10n_develop branch March 26, 2026 16:04
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