Skip to content

New Crowdin updates - #609

Merged
feruzm merged 281 commits into
developfrom
l10n_develop
Feb 6, 2026
Merged

New Crowdin updates#609
feruzm merged 281 commits into
developfrom
l10n_develop

Conversation

@feruzm

@feruzmferuzm commented Jan 11, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • Documentation

    • Updated “Learn more” links to internal FAQ anchors (signup and Resource Credits).
  • New Features

    • DM privacy settings, status messages, warnings and DM state labels added across profiles, chat and posts.
    • Deleted-post notices and “no history” message shown.
    • Wallet: added Convert action and external-wallet setup prompts.
    • Key-management: “Add/Manage keys” label and multi-step add-keys workflow.
  • Other

    • Added a validating runtime status text and editor loading indicator.

@coderabbitai

coderabbitaiBot commented Jan 11, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Adds and updates i18n keys across many locale JSONs: DM-privacy texts and warnings, post-deletion strings, wallet "convert" and external-setup labels, a multi-step add-keys workflow, g.validating, and swaps external help links for internal FAQ anchors.

Changes

Cohort / File(s)Summary
All locales (bulk additions/edits)
apps/web/src/features/i18n/locales/* (e.g. ac-ace.json, bg-BG.json, de-DE.json, es-ES.json, fr-FR.json, hi-IN.json, id-ID.json, it-IT.json, ja-JP.json, lt-LT.json, nl-NL.json, pcm-NG.json, pl-PL.json, pt-PT.json, ru-RU.json, sr-CS.json, th-TH.json, tr-TR.json, uk-UA.json, ur-PK.json, uz-UZ.json, yo-NG.json, zh-CN.json)
Added DM/privacy keys (settings.dm-privacy, settings.dm-privacy-updated/failed), DM messages (dm-not-allowed, dm-followers-only, dm-disabled, dm-warning-*, leave-conversation), post-deletion keys (entry.deleted-content, entry.deleted-no-history, entry.untitled), g.validating, publish.loading-editor, and minor punctuation/format fixes across locales.
Permissions / Keys workflow
apps/web/src/features/i18n/locales/* (permissions, keys sections)
Renamed permissions.keys.add-key to “Add/Manage keys” and introduced a multi-step add-keys workflow (stepper, step1–step4, import) in locale files to support the key-management UI.
Sign-up & RC help links
apps/web/src/features/i18n/locales/* (sign-up, rc-info)
Replaced external documentation links with internal FAQ anchors (e.g., /faq#how-to-join, /faq#what-are-rc) and adjusted localized learn-more text accordingly.
Chat / Profile / Entry cross-surface
apps/web/src/features/i18n/locales/* (chat, profile, entry)
Inserted DM-related messages and warnings into chat/profile/entry surfaces (dm-warning-title/body/settings, dm-not-allowed, dm-followers-only, dm-disabled, leave-conversation) and surfaced DM hints in empty-state strings.
Wallet operations & external setup
apps/web/src/features/i18n/locales/* (wallet and related)
Added wallet.operations.convert, wallet.setup-external (login/import prompts), and propagated convert into profile-wallet contexts.
Minor UI status / housekeeping
apps/web/src/features/i18n/locales/*
Added runtime key g.validating in many locales and small formatting/punctuation edits.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Add/manage keys improved #634 — Implements the add-keys multi-step UI and key-derivation logic; strongly related to the i18n keys added for permissions.add-keys and related flows.

Poem

🐰 I hopped through locale trees tonight,
tucked FAQs inward, set DM gates tight,
added lost-post notes and a convert sign,
stitched multi-step keys in tidy line,
tiny paws — translations snug and bright.

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check nameStatusExplanationResolution
Title check⚠️ WarningThe title 'New Crowdin updates' is vague and generic, failing to convey what specific changes were made across 27 locale files.Provide a more descriptive title that summarizes the key changes, such as 'Add DM privacy settings and multi-step key management across all locales' or 'Internationalize DM privacy, key management, and wallet features'.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch l10n_develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

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.

Actionable comments posted: 5

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/es-ES.json (1)

1134-1134: Update rc-info.learn-more to use internal FAQ anchor—inconsistency with 20+ other locale files.

The rc-info.learn-more field in both es-ES.json and en-US.json (line 1134) still points to the external URL https://docs.ecency.com/hive/resource-credits/, while 20+ other locale files have already been updated to /faq#what-are-rc. This should be:

- "learn-more": "https://docs.ecency.com/hive/resource-credits/",+ "learn-more": "/faq#what-are-rc",

Affected files: es-ES.json and en-US.json.

🤖 Fix all issues with AI agents
In @apps/web/src/features/i18n/locales/de-DE.json:
- Line 1134: The "learn-more" translation entry contains a typo in its FAQ
fragment; change the value from "/faq#was-are-rc" to "/faq#what-are-rc" so the
anchor matches the FAQ section key (refer to the "learn-more" key and the
fragment portion of its string).
In @apps/web/src/features/i18n/locales/hi-IN.json:
- Line 1134: The value for the localization key "rc-info.learn-more" currently
uses Hindi Unicode text as a URL and should be replaced with the standard route
used by other locales; update the string value for "rc-info.learn-more" to
"/faq#what-are-rc" (ensuring valid JSON quoting/escaping) so the link resolves
correctly in the app.
In @apps/web/src/features/i18n/locales/ja-JP.json:
- Line 299: The translation value for sign-up.learn-more contains an empty
anchor and a stray "format@@2"; update the "learn-more" string (key:
sign-up.learn-more) to include visible Japanese anchor text and remove the
artifact so it mirrors other locales (e.g., use "<a
href=\"/faq#how-to-join\">FAQ</a> のメリットについての詳細はこちら" or similar Japanese link
text), leaving rc-info.learn-more unchanged. Ensure the updated string keeps the
same URL ("/faq#how-to-join"), has meaningful link text, and has no leftover
"format@@2" artifact.
In @apps/web/src/features/i18n/locales/lt-LT.json:
- Line 299: Replace the English "FAQ" link text in the "learn-more" translation
entry with the Lithuanian equivalent used elsewhere; edit the value for the
"learn-more" key so the anchor text is either "Dažniausiai užduodami klausimai"
or the established abbreviation "DUK" (matching other occurrences in the file)
while keeping the href "/faq#how-to-join" unchanged.
In @apps/web/src/features/i18n/locales/zh-CN.json:
- Line 1134: The "learn-more" translation value contains an invalid space in the
URL fragment ("#what are-rc") which breaks navigation; update the value for the
"learn-more" key in the zh-CN locale to use the hyphenated anchor "#what-are-rc"
(so the string becomes "/faq#what-are-rc") to match the component and other
locales.
🧹 Nitpick comments (3)
apps/web/src/features/i18n/locales/de-DE.json (1)

299-299: Consider format consistency between learn-more links

Line 299 uses full HTML markup with an anchor tag, while line 1134 uses a plain URL path. For consistency and maintainability, consider using the same format for both entries. If the application handles link rendering differently based on context, this may be intentional—otherwise, standardizing the format would improve consistency.

Also applies to: 1134-1134

apps/web/src/features/i18n/locales/it-IT.json (1)

1133-1135: Consider standardizing link format for consistency.

The change to an internal FAQ anchor (/faq#what-are-rc) works correctly. However, there's an inconsistency in approach compared to line 299:

  • Line 299 uses a complete self-contained string: "Leggi di più... <a href=\"/faq#how-to-join\">FAQ</a>"
  • Line 1134 provides only the URL path, relying on surrounding keys (lines 1133, 1135) to construct the complete sentence

While both approaches are functional, standardizing to one pattern would improve maintainability and make the localization file more consistent.

♻️ Optional: Standardize to self-contained format

If you want consistency with line 299's approach:

- "check-faq": "Scopri di più su RC nel nostro",- "learn-more": "/faq#what-are-rc",- "faq-link": "Domande frequenti",+ "check-faq": "Scopri di più su RC nelle nostre <a href=\"/faq#what-are-rc\">FAQ</a>",

Alternatively, keep the current approach if the UI component design specifically requires separate keys.

apps/web/src/features/i18n/locales/tr-TR.json (1)

294-303: Consider adding class="push-link" to the new internal FAQ link to avoid full page reloads (if your router relies on it).

If Ecency uses push-link to enable client-side navigation (seems likely given other strings in this file), it’s worth aligning here too.

Proposed change
- "learn-more": "<a href=\"/faq#how-to-join\">SSS</a> sayfamızdan avantajlar hakkında detaylı bilgi edinebilirsiniz",+ "learn-more": "<a class=\"push-link\" href=\"/faq#how-to-join\">SSS</a> sayfamızdan avantajlar hakkında detaylı bilgi edinebilirsiniz",
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2479524 and ef3cf26.

📒 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
🔇 Additional comments (35)
apps/web/src/features/i18n/locales/ru-RU.json (1)

299-299: No issues found. The different formats for these translation keys are intentional and necessary based on their usage:

  • sign-up.learn-more (line 299) includes full HTML because the Tsx component renders it as HTML content: <Tsx k="sign-up.learn-more"><div className="form-faq" /></Tsx>
  • rc-info.learn-more (line 1134) contains only the URL path because it's used as an href attribute, with the link text sourced from a separate translation key: <a href={i18next.t("rc-info.learn-more")}>{i18next.t("rc-info.faq-link")}</a>

No standardization is needed—each format is correct for its context.

Likely an incorrect or invalid review comment.

apps/web/src/features/i18n/locales/ja-JP.json (1)

1133-1135: rc-info.learn-more looks OK—verify the consumer treats it as an internal route and the anchor exists.

If the UI previously treated this value as an external URL (e.g., opens in new tab, adds rel, etc.), ensure /faq#what-are-rc still behaves correctly.

apps/web/src/features/i18n/locales/bg-BG.json (2)

1134-1134: Verify that the FAQ anchor /faq#what-are-rc exists and is consistent across all locale files.

The link now points to /faq#what-are-rc. Please ensure:

  • The anchor ID what-are-rc exists in the FAQ page implementation
  • All 24 locale files in this PR have been updated consistently with this link value

299-299: The anchor reference is valid and correctly implemented.

The link to /faq#how-to-join references a FAQ key that is properly defined in apps/web/src/consts/faq-keys-general.ts and will be correctly rendered as an anchor by the FAQ page component (faq-category-stateless.tsx). The change is safe to merge.

apps/web/src/features/i18n/locales/yo-NG.json (2)

1134-1134: The FAQ anchor #what-are-rc exists and is properly implemented. The URL /faq#what-are-rc is correct. Each FAQ item in the page is rendered with an id attribute matching its key (e.g., <div id="what-are-rc">) as defined in faq-keys-general.ts, so no broken links will occur.


299-299: No action needed. The FAQ anchor #how-to-join is properly defined in the application. The FAQ page renders this section with id="how-to-join" (from faqKeysGeneral array), and the locale file contains the corresponding translation keys (how-to-join-header and how-to-join-body). The link update is correct and will not result in broken anchors.

apps/web/src/features/i18n/locales/pcm-NG.json (2)

299-299: LGTM! Internal FAQ link correctly formatted.

The update to redirect from an external documentation URL to the internal FAQ anchor /faq#how-to-join is implemented correctly. The corresponding FAQ section exists in this locale file (line 2264: how-to-join-header), and the anchor ID is properly generated by the FAQ system through the faqKeysGeneral array and faq-category-stateless component.


1134-1134: Internal FAQ anchor updated correctly for pcm-NG.json.

The change to /faq#what-are-rc at line 1134 is correct. The path string is used programmatically with surrounding context strings (lines 1133 and 1135: "Learn more about RC in our" + link + "FAQ"), and the corresponding FAQ section exists at line 2284.

However, note that consistency across locale files is not uniform: 17 files use /faq#what-are-rc, while en-US and es-ES use external docs URLs (https://docs.ecency.com/hive/resource-credits/), and 5 other locales use localized FAQ anchors (some with potential formatting issues like zh-CN's /faq#what are-rc). Verify whether this mixed approach is intentional.

apps/web/src/features/i18n/locales/pt-PT.json (2)

1134-1134: No issues found. The format difference between line 1134 and line 299 is intentional—line 299 uses HTML markup for full sentence context, while line 1134 uses a plain path format for direct FAQ anchor linking. This pattern is consistent across all locale files. The Portuguese anchor oque-sao-cr is also intentional localization, correctly translating the English "what-are-rc" to Portuguese terminology.


299-299: No action needed — the FAQ anchor /faq#how-to-join is properly defined in the FAQ configuration and will function correctly for Portuguese users.

apps/web/src/features/i18n/locales/zh-CN.json (1)

299-299: LGTM: Internal FAQ link properly formatted.

The update from external documentation URL to internal FAQ anchor is correctly implemented with proper HTML markup and valid anchor syntax using hyphens.

apps/web/src/features/i18n/locales/es-ES.json (1)

299-299: LGTM! Internal FAQ link correctly updated.

The sign-up.learn-more field has been properly updated to point to the internal FAQ anchor /faq#how-to-join instead of external documentation. The HTML structure and Spanish translation are correct.

apps/web/src/features/i18n/locales/uz-UZ.json (2)

1133-1135: No issues found — the anchor /faq#what-are-rc is properly generated and used.

The FAQ page generates dynamic id attributes from the key names (confirmed in page.tsx line 65: id={x}), creating id="what-are-rc" anchors that match the URL in the locale file. Components like rc-info correctly consume this URL as an href attribute, not as display text. "what-are-rc" is registered in faqKeysGeneral and the pattern works correctly across all locale files.


299-299: The hardcoded /faq#... paths are appropriate for this app's architecture.

The app doesn't use basePath or locale-prefixed routing (verified in next.config.js and middleware), so root-relative paths work correctly. The sign-up.learn-more translation properly sanitizes embedded HTML via the safeHtml() function using the xss library. However, note that rc-info.learn-more (line 1134) is used as a raw URL in the rc-info component and shows inconsistency across locales: uz-UZ uses /faq#what-are-rc while en-US and es-ES use full external URLs like https://docs.ecency.com/hive/resource-credits/. Consider standardizing these values across all locale files.

Likely an incorrect or invalid review comment.

apps/web/src/features/i18n/locales/sr-CS.json (1)

299-299: No verification needed — both FAQ anchor links are correctly implemented.

The links to /faq#how-to-join and /faq#what-are-rc are valid. Both FAQ sections (faq.how-to-join.* and faq.what-are-rc.*) have corresponding entries in the locale files and the FAQ page renders these sections with matching anchor IDs. The changes are safe to merge.

apps/web/src/features/i18n/locales/id-ID.json (2)

1134-1134: The FAQ anchor and code usage are both correct.

The value /faq#what-are-rc properly references the FAQ page anchor, which is dynamically generated with id="what-are-rc" when the FAQ renders the corresponding question. The code in rc-info/index.tsx correctly applies this translation to the href attribute using i18next.t(), and the plain string format is appropriate for this use case.


299-299: Confirm that the FAQ page contains the anchor #how-to-join.

The translation now links to /faq#how-to-join. Ensure this anchor exists on the FAQ page; otherwise, users clicking this link will encounter a broken anchor reference.

apps/web/src/features/i18n/locales/nl-NL.json (2)

1134-1134: LGTM!

The anchor #what-are-rc is properly implemented in the FAQ page and the internal link is correct. The change is consistent with the overall approach across all locale files.


299-299: LGTM! The change to use an internal FAQ link is good for maintainability. The Dutch translation reads naturally. The anchor #how-to-join is properly implemented in the FAQ page via the dynamic id={x} rendering in page.tsx, so the link will work correctly.

apps/web/src/features/i18n/locales/pl-PL.json (2)

1116-1136: rc-info.learn-more looks consistent; just ensure the FAQ anchor stays stable.

Line 1134 switches to a local "/faq#what-are-rc" anchor; looks fine assuming the FAQ section IDs are stable and match this slug.


294-303: No issues found. The implementation is correct:

  • HTML rendering is safe: The Tsx component (used on line 238) sanitizes all HTML strings via the xss library with a whitelist that includes <a> tags with href, class, target, and rel attributes.
  • FAQ anchors exist: Both how-to-join and what-are-rc are confirmed in the faqKeysGeneral array and will be set as id attributes on FAQ items.
  • basePath not configured: Next.js basePath is not set, so the hardcoded /faq#... paths work correctly.
apps/web/src/features/i18n/locales/fr-FR.json (2)

1134-1134: The FAQ anchor is valid.

The link to /faq#what-are-rc is confirmed. The FAQ key "what-are-rc" is documented in the FAQ system and used consistently across all language locales in the codebase.


299-299: Good change. The internal FAQ link at line 299 is correct. The #how-to-join anchor is properly defined in the FAQ system through the faqKeysGeneral constant and is generated by the FAQ category component. The French translation is accurate.

apps/web/src/features/i18n/locales/it-IT.json (1)

299-299: LGTM! Well-structured localization with internal link.

The Italian translation is clear and grammatically correct. The use of an internal FAQ anchor (/faq#how-to-join) instead of an external documentation link improves navigation and keeps users within the application.

apps/web/src/features/i18n/locales/uk-UA.json (2)

1134-1134: No changes required. The format difference between line 299 and line 1134 is intentional: line 299 contains translatable HTML text for the signup screen, while line 1134 is a plain URL path used programmatically in the insufficient-resource-credits modal. The FAQ anchor #what-are-rc is properly defined in the FAQ structure and referenced correctly in the codebase. This pattern is consistent across all locale files.


299-299: This change is correct and requires no updates.

The link /faq#how-to-join is valid. The FAQ key "how-to-join" exists in the FAQ keys list and maps to an anchor ID in the FAQ page. The non-localized path is intentional—the application uses i18next for content localization rather than URL-based locale prefixes. The FaqSearchListener component properly handles hash-based navigation to scroll to the correct anchor.

apps/web/src/features/i18n/locales/ur-PK.json (2)

299-299: LGTM! Internal FAQ link properly formatted.

The HTML anchor tag is correctly structured with proper escaping, and the internal FAQ path /faq#how-to-join follows the correct format for in-page navigation.


1134-1134: Format difference is intentional by design.

The rc-info.learn-more field contains only a URL path (/faq#what-are-rc) because it's used as the href attribute in the code (line 180 of rc-info/index.tsx):

<a href={i18next.t("rc-info.learn-more")}>{i18next.t("rc-info.faq-link")}</a>

The three fields work together: check-faq provides introductory text, learn-more is the URL, and faq-link is the link text. This is a deliberate separation from the sign-up.learn-more pattern (which embeds complete HTML) to allow flexible URL management without HTML parsing in the locale files.

apps/web/src/features/i18n/locales/th-TH.json (2)

299-299: LGTM!

The internal FAQ anchor /faq#how-to-join is correctly formatted and corresponds to the existing FAQ entry (how-to-join-header/how-to-join-body) in this locale file.


1134-1134: LGTM!

The internal FAQ anchor /faq#what-are-rc is correctly formatted and corresponds to the existing FAQ entry (what-are-rc-header/what-are-rc-body) in this locale file.

apps/web/src/features/i18n/locales/lt-LT.json (1)

1134-1134: No changes required. The anchor #what-are-rc is valid and properly referenced throughout the codebase. The format at line 1134 ("/faq#what-are-rc") is intentional—it's used as a URL path in programmatic navigation (e.g., window.open("/faq#what-are-rc", "_blank")), whereas line 299 uses embedded HTML for direct DOM insertion. This is not an inconsistency but correct usage based on context.

apps/web/src/features/i18n/locales/tr-TR.json (1)

1116-1136: The FAQ anchors #what-are-rc and #how-to-join are correctly implemented.

Both anchors are included in the faqKeysGeneral array (apps/web/src/consts/faq-keys-general.ts) and the FAQ page dynamically generates HTML element IDs from these keys. The faq-anchor-listener.tsx component handles hash-based scroll navigation. The i18n keys referencing these URLs will work as expected.

apps/web/src/features/i18n/locales/hi-IN.json (1)

299-299: LGTM: Internal FAQ link correctly formatted.

The change from external documentation URL to internal FAQ anchor (/faq#how-to-join) is properly implemented with valid URL format.

apps/web/src/features/i18n/locales/ac-ace.json (2)

1134-1134: Anchor is correctly implemented and in use throughout the codebase.

The FAQ anchor #what-are-rc exists and is properly registered in faq-keys-general.ts. The FAQ page component dynamically generates the anchor element by rendering <div id="what-are-rc"> when processing the "what-are-rc" key. The locale change at line 1134 is correct and consistent with other locale files using the same pattern.


299-299: Anchor link is correctly implemented.

The FAQ page renders each item with an id attribute matching the FAQ key (line 70 in apps/web/src/app/(staticPages)/faq/page.tsx). The how-to-join key is registered in faq-keys-general.ts, so the anchor #how-to-join will resolve correctly. The HTML structure is properly formatted with escaped quotes.

"cancel": "Abbrechen",
"check-faq": "Erfahren Sie mehr über RC in unseren",
"learn-more": "https://docs.ecency.com/hive/resource-credits/",
"learn-more": "/faq#was-are-rc",

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 | 🔴 Critical

Critical: Incorrect FAQ anchor fragment identifier

The fragment identifier #was-are-rc contains a typo and will not navigate to the correct FAQ section. The FAQ anchor should be #what-are-rc to match the FAQ section key defined at line 2283.

🐛 Proposed fix
- "learn-more": "/faq#was-are-rc",+ "learn-more": "/faq#what-are-rc",
📝 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
"learn-more": "/faq#was-are-rc",
"learn-more": "/faq#what-are-rc",
🤖 Prompt for AI Agents
In @apps/web/src/features/i18n/locales/de-DE.json at line 1134, The "learn-more"
translation entry contains a typo in its FAQ fragment; change the value from
"/faq#was-are-rc" to "/faq#what-are-rc" so the anchor matches the FAQ section
key (refer to the "learn-more" key and the fragment portion of its string).

"cancel": "रद्द करना",
"check-faq": "आरसी के बारे में अधिक जानें",
"learn-more": "https://docs.ecency.com/hive/resource-credits/",
"learn-more": "/अक्सर पूछे जाने वाले प्रश्न#आरसी क्या हैं",

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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's check if the file exists and examine the content around line 1134
wc -l apps/web/src/features/i18n/locales/hi-IN.json

Repository: ecency/vision-next

Length of output: 112


🏁 Script executed:

# Check line 1134 and surrounding context
sed -n '1130,1140p' apps/web/src/features/i18n/locales/hi-IN.json

Repository: ecency/vision-next

Length of output: 576


🏁 Script executed:

# Check what's around line 299 as the review mentions it
sed -n '295,305p' apps/web/src/features/i18n/locales/hi-IN.json

Repository: ecency/vision-next

Length of output: 819


🏁 Script executed:

# Search for "learn-more" across all locale files to see patterns
rg -n '"learn-more"' apps/web/src/features/i18n/locales/ -B0 -A0

Repository: ecency/vision-next

Length of output: 10441


🏁 Script executed:

# Check if there's routing configuration or documentation about URL handling
find apps/web -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.json"\)| xargs grep -l "faq\|learn-more"| head -20

Repository: ecency/vision-next

Length of output: 1306


🏁 Script executed:

# Check the rc-info component to see how these learn-more URLs are used
cat -n apps/web/src/app/\(dynamicPages\)/profile/\[username\]/_components/rc-info/index.tsx | head -150

Repository: ecency/vision-next

Length of output: 6821


🏁 Script executed:

# Search for how these locale strings are rendered in the app
rg -A3 -B3 "learn-more.*rc-info" apps/web/src/ --type tsx --type ts

Repository: ecency/vision-next

Length of output: 89


🏁 Script executed:

# Look for any routing or href handling in the application
rg "href.*learn-more\|learn-more.*href" apps/web/src/ --type tsx --type ts | head -20

Repository: ecency/vision-next

Length of output: 89


🏁 Script executed:

# Look for where rc-info.learn-more is used
rg "rc-info\.learn-more" apps/web/src/

Repository: ecency/vision-next

Length of output: 236


🏁 Script executed:

# Check the full rc-info component file to see how it renders content
cat -n apps/web/src/app/\(dynamicPages\)/profile/\[username\]/_components/rc-info/index.tsx | tail -100

Repository: ecency/vision-next

Length of output: 4078


🏁 Script executed:

# Search for how href links are constructed from locale strings
rg "href.*faq\|faq.*href" apps/web/src/features/i18n/locales/ --type json | head -20

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

# Look for how the app handles these URLs in components
rg "dangerously\|innerHTML\|Link.*learn-more" apps/web/src/ | head -20

Repository: ecency/vision-next

Length of output: 44


Fix URL in rc-info.learn-more to use the standard routing path.

The URL uses Hindi Unicode characters (/अक्सर पूछे जाने वाले प्रश्न#आरसी क्या हैं) instead of the application's routing path. This will result in a 404 when users click the link. All other locales use /faq#what-are-rc, which is the actual route in the application.

🐛 Proposed fix
- "learn-more": "/अक्सर पूछे जाने वाले प्रश्न#आरसी क्या हैं",+ "learn-more": "/faq#what-are-rc",
📝 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
"learn-more": "/अक्सर पूछे जाने वाले प्रश्न#आरसी क्या हैं",
"learn-more": "/faq#what-are-rc",
🤖 Prompt for AI Agents
In @apps/web/src/features/i18n/locales/hi-IN.json at line 1134, The value for
the localization key "rc-info.learn-more" currently uses Hindi Unicode text as a
URL and should be replaced with the standard route used by other locales; update
the string value for "rc-info.learn-more" to "/faq#what-are-rc" (ensuring valid
JSON quoting/escaping) so the link resolves correctly in the app.

"description-2": "Hiveは多くのアプリをサポートし、世界中のコミュニティメンバーによって完全に分散して実行されています。 アカウントでは、エコシステムに直接アクセスできます。",
"bottom-description": "1つのアカウント、1つのウォレットでブロックチェーン上のすべてを管理できます。",
"learn-more": "<a href=\"https://docs.ecency.com/guides/create-account/\">FAQ</a> のメリットについての詳細はこちら",
"learn-more": "<a href=\"/faq#how-to-join\"></a> のメリットについての詳細はこちらformat@@2",

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

🧩 Analysis chain

🏁 Script executed:

cat -n apps/web/src/features/i18n/locales/ja-JP.json | sed -n '295,305p'

Repository: ecency/vision-next

Length of output: 662


🏁 Script executed:

cat -n apps/web/src/features/i18n/locales/ja-JP.json | sed -n '1130,1140p'

Repository: ecency/vision-next

Length of output: 528


🏁 Script executed:

rg -n "sign-up\.learn-more" --type json

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

rg -n "sign-up\.learn-more" -A 3 -B 3 --hidden

Repository: ecency/vision-next

Length of output: 569


🏁 Script executed:

rg -n "rc-info\.learn-more" -A 3 -B 3 --hidden

Repository: ecency/vision-next

Length of output: 990


🏁 Script executed:

fd ".*Tsx.*" -t f --hidden | head -5

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

rg -n "component.*Tsx\|export.*Tsx" --type tsx --type ts

Repository: ecency/vision-next

Length of output: 89


🏁 Script executed:

find . -type f -name "*faq*" -o -name "*FAQ*"| grep -E "\.(tsx?|json)$"

Repository: ecency/vision-next

Length of output: 829


🏁 Script executed:

rg -n "export.*Tsx\|const Tsx" -A 5 --type js --type ts

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

cat apps/web/src/app/signup/email/_page.tsx | sed -n '230,245p'

Repository: ecency/vision-next

Length of output: 705


🏁 Script executed:

find . -path "*/faq/*page*" -type f | head -5

Repository: ecency/vision-next

Length of output: 107


🏁 Script executed:

rg -n "import.*Tsx\|from.*Tsx" apps/web/src/app/signup/email/_page.tsx

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

cat apps/web/src/app/(staticPages)/faq/page.tsx | head -80

Repository: ecency/vision-next

Length of output: 207


🏁 Script executed:

rg -n "how-to-join\|what-are-rc" --type json

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

head -50 "apps/web/src/app/signup/email/_page.tsx"

Repository: ecency/vision-next

Length of output: 2048


🏁 Script executed:

find . -path "*/staticPages/faq/*" -name "page.tsx" -exec head -100 {} \;

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

rg -n "how-to-join". --hidden -A 2 -B 2

Repository: ecency/vision-next

Length of output: 50374


🏁 Script executed:

rg -n "what-are-rc". --hidden -A 2 -B 2

Repository: ecency/vision-next

Length of output: 50374


🏁 Script executed:

find . -path "*/features/i18n/helper*" -type f

Repository: ecency/vision-next

Length of output: 146


🏁 Script executed:

cat -n apps/web/src/features/i18n/helper.tsx 2>/dev/null | head -100

Repository: ecency/vision-next

Length of output: 1019


🏁 Script executed:

rg -n "how-to-join\|what-are-rc" --type json -c | head -20

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

find . -path "*staticPages/faq*" -name "*.ts" -o -path "*staticPages/faq*" -name "*.tsx"| head -10

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

rg -n "how-to-join|what-are-rc" --type tsx --type ts | head -30

Repository: ecency/vision-next

Length of output: 89


🏁 Script executed:

rg -n "id=.*how-to-join|id=.*what-are-rc" --type tsx --type ts

Repository: ecency/vision-next

Length of output: 89


🏁 Script executed:

find . -path "*/faq/*" -name "*.tsx" -exec grep -l "how-to-join\|what-are-rc" {} \;

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

ls -la apps/web/src/app/staticPages/faq/

Repository: ecency/vision-next

Length of output: 142


🏁 Script executed:

rg -n "how-to-join-header|what-are-rc-header" apps/web/src/features/i18n/locales/en-US.json

Repository: ecency/vision-next

Length of output: 180


🏁 Script executed:

cat apps/web/src/app/staticPages/faq/page.tsx | head -150

Repository: ecency/vision-next

Length of output: 135


🏁 Script executed:

find . -type f -name "page.tsx"| grep -i faq

Repository: ecency/vision-next

Length of output: 107


🏁 Script executed:

find . -type d -name "*faq*"| head -5

Repository: ecency/vision-next

Length of output: 160


🏁 Script executed:

head -200 './apps/web/src/app/(staticPages)/faq/page.tsx'

Repository: ecency/vision-next

Length of output: 3049


🏁 Script executed:

rg -n "how-to-join|what-are-rc"'./apps/web/src/app/(staticPages)/faq/' -A 2 -B 2

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

rg -n "static.faq\." apps/web/src/features/i18n/locales/en-US.json | head -30

Repository: ecency/vision-next

Length of output: 44


🏁 Script executed:

cat apps/web/src/app/staticPages/faq/utils/search-within-faq.ts 2>/dev/null || find . -path "*/faq/utils*" -type f -name "*.ts"

Repository: ecency/vision-next

Length of output: 177


🏁 Script executed:

cat './apps/web/src/app/(staticPages)/faq/utils/search-within-faq.ts'

Repository: ecency/vision-next

Length of output: 626


🏁 Script executed:

cat './apps/web/src/app/(staticPages)/faq/utils/index.ts'

Repository: ecency/vision-next

Length of output: 98


🏁 Script executed:

rg -n "faq-keys" -A 50 './apps/web/src/'

Repository: ecency/vision-next

Length of output: 337


🏁 Script executed:

cat './apps/web/src/consts/faq-keys-general.ts'

Repository: ecency/vision-next

Length of output: 3046


Fix broken sign-up.learn-more translation (empty <a> + leaked format@@2).

Line 299 renders a non-clickable empty anchor with a visible format@@2 artifact string. The Tsx component uses dangerouslySetInnerHTML to render translation values as HTML, so the empty <a href="/faq#how-to-join"></a> provides no visible link text, and format@@2 displays as literal UI text.

Other language files properly include anchor text (e.g., "FAQ" in English, Bulgarian, Chinese). Update ja-JP.json line 299 to match this pattern with proper Japanese link text.

Note: rc-info.learn-more on line 1134 is correctly set to "/faq#what-are-rc" and used as a URL in an href attribute—no change needed there.

Proposed fix
- "learn-more": "<a href=\"/faq#how-to-join\"></a> のメリットについての詳細はこちらformat@@2",+ "learn-more": "メリットについての詳細は <a href=\"/faq#how-to-join\">こちら</a> をご覧ください。",
📝 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
"learn-more": "<a href=\"/faq#how-to-join\"></a> のメリットについての詳細はこちらformat@@2",
"learn-more": "メリットについての詳細は <a href=\"/faq#how-to-join\">こちら</a> をご覧ください。",
🤖 Prompt for AI Agents
In @apps/web/src/features/i18n/locales/ja-JP.json at line 299, The translation
value for sign-up.learn-more contains an empty anchor and a stray "format@@2";
update the "learn-more" string (key: sign-up.learn-more) to include visible
Japanese anchor text and remove the artifact so it mirrors other locales (e.g.,
use "<a href=\"/faq#how-to-join\">FAQ</a> のメリットについての詳細はこちら" or similar Japanese
link text), leaving rc-info.learn-more unchanged. Ensure the updated string
keeps the same URL ("/faq#how-to-join"), has meaningful link text, and has no
leftover "format@@2" artifact.

"description-2": "Hive powers many apps and is run completely decentralized by community members all around the world. With an account, you have direct access to the ecosystem.",
"bottom-description": "One account, one wallet to manage everything on Blockchain.",
"learn-more": "Learn more about benefits in our <a href=\"https://docs.ecency.com/guides/create-account/\">FAQ</a>",
"learn-more": "Sužinokite daugiau apie privalumus mūsų svetainėje <a href=\"/faq#how-to-join\">FAQ</a>",

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:

# Find FAQ-related files and search for the anchor definition
find . -type f \( -name "*faq*" -o -name "*FAQ*"\)| head -20

Repository: ecency/vision-next

Length of output: 910


🏁 Script executed:

# Search for the specific anchor in the codebase
rg -n "how-to-join" --type=tsx --type=ts --type=jsx --type=js 2>/dev/null ||echo"Pattern not found in source files"

Repository: ecency/vision-next

Length of output: 95


🏁 Script executed:

# Check the full context of lines around 68 and 1134 in the Lithuanian locale file
cat -n apps/web/src/features/i18n/locales/lt-LT.json | sed -n '65,75p;1130,1140p'

Repository: ecency/vision-next

Length of output: 1004


🏁 Script executed:

# Search for "DUK" in the Lithuanian locale to understand the localization pattern
rg -n "DUK" apps/web/src/features/i18n/locales/lt-LT.json

Repository: ecency/vision-next

Length of output: 619


🏁 Script executed:

# Check the FAQ keys file for anchor definitions
cat apps/web/src/consts/faq-keys-general.ts

Repository: ecency/vision-next

Length of output: 3046


🏁 Script executed:

# Search for both anchors in all files
rg -n "#how-to-join|#what-are-rc" --no-heading

Repository: ecency/vision-next

Length of output: 19898


🏁 Script executed:

# Check FAQ component files for how anchors are defined
cat apps/web/src/app/\(staticPages\)/faq/_components/faq-anchor-listener.tsx | head -50

Repository: ecency/vision-next

Length of output: 385


Use the Lithuanian translation for "FAQ" for consistency.

The anchors #how-to-join and #what-are-rc are valid and properly integrated. However, the link text should use the Lithuanian translation already available in the file. Line 68 provides "Dažniausiai užduodami klausimai" (full translation), so replace "FAQ" with this translation or the common abbreviation "DUK" (used elsewhere in the file, e.g., lines 714 and 1954) for consistency with localization practices.

🤖 Prompt for AI Agents
In @apps/web/src/features/i18n/locales/lt-LT.json at line 299, Replace the
English "FAQ" link text in the "learn-more" translation entry with the
Lithuanian equivalent used elsewhere; edit the value for the "learn-more" key so
the anchor text is either "Dažniausiai užduodami klausimai" or the established
abbreviation "DUK" (matching other occurrences in the file) while keeping the
href "/faq#how-to-join" unchanged.

"cancel": "取消",
"check-faq": "了解更多关于我们的 RC的信息",
"learn-more": "https://docs.ecency.com/hive/resourcescredits/",
"learn-more": "/faq#what are-rc",

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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Check the content at line 1134 in zh-CN.json and surrounding contextcd /repo && head -1140 apps/web/src/features/i18n/locales/zh-CN.json | tail -10

Repository: ecency/vision-next

Length of output: 117


🏁 Script executed:

# Also check line 299 for comparisoncd /repo && sed -n '295,305p' apps/web/src/features/i18n/locales/zh-CN.json

Repository: ecency/vision-next

Length of output: 117


🏁 Script executed:

# Search for learn-more entries with spaces in anchors across locale filescd /repo && rg '"learn-more".*#.*\s' apps/web/src/features/i18n/locales/ -A 0 -B 1

Repository: ecency/vision-next

Length of output: 117


🏁 Script executed:

# Check for the correct anchor format in the FAQcd /repo && rg -n 'id="what-are-rc"|name="what-are-rc"|what-are-rc' apps/web/ --type html --type json --type jsx --type ts

Repository: ecency/vision-next

Length of output: 117


🏁 Script executed:

# Search for rc-info references to understand the contextcd /repo && rg 'rc-info' apps/web/ --type json -B 2 -A 2 | head -50

Repository: ecency/vision-next

Length of output: 117


🏁 Script executed:

# Check the content at line 1134 in zh-CN.json and surrounding context
head -1140 apps/web/src/features/i18n/locales/zh-CN.json | tail -10

Repository: ecency/vision-next

Length of output: 398


🏁 Script executed:

# Check line 299 for comparison
sed -n '295,305p' apps/web/src/features/i18n/locales/zh-CN.json

Repository: ecency/vision-next

Length of output: 528


🏁 Script executed:

# Search for learn-more entries with spaces in anchors across locale files
rg '"learn-more".*#.*\s' apps/web/src/features/i18n/locales/ -A 0 -B 1

Repository: ecency/vision-next

Length of output: 2786


🏁 Script executed:

# Check for the correct anchor format in the FAQ
rg -n 'id="what-are-rc"|name="what-are-rc"|what-are-rc' apps/web/ --type html --type jsx --type ts

Repository: ecency/vision-next

Length of output: 89


🏁 Script executed:

# Search for rc-info references to understand the context
rg 'rc-info' apps/web/ --type json -B 2 -A 2 | head -50

Repository: ecency/vision-next

Length of output: 2991


🏁 Script executed:

# Search for FAQ page files
fd -e html -e jsx -e tsx -e ts 'faq' apps/web/

Repository: ecency/vision-next

Length of output: 807


🏁 Script executed:

# Search for what-are-rc or what are-rc anchor definitions
rg 'what-are-rc|what are-rc' apps/web/

Repository: ecency/vision-next

Length of output: 44050


🏁 Script executed:

# Check the rc-info.learn-more specifically in zh-CN.json and nearby context
sed -n '1130,1145p' apps/web/src/features/i18n/locales/zh-CN.json

Repository: ecency/vision-next

Length of output: 575


🏁 Script executed:

# Check hi-IN.json rc-info section for the same issue
rg -A 10 '"rc-info"' apps/web/src/features/i18n/locales/hi-IN.json

Repository: ecency/vision-next

Length of output: 442


Critical: Invalid space in URL anchor fragment.

The anchor contains a space (#what are-rc) which will break link navigation. The correct anchor format is #what-are-rc (hyphenated), which is confirmed by:

  • The component that opens this link: /faq#what-are-rc
  • The FAQ anchor key: what-are-rc
  • Other locale files using the same link
🔧 Proposed fix
- "learn-more": "/faq#what are-rc",+ "learn-more": "/faq#what-are-rc",
📝 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
"learn-more": "/faq#whatare-rc",
"learn-more": "/faq#what-are-rc",
🤖 Prompt for AI Agents
In @apps/web/src/features/i18n/locales/zh-CN.json at line 1134, The "learn-more"
translation value contains an invalid space in the URL fragment ("#what are-rc")
which breaks navigation; update the value for the "learn-more" key in the zh-CN
locale to use the hyphenated anchor "#what-are-rc" (so the string becomes
"/faq#what-are-rc") to match the component and other locales.

@coderabbitaicoderabbitaiBot left a comment

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.

Actionable comments posted: 0

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 (4)
apps/web/src/features/i18n/locales/tr-TR.json (1)

3119-3217: ⚠️ Potential issue | 🟡 Minor

Add-keys flow strings need Turkish localization.

All new onboarding/stepper strings are still English.

apps/web/src/features/i18n/locales/lt-LT.json (1)

3119-3217: ⚠️ Potential issue | 🟡 Minor

Large untranslated block in Lithuanian locale.

The entire add-keys section (~100 lines) containing the multi-step key management workflow is in English. This includes critical security-related messaging (seed phrase warnings, key revocation confirmations, etc.) that should be translated to Lithuanian for proper user comprehension.

Given the security-sensitive nature of these strings (seed phrase handling, key management), prioritizing their translation would improve the user experience for Lithuanian users.

apps/web/src/features/i18n/locales/pt-PT.json (1)

2163-2192: ⚠️ Potential issue | 🟡 Minor

Align DM privacy message with “followers‑only” meaning.
“pessoas que elas seguem” implies the opposite direction.

💡 Suggested fix
- "dm-followers-only": "Só aceita DMs de pessoas que elas seguem",+ "dm-followers-only": "Só aceita DMs de seguidores",
apps/web/src/features/i18n/locales/ru-RU.json (1)

2163-2192: ⚠️ Potential issue | 🟡 Minor

Clarify DM availability messages.

Two strings read awkwardly in Russian (“СМС” for DMs, missing subject). Suggested neutral, consistent wording:

🛠️ Suggested fix
- "dm-followers-only": "Принимает СМС только от пользователей, за которыми они следуют",- "dm-disabled": "Отключил личные сообщения"+ "dm-followers-only": "Принимает ЛС только от подписчиков",+ "dm-disabled": "Личные сообщения отключены"
🟡 Minor comments (31)
apps/web/src/features/i18n/locales/es-ES.json-3209-3209 (1)

3209-3209: ⚠️ Potential issue | 🟡 Minor

Fix mistranslation: "Colgar" means "hang", not "Hive".

"Colgar teclas" translates to "Hang keys" which is incorrect. This should be "Claves de Hive" (Hive keys).

✏️ Proposed fix
- "step-hive-keys-title": "Colgar teclas",+ "step-hive-keys-title": "Claves de Hive",
apps/web/src/features/i18n/locales/es-ES.json-3185-3185 (1)

3185-3185: ⚠️ Potential issue | 🟡 Minor

Fix brand name and formality inconsistency.

Two issues:

  1. "La Ecencia" should remain as "Ecency" — brand names should not be translated or modified.
  2. The sentence mixes informal "tú" (compartas) with formal "usted" (introdúzcala). Should use consistent formality.
✏️ Proposed fix
- "warning": "Nunca compartas tu frase de semilla con nadie. La Ecencia nunca la pedirá. Sólo introdúzcala en dispositivos de confianza.",+ "warning": "Nunca compartas tu frase de semilla con nadie. Ecency nunca la pedirá. Solo introdúcela en dispositivos de confianza.",
apps/web/src/features/i18n/locales/it-IT.json-1322-1325 (1)

1322-1325: ⚠️ Potential issue | 🟡 Minor

Minor terminology inconsistency.

Line 1323 uses "Accesso" (Italian) while line 1324 uses "Login" (English) for the same concept. Consider using consistent terminology within this block for better UX.

 "setup-external": {
"login-required": "Accesso richiesto per configurare portafogli esterni",
- "import-login-required": "Login richiesto per importare il portafoglio"+ "import-login-required": "Accesso richiesto per importare il portafoglio"
}
apps/web/src/features/i18n/locales/fr-FR.json-1085-1086 (1)

1085-1086: ⚠️ Potential issue | 🟡 Minor

Inconsistent terminology: "MP" vs "DMs".

Line 1085 uses "MP" (French abbreviation for "Message Privé") but line 1086 uses "DMs" (English). For consistency, both should use the same term.

💡 Suggested fix
 "dm-followers-only": "MP : suiveurs uniquement",
- "dm-disabled": "DMs : désactivé"+ "dm-disabled": "MP : désactivé"
apps/web/src/features/i18n/locales/tr-TR.json-2163-2166 (1)

2163-2166: ⚠️ Potential issue | 🟡 Minor

Chat DM warning/status strings are not localized.

These additions should be translated for the Turkish locale.

Also applies to: 2189-2192

apps/web/src/features/i18n/locales/tr-TR.json-868-870 (1)

868-870: ⚠️ Potential issue | 🟡 Minor

Entry/profile strings still English in tr-TR.

Please translate these new strings to keep the locale consistent.

Also applies to: 1084-1086

apps/web/src/features/i18n/locales/tr-TR.json-1321-1325 (1)

1321-1325: ⚠️ Potential issue | 🟡 Minor

Wallet external-setup strings are not localized.

Please translate these new labels for tr-TR.

apps/web/src/features/i18n/locales/tr-TR.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Translate new UI labels for Turkish locale.

These newly added labels are still English; please localize them to Turkish (or confirm English is intentional fallback).

Also applies to: 2868-2868, 3065-3065

apps/web/src/features/i18n/locales/tr-TR.json-1194-1205 (1)

1194-1205: ⚠️ Potential issue | 🟡 Minor

DM privacy settings block needs Turkish translation.

All newly added strings are English in the Turkish locale.

apps/web/src/features/i18n/locales/lt-LT.json-3065-3065 (1)

3065-3065: ⚠️ Potential issue | 🟡 Minor

Untranslated string - use existing translation.

The value "Convert" is in English. The Lithuanian translation "Konvertuoti" already exists at Line 1237 and should be reused here for consistency.

apps/web/src/features/i18n/locales/lt-LT.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Untranslated string in Lithuanian locale.

The value "Validating..." is in English. For consistency with the Lithuanian locale, this should be translated (e.g., "Tikrinama...").

apps/web/src/features/i18n/locales/lt-LT.json-868-870 (1)

868-870: ⚠️ Potential issue | 🟡 Minor

Untranslated strings in Lithuanian locale.

These three new entries are in English and should be translated to Lithuanian:

  • deleted-content
  • deleted-no-history
  • untitled
apps/web/src/features/i18n/locales/lt-LT.json-1084-1086 (1)

1084-1086: ⚠️ Potential issue | 🟡 Minor

Untranslated strings in Lithuanian locale.

These new profile-related entries are in English and should be translated to Lithuanian for consistency with the rest of the file.

apps/web/src/features/i18n/locales/lt-LT.json-2163-2166 (1)

2163-2166: ⚠️ Potential issue | 🟡 Minor

Untranslated DM warning strings in Lithuanian locale.

These new chat/DM warning entries are in English and should be translated to Lithuanian for user safety messaging to be effective for Lithuanian users.

apps/web/src/features/i18n/locales/lt-LT.json-1321-1324 (1)

1321-1324: ⚠️ Potential issue | 🟡 Minor

Untranslated strings in Lithuanian locale.

The setup-external entries are in English and should be translated to Lithuanian.

apps/web/src/features/i18n/locales/lt-LT.json-2868-2868 (1)

2868-2868: ⚠️ Potential issue | 🟡 Minor

Untranslated string in Lithuanian locale.

The loading-editor value is in English and should be translated to Lithuanian.

apps/web/src/features/i18n/locales/uz-UZ.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Consider localizing the newly added strings for uz-UZ.

Several new entries are still in English, which may lead to mixed-language UI. If full Uzbek coverage is expected for this locale, please translate or explicitly rely on fallback logic rather than mixing languages in-file.

Also applies to: 868-870, 1084-1086, 1194-1205, 1321-1325, 2163-2166, 2189-2192, 2868-2868, 3065-3065, 3120-3120, 3131-3217

apps/web/src/features/i18n/locales/de-DE.json-3131-3217 (1)

3131-3217: ⚠️ Potential issue | 🟡 Minor

Minor wording fix: “Seed Phrase” → “Seed‑Phrase”.
Keeps terminology consistent and grammatically correct.

✏️ Proposed fix
- "warning-title": "Wichtig: Speichere deinen neuen Seed Phrase",+ "warning-title": "Wichtig: Speichere deine neue Seed-Phrase",
apps/web/src/features/i18n/locales/th-TH.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Thai locale string is still English.

g.validating is English in the th-TH file. Consider translating it or removing the key to let the default locale handle it.

apps/web/src/features/i18n/locales/uk-UA.json-3175-3175 (1)

3175-3175: ⚠️ Potential issue | 🟡 Minor

Untranslated English text.

The value "{{count}} existing key(s)" was not translated to Ukrainian. This will display English text to Ukrainian-speaking users.

Suggested fix
- "revoking-count": "{{count}} existing key(s)",+ "revoking-count": "{{count}} існуючих ключів",
apps/web/src/features/i18n/locales/pt-PT.json-3172-3174 (1)

3172-3174: ⚠️ Potential issue | 🟡 Minor

Remove duplicate “ativo” in the key list.
The list should not repeat the active key.

💡 Suggested fix
- "new-bip44-keys": "Novas chaves BIP44 baseadas em semente (proprietário, ativo, ativo, postagem, memo)",+ "new-bip44-keys": "Novas chaves BIP44 baseadas em semente (proprietário, ativo, postagem, memo)",
apps/web/src/features/i18n/locales/pt-PT.json-1195-1201 (1)

1195-1201: ⚠️ Potential issue | 🟡 Minor

Clarify the “followers‑only” option wording.
Current text reads as “people I follow,” which is the inverse of “followers.”

💡 Suggested fix
- "followers-only": "Somente pessoas que sigo",+ "followers-only": "Somente seguidores",
apps/web/src/features/i18n/locales/pt-PT.json-1084-1086 (1)

1084-1086: ⚠️ Potential issue | 🟡 Minor

Fix the “DMs” label typo (“Dados”).
“Dados” changes the meaning; this label should reference DMs like the line above.

💡 Suggested fix
- "dm-disabled": "Dados: desativado"+ "dm-disabled": "DMs: desativadas"
apps/web/src/features/i18n/locales/zh-CN.json-3156-3162 (1)

3156-3162: ⚠️ Potential issue | 🟡 Minor

Translate selected-count string.

Line 3160 is still English.

🔧 Suggested translation
- "selected-count": "{{count}} key(s) selected for revocation",+ "selected-count": "已选择撤销 {{count}} 个密钥",
apps/web/src/features/i18n/locales/zh-CN.json-868-870 (1)

868-870: ⚠️ Potential issue | 🟡 Minor

Localize the new deletion message.

Line 868 is still English, which breaks zh-CN consistency.

🔧 Suggested translation
- "deleted-content": "This post was deleted by {{author}}",+ "deleted-content": "此帖子已被 {{author}} 删除",
apps/web/src/features/i18n/locales/zh-CN.json-2189-2192 (1)

2189-2192: ⚠️ Potential issue | 🟡 Minor

Localize dm-not-allowed message.

Line 2190 is still English.

🔧 Suggested translation
- "dm-not-allowed": "@{{username}} doesn't accept messages from you",+ "dm-not-allowed": "@{{username}} 不接受来自你的私信",
apps/web/src/features/i18n/locales/bg-BG.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Localize new English strings in bg-BG.
g.validating (and other newly added strings below) are still English. Please translate them for Bulgarian users.

apps/web/src/features/i18n/locales/bg-BG.json-300-300 (1)

300-300: ⚠️ Potential issue | 🟡 Minor

Fix a likely typo in the Bulgarian text.
“ползвите” should likely be “ползите”.

✏️ Suggested fix
- "learn-more": "Научете повече за ползвите от нашите <a href=\"/faq#how-to-join\">Често Задавани Въпроси</a>",+ "learn-more": "Научете повече за ползите от нашите <a href=\"/faq#how-to-join\">Често Задавани Въпроси</a>",
apps/web/src/features/i18n/locales/ru-RU.json-1140-1140 (1)

1140-1140: ⚠️ Potential issue | 🟡 Minor

Fix the FAQ anchor to avoid a broken jump.

/faq#что-are-rc is likely not a valid section id; the FAQ section header is what-are-rc, so the anchor should match it.

🛠️ Suggested fix
- "learn-more": "/faq#что-are-rc",+ "learn-more": "/faq#what-are-rc",
apps/web/src/features/i18n/locales/ru-RU.json-1084-1086 (1)

1084-1086: ⚠️ Potential issue | 🟡 Minor

Use consistent “ЛС” terminology for DM status.

dm-disabled uses “DMs”, while other strings use “ЛС”. Suggest normalizing to avoid mixed-language UI.

🛠️ Suggested fix
- "dm-disabled": "DMs: отключено"+ "dm-disabled": "ЛС: отключены"
apps/web/src/features/i18n/locales/ru-RU.json-3139-3189 (1)

3139-3189: ⚠️ Potential issue | 🟡 Minor

Fix typos/garbled text in the add‑keys flow.

Several strings contain errors that will surface directly to users (garbled phrase, grammar, brand name).

🛠️ Suggested fix
- "info2": "Вы можете держать несколько наборов клавиш активными одновременно",+ "info2": "Вы можете держать несколько наборов ключей активными одновременно",
...
- "error-credentials-not-match": "Предоставленные учетные данные не совпадают с этой учетной записью. Пожалуйста, проверьте ваш мастер-пароль, ключ ключа ключа ключа seed.",+ "error-credentials-not-match": "Предоставленные учетные данные не совпадают с этой учетной записью. Проверьте мастер‑пароль, ключ владельца или seed‑фразу.",
...
- "next-skip": "Продолжить без отозвать",+ "next-skip": "Продолжить без отзыва",- "memo-will-replace": "Новый ключ будет заменен этим",+ "memo-will-replace": "Этот ключ будет заменён новым",
...
- "warning": "Никогда не делитесь вашей seed фразой с кем угодно. Экции никогда не запросит ее. Введите её только на доверенных устройствах.",+ "warning": "Никогда не делитесь вашей seed‑фразой. Ecency никогда не запросит её. Введите её только на доверенных устройствах.",
🧹 Nitpick comments (11)
apps/web/src/features/i18n/locales/sr-CS.json (1)

74-74: Translation pending for Serbian locale.

The value "Validating..." is in English. For consistency with the rest of the file (e.g., "loading": "Loading" at line 73), this should ideally be translated to Serbian.

apps/web/src/features/i18n/locales/ac-ace.json (9)

74-74: New UI state indicator added.

The string is in English. Queue for Acehnese translation to maintain locale consistency.


868-870: New post-deletion strings added in English.

These three keys (deleted-content, deleted-no-history, untitled) provide user-facing text for deleted content scenarios. Queue for Acehnese translation.


1084-1086: Profile section expanded with DM-related status indicators.

The strings empty-communities-hint, dm-followers-only, and dm-disabled are in English. Queue for Acehnese translation alongside other DM-related keys.


1321-1324: Wallet setup external section added with English strings.

The login-required and import-login-required messages are user-facing and should be queued for Acehnese translation.


2163-2166: Chat DM warning strings added.

The new keys (leave-conversation, dm-warning-title, dm-warning-body, dm-warning-settings) provide important security/privacy messaging for DMs. These are in English and should be queued for Acehnese translation.


2189-2192: Chat DM restriction messages added.

The keys unpin-message, dm-not-allowed, dm-followers-only, and dm-disabled are user-facing strings in English. Queue for Acehnese translation.


2868-2868: Editor loading state added.

The loading-editor string is in English. Queue for Acehnese translation.


3065-3065: Wallet convert operation label added.

The convert label is in English. Queue for Acehnese translation.


3119-3217: Multi-step add-keys workflow scaffolding added.

This large section adds comprehensive key management UI strings including stepper labels, step instructions, warnings, and import flow text. All strings are in English. Given this is a Crowdin update PR, these likely represent new source strings awaiting translation.

The structure and placeholders (e.g., {{count}}) are consistent with the rest of the file. Queue entire section for Acehnese translation.

apps/web/src/features/i18n/locales/pcm-NG.json (1)

1-3219: Optional: New strings may need Nigerian Pidgin translation.

Many of the newly added strings are in standard English rather than Nigerian Pidgin. While this is common for Crowdin sync PRs where strings are added first and translated later, consider flagging these for the translation team to ensure consistency with existing translated entries like "done": "E don go" and "server-error": "The process no gree complete because of server wahala".

@coderabbitaicoderabbitaiBot left a comment

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.

Actionable comments posted: 2

Note

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

🤖 Fix all issues with AI agents
In `@apps/web/src/features/i18n/locales/ru-RU.json`:
- Line 1140: The "learn-more" translation entry currently uses a mixed-language
anchor `/faq#что-are-rc`; update the value for the "learn-more" key in the ru-RU
locale to use the English-only FAQ fragment by changing the URL fragment to
`#what-are-rc` so the link points to the existing `what-are-rc-header` FAQ
section (i.e., set the string to `/faq#what-are-rc`).
In `@apps/web/src/features/i18n/locales/uk-UA.json`:
- Line 3175: The key "revoking-count" is still in English—replace the value with
a Ukrainian translation while preserving the interpolation token {{count}}; e.g.
change to a Ukrainian phrase such as "Існуючих ключів: {{count}}". If the app
supports pluralization, implement Ukrainian plural forms for "revoking-count" (1
=> "{{count}} існуючий ключ", 2–4 => "{{count}} існуючі ключі", 5+ => "{{count}}
існуючих ключів") to ensure correct grammar.
🟡 Minor comments (40)
apps/web/src/features/i18n/locales/sr-CS.json-2163-2166 (1)

2163-2166: ⚠️ Potential issue | 🟡 Minor

DM safety warning strings are untranslated.

The dm-warning-body is a security-critical message warning users about phishing and suspicious links. Untranslated safety warnings may be less effective for Serbian-speaking users who may not read English well. Prioritizing translation of these safety strings would improve user protection.

apps/web/src/features/i18n/locales/sr-CS.json-3065-3065 (1)

3065-3065: ⚠️ Potential issue | 🟡 Minor

Inconsistent translation for "convert".

wallet.operations.convert is "Convert" (English), but wallet.convert on line 1237 is already translated as "Pretvori". Consider using the existing Serbian translation for consistency.

Suggested fix
- "convert": "Convert",+ "convert": "Pretvori",
apps/web/src/features/i18n/locales/hi-IN.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Address untranslated English strings in Hindi locale file.

The hi-IN.json file contains 987 untranslated strings (English-only, no Devanagari characters), including g.validating, entry.deleted-content, entry.deleted-no-history, entry.untitled, profile.dm-followers-only, profile.dm-disabled, the settings.dm-privacy block, wallet.setup-external, publish.loading-editor, profile-wallet.operations.convert, permissions.keys.add-key, and the full permissions.add-keys section. Shipping a Hindi locale with this many untranslated strings degrades user experience for Hindi speakers and should be addressed before release, either by providing proper Hindi translations or removing these entries from the Hindi locale file.

apps/web/src/features/i18n/locales/bg-BG.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Many new keys are untranslated (English) in the Bulgarian locale.

Nearly all newly added strings across g.validating, entry.deleted-*, settings.dm-privacy.*, wallet.setup-external.*, chat.dm-warning-*, publish.loading-editor, wallet.operations.convert, permissions.keys.add-key, and the entire permissions.add-keys.* block (Lines 3131–3218) are in English. While this is a common pattern for Crowdin sync branches where source strings land before translators act on them, it results in Bulgarian users seeing English UI text for these features.

Worth confirming whether a follow-up translation pass is planned for these keys.

Also applies to: 868-870, 1194-1205, 1321-1325, 2163-2166, 2189-2192, 2868-2868, 3065-3065, 3119-3119, 3130-3218

apps/web/src/features/i18n/locales/bg-BG.json-3065-3065 (1)

3065-3065: ⚠️ Potential issue | 🟡 Minor

Inconsistent Bulgarian translation for "Convert".

Line 3065 introduces "convert": "Convert" (English), but line 1237 already uses the Bulgarian translation "convert": "Преобразуване" for the same concept in the wallet namespace. If translations are being added incrementally, this one already has a known Bulgarian equivalent.

Suggested fix
- "convert": "Convert",+ "convert": "Преобразуване",
apps/web/src/features/i18n/locales/ru-RU.json-3147-3148 (1)

3147-3148: ⚠️ Potential issue | 🟡 Minor

Garbled translation: duplicated/nonsensical text in error message.

Line 3147 (error-credentials-not-match) contains "ключ ключа ключа ключа seed" which literally translates to "key of key of key of key seed" — this is clearly garbled. The intended meaning is likely "master password, seed phrase key, or owner key". Compare with the English intent in step1.authenticate and step1.error-not-owner.

Similarly, Line 3148 (error-account-not-loaded) says "подождите минуту" (wait a minute) which is acceptable, but please double-check with the Crowdin contributors.

apps/web/src/features/i18n/locales/ru-RU.json-3141-3141 (1)

3141-3141: ⚠️ Potential issue | 🟡 Minor

Incorrect word: "клавиш" (keyboard keys) should be "ключей" (cryptographic keys).

"info2" reads: "Вы можете держать несколько наборов клавиш активными одновременно". The word "клавиш" refers to keyboard keys. For cryptographic key sets, the correct Russian term is "ключей", which is used consistently throughout the rest of this file (e.g., permissions.keys.title, permissions.keys.add-key).

✏️ Proposed fix
- "info2": "Вы можете держать несколько наборов клавиш активными одновременно",+ "info2": "Вы можете держать несколько наборов ключей активными одновременно",
apps/web/src/features/i18n/locales/tr-TR.json-1194-1205 (1)

1194-1205: ⚠️ Potential issue | 🟡 Minor

New DM privacy settings block is entirely in English.

All six dm-privacy sub-keys (title, who-can-message, description, allow-all, followers-only, no-one) plus the two status messages (dm-privacy-updated, dm-privacy-failed) are in English in a Turkish locale file. This applies similarly to other newly added blocks in this file (see below).

apps/web/src/features/i18n/locales/tr-TR.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Significant number of new keys lack Turkish translations.

Across this file, the following newly added or modified keys contain only English text with no Turkish translation:

  • g.validating (Line 74)
  • entry.deleted-content, entry.deleted-no-history, entry.untitled (Lines 868–870)
  • profile.empty-communities-hint, profile.dm-followers-only, profile.dm-disabled (Lines 1084–1086)
  • wallet.setup-external.* (Lines 1322–1324)
  • chat.leave-conversation, chat.dm-warning-* (Lines 2163–2166)
  • chat.dm-not-allowed, chat.dm-followers-only, chat.dm-disabled (Lines 2190–2192)
  • publish.loading-editor (Line 2868)
  • permissions.keys.add-key (Line 3119)
  • permissions.add-keys.* — entire multi-step workflow (Lines 3131–3218)

If this is intentional (new source strings awaiting Crowdin translation), no action needed now. Otherwise, these should be queued for Turkish translators.

Also applies to: 868-870, 1084-1086, 1321-1325, 2163-2166, 2189-2192, 2868-2868, 3119-3119, 3130-3218

apps/web/src/features/i18n/locales/de-DE.json-1084-1086 (1)

1084-1086: ⚠️ Potential issue | 🟡 Minor

Minor: inconsistent plural marking between dm-followers-only and dm-disabled.

Line 1085 uses "DMs" (plural) while line 1086 uses "DM" (singular). Consider making them consistent (e.g., both "DM:" or both "DMs:").

apps/web/src/features/i18n/locales/de-DE.json-2163-2166 (1)

2163-2166: ⚠️ Potential issue | 🟡 Minor

Formality register mismatch within the same DM-warning dialog.

Line 2164 uses informal "Bleib sicher" (du-form), while line 2165 immediately switches to formal "Seien Sie vorsichtig" / "Klicken Sie nicht" (Sie-form). Within a single dialog, the register should be consistent. Since the surrounding chat UI mostly uses "Sie", consider changing the title to match:

Proposed fix
- "dm-warning-title": "Neue Unterhaltung - Bleib sicher",+ "dm-warning-title": "Neue Unterhaltung – Bleiben Sie sicher",
apps/web/src/features/i18n/locales/de-DE.json-3130-3218 (1)

3130-3218: ⚠️ Potential issue | 🟡 Minor

New add-keys multi-step scaffold looks solid overall — a couple of minor text nits.

The translations are comprehensive and interpolation tokens ({{count}}) are correctly preserved throughout. Two small observations:

  1. Line 3151"Seed Phrase" (no hyphen) while lines 3152–3154 consistently use "Seed-Phrase" (hyphenated). Align for consistency.
  2. Line 3173"Neue BIP44 Seed-basierte Schlüssel (Besitzer, aktiv, posten, Memo)" — German nouns should be capitalized: aktivAktiv, postenPosten (or use the full labels like Aktiver, Posting, Memo).
Proposed fix
- "warning-title": "Wichtig: Speichere deinen neuen Seed Phrase",+ "warning-title": "Wichtig: Speichere deine neue Seed-Phrase",
@@
- "new-bip44-keys": "Neue BIP44 Seed-basierte Schlüssel (Besitzer, aktiv, posten, Memo)",+ "new-bip44-keys": "Neue BIP44 Seed-basierte Schlüssel (Besitzer, Aktiv, Posting, Memo)",
apps/web/src/features/i18n/locales/th-TH.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

All new/changed values are in English — missing Thai translations.

This is the th-TH (Thai) locale file, but every newly added or modified string (e.g., g.validating, settings.dm-privacy.*, chat.dm-warning-*, permissions.add-keys.*, etc.) is in English. Only a handful of entries in the file are actually localized to Thai (e.g., navbar.chats"แชท").

If this is a Crowdin sync that exports the source language for untranslated keys, this is expected and the Thai translations will follow. Otherwise, these English strings will be shown to Thai-locale users, degrading the localized experience.

Also applies to: 300-300, 868-870, 1084-1086, 1194-1205, 1321-1325, 2163-2166, 2189-2192, 2868-2868, 3065-3065, 3119-3119, 3130-3218

apps/web/src/features/i18n/locales/uz-UZ.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Numerous new keys added without Uzbek translations.

Nearly all newly added strings (e.g., g.validating, entry.deleted-content, entry.deleted-no-history, entry.untitled, settings.dm-privacy.*, wallet.setup-external.*, chat.leave-conversation, chat.dm-warning-*, chat.dm-not-allowed, chat.dm-followers-only, chat.dm-disabled, publish.loading-editor, operations.convert, permissions.keys.add-key, and the entire permissions.add-keys block) remain in English. If this is intentional for Crowdin to pick up and assign for translation, that's fine — but please ensure these are queued for Uzbek translation so end users don't see English fallback strings in the Uzbek UI.

Also applies to: 868-870, 1084-1086, 1194-1205, 1321-1325, 2163-2166, 2189-2192, 2868-2868, 3065-3065, 3119-3119, 3130-3218

apps/web/src/features/i18n/locales/pl-PL.json-2189-2192 (1)

2189-2192: ⚠️ Potential issue | 🟡 Minor

Mistranslation: "prezent" (gift) should refer to messages/DMs.

Line 2191 chat.dm-followers-only reads "Akceptuje tylko prezent od ludzi, którzy obserwują" — "prezent" means "gift," not "message." Given the key name (dm-followers-only) and the English intent ("Only accepts DMs from people they follow"), this should use a word like "wiadomości" (messages).

Compare with chat.dm-disabled on line 2192 which correctly uses "wiadomości bezpośrednie."

Suggested fix
- "dm-followers-only": "Akceptuje tylko prezent od ludzi, którzy obserwują",+ "dm-followers-only": "Akceptuje tylko wiadomości od ludzi, którzy obserwują",
apps/web/src/features/i18n/locales/pl-PL.json-3131-3141 (1)

3131-3141: ⚠️ Potential issue | 🟡 Minor

Inconsistent/incorrect terminology: "klawisze" (keyboard keys) vs "klucze" (crypto keys).

Two places use "klawisze" (which in Polish refers to keyboard/piano keys) instead of "klucze" (cryptographic/account keys):

  • Line 3135 stepper.review-keys: "Klawisze recenzji" — should be "Przegląd kluczy" (Review keys). The current phrasing is grammatically awkward and uses the wrong noun.
  • Line 3141 step1.info2: "zestawów klawiszy" — should be "zestawów kluczy" for consistency with the rest of the file (e.g., step3.title on line 3157 correctly uses "klucze").
Suggested fix
- "review-keys": "Klawisze recenzji",+ "review-keys": "Przegląd kluczy",
- "info2": "Możesz zachować wiele zestawów klawiszy jednocześnie",+ "info2": "Możesz zachować wiele zestawów kluczy jednocześnie",
apps/web/src/features/i18n/locales/id-ID.json-868-870 (1)

868-870: ⚠️ Potential issue | 🟡 Minor

Numerous new strings are not translated to Indonesian.

Nearly all newly added keys in this id-ID locale file contain English text instead of Indonesian translations. This spans multiple sections: entry.deleted-content, entry.deleted-no-history, entry.untitled, settings.dm-privacy.*, chat.dm-warning-*, chat.dm-not-allowed, chat.dm-followers-only, chat.dm-disabled, publish.loading-editor, and the entire permissions.add-keys block (~90 lines). Since this is an Indonesian locale, users will see English strings for these features.

If this is intentional as a Crowdin placeholder pending translation, consider tracking incomplete translations so they are revisited before release.

Also applies to: 1194-1205, 2163-2166, 2189-2192, 3131-3218

apps/web/src/features/i18n/locales/id-ID.json-3065-3065 (1)

3065-3065: ⚠️ Potential issue | 🟡 Minor

Inconsistent translation for "convert".

profile-wallet.operations.convert is set to "Convert" (English), but wallet.convert at Line 1237 is already translated as "Konversi". These likely appear in different parts of the wallet UI and the inconsistency may confuse Indonesian-speaking users.

Proposed fix
- "convert": "Convert",+ "convert": "Konversi",
apps/web/src/features/i18n/locales/fr-FR.json-3175-3175 (1)

3175-3175: ⚠️ Potential issue | 🟡 Minor

Untranslated English string.

"revoking-count" value is still in English: "{{count}} existing key(s)". It should be translated to French.

🌐 Suggested fix
- "revoking-count": "{{count}} existing key(s)",+ "revoking-count": "{{count}} clé(s) existante(s)",
apps/web/src/features/i18n/locales/ur-PK.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

All new strings in the ur-PK locale remain untranslated (English).

Every key added or modified in this file (g.validating, entry.deleted-*, settings.dm-privacy.*, permissions.add-keys.*, etc.) uses English text instead of Urdu. This is expected for a Crowdin sync PR where community translations arrive incrementally, but it means Urdu-speaking users will see English for these strings until translations land.

apps/web/src/features/i18n/locales/pt-PT.json-3173-3173 (1)

3173-3173: ⚠️ Potential issue | 🟡 Minor

Duplicate word "ativo" in the key description.

The translation reads "(proprietário, ativo, ativo, postagem, memo)" — "ativo" (active) appears twice. This is likely a copy-paste error; the list should enumerate four distinct key types.

Proposed fix
- "new-bip44-keys": "Novas chaves BIP44 baseadas em semente (proprietário, ativo, ativo, postagem, memo)",+ "new-bip44-keys": "Novas chaves BIP44 baseadas em semente (proprietário, ativo, postagem, memo)",
apps/web/src/features/i18n/locales/pt-PT.json-3164-3164 (1)

3164-3164: ⚠️ Potential issue | 🟡 Minor

Incorrect word for "key": "tecla" (keyboard key) should be "chave" (cryptographic key).

"Nova tecla de memorando" literally means "New memo keyboard key." Throughout this file, cryptographic keys are consistently translated as "chave" (e.g., Lines 3198–3200: "Chave do proprietário", "Chave Ativa", "Chave de postagem").

Proposed fix
- "memo-will-replace": "Nova tecla de memorando irá substituir esta",+ "memo-will-replace": "Nova chave de memo irá substituir esta",
apps/web/src/features/i18n/locales/pt-PT.json-1086-1086 (1)

1086-1086: ⚠️ Potential issue | 🟡 Minor

Mistranslation: "Dados" (Data) should refer to DMs (Direct Messages).

"dm-disabled": "Dados: desativado" translates to "Data: disabled", which doesn't match the key's intent. Compare with the correct translation at Line 2192: "dm-disabled": "Tem mensagens diretas desabilitadas". This should follow the same pattern as Line 1085's "dm-followers-only": "DMs: apenas seguidores".

Proposed fix
- "dm-disabled": "Dados: desativado"+ "dm-disabled": "DMs: desativado"
apps/web/src/features/i18n/locales/pt-PT.json-1140-1140 (1)

1140-1140: ⚠️ Potential issue | 🟡 Minor

Fix Portuguese anchor for RC FAQ link — inconsistent with all other locales.

The learn-more value at line 1140 uses /faq#oque-sao-cr (Portuguese anchor), while all other locales that reference the FAQ use the English anchor /faq#what-are-rc. This inconsistency will likely cause the link to fail unless the FAQ page generates localized anchors per locale, which is not evident from the codebase.

Proposed fix
- "learn-more": "/faq#oque-sao-cr",+ "learn-more": "/faq#what-are-rc",
apps/web/src/features/i18n/locales/zh-CN.json-868-869 (1)

868-869: ⚠️ Potential issue | 🟡 Minor

Untranslated/partially translated strings in zh-CN locale.

  • Line 868: deleted-content is entirely in English. Should be translated (e.g., "此帖子已被 {{author}} 删除").
  • Line 869: deleted-no-history mixes Chinese and English — "blockchain" should be "区块链" for consistency with the rest of this locale (e.g., the FAQ section already uses "区块链").
Proposed fix
- "deleted-content": "This post was deleted by {{author}}",- "deleted-no-history": "已删除的内容历史记录不可用 blockchain。",+ "deleted-content": "此帖子已被 {{author}} 删除",+ "deleted-no-history": "已删除的内容历史记录在区块链上不可用。",
apps/web/src/features/i18n/locales/zh-CN.json-2189-2192 (1)

2189-2192: ⚠️ Potential issue | 🟡 Minor

Untranslated string: dm-not-allowed is in English.

Line 2190 is a user-facing message that should be translated for zh-CN users.

Proposed fix
- "dm-not-allowed": "@{{username}} doesn't accept messages from you",+ "dm-not-allowed": "@{{username}} 不接受您的消息",
apps/web/src/features/i18n/locales/zh-CN.json-3130-3218 (1)

3130-3218: ⚠️ Potential issue | 🟡 Minor

New multi-step add-keys workflow is well-structured.

The stepper, step1–step4, and import sub-sections are comprehensive and mostly well-translated. A couple of strings remain in English:

  • Line 3160: "selected-count": "{{count}} key(s) selected for revocation"
  • Line 3175: "revoking-count": "{{count}} existing key(s)"

These should be translated for zh-CN users in a follow-up Crowdin pass.

Proposed translations
- "selected-count": "{{count}} key(s) selected for revocation",+ "selected-count": "已选择 {{count}} 个密钥进行撤销",
...
- "revoking-count": "{{count}} existing key(s)",+ "revoking-count": "{{count}} 个现有密钥",
apps/web/src/features/i18n/locales/uk-UA.json-3163-3167 (1)

3163-3167: ⚠️ Potential issue | 🟡 Minor

"Насіння BIP44" is an awkward literal translation of "seed."

"Насіння" means botanical seeds. In Ukrainian crypto/tech context, "seed" is typically left as-is or rendered as "seed-фраза" / "фраза-пароль." The rest of this file already uses "фраза-пароль (seed)" elsewhere (e.g., lines 3140, 3152). This label should be consistent.

Suggested fix
- "derivation-bip44": "Насіння BIP44",+ "derivation-bip44": "Seed-фраза BIP44",
apps/web/src/features/i18n/locales/uk-UA.json-3139-3141 (1)

3139-3141: ⚠️ Potential issue | 🟡 Minor

"клавіш" (keyboard keys) should be "ключів" (cryptographic keys).

Line 3141: "Ви можете зберегти одночасно кілька наборів клавіш" — "клавіш" refers to keyboard keys, not security/cryptographic keys. The correct Ukrainian word is "ключів."

Suggested fix
- "info2": "Ви можете зберегти одночасно кілька наборів клавіш",+ "info2": "Ви можете зберігати одночасно кілька наборів ключів",
apps/web/src/features/i18n/locales/lt-LT.json-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Untranslated string in Lithuanian locale.

"Validating..." is English. Consider translating to Lithuanian, e.g., "Tikrinama...".

apps/web/src/features/i18n/locales/lt-LT.json-2868-2868 (1)

2868-2868: ⚠️ Potential issue | 🟡 Minor

Untranslated string.

Consider: "loading-editor": "Įkeliamas redaktorius...".

apps/web/src/features/i18n/locales/lt-LT.json-1084-1086 (1)

1084-1086: ⚠️ Potential issue | 🟡 Minor

Untranslated profile strings.

These are visible on user profiles and should be in Lithuanian.

apps/web/src/features/i18n/locales/lt-LT.json-868-870 (1)

868-870: ⚠️ Potential issue | 🟡 Minor

Untranslated post-deletion strings.

These user-facing strings are in English. Lithuanian translations should be provided, e.g.:

  • "deleted-content": "Šį įrašą ištrynė {{author}}"
  • "deleted-no-history": "Ištrintojo turinio istorija nėra prieinama iš blokų grandinės."
  • "untitled": "Be pavadinimo"
apps/web/src/features/i18n/locales/lt-LT.json-3119-3119 (1)

3119-3119: ⚠️ Potential issue | 🟡 Minor

Untranslated string.

Consider: "add-key": "Pridėti/Tvarkyti raktus".

apps/web/src/features/i18n/locales/lt-LT.json-1322-1325 (1)

1322-1325: ⚠️ Potential issue | 🟡 Minor

Untranslated wallet setup strings.

Both setup-external values are in English.

apps/web/src/features/i18n/locales/lt-LT.json-3131-3218 (1)

3131-3218: ⚠️ Potential issue | 🟡 Minor

Entire add-keys block is untranslated (~90 strings).

This large key-management workflow section — including stepper labels, security warnings, error messages, and import flow — is entirely in English. Given that several of these are security-critical messages (e.g., seed phrase warnings on Lines 3151–3154, import warnings on Line 3185), prioritize translating at least the warning and error strings.

apps/web/src/features/i18n/locales/lt-LT.json-2163-2166 (1)

2163-2166: ⚠️ Potential issue | 🟡 Minor

Untranslated DM warning strings.

These chat safety messages (Lines 2164–2166) are user-facing and important for security awareness. They should be translated to Lithuanian.

apps/web/src/features/i18n/locales/lt-LT.json-3065-3065 (1)

3065-3065: ⚠️ Potential issue | 🟡 Minor

Untranslated — use existing Lithuanian translation.

Line 1237 already has "convert": "Konvertuoti". Use the same here for consistency.

- "convert": "Convert",+ "convert": "Konvertuoti",
apps/web/src/features/i18n/locales/it-IT.json-1084-1086 (1)

1084-1086: ⚠️ Potential issue | 🟡 Minor

Translation inconsistency for the "followers-only" DM privacy concept.

The same feature is translated with contradictory semantics across three sections:

LocationKeyItalian textMeaning
Line 1200settings.dm-privacy.followers-only"Solo le persone che seguo"Only people I follow
Line 1085profile.dm-followers-only"DM: solo follower"DM: followers only
Line 2191chat.dm-followers-only"Accetta solo DM da persone che seguono"Accepts DM from people who follow (whom?)

"People I follow" and "my followers" are opposite directions of the follow relationship. Pick one meaning and align all three strings. Additionally, line 2191 is grammatically incomplete – "persone che seguono" should specify the object (e.g., "persone che ti seguono" or "persone che lo/la seguono").

Also applies to: 1194-1205, 2163-2192

apps/web/src/features/i18n/locales/it-IT.json-3201-3201 (1)

3201-3201: ⚠️ Potential issue | 🟡 Minor

"Tasti Alveari" should be "Chiavi Hive" for terminology consistency.

Throughout the entire file, cryptographic keys are consistently translated as "chiavi" (e.g., line 3119 "Aggiungi/Gestisci chiavi", line 3195 "Importa Chiavi Hive", line 3202 "Importa Chiavi Hive"). "Tasti" in Italian refers to keyboard keys or buttons, not cryptographic keys. Additionally, "Hive" is treated as a proper noun elsewhere and left untranslated, but here it's translated literally to "Alveari" (beehives).

Proposed fix
- "skip-hive-keys": "Salta Tasti Alveari",+ "skip-hive-keys": "Salta Chiavi Hive",
- "step-hive-keys-title": "Tasti alveari",+ "step-hive-keys-title": "Chiavi Hive",

Also applies to: 3210-3210

🧹 Nitpick comments (9)
apps/web/src/features/i18n/locales/sr-CS.json (5)

74-74: Untranslated string in Serbian locale.

"Validating..." is English. Consider providing a Serbian translation (e.g., "Validacija..." or "Proveravanje..."), consistent with the effort to localize other strings in this file.


868-870: New deleted-content keys are untranslated.

All three keys (deleted-content, deleted-no-history, untitled) are in English. Serbian translations would be expected for this locale (e.g., "Ova objava je obrisana od strane {{author}}", etc.).


1084-1086: New DM privacy profile labels are untranslated.

dm-followers-only and dm-disabled are user-facing labels that would benefit from Serbian translations.


1194-1205: New DM privacy settings block – untranslated.

The entire settings.dm-privacy block (title, description, options, and status messages) is in English. These are user-facing settings strings that should eventually be localized for Serbian users.


3130-3218: Large untranslated add-keys flow – structurally sound.

The multi-step key management scaffold (stepper, step1step4, import) is well-organized with proper error messages and interpolation variables ({{count}}). All ~90 strings are in English. Given the security-sensitive nature of key management (seed phrases, revocation warnings), translating at least the critical warning strings (step2.warning-title, import.warning) should be prioritized for Serbian users.

apps/web/src/features/i18n/locales/ja-JP.json (1)

3131-3218: Large add-keys section with stepper, steps, and import flow — translations look solid overall.

The multi-step key management workflow and seed import flow translations are comprehensive and contextually correct. A few minor observations:

  • Line 3167: "BIP44の種" — consider using the more commonly seen technical transliteration "BIP44シード" for consistency with standard crypto terminology in Japanese, though "種" is a valid literal translation.
  • The error messages, warnings, and step descriptions are all clear and well-structured.

No blocking issues found in this section.

apps/web/src/features/i18n/locales/ac-ace.json (1)

3130-3218: Large add-keys workflow scaffold looks structurally sound.

The multi-step stepper, error messages, and import sub-flow are well-organized with clear key naming. Two minor observations:

  1. Lines 3160 and 3175 use "key(s)" instead of proper i18n pluralization (e.g., _plural suffix seen at line 469). This works but won't produce natural text in languages with complex plural rules once translated.
  2. All strings are English-only (covered by the prior translation comment).
apps/web/src/features/i18n/locales/nl-NL.json (1)

3130-3218: Large add-keys workflow block — mostly good, minor inconsistencies.

The multi-step key management translations are comprehensive. A couple of minor observations:

  1. Line 3166: "derivation-bip44": "BIP44 Zaad" — While "Zaad" is a literal translation of "Seed", in crypto/technical contexts "Seed" is universally understood. Other strings in this file already use "seed" (e.g., Line 3187: "herstelzin" for seed phrase). Consider using "BIP44 Seed" for consistency with technical terminology.

  2. Line 3193: "error-no-wallets": "Geen wallet adressen gevonden. Wacht tot de portemonnee is aangemaakt." — Mixes English "wallet" with Dutch "portemonnee" in the same string. Consider using one consistently.

These are minor l10n nits and not blockers.

apps/web/src/features/i18n/locales/uk-UA.json (1)

3169-3174: Minor wording issues in step4 strings.

  • Line 3173: "Нові фрази-ключ BIP44" — the compound "фрази-ключ" is unnatural. Consider "Нові ключі BIP44 (власник, активний, постинг, мемо)" to match the parenthetical that follows.
  • Line 3184: "необов'язкової \"Hive\" ключі" — feminine genitive adjective doesn't agree with the plural noun. Should be "необов'язкові ключі Hive".

"cancel": "Отмена",
"check-faq": "Узнайте больше о RC в нашем",
"learn-more": "https://docs.ecency.com/hive/resource-credits/",
"learn-more": "/faq#что-are-rc",

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

Broken FAQ anchor: mixed Russian/English in URL fragment.

The value /faq#что-are-rc contains a partially translated anchor. FAQ section anchors in this codebase are English-only (e.g., #how-to-join on Line 300, #how-exchange-work on Line 715, #how-dhf-work on Line 976). The corresponding FAQ entry key on Line 2311 is what-are-rc-header, confirming the anchor should be #what-are-rc. This link will not resolve as-is.

🐛 Proposed fix
- "learn-more": "/faq#что-are-rc",+ "learn-more": "/faq#what-are-rc",
📝 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
"learn-more": "/faq#что-are-rc",
"learn-more": "/faq#what-are-rc",
🤖 Prompt for AI Agents
In `@apps/web/src/features/i18n/locales/ru-RU.json` at line 1140, The "learn-more"
translation entry currently uses a mixed-language anchor `/faq#что-are-rc`;
update the value for the "learn-more" key in the ru-RU locale to use the
English-only FAQ fragment by changing the URL fragment to `#what-are-rc` so the
link points to the existing `what-are-rc-header` FAQ section (i.e., set the
string to `/faq#what-are-rc`).

"adding": "Додавання",
"new-bip44-keys": "Нові фрази-ключ BIP44 (власник, активний, постинг, мемо)",
"revoking": "Відкликання",
"revoking-count": "{{count}} existing key(s)",

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

Untranslated English string.

"revoking-count": "{{count}} existing key(s)" is left entirely in English. All other strings in this file are Ukrainian.

Suggested fix
- "revoking-count": "{{count}} existing key(s)",+ "revoking-count": "{{count}} існуючих ключів",
📝 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
"revoking-count": "{{count}} existing key(s)",
"revoking-count": "{{count}} існуючих ключів",
🤖 Prompt for AI Agents
In `@apps/web/src/features/i18n/locales/uk-UA.json` at line 3175, The key
"revoking-count" is still in English—replace the value with a Ukrainian
translation while preserving the interpolation token {{count}}; e.g. change to a
Ukrainian phrase such as "Існуючих ключів: {{count}}". If the app supports
pluralization, implement Ukrainian plural forms for "revoking-count" (1 =>
"{{count}} існуючий ключ", 2–4 => "{{count}} існуючі ключі", 5+ => "{{count}}
існуючих ключів") to ensure correct grammar.

@feruzm
feruzm merged commit 702f2b6 into developFeb 6, 2026
1 check passed
@feruzm
feruzm deleted the l10n_develop branch February 6, 2026 20:54
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 6, 2026
Sign up for freeto 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

@feruzm