Skip to content

Conversation

@Declan1704
Copy link

What does this PR do?

Fixes a production bug where session alert emails (emails.sessionAlert.*) were missing in most locale files, causing users in non-English languages to receive broken email templates with unresolved placeholders.

This PR adds the full set of emails.sessionAlert translation keys to all locale files, using the English strings as a safe fallback where translations were missing, ensuring session alert emails render correctly for every supported language.

Fixes #8659.

Test Plan

  1. Verified that emails.sessionAlert.* keys exist in en.json and were missing from most locale files.
  2. Added the missing keys to all locale JSON files.
  3. Confirmed all locale files now contain:
    • emails.sessionAlert.subject
    • emails.sessionAlert.preview
    • emails.sessionAlert.hello
    • emails.sessionAlert.body
    • emails.sessionAlert.listDevice
    • emails.sessionAlert.listIpAddress
    • emails.sessionAlert.listCountry
    • emails.sessionAlert.footer
    • emails.sessionAlert.thanks
    • emails.sessionAlert.signature
  4. Verified no locale files are missing these keys using:
    grep -L "emails.sessionAlert.subject" *.json
    grep -L "emails.sessionAlert.preview" *.json
    

Related PRs and Issues

Checklist

  • Have you read the Contributing Guidelines on issues?
  • If the PR includes a change to an API's metadata (desc, label, params, etc.), does it also include updated API specs and example docs?

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 9, 2026

📝 Walkthrough

Walkthrough

Adds missing session alert email translation keys (emails.sessionAlert.*) to many locale JSON files. Each updated locale now includes ten keys: subject, preview, hello, body, listDevice, listIpAddress, listCountry, footer, thanks, and signature. Several files also show formatting/indentation changes or broader translation value replacements. No executable code, function signatures, or public API declarations were modified.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main objective: adding missing session alert translations across all locales to fix a production bug.
Description check ✅ Passed The description clearly explains the bug fix, provides context about the missing session alert translation keys, details test verification steps, and links to the related issue #8659.
Linked Issues check ✅ Passed The PR successfully addresses issue #8659 by adding the missing emails.sessionAlert.* translation keys to all locale files, ensuring session alert emails render correctly for all supported languages.
Out of Scope Changes check ✅ Passed The PR focuses on adding session alert translation keys to locale files, which is directly scoped to the issue. A minor unrelated change exists: a French string replacement in sn.json for magicSession, which appears to be a fallback fix.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cd8b211 and aa43800.

📒 Files selected for processing (1)
  • app/config/locale/translations/sn.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/config/locale/translations/sn.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: scan

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.

@github-actions
Copy link

github-actions bot commented Jan 9, 2026

Security Scan Results for PR

Docker Image Scan Results

Package Version Vulnerability Severity
libpng 1.6.51-r0 CVE-2025-66293 HIGH
libpng-dev 1.6.51-r0 CVE-2025-66293 HIGH

Source Code Scan Results

🎉 No vulnerabilities found!

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 29

Note

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

🤖 Fix all issues with AI agents
In @app/config/locale/translations/as.json:
- Around line 254-266: The JSON in as.json is invalid: add a comma after the
"sms.verification.body" entry so it reads "sms.verification.body": "{{secret}}",
and remove the trailing comma after the final key
"emails.sessionAlert.signature": "{{project}} team" so the object ends with no
extra comma before the closing brace; verify the file parses as valid JSON
afterwards.

In @app/config/locale/translations/az.json:
- Around line 248-259: The JSON is invalid because the
"emails.otpSession.signature" entry lacks a trailing comma before the subsequent
"emails.sessionAlert.*" block; add a comma after the
"emails.otpSession.signature": "{{project}} komandası" line to restore valid
JSON syntax, then run a JSON linter/validator to confirm the
"emails.sessionAlert.*" entries parse correctly.

In @app/config/locale/translations/be.json:
- Around line 254-255: The Belarusian locale JSON is invalid because the entry
for "sms.verification.body" is missing a trailing comma, causing a parse error;
add the missing comma after the "sms.verification.body" value so the
"emails.sessionAlert.subject" entry is a separate property, ensuring the file is
valid JSON (fix the entries for "sms.verification.body" and
"emails.sessionAlert.subject").

In @app/config/locale/translations/bh.json:
- Around line 254-255: The JSON has a syntax error: add a trailing comma after
the "sms.verification.body" entry so the object remains valid before the next
key "emails.sessionAlert.subject"; locate the entries for
"sms.verification.body" and "emails.sessionAlert.subject" and insert the missing
comma after the value for "sms.verification.body".

In @app/config/locale/translations/bn.json:
- Around line 258-260: The JSON file contains a trailing comma after the last
key-value pair ("emails.sessionAlert.signature": "{{project}} team") which makes
the file invalid; open the bn.json translation file and remove the dangling
comma immediately following the "emails.sessionAlert.signature" entry so the
JSON ends with a valid final key:value pair and the file parses correctly.
- Around line 248-249: The JSON file has a syntax error: add a trailing comma
after the "emails.otpSession.signature" value to separate it from the next key;
specifically, update the object containing "emails.otpSession.signature" and
"emails.sessionAlert.subject" so there is a comma after the closing quote of
"{{project}} দল".

In @app/config/locale/translations/bs.json:
- Around line 245-246: The JSON in app/config/locale/translations/bs.json has a
syntax error: the entry for "emails.otpSession.signature" is missing a trailing
comma before the next key "emails.sessionAlert.subject"; open the file, add the
missing comma after the "emails.otpSession.signature" value, then validate the
JSON (e.g., with a linter or json.parse) to ensure parsing succeeds.

In @app/config/locale/translations/ca.json:
- Around line 248-260: Add the missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma after the
final "emails.sessionAlert.signature" key so the JSON is valid; locate these
keys in the ca.json block (look for "emails.otpSession.signature" and
"emails.sessionAlert.signature") and insert the comma after the former and
delete the comma before the closing brace.

In @app/config/locale/translations/cs.json:
- Around line 245-246: The JSON has a syntax error: the key
"emails.otpSession.signature" is missing a trailing comma before the next key
"emails.sessionAlert.subject"; fix by adding a comma after the value for
"emails.otpSession.signature" so the object remains valid JSON.

In @app/config/locale/translations/da.json:
- Around line 248-259: The JSON file has a syntax error: add a missing comma
after the "emails.otpSession.signature" entry so the subsequent keys
("emails.sessionAlert.subject", "emails.sessionAlert.preview", etc.) form a
valid object; locate "emails.otpSession.signature": "{{project}} team" and
append a trailing comma to fix parsing of the emails.sessionAlert.* block.

In @app/config/locale/translations/de.json:
- Around line 249-250: The JSON is invalid because the "mock" entry is missing a
trailing comma before the next key; add a comma after the "mock" value so the
"emails.sessionAlert.subject" key is a separate property (verify the change in
the entries for "mock" and "emails.sessionAlert.subject" to ensure no other
syntax errors and that the file parses as valid JSON).

In @app/config/locale/translations/eo.json:
- Line 248: The JSON file has a syntax error at the key
"emails.otpSession.signature": add a trailing comma after the entry for
"emails.otpSession.signature": "teamo de {{project}}" so the surrounding object
remains valid (ensure the comma is added only if there are subsequent entries in
the same object and preserve surrounding whitespace/formatting).

In @app/config/locale/translations/es.json:
- Around line 248-249: The JSON is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the next
key; add a comma after the value for "emails.otpSession.signature" so the
subsequent "emails.sessionAlert.subject" entry is a valid separate property,
ensuring proper JSON quoting/commas for these keys
("emails.otpSession.signature" and "emails.sessionAlert.subject") to fix parsing
errors.

In @app/config/locale/translations/fa.json:
- Around line 248-259: The JSON is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the
"emails.sessionAlert.*" block; add a comma after the
"emails.otpSession.signature" line so the following keys
("emails.sessionAlert.subject", "emails.sessionAlert.preview", etc.) form valid
JSON properties, then validate the file to ensure no other missing/extra commas
remain.

In @app/config/locale/translations/fi.json:
- Around line 245-246: The Finnish locale JSON is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the next
key; add a comma after the value for "emails.otpSession.signature" so the
"emails.sessionAlert.subject" key is properly separated and the JSON parses
correctly, ensuring both keys ("emails.otpSession.signature" and
"emails.sessionAlert.subject") remain unchanged otherwise.

In @app/config/locale/translations/fo.json:
- Around line 245-246: Add the missing trailing comma after the
"emails.otpSession.signature" entry so the JSON is valid; specifically, update
the locale entry for "emails.otpSession.signature" to end with a comma before
the next key "emails.sessionAlert.subject", then validate the fo.json with a
JSON linter to ensure no other syntax errors.

In @app/config/locale/translations/fr.json:
- Around line 248-249: The JSON is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the next
key; add a comma after the value for "emails.otpSession.signature" so the object
contains "emails.otpSession.signature": "équipe {{project}}", followed by
"emails.sessionAlert.subject": "Security alert: new session on your {{project}}
account".

In @app/config/locale/translations/ga.json:
- Around line 248-260: The JSON is invalid: add a missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma after the
final "emails.sessionAlert.signature" entry so the object is properly
comma-separated and the closing brace is valid; update the lines containing the
keys "emails.otpSession.signature" and "emails.sessionAlert.signature"
accordingly.

In @app/config/locale/translations/gu.json:
- Around line 248-259: The JSON is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the
"emails.sessionAlert.*" block; add a comma after the
"emails.otpSession.signature": "{{project}} ટીમ" line so the subsequent keys
(e.g., "emails.sessionAlert.subject", "emails.sessionAlert.preview",
"emails.sessionAlert.hello", etc.) parse correctly.

In @app/config/locale/translations/he.json:
- Around line 248-249: The JSON in the translations file is invalid because the
key "emails.otpSession.signature" is missing a trailing comma before
"emails.sessionAlert.subject"; add the missing comma after
"emails.otpSession.signature" so the object entries are properly separated and
the file parses as valid JSON.

In @app/config/locale/translations/hi.json:
- Around line 248-249: The JSON file has a missing comma between two entries;
add a comma after the "emails.otpSession.signature" value so the key
"emails.sessionAlert.subject" is a valid next property; specifically locate the
entries for "emails.otpSession.signature" and "emails.sessionAlert.subject" and
insert the trailing comma after the signature value to fix the syntax error.

In @app/config/locale/translations/hr.json:
- Around line 248-260: Add the missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma after the
"emails.sessionAlert.signature" entry so the JSON is valid; specifically, update
the entries for "emails.otpSession.signature" and
"emails.sessionAlert.signature" (and ensure the comma separating
"emails.otpSession.signature" and "emails.sessionAlert.subject" exists) to
eliminate the parse error and close the object without a trailing comma.

In @app/config/locale/translations/hu.json:
- Around line 248-249: The JSON for the Hungarian locale is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the next
key; update the object by adding a comma after the "emails.otpSession.signature"
value so "emails.sessionAlert.subject" is a separate property, then re-validate
the file (e.g., JSON linter or unit tests) to ensure there are no other syntax
errors.

In @app/config/locale/translations/hy.json:
- Around line 245-246: There is a JSON syntax error: add a trailing comma after
the "emails.otpSession.signature" entry so the next key
"emails.sessionAlert.subject" is valid; locate the "emails.otpSession.signature"
entry in the hy.json translations and append the missing comma to fix parsing.

In @app/config/locale/translations/id.json:
- Around line 248-249: The JSON is invalid because the entry
"emails.otpSession.signature" is missing a trailing comma before the next key;
add a comma after the value for "emails.otpSession.signature" so the
"emails.sessionAlert.subject" key parses correctly, updating the lines
referencing "emails.otpSession.signature" and "emails.sessionAlert.subject".

In @app/config/locale/translations/is.json:
- Around line 245-246: The JSON for the Icelandic locale has a missing comma
after the "emails.otpSession.signature" entry which breaks parsing; add a
trailing comma to the "emails.otpSession.signature" line so the subsequent
"emails.sessionAlert.subject" key is valid JSON and the Icelandic locale can be
loaded.

In @app/config/locale/translations/jv.json:
- Around line 249-258: The Javanese locale file contains English text for the
session alert keys (emails.sessionAlert.subject, .preview, .hello, .body,
.listDevice, .listIpAddress, .listCountry, .footer, .thanks, .signature);
replace these English placeholders with proper Javanese translations provided by
the localization team (or add a clear TODO/note linking to the localization
ticket if translations are unavailable), ensuring interpolation tokens
({{project}}, {{user}}, {{date}}, {{year}}, {{time}}, {{device}}, {{ipAddress}},
{{country}} and bold markup {{b}}{{/b}}) remain intact and positioned correctly
for each key.

In @app/config/locale/translations/or.json:
- Around line 2-248: The magicSession and sessionAlert keys contain
wrong-language text; locate the keys emails.magicSession.optionButton,
emails.magicSession.buttonText, emails.magicSession.clientInfo,
emails.magicSession.securityPhrase, emails.magicSession.optionUrl and all
emails.sessionAlert.* entries in or.json and replace each value with proper Odia
translations (preserving placeholders like {{project}}, {{agentClient}},
{{agentDevice}}, {{agentOs}}, {{phrase}} and formatting), or remove the keys if
you cannot provide translations yet so the file remains consistent with the Odia
locale.

In @app/config/locale/translations/sa.json:
- Around line 236-241: The Sanskrit locale file contains Arabic strings for the
magic-session email keys; replace the Arabic text for keys
emails.magicSession.optionButton, emails.magicSession.buttonText,
emails.magicSession.clientInfo, emails.magicSession.securityPhrase, and
emails.magicSession.optionUrl with proper Sanskrit translations in Devanagari
script consistent with the rest of the sa.json file (don't change
sms.verification.body unless it also needs Sanskrit), ensure interpolation
placeholders (e.g., {{project}}, {{agentClient}}, {{agentDevice}}, {{agentOs}},
{{phrase}}) remain intact, and run the locale/translation lint/tests to confirm
script consistency.
🟠 Major comments (7)
app/config/locale/translations/sn.json-236-241 (1)

236-241: Translate French text to Shona in magicSession email keys.

Lines 236–241 contain French text for emails.magicSession.optionButton, .buttonText, .clientInfo, .securityPhrase, and .optionUrl in the Shona (sn) locale file. Other magicSession keys (subject, hello, thanks, signature) and the otpSession section are properly translated to Shona, confirming that this French content is incomplete work rather than intentional fallback.

The sessionAlert keys (starting line 249) are also untranslated (English). The entire file needs complete Shona translation for all three email sections before this change is ready for deployment.

app/config/locale/translations/ar.json-31-40 (1)

31-40: Update ar.json sessionAlert keys to match the standardized template used across all other locales.

The emails.sessionAlert.* keys in ar.json differ significantly from the standard template used in en.json, id.json, es.json, nb.json, and other locales:

  1. Subject line: Uses "{{project}} Session Alert" instead of "Security alert: new session on your {{project}} account"
  2. Missing user placeholder: hello key is "Hello," instead of "Hello {{user}},"
  3. Simplified body: Missing {{b}} formatting tags and detailed date/time information ("on {{date}}, {{year}} at {{time}} UTC")
  4. List items: Missing {{b}} tags around device, IP address, and country values
  5. Footer text: Uses "If you did not initiate this session..." instead of "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account."

This will cause session alert emails to render with inconsistent content and formatting for Arabic users.

app/config/locale/translations/ro.json-2-258 (1)

2-258: Fix multiple translation errors and ensure consistency across email signatures

This file contains multiple errors beyond adding emails.sessionAlert.* entries:

Confirmed typos:

  • "countries.es": "Spaina" should be "Spania" (Spain)
  • "countries.ci": "Ivory" should be translated to Romanian, not left in English (should be "Coasta de Fildeş")
  • "countries.me": "Muntenegro" should be "Muntenegru" (Montenegro)

Missing diacritics:

  • "emails.invitation.subject": "Invitatie catre {{team}}" should use proper Romanian diacritics: "Invitație către {{team}}"

Inconsistent email signatures:

  • "emails.otpSession.signature": "echipa {{project}}" (lowercase) conflicts with other Romanian signatures like "Echipa {{project}}" (capitalized)
  • "emails.sessionAlert.signature": "{{project}} team" is in English; should be "Echipa {{project}}" to match the Romanian convention used elsewhere

Scope concern:
The file contains numerous incomplete or English-only country translations (e.g., "Cameroon", "Ethiopia", "Djibouti") that appear inconsistent with the partially-translated entries. Verify intent: is this a complete translation effort or selective localization?

app/config/locale/translations/sq.json-246-255 (1)

246-255: English fallback in Albanian locale may impact user experience.

The session alert translations are in English rather than Albanian. This is particularly noticeable since this locale file appears to have incomplete translations throughout (e.g., many empty values in lines 6-27), suggesting it may need broader localization attention.

This locale file would benefit from a comprehensive translation review. Would you like me to help identify all untranslated or empty keys in this file so they can be properly localized?

app/config/locale/translations/eo.json-249-258 (1)

249-258: Esperanto translations missing for session alert emails.

Lines 249-258 contain English text instead of Esperanto translations. The rest of the file (lines 5-29 and beyond) demonstrates complete Esperanto translations, making these untranslated security alert notifications inconsistent with the locale's coverage. These session alerts are critical security communications that users should receive in their language.

app/config/locale/translations/nn.json-255-264 (1)

255-264: Translate sessionAlert emails to Norwegian Nynorsk.

The session alert strings (lines 255-264) are in English while the rest of this translation file contains high-quality Norwegian Nynorsk translations for similar email templates. This creates an inconsistent experience for Norwegian-speaking users receiving security alerts.

app/config/locale/translations/af.json-249-258 (1)

249-258: Inconsistent session alert template in af.json — missing content and key order mismatch.

The emails.sessionAlert entries in af.json use a different template from all other 100+ locale files. Key differences:

  • Subject: "{{project}} Session Alert" instead of "Security alert: new session on your {{project}} account"
  • Greeting: "Hello," instead of "Hello {{user}}," (missing user variable)
  • Body: Simplified version without formatting tags or detailed session information
  • List items: Missing {{b}}...{{/b}} formatting tags
  • Footer: Different messaging ("If you did not initiate..." vs. "If this was you, there's nothing more you need to do...")
  • Key order: preview appears at the end instead of after subject

This template mismatch will create inconsistent messaging across locales and complicate future translation efforts. Align af.json with the standard template used in other locale files.

🟡 Minor comments (1)
app/config/locale/translations/jv.json-248-248 (1)

248-248: Inconsistent capitalization in email signature.

The emails.otpSession.signature uses lowercase "tim {{project}}" while all other email signatures in this file use capitalized "Tim {{project}}" (verification, magicSession, recovery, invitation, and sender). Update to "Tim {{project}}" for consistency.

🧹 Nitpick comments (21)
app/config/locale/translations/sl.json (1)

246-255: Session alert translations successfully added.

All 10 required emails.sessionAlert.* keys are present, correctly resolving the production bug where these keys were missing. Using English as a fallback is acceptable per the PR objectives.

Note: The AI summary states "No functional changes. The diff consists of formatting/whitespace adjustments only," but lines 246-255 clearly introduce new sessionAlert translation keys, which is a functional addition.

Optional enhancement: Consider translating these English strings to Slovenian in a follow-up to improve the user experience for Slovenian-speaking users.

app/config/locale/translations/ru.json (1)

249-258: Session alert keys successfully added.

All required emails.sessionAlert.* keys are present. English fallback is acceptable as an interim solution.

Note: The AI summary states no functional changes, but lines 249-258 introduce new sessionAlert keys.

Optional enhancement: Consider translating to Russian in a follow-up, as Russian has an active user base and localized security alerts would improve trust and comprehension.

app/config/locale/translations/pl.json (1)

249-258: Session alert translations added successfully.

All 10 required emails.sessionAlert.* keys are present, fixing the production bug.

Note: The AI summary states "No functional changes," but lines 249-258 introduce new sessionAlert keys.

Optional: Consider translating these strings to Polish in a follow-up to enhance UX for Polish-speaking users.

app/config/locale/translations/si.json (1)

2-248: Consider avoiding formatting-only changes in locale files.

The extensive formatting changes throughout this file increase the diff size without functional benefit. For future PRs focused on content additions (like the session alert keys), consider keeping existing formatting unchanged to maintain a cleaner, more focused diff.

app/config/locale/translations/te.json (1)

2-248: Consider avoiding formatting-only changes in locale files.

Similar to si.json, the extensive formatting changes throughout this file increase the diff size without functional benefit. For future PRs, keeping existing formatting unchanged would result in a cleaner, more focused diff.

app/config/locale/translations/pt-pt.json (1)

2-248: Consider avoiding formatting-only changes in locale files.

Similar to si.json and te.json, the extensive formatting changes throughout this file increase the diff size without functional benefit. For future PRs, keeping existing formatting unchanged would result in a cleaner, more focused diff.

app/config/locale/translations/bg.json (1)

246-256: Session alert keys successfully added with English fallbacks.

The addition of the emails.sessionAlert.* keys fixes the production bug where session alert emails rendered with unresolved placeholders. Using English text as fallbacks is acceptable for the immediate fix.

For improved user experience, consider adding Bulgarian translations for these keys in a follow-up:

  • Line 246: "Security alert: new session on your {{project}} account" → Bulgarian translation
  • Line 247: "New login detected..." → Bulgarian translation
  • Lines 248-255: Translate remaining keys to Bulgarian

Note: Line 256 has a trailing comma before the closing brace, which should be removed if strict JSON compliance is required.

♻️ Example fix for trailing comma
-    "emails.sessionAlert.signature": "{{project}} team",
+    "emails.sessionAlert.signature": "{{project}} team"
app/config/locale/translations/nl.json (1)

249-258: AI summary inconsistency: New keys were added, not just formatting changes.

The AI summary states "only whitespace/indentation formatting adjusted; all keys and values remain identical," but this file actually adds 10 new emails.sessionAlert.* translation keys (lines 249-258). These additions fix the production bug where session alert emails rendered with unresolved placeholders.

The English fallback text is acceptable for the immediate fix. For improved user experience, consider adding Dutch translations in a follow-up:

  • "Security alert: new session..." → "Beveiligingswaarschuwing: nieuwe sessie..."
  • "New login detected..." → "Nieuwe login gedetecteerd..."
  • And remaining keys
app/config/locale/translations/it.json (1)

249-258: AI summary inconsistency: New keys were added, not just formatting changes.

The AI summary states "only formatting/indentation adjustments applied" with "no keys added or removed," but this file actually adds 10 new emails.sessionAlert.* translation keys (lines 249-258). These additions fix the production bug for session alert emails.

The English fallback text is acceptable for the immediate fix. For improved user experience, consider adding Italian translations in a follow-up:

  • "Security alert: new session..." → "Avviso di sicurezza: nuova sessione..."
  • "New login detected..." → "Nuovo accesso rilevato..."
  • And remaining keys
app/config/locale/translations/lb.json (1)

248-257: Session alert keys successfully added with English fallbacks.

The addition of the emails.sessionAlert.* keys fixes the production bug where session alert emails rendered with unresolved placeholders. Using English text as fallbacks is acceptable for the immediate fix.

For improved user experience, consider adding Luxembourgish translations for these keys in a follow-up. The file already has good Luxembourgish translations for other email templates (e.g., lines 6-30), so extending this to session alerts would maintain consistency.

app/config/locale/translations/km.json (1)

246-255: Session alert keys successfully added with English fallbacks.

The addition of the emails.sessionAlert.* keys fixes the production bug where session alert emails rendered with unresolved placeholders. Using English text as fallbacks is acceptable for the immediate fix.

For improved user experience, consider adding Khmer translations for these keys in a follow-up. The file already has comprehensive Khmer translations for other email templates (e.g., lines 233-245), so extending this to session alerts would provide a consistent localized experience for Khmer-speaking users.

app/config/locale/translations/nb.json (1)

249-258: Verify the sessionAlert translations are intentionally in English for Norwegian locale.

The English fallback text for emails.sessionAlert.* keys is consistent with the PR objective, which states fallback English strings are used where translations are absent. However, for better user experience, consider providing Norwegian translations for these keys in a follow-up.

app/config/locale/translations/id.json (1)

249-258: Verify the sessionAlert translations are intentionally in English for Indonesian locale.

The English fallback text for emails.sessionAlert.* keys is consistent with the PR objective. For better user experience, consider providing Indonesian translations for these keys in a follow-up.

app/config/locale/translations/sd.json (1)

255-264: Verify the sessionAlert translations are intentionally in English for Sindhi locale.

The English fallback text for emails.sessionAlert.* keys is consistent with the PR objective. For better user experience, consider providing Sindhi translations for these keys in a follow-up.

app/config/locale/translations/es.json (1)

249-258: Verify the sessionAlert translations are intentionally in English for Spanish locale.

The English fallback text for emails.sessionAlert.* keys is consistent with the PR objective. For better user experience, consider providing Spanish translations for these keys in a follow-up.

app/config/locale/translations/cs.json (1)

246-255: Verify English-only session alert translations are intentional.

The session alert translations added for Czech locale use English text rather than Czech translations. While the PR summary mentions "using English strings as fallbacks," this seems inconsistent with the objective of fixing issue #8659, which reports that non-English locales render unresolved placeholders. Using English text may not fully resolve the user experience issue for Czech-speaking users expecting localized emails.

Should these translations be in Czech, or is English fallback text the intended interim solution? If localization is needed, I can help generate Czech translations for these keys.

app/config/locale/translations/hy.json (1)

246-255: Verify English-only session alert translations are intentional.

The session alert keys use English text instead of Armenian translations. This may not fully address the localization issue for Armenian-speaking users. Should these be translated to Armenian, or is the English fallback the intended approach?

app/config/locale/translations/ms.json (1)

249-258: Verify English-only session alert translations are intentional.

The session alert translations for Malay locale use English text instead of Malay translations. This may not provide the intended user experience for Malay-speaking users. Should these be localized to Malay?

app/config/locale/translations/bh.json (1)

255-264: Verify English-only session alert translations are intentional.

The session alert translations use English text rather than Bhojpuri. This may not provide adequate localization for Bhojpuri-speaking users. Should these keys be translated?

app/config/locale/translations/sv.json (1)

249-258: Verify English-only session alert translations are intentional.

The session alert translations for Swedish locale use English text instead of Swedish translations. Swedish-speaking users may expect localized email content. Should these be translated to Swedish?

app/config/locale/translations/pa.json (1)

2-245: Indentation reformatting applied to entire file.

The file has been reformatted from 4-space to 2-space indentation. While this improves consistency with other locale files, it makes the diff harder to review as every line appears changed.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f019120 and d1b389c.

📒 Files selected for processing (72)
  • app/config/locale/translations/af.json
  • app/config/locale/translations/ar-ma.json
  • app/config/locale/translations/ar.json
  • app/config/locale/translations/as.json
  • app/config/locale/translations/az.json
  • app/config/locale/translations/be.json
  • app/config/locale/translations/bg.json
  • app/config/locale/translations/bh.json
  • app/config/locale/translations/bn.json
  • app/config/locale/translations/bs.json
  • app/config/locale/translations/ca.json
  • app/config/locale/translations/cs.json
  • app/config/locale/translations/da.json
  • app/config/locale/translations/de.json
  • app/config/locale/translations/el.json
  • app/config/locale/translations/eo.json
  • app/config/locale/translations/es.json
  • app/config/locale/translations/fa.json
  • app/config/locale/translations/fi.json
  • app/config/locale/translations/fo.json
  • app/config/locale/translations/fr.json
  • app/config/locale/translations/ga.json
  • app/config/locale/translations/gu.json
  • app/config/locale/translations/he.json
  • app/config/locale/translations/hi.json
  • app/config/locale/translations/hr.json
  • app/config/locale/translations/hu.json
  • app/config/locale/translations/hy.json
  • app/config/locale/translations/id.json
  • app/config/locale/translations/is.json
  • app/config/locale/translations/it.json
  • app/config/locale/translations/ja.json
  • app/config/locale/translations/jv.json
  • app/config/locale/translations/km.json
  • app/config/locale/translations/kn.json
  • app/config/locale/translations/ko.json
  • app/config/locale/translations/la.json
  • app/config/locale/translations/lb.json
  • app/config/locale/translations/lt.json
  • app/config/locale/translations/lv.json
  • app/config/locale/translations/ml.json
  • app/config/locale/translations/mr.json
  • app/config/locale/translations/ms.json
  • app/config/locale/translations/nb.json
  • app/config/locale/translations/ne.json
  • app/config/locale/translations/nl.json
  • app/config/locale/translations/nn.json
  • app/config/locale/translations/or.json
  • app/config/locale/translations/pa.json
  • app/config/locale/translations/pl.json
  • app/config/locale/translations/pt-br.json
  • app/config/locale/translations/pt-pt.json
  • app/config/locale/translations/ro.json
  • app/config/locale/translations/ru.json
  • app/config/locale/translations/sa.json
  • app/config/locale/translations/sd.json
  • app/config/locale/translations/si.json
  • app/config/locale/translations/sk.json
  • app/config/locale/translations/sl.json
  • app/config/locale/translations/sn.json
  • app/config/locale/translations/sq.json
  • app/config/locale/translations/sv.json
  • app/config/locale/translations/ta.json
  • app/config/locale/translations/te.json
  • app/config/locale/translations/th.json
  • app/config/locale/translations/tl.json
  • app/config/locale/translations/tr.json
  • app/config/locale/translations/uk.json
  • app/config/locale/translations/ur.json
  • app/config/locale/translations/vi.json
  • app/config/locale/translations/zh-cn.json
  • app/config/locale/translations/zh-tw.json
🧰 Additional context used
🪛 Biome (2.1.2)
app/config/locale/translations/fr.json

[error] 250-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/az.json

[error] 252-253: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/ca.json

[error] 250-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/bs.json

[error] 246-246: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/fi.json

[error] 246-247: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/hu.json

[error] 252-252: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/is.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/da.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/cs.json

[error] 248-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/es.json

[error] 249-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/ga.json

[error] 252-252: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/fo.json

[error] 247-247: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/de.json

[error] 250-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/eo.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/id.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/hr.json

[error] 249-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: scan
🔇 Additional comments (37)
app/config/locale/translations/ar-ma.json (1)

37-46: Verify: Session alert keys use English text instead of Moroccan Arabic translations.

Lines 37–46 add the emails.sessionAlert keys with English content to an Arabic (Moroccan) locale file. This results in a user experience gap where Moroccan Arabic users would receive session alert emails in English rather than their native language, while other email templates in this locale are properly localized.

According to the PR summary, English fallbacks are intentional due to missing translations, but this approach doesn't fully resolve the issue #8659 objective of providing localized session alert emails to non-English users.

Please confirm that English fallbacks are the intended approach here, or if proper Moroccan Arabic translations should be sourced and added. This ensures clarity on whether the fix addresses the user-facing localization concern.

app/config/locale/translations/ja.json (1)

249-258: Verify: Session alert keys lack Japanese translations.

Lines 249–258 introduce emails.sessionAlert keys with English content into the Japanese (ja) locale file. This creates a localization inconsistency: other email templates in this file (e.g., magicSession, otpSession) are properly translated to Japanese (lines 236–248), while sessionAlert remains entirely in English.

Japanese users will now receive session alert emails in English rather than their native language, undermining the fix for issue #8659. This is inconsistent with the stated PR objective of ensuring session alert emails render correctly in all supported languages.

Clarify whether English fallbacks are the final approach, or if Japanese translations should be obtained and applied. This affects the completeness of the localization fix.

app/config/locale/translations/sn.json (1)

249-258: Verify: Session alert keys use English instead of Shona translations.

Lines 249–258 add emails.sessionAlert keys with English content to the Shona locale file. Given that lines 242–248 contain proper Shona translations for otpSession, the sessionAlert keys should ideally also be in Shona rather than English.

This compounds the localization inconsistency already present in this file (French text in lines 236–241).

After resolving the French text issue (lines 236–241), please confirm whether sessionAlert should use English fallbacks or Shona translations to maintain localization consistency.

app/config/locale/translations/la.json (1)

255-264: LGTM! Session alert translations added correctly.

All 10 required emails.sessionAlert.* keys are present with English fallback text.

Note: The AI summary claims only formatting changes, but these are newly added translation keys (lines 255-264).

app/config/locale/translations/lv.json (1)

249-258: LGTM! All session alert keys added correctly.

All 10 required emails.sessionAlert.* keys are present with English fallback.

Note: AI summary claims "no semantic or functional changes," but lines 249-258 add new translation keys.

app/config/locale/translations/si.json (1)

249-258: Session alert translations added correctly.

The English fallback strings for emails.sessionAlert.* have been added successfully, which resolves the unresolved placeholder issue for the Sinhala locale. Future localization efforts can replace these with native Sinhala translations.

app/config/locale/translations/te.json (1)

249-258: Session alert translations added correctly.

The English fallback strings for emails.sessionAlert.* have been added successfully, resolving the unresolved placeholder issue for the Telugu locale. These can be replaced with native Telugu translations in future localization efforts.

app/config/locale/translations/el.json (1)

249-259: Session alert translations added correctly with a clean diff.

The English fallback strings for emails.sessionAlert.* have been added successfully for the Greek locale. This file demonstrates the ideal approach by adding only the necessary keys without introducing formatting changes to existing content. These can be replaced with native Greek translations in future localization efforts.

app/config/locale/translations/fo.json (1)

246-256: Session alert translations added correctly (pending comma fix).

Once the missing comma on Line 245 is fixed, the English fallback strings for emails.sessionAlert.* will work correctly for the Faroese locale. These can be replaced with native Faroese translations in future localization efforts.

app/config/locale/translations/pt-pt.json (1)

249-258: Session alert translations added correctly.

The English fallback strings for emails.sessionAlert.* have been added successfully for the Portuguese (Portugal) locale, resolving the unresolved placeholder issue. These can be replaced with native Portuguese translations in future localization efforts.

app/config/locale/translations/nb.json (1)

2-258: AI summary incorrectly describes changes as "formatting only".

The AI summary states "Whitespace/formatting only. Indentation and spacing adjusted; no keys added or removed, no semantic content changes." However, lines 249-258 clearly add 10 new emails.sessionAlert.* keys. This inconsistency should be noted.

app/config/locale/translations/or.json (1)

249-258: Session alert translations added successfully.

The new emails.sessionAlert.* keys have been added correctly with English fallback text. The JSON syntax is valid.

app/config/locale/translations/hu.json (1)

250-258: Session alert keys added with English fallback text.

The new session alert translation keys use English text as placeholders, which aligns with the PR objective of adding missing keys with English fallbacks where native translations are absent.

app/config/locale/translations/de.json (1)

251-259: Session alert keys added with English fallback text.

The session alert translations use English text, which is consistent with the PR's approach of adding English fallbacks for missing translations.

app/config/locale/translations/be.json (1)

256-264: Session alert keys added with English fallback.

The new session alert entries use English text as intended by the PR scope.

app/config/locale/translations/ko.json (2)

250-258: Session alert keys added with English fallback.

The new session alert translation keys use English text as placeholders, consistent with the PR's approach.


248-249: Critical: Missing comma causes JSON parse error.

Line 248 is missing a trailing comma before the new session alert block, resulting in invalid JSON.

🐛 Proposed fix
-  "emails.otpSession.signature": "{{project}} 팀"
+  "emails.otpSession.signature": "{{project}} 팀",
   "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",

Likely an incorrect or invalid review comment.

app/config/locale/translations/sa.json (1)

249-258: and

app/config/locale/translations/ms.json (1)

2-248: Verify entire file reformatting is intentional.

The entire file appears to have been reformatted (all lines marked with ~), which suggests changes beyond just adding the session alert keys. If this is only indentation/spacing changes, it may add unnecessary noise to the PR. Please confirm this reformatting is intentional and necessary.

app/config/locale/translations/sv.json (1)

2-248: Verify entire file reformatting is intentional.

Similar to ms.json, this entire file has been reformatted (all lines marked with ~). This suggests changes beyond the session alert key additions. Please confirm whether this reformatting is intentional or if it's an artifact of the editing process.

app/config/locale/translations/he.json (1)

249-258: Session alert translations added with English fallback.

The session alert email keys have been added with English text as fallback values. Ensure this approach aligns with the localization strategy, as Hebrew-speaking users will receive English security alerts until proper translations are provided.

app/config/locale/translations/fr.json (1)

249-258: Session alert translations added with English fallback.

The session alert email keys have been added with English text as fallback values. French-speaking users will receive English security alerts until proper French translations are provided.

app/config/locale/translations/th.json (1)

248-258: LGTM! Session alert translations added correctly.

The JSON syntax is correct, and all session alert email keys have been added with English fallback values. Thai-speaking users will receive English security alerts until proper translations are provided.

app/config/locale/translations/pt-br.json (1)

248-258: LGTM! Session alert translations added correctly.

The JSON syntax is correct, and all session alert email keys have been added with English fallback values. Brazilian Portuguese-speaking users will receive English security alerts until proper translations are provided.

app/config/locale/translations/ta.json (1)

248-258: LGTM! Session alert translations added correctly.

The JSON syntax is correct, and all session alert email keys have been added with English fallback values. Tamil-speaking users will receive English security alerts until proper translations are provided.

app/config/locale/translations/pa.json (1)

246-255: Session alert translations added with English fallback.

The new emails.sessionAlert.* keys use English text as a fallback for the Punjabi locale. This resolves the production bug mentioned in issue #8659 where these keys were missing, but users will see English text instead of Punjabi translations for session alert emails.

Consider tracking the need for proper Punjabi translations in a follow-up issue to improve the user experience for Punjabi-speaking users.

app/config/locale/translations/lt.json (2)

2-248: Lithuanian translations improved.

Multiple Lithuanian translation strings have been updated throughout the file, improving the quality and accuracy of the locale.


249-258: Session alert translations added with English fallback.

The new emails.sessionAlert.* keys use English text for the Lithuanian locale. This addresses the missing translation keys issue, ensuring session alert emails will render properly instead of showing unresolved placeholders.

app/config/locale/translations/fi.json (1)

246-255: Session alert translations added with English fallback.

The new emails.sessionAlert.* keys use English text for the Finnish locale, providing a functional fallback until proper Finnish translations are available.

app/config/locale/translations/is.json (1)

246-255: Session alert translations added with English fallback.

The new emails.sessionAlert.* keys use English text for the Icelandic locale, providing a functional fallback until proper Icelandic translations are available.

app/config/locale/translations/ne.json (1)

249-258: LGTM - Session alert translations added correctly.

The emails.sessionAlert.* keys are properly added with English fallback strings, which aligns with the PR objective to ensure session alert emails render correctly for all locales.

app/config/locale/translations/mr.json (1)

249-258: LGTM - Session alert translations added correctly.

The emails.sessionAlert.* keys are properly added with correct JSON syntax and English fallback strings.

app/config/locale/translations/sk.json (1)

249-258: LGTM - Session alert translations added correctly.

The emails.sessionAlert.* keys are properly added with correct JSON syntax and English fallback strings.

app/config/locale/translations/bs.json (1)

246-255: LGTM: Session alert translations added.

The new session alert email keys have been successfully added with English fallback text, aligning with the PR objective to fix missing translation keys across all locales.

app/config/locale/translations/hi.json (1)

249-258: LGTM: Session alert translations added.

The session alert email template keys have been properly added with English fallback text, consistent with the PR's approach for locales without native translations.

app/config/locale/translations/kn.json (1)

2-258: LGTM: Session alert translations and formatting normalization.

The file successfully adds the session alert email keys with English fallback text. The extensive formatting changes throughout the file appear to be quote/indentation normalization, which improves consistency.

app/config/locale/translations/ml.json (1)

2-264: LGTM: Session alert translations and formatting normalization.

The file successfully adds the session alert email keys with English fallback text. The extensive formatting changes appear to be normalization of quotes and indentation, which is acceptable. JSON syntax is valid.

Comment on lines 254 to 266
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",

}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix invalid JSON (missing comma before new keys + trailing comma before })

sms.verification.body (Line 254) must end with a comma because emails.sessionAlert.* follows. Also remove the trailing comma on the last key before the closing brace.

Proposed fix
-    "sms.verification.body": "{{secret}}"
+    "sms.verification.body": "{{secret}}",
@@
-    "emails.sessionAlert.signature": "{{project}} team",
+    "emails.sessionAlert.signature": "{{project}} team"
📝 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
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",
}
"sms.verification.body": "{{secret}}",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team"
}
🤖 Prompt for AI Agents
In @app/config/locale/translations/as.json around lines 254 - 266, The JSON in
as.json is invalid: add a comma after the "sms.verification.body" entry so it
reads "sms.verification.body": "{{secret}}", and remove the trailing comma after
the final key "emails.sessionAlert.signature": "{{project}} team" so the object
ends with no extra comma before the closing brace; verify the file parses as
valid JSON afterwards.

Comment on lines 254 to +255
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Missing comma causes JSON parse error.

Line 254 is missing a trailing comma, which will cause a JSON parse error when loading the Belarusian locale.

🐛 Proposed fix
-    "sms.verification.body": "{{secret}}"
+    "sms.verification.body": "{{secret}}",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"sms.verification.body": "{{secret}}",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/be.json around lines 254 - 255, The
Belarusian locale JSON is invalid because the entry for "sms.verification.body"
is missing a trailing comma, causing a parse error; add the missing comma after
the "sms.verification.body" value so the "emails.sessionAlert.subject" entry is
a separate property, ensuring the file is valid JSON (fix the entries for
"sms.verification.body" and "emails.sessionAlert.subject").

Comment on lines 248 to +249
"emails.otpSession.signature": "{{project}} দল"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: missing comma.

Line 248 is missing a comma after the value. A comma is required before the next key-value pair begins on line 249.

🔧 Proposed fix
-    "emails.otpSession.signature": "{{project}} দল"
+    "emails.otpSession.signature": "{{project}} দল",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"emails.otpSession.signature": "{{project}} দল"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.otpSession.signature": "{{project}} দল",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/bn.json around lines 248 - 249, The JSON file
has a syntax error: add a trailing comma after the "emails.otpSession.signature"
value to separate it from the next key; specifically, update the object
containing "emails.otpSession.signature" and "emails.sessionAlert.subject" so
there is a comma after the closing quote of "{{project}} দল".

Comment on lines +258 to 260
"emails.sessionAlert.signature": "{{project}} team",

}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: trailing comma.

Line 258 has a trailing comma after the last key-value pair, which is not allowed in standard JSON. The comma must be removed.

🔧 Proposed fix
-    "emails.sessionAlert.signature": "{{project}} team",
+    "emails.sessionAlert.signature": "{{project}} team"

 }
📝 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
"emails.sessionAlert.signature": "{{project}} team",
}
"emails.sessionAlert.signature": "{{project}} team"
}
🤖 Prompt for AI Agents
In @app/config/locale/translations/bn.json around lines 258 - 260, The JSON file
contains a trailing comma after the last key-value pair
("emails.sessionAlert.signature": "{{project}} team") which makes the file
invalid; open the bn.json translation file and remove the dangling comma
immediately following the "emails.sessionAlert.signature" entry so the JSON ends
with a valid final key:value pair and the file parses correctly.

Comment on lines 245 to +246
"emails.otpSession.signature": "tým {{project}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: Missing comma after line 245.

The static analysis tool correctly identified this issue. Line 245 (emails.otpSession.signature) must end with a comma before the new emails.sessionAlert.subject key on line 246, otherwise the JSON will fail to parse.

🐛 Proposed fix
-    "emails.otpSession.signature": "tým {{project}}"
+    "emails.otpSession.signature": "tým {{project}}",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"emails.otpSession.signature": "tým {{project}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.otpSession.signature": "tým {{project}}",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/cs.json around lines 245 - 246, The JSON has
a syntax error: the key "emails.otpSession.signature" is missing a trailing
comma before the next key "emails.sessionAlert.subject"; fix by adding a comma
after the value for "emails.otpSession.signature" so the object remains valid
JSON.

Comment on lines 248 to +249
"emails.otpSession.signature": "{{project}} csapat"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Missing comma causes JSON parse error.

Line 248 is missing a trailing comma, which will cause a JSON parse error when this locale file is loaded.

🐛 Proposed fix
-    "emails.otpSession.signature": "{{project}} csapat"
+    "emails.otpSession.signature": "{{project}} csapat",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"emails.otpSession.signature": "{{project}} csapat"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.otpSession.signature": "{{project}} csapat",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/hu.json around lines 248 - 249, The JSON for
the Hungarian locale is invalid because the "emails.otpSession.signature" entry
is missing a trailing comma before the next key; update the object by adding a
comma after the "emails.otpSession.signature" value so
"emails.sessionAlert.subject" is a separate property, then re-validate the file
(e.g., JSON linter or unit tests) to ensure there are no other syntax errors.

Comment on lines 245 to +246
"emails.otpSession.signature": "{{project}} թիմ"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: Missing comma after line 245.

Line 245 (emails.otpSession.signature) must end with a comma before the new emails.sessionAlert.subject key begins on line 246. Without this comma, the JSON file will fail to parse.

🐛 Proposed fix
-    "emails.otpSession.signature": "{{project}} թիմ"
+    "emails.otpSession.signature": "{{project}} թիմ",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"emails.otpSession.signature": "{{project}} թիմ"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.otpSession.signature": "{{project}} թիմ",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/hy.json around lines 245 - 246, There is a
JSON syntax error: add a trailing comma after the "emails.otpSession.signature"
entry so the next key "emails.sessionAlert.subject" is valid; locate the
"emails.otpSession.signature" entry in the hy.json translations and append the
missing comma to fix parsing.

Comment on lines 245 to +246
"emails.otpSession.signature": "{{project}} liðið"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Missing comma causes JSON syntax error.

Line 245 is missing a trailing comma before the new emails.sessionAlert.subject key on line 246. This will cause JSON parsing to fail, breaking Icelandic locale support entirely.

🐛 Proposed fix
-    "emails.otpSession.signature": "{{project}} liðið"
+    "emails.otpSession.signature": "{{project}} liðið",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"emails.otpSession.signature": "{{project}} liðið"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.otpSession.signature": "{{project}} liðið",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/is.json around lines 245 - 246, The JSON for
the Icelandic locale has a missing comma after the "emails.otpSession.signature"
entry which breaks parsing; add a trailing comma to the
"emails.otpSession.signature" line so the subsequent
"emails.sessionAlert.subject" key is valid JSON and the Icelandic locale can be
loaded.

Comment on lines +2 to +248
"settings.inspire": "\"ବୁଦ୍ଧିମାନ ହେବାର କଳା ହେଉଛି କ’ଣ ଅଣଦେଖା କରାଯିବ ଜାଣିବାର କଳା |\"",
"settings.locale": "or",
"settings.direction": "ltr",
"emails.sender": "{{project}} ଦଳ",
"emails.verification.subject": "ଖାତା ଯାଞ୍ଚ",
"emails.verification.hello": "ନମସ୍କାର {{user}},",
"emails.verification.body": "ଆପଣଙ୍କର ଇମେଲ୍ ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ |",
"emails.verification.footer": "ଯଦି ଆପଣ ଏହି ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
"emails.verification.thanks": "ଧନ୍ୟବାଦ,",
"emails.verification.buttonText": "ଇମେଲ ଠିକଣା ନିଶ୍ଚିତ କରନ୍ତୁ",
"emails.verification.signature": "{{project}} ଦଳ",
"emails.magicSession.subject": "ଲଗଇନ୍ କରନ୍ତୁ",
"emails.magicSession.hello": "ନମସ୍କାର,",
"emails.magicSession.thanks": "ଧନ୍ୟବାଦ,",
"emails.magicSession.signature": "{{project}} ଦଳ",
"emails.recovery.subject": "ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରନ୍ତୁ |",
"emails.recovery.hello": "ନମସ୍କାର {{user}},",
"emails.recovery.body": "ଆପଣଙ୍କର {{project}} ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରିବାକୁ ଏହି ଲିଙ୍କକୁ ଅନୁସରଣ କରନ୍ତୁ |",
"emails.recovery.footer": "ଯଦି ଆପଣ ଆପଣଙ୍କର ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
"emails.recovery.thanks": "ଧନ୍ୟବାଦ,",
"emails.recovery.buttonText": "ପାସୱାର୍ଡ ପୁନଃସେଟ୍ କରନ୍ତୁ",
"emails.recovery.signature": "{{project}} ଦଳ",
"emails.invitation.subject": "{{team}} ରେ {{project}} ଦଳକୁ ନିମନ୍ତ୍ରଣ |",
"emails.invitation.hello": "ନମସ୍କାର,",
"emails.invitation.body": "ଏହି ମେଲ୍ ଆପଣଙ୍କୁ ପଠାଯାଇଥିଲା କାରଣ {{owner}} ଆପଣଙ୍କୁ {{project}} ରେ {{team}} ଦଳର ସଦସ୍ୟ ହେବାକୁ ଆମନ୍ତ୍ରଣ କରିବାକୁ ଚାହୁଁଥିଲେ |",
"emails.invitation.footer": "ଯଦି ଆପଣ ଆଗ୍ରହୀ ନୁହଁନ୍ତି, ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଅଣଦେଖା କରିପାରିବେ |",
"emails.invitation.thanks": "ଧନ୍ୟବାଦ,",
"emails.invitation.buttonText": "{{team}} ପାଇଁ ଆମନ୍ତ୍ରଣ ଗ୍ରହଣ କରନ୍ତୁ",
"emails.invitation.signature": "{{project}} ଦଳ",
"locale.country.unknown": "ଅଜ୍ଞାତ",
"countries.af": "ଆଫଗାନିସ୍ତାନ",
"countries.ao": "ଅଙ୍ଗୋଲା",
"countries.al": "ଆଲବେନିଆ",
"countries.ad": "ଆଣ୍ଡୋରା",
"countries.ae": "ୟୁନାଇଟେଡ୍ ଆରବ ଏମିରେଟେସ୍",
"countries.ar": "ଆର୍ଜେଣ୍ଟିନା",
"countries.am": "ଆର୍ମେନିଆ",
"countries.ag": "ଆଣ୍ଟିଗୁଆ ଏବଂ ବାରବୁଦା",
"countries.au": "ଅଷ୍ଟ୍ରେଲିଆ",
"countries.at": "ଅଷ୍ଟ୍ରିଆ",
"countries.az": "ଆଜେରବାଇଜାନ",
"countries.bi": "ବୁରୁଣ୍ଡି",
"countries.be": "ବେଲଜିୟମ",
"countries.bj": "ବେନିନ୍",
"countries.bf": "ବୁର୍କିନା ଫାସୋ",
"countries.bd": "ବାଂଲାଦେଶ",
"countries.bg": "ବୁଲଗେରିଆ",
"countries.bh": "ବହାରେନ",
"countries.bs": "ବାହାମା",
"countries.ba": "ବୋସନିଆ ଏବଂ ହେର୍ଜେଗୋଭିନା",
"countries.by": "ବେଳରୁଷ",
"countries.bz": "ବେଲିଜ଼ଏ",
"countries.bo": "ବୋଲିଭିଆ",
"countries.br": "ବ୍ରାଜିଲ୍",
"countries.bb": "ବାରବାଡୋସ୍",
"countries.bn": "ବ୍ରୁନେଇ",
"countries.bt": "ଭୁଟାନ",
"countries.bw": "ବୋତସ୍ୱାନା",
"countries.cf": "କେନ୍ଦ୍ରୀୟ ଆଫ୍ରିକୀୟ ଗଣତନ୍ତ୍ର",
"countries.ca": "କାନାଡା",
"countries.ch": "ସ୍ୱିଜରଲ୍ୟାଣ୍ଡ",
"countries.cl": "ଚିଲି",
"countries.cn": "ଚୀନ୍",
"countries.ci": "ଆଇଭୋରୀ କୋଷ୍ଟ",
"countries.cm": "କାମେରୁନ୍",
"countries.cd": "ଡ଼ ର କଙ୍ଗୋ",
"countries.cg": "କଙ୍ଗୋ ଗଣତନ୍ତ୍ର",
"countries.co": "କଲମ୍ବିଆ",
"countries.km": "କୋମୋରସ୍",
"countries.cv": "କେପ୍ ଭର୍ଡେ",
"countries.cr": "କୋଷ୍ଟାରିକା",
"countries.cu": "କ୍ୟୁବା",
"countries.cy": "ସାଇପ୍ରସ୍",
"countries.cz": "ଚେକିଆ",
"countries.de": "ଜର୍ମାନୀ",
"countries.dj": "ଜିବୁଟି",
"countries.dm": "ଡୋମିନିକା",
"countries.dk": "ଡେନମାର୍କ",
"countries.do": "ଡୋମିନିକାନ୍ ରିପବ୍ଲିକ୍",
"countries.dz": "ଆଲଜେରିଆ",
"countries.ec": "ଇକ୍ୟୁଏଡର୍",
"countries.eg": "ମିଶର",
"countries.er": "ଇରିଟ୍ରିଆ",
"countries.es": "ସ୍ପେନ୍",
"countries.ee": "ଇଷ୍ଟୋନିଆ",
"countries.et": "ଇଥିଓପିଆ",
"countries.fi": "ଫିନଲ୍ୟାଣ୍ଡ",
"countries.fj": "ଫିଜି",
"countries.fr": "ଫ୍ରାନ୍ସ",
"countries.fm": "ମାଇକ୍ରୋନେସିଆ",
"countries.ga": "ଗାବନ୍",
"countries.gb": "ୟୁନାଇଟେଡ୍ କିଙ୍ଗଡମ",
"countries.ge": "ଜର୍ଜିଆ",
"countries.gh": "ଘାନା",
"countries.gn": "ଗିନି",
"countries.gm": "ଗାମ୍ବିଆ",
"countries.gw": "ଗିନି-ବିସାଉ",
"countries.gq": "ଏକ୍ୟୁଟୋରିଆଲ୍ ଗିନି",
"countries.gr": "ଗ୍ରୀସ୍",
"countries.gd": "ଗ୍ରେନାଡା",
"countries.gt": "ଗୁଆଟେମାଲା",
"countries.gy": "ଗୁଇନ୍ଦା",
"countries.hk": "ହଂ କଙ୍ଗ",
"countries.hn": "ହୋଣ୍ଡୁରାସ୍",
"countries.hr": "କ୍ରୋଏସିଆ",
"countries.ht": "ହାଇତି",
"countries.hu": "ହଙ୍ଗେରୀ",
"countries.id": "ଇଣ୍ଡୋନେସିଆ",
"countries.in": "ଭାରତ",
"countries.ie": "ଆୟର୍ଲାଣ୍ଡ",
"countries.ir": "ଇରାନ",
"countries.iq": "ଇରାକ",
"countries.is": "ଆଇସଲ୍ୟାଣ୍ଡ",
"countries.il": "ଇସ୍ରାଏଲ",
"countries.it": "ଇଟାଲୀ",
"countries.jm": "ଜାମାଇକା",
"countries.jo": "ଜୋର୍ଡାନ",
"countries.jp": "ଜାପାନ",
"countries.kz": "କାଜାଖସ୍ତାନ",
"countries.ke": "କେନିଆ",
"countries.kg": "କିର୍ଗିଜସ୍ଥାନ",
"countries.kh": "କାମ୍ବୋଡିଆ",
"countries.ki": "କିରିବାଟି",
"countries.kn": "ସେଣ୍ଟ କିଟ୍ସ ଏବଂ ନେଭିସ୍",
"countries.kr": "ଦକ୍ଷିଣ କୋରିଆ",
"countries.kw": "କୁଏତ",
"countries.la": "ଲାଓସ୍",
"countries.lb": "ଲିବାନୋନ୍",
"countries.lr": "ଲାଇବେରିଆ",
"countries.ly": "ଲିବିଆ",
"countries.lc": "ସେଣ୍ଟ ଲୁସିଆ",
"countries.li": "ଲିଚଟେଷ୍ଟାଇନ୍",
"countries.lk": "ଶ୍ରୀ ଲଙ୍କା",
"countries.ls": "ଲେସୋଥୋ",
"countries.lt": "ଲିଥୁଆନିଆ",
"countries.lu": "ଲକ୍ସେମବର୍ଗ",
"countries.lv": "ଲାଟଭିଆ",
"countries.ma": "ମୋରୋକୋ",
"countries.mc": "ମୋନାକୋ",
"countries.md": "ମଲଡୋଭା",
"countries.mg": "ମାଡାଗାସ୍କର",
"countries.mv": "ମାଲଦ୍ୱୀପ",
"countries.mx": "ମେକ୍ସିକୋ",
"countries.mh": "ମାର୍ଶଲ ଦ୍ୱୀପପୁଞ୍ଜ",
"countries.mk": "ମାକେଡୋନିଆ",
"countries.ml": "ମାଲି",
"countries.mt": "ମାଲ୍ଟା",
"countries.mm": "ମିଆଁମାର",
"countries.me": "ମୋଣ୍ଟେନେଗ୍ରୋ",
"countries.mn": "ମୋଙ୍ଗୋଲିଆ",
"countries.mz": "ମୋଜାମ୍ବିକ୍",
"countries.mr": "ମରିସାନିଆ",
"countries.mu": "ମରିସସ୍",
"countries.mw": "ମଲାୱି",
"countries.my": "ମାଲେସିଆ",
"countries.na": "ନାମିବିଆ",
"countries.ne": "ନାଇଜର",
"countries.ng": "ନାଇଜେରିଆ",
"countries.ni": "ନିକାରାଗୁଆ",
"countries.nl": "ନେଦରଲ୍ୟାଣ୍ଡ",
"countries.no": "ନରୱେ",
"countries.np": "ନେପାଳ",
"countries.nr": "ନାଉରୁ",
"countries.nz": "ନିଉଜିଲାଣ୍ଡ୍",
"countries.om": "ଓମାନ",
"countries.pk": "ପାକିସ୍ତାନ",
"countries.ps": "ପାଲେସ୍ତାଇନ",
"countries.pa": "ପାନାମା",
"countries.pe": "ପେରୁ",
"countries.ph": "ଫିଲିପାଇନ୍ସ",
"countries.pw": "ପାଲାଉ",
"countries.pg": "ପାପୁଆ ନ୍ୟୁ ଗିନି",
"countries.pl": "ପୋଲାଣ୍ଡ",
"countries.kp": "ଉତ୍ତର କୋରିଆ",
"countries.pt": "ପର୍ତ୍ତୁଗାଲ୍",
"countries.py": "ପାରାଗୁଏ",
"countries.qa": "କାତାର",
"countries.ro": "ରୋମାନିଆ",
"countries.ru": "ୠଷ୍ସିଆ",
"countries.rw": "ରୁୱାଣ୍ଡା",
"countries.sa": "ସାଉଦି ଆରବ",
"countries.sd": "ସୁଦାନ",
"countries.sn": "ସେନେଗାଲ୍",
"countries.sg": "ସିଙ୍ଗାପୁର",
"countries.sb": "ଶଲୋମନ ଦ୍ୱୀପପୁ୍ଜ",
"countries.sl": "ସିଇରା ଲେଓନେ",
"countries.sv": "ଏଲ ସାଲଭାଡୋର",
"countries.sm": "ସାନ୍ ମାରିନୋ",
"countries.so": "ସୋମାଲିଆ",
"countries.rs": "ସର୍ବିଆ",
"countries.ss": "ଦକ୍ଷିଣ ସୁଦାନ",
"countries.st": "ସାଓ ଟୋମେ ଏବଂ ପ୍ରିନ୍ସିପି",
"countries.sr": "ସୁରିନାମ",
"countries.sk": "ସ୍ଲୋଭାକିଆ",
"countries.si": "ସ୍ଲୋଭେନିଆ",
"countries.se": "ସ୍ୱିଡେନ",
"countries.sz": "ସ୍ୱେଜ଼ୀଲାଣ୍ଡ",
"countries.sc": "ସେଚେଲସ୍",
"countries.sy": "ସିରିଆ",
"countries.td": "ଚାଡ",
"countries.tg": "ଟୋଗୋ",
"countries.th": "ଥାଇଲ୍ୟାଣ୍ଡ",
"countries.tj": "ତାଜିକିସ୍ତାନ",
"countries.tm": "ତୁର୍କମେନିସ୍ତାନ",
"countries.tl": "ତିମୋର-ଲେଷ୍ଟେ",
"countries.to": "ଟୋଙ୍ଗା",
"countries.tt": "ତ୍ରିନିଦାଦ ଏବଂ ଟୋବାଗୋ",
"countries.tn": "ଟ୍ୟୁନିସିଆ",
"countries.tr": "ତୁର୍କୀ",
"countries.tv": "ତୁଭାଲୁ",
"countries.tw": "ତାଇୱାନ",
"countries.tz": "ତାଞ୍ଜାନିଆ",
"countries.ug": "ଉଗାଣ୍ଡା",
"countries.ua": "ୟୁକ୍ରେନ",
"countries.uy": "ଉରୁଗୁଏ",
"countries.us": "ଯୁକ୍ତ ରାଷ୍ଟ୍ର",
"countries.uz": "ଉଜବେକିସ୍ତାନ",
"countries.va": "ଭାଟିକାନ୍ ସିଟି",
"countries.vc": "ସେଣ୍ଟ ଭିନ୍ସେଣ୍ଟ ଏବଂ ଗ୍ରେନାଡାଇନ୍ସ",
"countries.ve": "ଭେନେଜୁଏଲା",
"countries.vn": "ଭିଏତନାମ",
"countries.vu": "ଭାନୁୟୁଟୁ",
"countries.ws": "ସାମୋଆ",
"countries.ye": "ୟେମେନ",
"countries.za": "ଦକ୍ଷିଣ ଆଫ୍ରିକା",
"countries.zm": "ଜାମ୍ବିଆ",
"countries.zw": "ଜିମ୍ବାୱେ",
"continents.af": "ଆଫ୍ରିକା",
"continents.an": "ଆଣ୍ଟାର୍କଟିକା",
"continents.as": "ଏସିଆ",
"continents.eu": "ଇଉରୋପ",
"continents.na": "ନର୍ଥ ଆମେରିକା",
"continents.oc": "ଓସାନିଆ",
"continents.sa": "ସାଉଥ ଆମେରିକା",
"emails.magicSession.optionButton": "Kliknite na gumb ispod kako biste se sigurno prijavili na svoj {{project}} račun. Istječe za 1 sat.",
"emails.magicSession.buttonText": "Inicia sesión en {{project}}",
"emails.magicSession.clientInfo": "Tento přihlašovací požadavek byl zaznamenán pomocí {{agentClient}} na {{agentDevice}} {{agentOs}}. Pokud jste o přihlášení nepožádali, můžete tento e-mail bezpečně ignorovat.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Frase de segurança para este e-mail é {{phrase}}. Você pode confiar neste e-mail se essa frase coincidir com a frase mostrada durante o acesso.",
"emails.magicSession.optionUrl": "אם אתם לא מצליחים להיכנס באמצעות הכפתור שמעל, אנא בקרו בקישור הבא:",
"emails.otpSession.subject": "{{project}} ଲଗଇନ্",
"emails.otpSession.hello": "ନମସ୍କାର,",
"emails.otpSession.description": "ପ୍ରମାଣୀକରଣ କୋଡଟି ତାଲିକା କରନ୍ତୁ ଏବଂ ଯେତେ ବେଳେ ଆପଣଙ୍କୁ ପ୍ରାପ୍ତ ହେବ ସେତେବେଳେ ଆପଣଙ୍କ {{project}} ଆକାଉଣ୍ଟକୁ ସୁରକ୍ଷିତ ସାଇନ୍ ଇନ କରନ୍ତୁ। ଏହା ୧୫ ମିନିଟରେ ସମାପ୍ତ ହୋଇଯିବ।",
"emails.otpSession.clientInfo": "ଏହି ସାଇନ୍ ଇନ୍ ଅନୁରୋଧ କରାଯାଇଛି {{agentClient}} ଉପରେ {{agentDevice}} {{agentOs}} ବ୍ୟବହାର କରି। ଯଦି ଆପଣ ସାଇନ୍ ଇନ୍ ଅନୁରୋଧ କରି ନାହାଁନ୍ତି, ଆପଣ ସୁରକ୍ଷିତଭାବେ ଏହି ଇମେଲକୁ ଉପେକ୍ଷା କରିପାରନ୍ତି।",
"emails.otpSession.securityPhrase": "ଏହି ଇମେଲର ସୁରକ୍ଷା ବାକ୍ୟାଂଶ ହେଉଛି {{phrase}}। ସାଇନ୍ ଇନ୍ କରିବା ସମୟରେ ଦେଖାଯାଇଥିବା ବାକ୍ୟାଂଶ ସହ ଏହା ମେଳେ ଯଦି, ଆପଣ ଏହି ଇମେଲକୁ ଆସ୍ଥା କରି ପାରିବେ।",
"emails.otpSession.thanks": "ଧନ୍ୟବାଦ,",
"emails.otpSession.signature": "ପ୍ରକଳ୍ପ ଟିମ୍ବ୍",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

git diff app/config/locale/translations/or.json | head -100

Repository: appwrite/appwrite

Length of output: 43


🏁 Script executed:

ls -la app/config/locale/translations/or.json
git status app/config/locale/translations/or.json
file app/config/locale/translations/or.json

Repository: appwrite/appwrite

Length of output: 341


🏁 Script executed:

git log --oneline -10 -- app/config/locale/translations/or.json
git show HEAD:app/config/locale/translations/or.json | head -50

Repository: appwrite/appwrite

Length of output: 2640


🏁 Script executed:

git show HEAD^:app/config/locale/translations/or.json 2>/dev/null | wc -l
git diff HEAD^ HEAD -- app/config/locale/translations/or.json | grep -E "^[\+\-]" | grep -v "^[\+\-][\+\-][\+\-]" | wc -l
git diff HEAD^ HEAD -- app/config/locale/translations/or.json | grep -E "^[\+\-]" | grep -v "^[\+\-][\+\-][\+\-]" | grep -v "sessionAlert" | head -30

Repository: appwrite/appwrite

Length of output: 137


🏁 Script executed:

git log --oneline -20 -- app/config/locale/translations/or.json
git show d1b389c66^:app/config/locale/translations/or.json 2>/dev/null | wc -l
git diff d1b389c66^ d1b389c66 -- app/config/locale/translations/or.json | head -150

Repository: appwrite/appwrite

Length of output: 180


🏁 Script executed:

git show d1b389c66:app/config/locale/translations/or.json | tail -100
git show d1b389c66:app/config/locale/translations/or.json | grep -A 2 "magicSession.optionButton"

Repository: appwrite/appwrite

Length of output: 5315


🏁 Script executed:

# Check the structure of the or.json file around the problematic keys
git show d1b389c66:app/config/locale/translations/or.json | grep -n "magicSession\|otpSession\|sessionAlert" | head -20

# Check what a properly translated locale looks like (e.g., Spanish)
ls app/config/locale/translations/ | head -10
git show d1b389c66:app/config/locale/translations/es.json | grep -A 2 "emails.magicSession.optionButton"

Repository: appwrite/appwrite

Length of output: 2787


🏁 Script executed:

# Check the actual issue - what should be in the or.json file for magicSession keys
git show d1b389c66:app/config/locale/translations/es.json | grep -A 1 "emails.magicSession.optionButton\|emails.magicSession.buttonText\|emails.magicSession.clientInfo"

# Count total lines in or.json to verify structure
git show d1b389c66:app/config/locale/translations/or.json | wc -l

# Check if there's a duplicate or malformed structure
git show d1b389c66:app/config/locale/translations/or.json | tail -20

Repository: appwrite/appwrite

Length of output: 2574


🏁 Script executed:

# Verify the exact issue - check if these keys should be translated to Odia
git show d1b389c66:app/config/locale/translations/or.json | sed -n '236,258p'

# Compare with another language file to see the proper structure
git show d1b389c66:app/config/locale/translations/pt.json | grep -A 1 "emails.magicSession.optionButton\|emails.sessionAlert.subject" | head -10

Repository: appwrite/appwrite

Length of output: 2632


🏁 Script executed:

# Check what the file structure should be - look at a complete, correct locale file
git show d1b389c66:app/config/locale/translations/es.json | grep -c "^  \"" 

# Check or.json structure
git show d1b389c66:app/config/locale/translations/or.json | grep -c "^  \"" 

# Look at the actual structure issue - show the file with line numbers for the problematic section
git show d1b389c66:app/config/locale/translations/or.json | sed -n '230,260p' | cat -n

Repository: appwrite/appwrite

Length of output: 2939


🏁 Script executed:

# Verify the problematic strings are indeed in wrong languages
git show d1b389c66:app/config/locale/translations/or.json | sed -n '236,242p'

# Check if these same strings appear in other language files
git show d1b389c66:app/config/locale/translations/hr.json | grep "Kliknite na gumb" 2>/dev/null | head -1
git show d1b389c66:app/config/locale/translations/es.json | grep "Inicia sesión en" 2>/dev/null | head -1
git show d1b389c66:app/config/locale/translations/cs.json | grep "Tento přihlašovací" 2>/dev/null | head -1

# Check the actual file to see if JSON is even valid
git show d1b389c66:app/config/locale/translations/or.json | python3 -m json.tool > /dev/null 2>&1 && echo "JSON is valid" || echo "JSON is INVALID"

Repository: appwrite/appwrite

Length of output: 147


🏁 Script executed:

# Check the structure more directly
git show d1b389c66:app/config/locale/translations/or.json | tail -30

# Simpler JSON validity check
git show d1b389c66:app/config/locale/translations/or.json | grep -o "^}" | wc -l

Repository: appwrite/appwrite

Length of output: 2725


Fix incorrect translations in magicSession and sessionAlert keys.

The or.json file contains multiple email keys with text in wrong languages rather than Odia translations:

  • emails.magicSession.optionButton, buttonText, clientInfo, securityPhrase, and optionUrl are in Croatian, Spanish, Czech, Portuguese, and Hebrew respectively
  • emails.sessionAlert.* keys remain in English

These keys need proper Odia translations to match the rest of the file, or be removed if translations are not yet available.

🤖 Prompt for AI Agents
In @app/config/locale/translations/or.json around lines 2 - 248, The
magicSession and sessionAlert keys contain wrong-language text; locate the keys
emails.magicSession.optionButton, emails.magicSession.buttonText,
emails.magicSession.clientInfo, emails.magicSession.securityPhrase,
emails.magicSession.optionUrl and all emails.sessionAlert.* entries in or.json
and replace each value with proper Odia translations (preserving placeholders
like {{project}}, {{agentClient}}, {{agentDevice}}, {{agentOs}}, {{phrase}} and
formatting), or remove the keys if you cannot provide translations yet so the
file remains consistent with the Odia locale.

Comment on lines +236 to +241
"emails.magicSession.optionButton": "اضغط على الزر أدناه لتسجيل الدخول بأمان إلى حساب {{project}} الخاص بك. سينتهي في غضون ساعة واحدة.",
"emails.magicSession.buttonText": "تسجيل الدخول إلى {{project}}",
"emails.magicSession.clientInfo": "هذا الطلب لتسجيل الدخول قد تم باستخدام {{agentClient}} على {{agentDevice}} {{agentOs}}. إذا لم تطلب تسجيل الدخول، يمكنك تجاهل هذا البريد الإلكتروني بأمان.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "العبارة الأمنية لهذا البريد الإلكتروني هي {{phrase}}. يمكنك الوثوق بهذا البريد الإلكتروني إذا كانت هذه العبارة متطابقة مع العبارة المعروضة أثناء تسجيل الدخول.",
"emails.magicSession.optionUrl": "إذا لم تتمكن من تسجيل الدخول باستخدام الزر أعلاه، يرجى زيارة الرابط التالي:",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Arabic text in Sanskrit locale file.

Lines 236-241 contain Arabic text for emails.magicSession.* keys in what should be a Sanskrit (sa) locale file. This appears to be a copy-paste error from an Arabic locale file.

🔧 Verify the correct script

Please verify the correct translations for these keys and ensure they use Devanagari script consistent with the rest of the Sanskrit locale file. Example keys affected:

  • emails.magicSession.optionButton
  • emails.magicSession.buttonText
  • emails.magicSession.clientInfo
  • emails.magicSession.securityPhrase
  • emails.magicSession.optionUrl
🤖 Prompt for AI Agents
In @app/config/locale/translations/sa.json around lines 236 - 241, The Sanskrit
locale file contains Arabic strings for the magic-session email keys; replace
the Arabic text for keys emails.magicSession.optionButton,
emails.magicSession.buttonText, emails.magicSession.clientInfo,
emails.magicSession.securityPhrase, and emails.magicSession.optionUrl with
proper Sanskrit translations in Devanagari script consistent with the rest of
the sa.json file (don't change sms.verification.body unless it also needs
Sanskrit), ensure interpolation placeholders (e.g., {{project}},
{{agentClient}}, {{agentDevice}}, {{agentOs}}, {{phrase}}) remain intact, and
run the locale/translation lint/tests to confirm script consistency.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 28

Note

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

Caution

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

⚠️ Outside diff range comments (1)
app/config/locale/translations/hy.json (1)

2-2: Inconsistent locale: Russian quote in Armenian locale file.

Line 2 contains a Russian inspirational quote ("Искусство быть мудрым...") but this is the Armenian (hy) locale file. While not critical, this should be replaced with an Armenian translation for consistency.

🤖 Fix all issues with AI agents
In @app/config/locale/translations/as.json:
- Around line 254-255: The JSON for the translations is malformed because the
"sms.verification.body" entry is missing a trailing comma before the next key;
add a comma after the "sms.verification.body": "{{secret}}" entry so the
following "emails.sessionAlert.subject": "Security alert: new session on your
{{project}} account" key is valid JSON (ensure proper comma placement and that
both keys remain quoted exactly as "sms.verification.body" and
"emails.sessionAlert.subject").

In @app/config/locale/translations/az.json:
- Around line 248-259: Add the missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma after
"emails.sessionAlert.signature" so the JSON parses; specifically, ensure there's
a comma following the "emails.otpSession.signature": "{{project}} komandası"
line and that the final object property "emails.sessionAlert.signature":
"{{project}} team" does not have a trailing comma.

In @app/config/locale/translations/be.json:
- Around line 254-265: Fix the JSON syntax by adding a comma after the
"sms.verification.body" entry value ("{{secret}}") so it properly separates from
the following "emails.sessionAlert" block, and remove the trailing comma after
the "emails.sessionAlert.signature" value ("{{project}} team") so the final
object entry does not end with a dangling comma; ensure the file parses with a
JSON validator after these two changes.

In @app/config/locale/translations/bh.json:
- Around line 254-255: The JSON is invalid because the "sms.verification.body"
entry is missing a trailing comma before the next key; add a comma after the
value for "sms.verification.body" so the "emails.sessionAlert.subject" key is a
separate property and the file parses as valid JSON.

In @app/config/locale/translations/bn.json:
- Around line 248-259: The JSON is invalid because the inserted block after
"emails.otpSession.signature" is missing a comma and the last property
"emails.sessionAlert.signature" has a trailing comma; open the translations
object and add a comma immediately after the "emails.otpSession.signature"
entry, and remove the trailing comma after "emails.sessionAlert.signature" so
the block containing keys like "emails.sessionAlert.subject",
"emails.sessionAlert.body", and "emails.sessionAlert.signature" becomes valid
JSON.

In @app/config/locale/translations/bs.json:
- Around line 245-246: The JSON has a syntax error: the key
"emails.otpSession.signature" is missing a trailing comma before the next key
"emails.sessionAlert.subject"; fix it by adding the missing comma after the
"emails.otpSession.signature" entry so the Bosnian locale JSON parses correctly.

In @app/config/locale/translations/ca.json:
- Around line 248-260: The JSON in ca.json is invalid: add a comma after the
"emails.otpSession.signature": "equip {{project}}" entry and remove the trailing
comma after the final "emails.sessionAlert.signature": "{{project}} team" entry
so the object keys are properly comma-separated and the file parses as valid
JSON; update the entries around "emails.otpSession.signature" and
"emails.sessionAlert.signature" accordingly.

In @app/config/locale/translations/cs.json:
- Around line 245-256: The JSON is invalid: add a comma after the previous
property before the block starting with "emails.otpSession.signature" and remove
the trailing comma after the last property "emails.sessionAlert.signature";
specifically ensure there's a comma separating the property before
"emails.otpSession.signature" and delete the comma after
"emails.sessionAlert.signature" so the object is properly comma-delimited.

In @app/config/locale/translations/da.json:
- Around line 248-249: The JSON for the Danish locale has a syntax error: the
key "emails.otpSession.signature" is missing a trailing comma before the next
key "emails.sessionAlert.subject"; open the translations file and add the
missing comma after the value for "emails.otpSession.signature" so the object
entries are properly separated and the locale can parse.

In @app/config/locale/translations/de.json:
- Around line 249-260: The JSON is invalid: add a missing comma after the "mock"
entry and remove the trailing comma after "emails.sessionAlert.signature" so the
object keys (e.g., "mock", "emails.sessionAlert.subject", ...,
"emails.sessionAlert.signature") are properly separated and the final property
does not end with a comma; update those two punctuation marks to restore valid
JSON.

In @app/config/locale/translations/el.json:
- Around line 248-249: The JSON for the Greek locale has a syntax error: the key
"emails.otpSession.signature" is missing a trailing comma before the next key
"emails.sessionAlert.subject"; fix this by adding the missing comma after the
value for "emails.otpSession.signature" so the JSON array of key/value pairs is
properly separated and the file will parse.

In @app/config/locale/translations/eo.json:
- Around line 248-260: The JSON is invalid: add a missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma after the
"emails.sessionAlert.signature" entry so the object entries (including
"emails.sessionAlert.subject" through "emails.sessionAlert.signature") are
properly comma-separated and the final object has no trailing comma; update the
entries referenced ("emails.otpSession.signature" and
"emails.sessionAlert.signature") to correct this.

In @app/config/locale/translations/es.json:
- Around line 248-249: The JSON has a syntax error because the
"emails.otpSession.signature" entry is missing a trailing comma, breaking
parsing; fix it by adding a comma after the "emails.otpSession.signature" value
so the next key "emails.sessionAlert.subject" is a valid separate property, then
validate the file to ensure no other missing commas or JSON errors.

In @app/config/locale/translations/fa.json:
- Around line 248-259: Add the missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma from the
"emails.sessionAlert.signature" entry so the JSON is valid; specifically, ensure
there's a comma after the line containing "emails.otpSession.signature": "تیم
{{project}}" and delete the extra comma at the end of the
"emails.sessionAlert.signature": "{{project}} team" line.

In @app/config/locale/translations/fi.json:
- Around line 245-249: The JSON is invalid because the
"emails.otpSession.signature" entry is missing a trailing comma before the
"emails.sessionAlert.subject" key; open the fi.json and add the missing comma
after the value for "emails.otpSession.signature" (the entry for key
"emails.otpSession.signature") so the subsequent keys like
"emails.sessionAlert.subject", "emails.sessionAlert.preview",
"emails.sessionAlert.hello", and "emails.sessionAlert.body" form valid JSON.

In @app/config/locale/translations/fo.json:
- Around line 245-246: The JSON for the Faroese translations has a missing comma
after the "emails.otpSession.signature" entry which causes a parse error; add a
trailing comma immediately after the value for "emails.otpSession.signature" so
the next key "emails.sessionAlert.subject" is properly separated and the file
becomes valid JSON.

In @app/config/locale/translations/fr.json:
- Around line 248-249: The JSON syntax error is caused by a missing trailing
comma after the "emails.otpSession.signature" entry; add a comma at the end of
the "emails.otpSession.signature": "équipe {{project}}" line so the next key
"emails.sessionAlert.subject" parses correctly, ensuring the translations JSON
is valid.

In @app/config/locale/translations/ga.json:
- Around line 248-249: The JSON syntax error is caused by a missing comma after
the "emails.otpSession.signature" entry; update the translations JSON to insert
a trailing comma after the "foireann {{project}}" line so the
"emails.sessionAlert.subject" key parses correctly (i.e., add a comma after the
"emails.otpSession.signature" value to produce valid JSON for the keys
"emails.otpSession.signature" and "emails.sessionAlert.subject").

In @app/config/locale/translations/gu.json:
- Around line 248-259: The JSON has two syntax issues: add a missing comma after
the "emails.otpSession.signature" entry and remove the trailing comma after the
"emails.sessionAlert.signature" entry so the object entries (e.g.,
"emails.otpSession.signature", "emails.sessionAlert.subject", ...,
"emails.sessionAlert.signature") are properly comma-separated and the JSON
parses correctly.

In @app/config/locale/translations/hi.json:
- Around line 248-259: The JSON is invalid: add a comma before the inserted
"emails.otpSession.signature" entry (so the previous property ends with a comma)
and remove the trailing comma after the final "emails.sessionAlert.signature"
property; locate and fix the entries named "emails.otpSession.signature" and
"emails.sessionAlert.signature" to ensure proper comma separation and valid
JSON.

In @app/config/locale/translations/hr.json:
- Around line 248-249: The JSON is invalid because the entry for
"emails.otpSession.signature" is missing a trailing comma; edit the translations
to add a comma after the closing quote for the "emails.otpSession.signature"
value so the subsequent "emails.sessionAlert.subject" key is properly separated
and the Croatian locale JSON parses correctly.

In @app/config/locale/translations/hu.json:
- Around line 248-259: The JSON is invalid due to a missing comma after the
"emails.otpSession.signature" entry and an extra trailing comma after the final
key; add a comma after "emails.otpSession.signature": "{{project}} csapat" and
remove the trailing comma following "emails.sessionAlert.signature":
"{{project}} team" so the object is properly comma-separated and has no trailing
comma.

In @app/config/locale/translations/hy.json:
- Around line 245-256: Fix the JSON syntax errors by adding a comma after the
"emails.otpSession.signature" entry and removing the trailing comma after the
"emails.sessionAlert.signature" entry; locate the two keys
("emails.otpSession.signature" and "emails.sessionAlert.signature") and ensure
each object member is comma-separated except the final property in the enclosing
object so the JSON parses correctly.

In @app/config/locale/translations/id.json:
- Around line 248-249: The JSON for the Indonesian locale has a missing comma
between the "emails.otpSession.signature" and "emails.sessionAlert.subject"
entries; add the trailing comma after the "emails.otpSession.signature" value so
the object property separator is present (i.e., ensure
"emails.otpSession.signature": "tim {{project}}", appears before
"emails.sessionAlert.subject": ...).

In @app/config/locale/translations/is.json:
- Around line 245-256: Add the missing comma after the
"emails.otpSession.signature" entry and remove the trailing comma after the
"emails.sessionAlert.signature" entry so the JSON is valid; specifically insert
a comma after the key "emails.otpSession.signature": "{{project}} liðið" and
delete the extra comma following "emails.sessionAlert.signature": "{{project}}
team", then validate the file parses as JSON.

In @app/config/locale/translations/or.json:
- Around line 236-241: The listed locale file contains incorrect-language
strings for several keys (emails.magicSession.optionButton,
emails.magicSession.buttonText, emails.magicSession.clientInfo,
sms.verification.body, emails.magicSession.securityPhrase,
emails.magicSession.optionUrl); replace each corrupted value with a correct
Oriya translation (or a vetted English fallback) and apply the same fixes to the
equivalent keys in sv.json and pa.json so all locales have the proper language
for those keys; after updating, run the i18n validation/lint (or our locale
consistency script) to ensure no other locale files contain mismatched-language
values.

In @app/config/locale/translations/si.json:
- Around line 236-238: The Sinhala locale file
app/config/locale/translations/si.json contains Slovenian text for the keys
"emails.magicSession.optionButton", "emails.magicSession.buttonText", and
"emails.magicSession.clientInfo"; replace those three values with proper Sinhala
translations (or the English originals from en.json as a temporary fallback)
while preserving all placeholders ({{project}}, {{agentClient}},
{{agentDevice}}, {{agentOs}}), punctuation, and UTF-8 encoding; verify the
updated strings read naturally in Sinhala and run a quick grep for the Slovenian
tokens ("Kliknite", "Prijavite") to ensure no leftover Slovenian text remains.
🟠 Major comments (3)
app/config/locale/translations/jv.json-248-248 (1)

248-248: Fix inconsistent capitalization in signature field.

In jv.json, the emails.otpSession.signature value uses lowercase "tim {{project}}", while all other signature fields in the same file use uppercase: emails.verification.signature, emails.magicSession.signature, emails.recovery.signature, and emails.invitation.signature all use "Tim {{project}}". Change to uppercase "Tim" to match the established pattern in this translation file.

app/config/locale/translations/ne.json-237-237 (1)

237-237: French string in Nepali locale file.

emails.magicSession.buttonText contains French text ("Connectez-vous à {{project}}") instead of Nepali. This will display French to Nepali-speaking users.

🔧 Proposed fix
-  "emails.magicSession.buttonText": "Connectez-vous à {{project}}",
+  "emails.magicSession.buttonText": "{{project}} मा साइन इन गर्नुहोस्",
app/config/locale/translations/sv.json-237-241 (1)

237-241: Spanish strings in Swedish locale file.

Two keys contain Spanish text instead of Swedish:

  • Line 237: emails.magicSession.buttonText is Spanish ("Inicia sesión en {{project}}")
  • Line 241: emails.magicSession.optionUrl is Spanish ("Si no puedes iniciar sesión...")

These will display Spanish to Swedish-speaking users.

🔧 Proposed fix
-  "emails.magicSession.buttonText": "Inicia sesión en {{project}}",
+  "emails.magicSession.buttonText": "Logga in på {{project}}",
   "emails.magicSession.clientInfo": "Den här inloggningen begärdes med hjälp av {{agentClient}} på {{agentDevice}} {{agentOs}}. Om du inte begärde inloggningen kan du bortse från det här e-postmeddelandet.",
   "sms.verification.body": "{{secret}}",
   "emails.magicSession.securityPhrase": "Frasen för säkerhet i detta e-postmeddelande är {{phrase}}. Du kan lita på detta e-postmeddelande om frasen stämmer överens med den fras som visas vid inloggning.",
-  "emails.magicSession.optionUrl": "Si no puedes iniciar sesión utilizando el botón de arriba, por favor visita el siguiente enlace:",
+  "emails.magicSession.optionUrl": "Om du inte kan logga in med knappen ovan, besök följande länk:",
🟡 Minor comments (11)
app/config/locale/translations/sl.json-6-27 (1)

6-27: Existing issue: Empty translation strings.

Many translation keys in this file have empty values (e.g., lines 6-27). This pre-existing issue means users would see blank text for these email templates. Consider completing these translations in a follow-up.

Would you like me to help generate a report of all empty translation keys across locale files?

app/config/locale/translations/sa.json-236-241 (1)

236-241: Existing issue: Arabic text in Sanskrit locale.

Lines 236-241 contain Arabic translations in a Sanskrit (sa) locale file. This pre-existing issue should be corrected.

app/config/locale/translations/sn.json-236-241 (1)

236-241: Existing issue: French text in Shona locale.

Lines 236-241 contain French translations in a Shona (sn) locale file. This appears to be a pre-existing issue unrelated to the current PR, but should be corrected for consistency.

Would you like me to help identify the correct Shona translations or open a separate issue to track this?

app/config/locale/translations/ja.json-249-258 (1)

249-258: Session alert keys added correctly; consider trimming the trailing space in emails.sessionAlert.body.

emails.sessionAlert.body ends with "session: " (note trailing space), which can lead to awkward spacing depending on how the template concatenates/render lists.

app/config/locale/translations/pt-pt.json-14-14 (1)

14-14: Minor: remove extra space in emails.magicSession.hello (“Olá ,” → “Olá,”).

app/config/locale/translations/ja.json-10-10 (1)

10-10: Fix Japanese punctuation typos in greetings/thanks strings (user-visible).

Strings like ご利用いただきありがとうございます。、 / こんにちは。、 read as accidental punctuation (。、).

Also applies to: 15-15, 21-21, 28-28, 243-243, 247-247

app/config/locale/translations/te.json-249-258 (1)

249-258: English fallback text used in Telugu locale.

The session alert email keys contain English text rather than Telugu translations, despite the file containing proper Telugu translations for other email templates. Telugu-speaking users will receive security-critical communications in English.

Recommend adding Telugu translations to align with the existing localization standard in this file and ensure users can properly understand important security notifications.

app/config/locale/translations/ta.json-249-258 (1)

249-258: English fallback text used in Tamil locale.

The session alert email keys contain English text instead of Tamil translations, while the rest of the file provides proper Tamil translations for other email templates. Tamil-speaking users will receive security notifications in English.

Consider adding Tamil translations to maintain localization consistency and ensure users can properly understand security-related communications in their preferred language.

app/config/locale/translations/th.json-249-258 (1)

249-258: English fallback text used in Thai locale.

The session alert email keys contain English text, while other email templates in this file (verification, recovery, invitation, otpSession) have proper Thai translations. This inconsistency means Thai users will receive security alert emails in English.

Consider adding Thai translations for these keys to maintain consistency with the rest of the locale file and provide a better user experience for Thai-speaking users.

app/config/locale/translations/bg.json-246-255 (1)

246-255: Bulgarian locale contains English text for session alert emails.

Lines 246-255 in bg.json use English strings for the sessionAlert email keys, while the preceding otpSession emails are properly translated to Bulgarian. This means Bulgarian users will receive security-critical session alerts in English rather than their selected language.

Add proper Bulgarian translations for these session alert emails to ensure consistent user experience, especially for security-related communications.

app/config/locale/translations/he.json-249-258 (1)

249-258: Add missing Hebrew translation for session alert email.

The session alert email keys are not translated to Hebrew, while all other email templates (verification, magic session, OTP, recovery, invitation) have complete Hebrew translations. Hebrew-speaking users will receive this security-critical email in English.

Additionally, while modern email clients handle mixed LTR/RTL content reasonably well, best practices recommend using explicit direction markup (dir attributes and Unicode isolates) for security-critical emails to ensure proper rendering and prevent bidi-spoofing attacks. Provide Hebrew translations for all emails.sessionAlert.* keys to maintain consistency with the rest of the Hebrew locale.

🧹 Nitpick comments (19)
app/config/locale/translations/lv.json (1)

2-258: Question: Why are formatting-only changes included?

The AI summary indicates that this file contains only indentation/formatting changes with no semantic modifications. The session alert keys (lines 249-258) were already present in English. These formatting changes add noise to the PR without addressing the stated objective of adding missing session alert translations.

Consider excluding pure formatting changes from this PR to keep the diff focused on the actual bug fix (adding missing keys).

[scratchpad_end] -->

app/config/locale/translations/si.json (1)

2-258: Question: Why are formatting-only changes included?

Similar to lv.json, this file contains only indentation/formatting changes with no new keys added. The session alert keys were already present. Consider excluding these formatting changes to keep the PR focused.

app/config/locale/translations/nl.json (1)

2-258: Question: Why are formatting-only changes included?

This file contains only formatting/indentation changes with no new keys added. The session alert keys were already present in English. These changes don't contribute to the PR's stated objective of adding missing session alert translations. Consider excluding formatting-only changes.

app/config/locale/translations/nn.json (1)

255-264: Session alert keys successfully added with English fallbacks.

The complete set of emails.sessionAlert.* keys has been added, which fixes the production bug where missing keys caused unresolved placeholders in session alert emails. The English fallback approach is appropriate for immediate bug resolution.

For optimal user experience, these strings should be translated to Norwegian Nynorsk in a follow-up.

Would you like me to help identify which locale files across the entire PR still need proper translations for the session alert keys, or assist in creating a tracking issue for translation work?

app/config/locale/translations/be.json (1)

255-264: Consider localizing session alert translations.

The session alert keys use English fallback text, while other email translations in this locale file use Belarusian. For consistency and better user experience, consider translating these strings to Belarusian in a follow-up.

app/config/locale/translations/sa.json (1)

249-258: Question: Replacing existing Sanskrit translations with English.

The AI summary indicates that existing Devanagari (Sanskrit) translations for sessionAlert keys are being replaced with English strings. While this ensures consistency across locales, it represents a regression in localization quality for Sanskrit users. Consider whether the original Sanskrit translations were functional or if they had issues requiring replacement.

If the original Sanskrit translations were valid, consider retaining them instead of replacing with English fallback.

app/config/locale/translations/it.json (1)

249-258: LGTM: session alert keys present with consistent placeholders; consider Italian translations later.

This fixes missing-key placeholder rendering; if desired, you can follow up with localized IT strings (subject/preview/footer are especially visible).

app/config/locale/translations/ar-ma.json (1)

37-46: Consider reordering session alert keys for consistency.

The emails.sessionAlert.preview key appears on line 46 after emails.sessionAlert.signature, whereas in other locale files it follows immediately after subject. While JSON objects are unordered and this doesn't affect functionality, maintaining consistent key ordering across locale files improves maintainability and makes diff comparisons easier.

♻️ Suggested reordering
   "emails.sessionAlert.subject": "{{project}} Session Alert",
+  "emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
   "emails.sessionAlert.hello": "Hello,",
   "emails.sessionAlert.body": "We detected a new session on your {{project}} account. If this wasn't you, you can safely ignore this email.",
   "emails.sessionAlert.listDevice": "Device: {{device}}",
   "emails.sessionAlert.listIpAddress": "IP Address: {{ipAddress}}",
   "emails.sessionAlert.listCountry": "Country: {{country}}",
   "emails.sessionAlert.footer": "If you did not initiate this session, you can safely ignore this email.",
   "emails.sessionAlert.thanks": "Thanks,",
   "emails.sessionAlert.signature": "{{project}} team",
-  "emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
app/config/locale/translations/pl.json (1)

1-248: Full file reformatting detected.

All lines are marked as modified, suggesting the entire file underwent reformatting (indentation or spacing changes). While this doesn't introduce functional issues, it makes the diff harder to review.

app/config/locale/translations/id.json (1)

249-258: Consider translating session alert keys to Indonesian.

While using English as a fallback resolves the production bug (issue #8659), Indonesian-speaking users will receive session alert emails in English. For a fully localized experience, these keys should ideally be translated to Indonesian.

Would you like me to help coordinate translation of these keys to Indonesian, or open a follow-up issue to track this localization work?

app/config/locale/translations/ms.json (1)

249-258: Consider translating session alert keys to Malay.

The session alert keys are currently in English as a fallback. Malay-speaking users will receive session alert emails in English rather than their native language. Consider adding proper Malay translations for an improved user experience.

app/config/locale/translations/lt.json (1)

249-258: Consider translating session alert keys to Lithuanian.

Session alert emails will display in English for Lithuanian users. While this fixes the immediate production issue, proper Lithuanian translations would improve the user experience for native speakers.

app/config/locale/translations/af.json (1)

249-258: Consider translating session alert keys to Afrikaans.

The session alert keys use English text. While Afrikaans speakers often understand English, native Afrikaans translations would provide a more consistent and professional localized experience.

app/config/locale/translations/sk.json (1)

249-258: Consider translating session alert keys to Slovak.

Slovak users will receive session alert emails in English with the current implementation. For a fully localized experience, these keys should be translated to Slovak.

app/config/locale/translations/el.json (1)

249-258: Session alert translations are in English for Greek locale.

The newly added session alert keys use English text rather than Greek translations. While this provides a functional fallback per the PR objectives, Greek-speaking users will receive English security emails. Consider flagging this locale for future translation work.

app/config/locale/translations/bs.json (1)

246-255: Session alert translations are in English for Bosnian locale.

The newly added session alert keys use English text rather than Bosnian translations. While this provides a functional fallback per the PR objectives, Bosnian-speaking users will receive English security emails. Consider flagging this locale for future translation work.

app/config/locale/translations/da.json (1)

249-258: Session alert translations are in English for Danish locale.

The newly added session alert keys use English text rather than Danish translations. While this provides a functional fallback per the PR objectives, Danish-speaking users will receive English security emails. Consider flagging this locale for future translation work.

app/config/locale/translations/sd.json (1)

255-264: Session alert translations are in English for Sindhi locale.

The newly added session alert keys use English text rather than Sindhi translations. While this provides a functional fallback per the PR objectives, Sindhi-speaking users will receive English security emails. Consider flagging this locale for future translation work.

app/config/locale/translations/pa.json (1)

246-255: Session alert translations are in English for Punjabi locale.

The newly added session alert keys use English text rather than Punjabi translations. While this provides a functional fallback per the PR objectives, Punjabi-speaking users will receive English security emails. Consider flagging this locale for future translation work.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f019120 and cd8b211.

📒 Files selected for processing (72)
  • app/config/locale/translations/af.json
  • app/config/locale/translations/ar-ma.json
  • app/config/locale/translations/ar.json
  • app/config/locale/translations/as.json
  • app/config/locale/translations/az.json
  • app/config/locale/translations/be.json
  • app/config/locale/translations/bg.json
  • app/config/locale/translations/bh.json
  • app/config/locale/translations/bn.json
  • app/config/locale/translations/bs.json
  • app/config/locale/translations/ca.json
  • app/config/locale/translations/cs.json
  • app/config/locale/translations/da.json
  • app/config/locale/translations/de.json
  • app/config/locale/translations/el.json
  • app/config/locale/translations/eo.json
  • app/config/locale/translations/es.json
  • app/config/locale/translations/fa.json
  • app/config/locale/translations/fi.json
  • app/config/locale/translations/fo.json
  • app/config/locale/translations/fr.json
  • app/config/locale/translations/ga.json
  • app/config/locale/translations/gu.json
  • app/config/locale/translations/he.json
  • app/config/locale/translations/hi.json
  • app/config/locale/translations/hr.json
  • app/config/locale/translations/hu.json
  • app/config/locale/translations/hy.json
  • app/config/locale/translations/id.json
  • app/config/locale/translations/is.json
  • app/config/locale/translations/it.json
  • app/config/locale/translations/ja.json
  • app/config/locale/translations/jv.json
  • app/config/locale/translations/km.json
  • app/config/locale/translations/kn.json
  • app/config/locale/translations/ko.json
  • app/config/locale/translations/la.json
  • app/config/locale/translations/lb.json
  • app/config/locale/translations/lt.json
  • app/config/locale/translations/lv.json
  • app/config/locale/translations/ml.json
  • app/config/locale/translations/mr.json
  • app/config/locale/translations/ms.json
  • app/config/locale/translations/nb.json
  • app/config/locale/translations/ne.json
  • app/config/locale/translations/nl.json
  • app/config/locale/translations/nn.json
  • app/config/locale/translations/or.json
  • app/config/locale/translations/pa.json
  • app/config/locale/translations/pl.json
  • app/config/locale/translations/pt-br.json
  • app/config/locale/translations/pt-pt.json
  • app/config/locale/translations/ro.json
  • app/config/locale/translations/ru.json
  • app/config/locale/translations/sa.json
  • app/config/locale/translations/sd.json
  • app/config/locale/translations/si.json
  • app/config/locale/translations/sk.json
  • app/config/locale/translations/sl.json
  • app/config/locale/translations/sn.json
  • app/config/locale/translations/sq.json
  • app/config/locale/translations/sv.json
  • app/config/locale/translations/ta.json
  • app/config/locale/translations/te.json
  • app/config/locale/translations/th.json
  • app/config/locale/translations/tl.json
  • app/config/locale/translations/tr.json
  • app/config/locale/translations/uk.json
  • app/config/locale/translations/ur.json
  • app/config/locale/translations/vi.json
  • app/config/locale/translations/zh-cn.json
  • app/config/locale/translations/zh-tw.json
🧰 Additional context used
🪛 Biome (2.1.2)
app/config/locale/translations/is.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/fo.json

[error] 247-247: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/ca.json

[error] 250-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/da.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/es.json

[error] 249-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/fr.json

[error] 250-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/ga.json

[error] 252-252: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/de.json

[error] 250-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/bs.json

[error] 246-246: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/hr.json

[error] 249-250: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/id.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/hu.json

[error] 252-252: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/fi.json

[error] 246-247: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/az.json

[error] 252-253: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/eo.json

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

app/config/locale/translations/cs.json

[error] 248-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: scan
🔇 Additional comments (30)
app/config/locale/translations/la.json (1)

255-264: Session alert translations added correctly.

The session alert keys are properly structured with correct JSON syntax. Line 254 has the required comma, and line 264 correctly omits the trailing comma.

app/config/locale/translations/sn.json (1)

249-258: Session alert translations added correctly.

The session alert keys are properly structured with correct JSON syntax.

app/config/locale/translations/sl.json (1)

246-255: Session alert translations added correctly.

The session alert keys are properly structured with correct JSON syntax.

app/config/locale/translations/ru.json (1)

249-258: LGTM: session alert keys added; placeholders look consistent.

Good fallback coverage to avoid unresolved placeholders in RU session alert emails.

app/config/locale/translations/pt-pt.json (1)

249-258: LGTM: session alert keys present with consistent placeholders.

app/config/locale/translations/ga.json (1)

249-259: Session alert translations added successfully as English fallbacks.

The session alert keys have been added with English content, which aligns with the PR objective to use English as a fallback where translations are absent. Once the syntax error on line 248 is fixed, these additions will resolve the production bug for the Irish locale.

app/config/locale/translations/ar.json (1)

31-40: Session alert translations added successfully as English fallbacks.

The session alert keys have been added with English content, which aligns with the PR objective to use English as a fallback where Arabic translations are not yet available. These additions will resolve the production bug for the Arabic locale by ensuring keys exist rather than rendering as unresolved placeholders.

app/config/locale/translations/sq.json (1)

246-255: Session alert translations added successfully as English fallbacks.

The session alert keys have been added with English content, which aligns with the PR objective to use English as a fallback where Albanian translations are not yet available. These additions will resolve the production bug for the Albanian locale.

app/config/locale/translations/lb.json (1)

248-257: Session alert translations added successfully as English fallbacks.

The session alert keys have been added with English content, which aligns with the PR objective to use English as a fallback where Luxembourgish translations are not yet available. These additions will resolve the production bug for the Luxembourgish locale.

app/config/locale/translations/ko.json (1)

249-258: LGTM! Session alert translations added successfully.

The English fallback translations for session alert emails have been added correctly, ensuring the production bug with unresolved placeholders is fixed for the Korean locale.

app/config/locale/translations/nb.json (1)

249-258: LGTM! Session alert translations added successfully.

The English fallback translations for session alert emails have been added correctly, ensuring the production bug with unresolved placeholders is fixed for the Norwegian Bokmål locale.

app/config/locale/translations/es.json (1)

249-258: Session alert translations added (pending syntax fix).

The English fallback translations for session alert emails have been added correctly. However, ensure the JSON syntax error on Line 248 is fixed before merging.

app/config/locale/translations/hr.json (1)

249-258: Session alert translations added (pending syntax fix).

The English fallback translations for session alert emails have been added correctly. However, ensure the JSON syntax error on Line 248 is fixed before merging.

app/config/locale/translations/ro.json (1)

249-258: LGTM! Session alert translations added successfully.

The English fallback translations for session alert emails have been added correctly, ensuring the production bug with unresolved placeholders is fixed for the Romanian locale.

app/config/locale/translations/bh.json (1)

255-264: English strings used as intended fallback.

The sessionAlert keys use English text rather than Bengali translations. This aligns with the PR objective of using English strings as fallbacks where translations are absent.

app/config/locale/translations/as.json (1)

255-264: English strings used as intended fallback.

The sessionAlert keys use English text rather than Assamese translations, consistent with the PR's approach of using English as a fallback.

app/config/locale/translations/fo.json (1)

246-255: English strings used as intended fallback.

The sessionAlert keys use English text rather than Faroese translations, consistent with the PR's fallback strategy.

app/config/locale/translations/pl.json (1)

249-258: English strings used as intended fallback.

The sessionAlert keys use English text rather than Polish translations, which aligns with the PR objective of providing English fallbacks where locale-specific translations are absent.

app/config/locale/translations/fr.json (1)

249-258: English strings used as intended fallback.

The sessionAlert keys use English text rather than French translations, consistent with the PR's approach of using English as a fallback for missing translations.

app/config/locale/translations/ne.json (1)

249-258: Session alert keys added correctly.

The English fallback strings for emails.sessionAlert.* are properly added. This resolves the missing translation keys that caused unresolved placeholders in session alert emails for Nepali users.

app/config/locale/translations/sv.json (1)

249-258: Session alert keys added correctly.

The English fallback strings for emails.sessionAlert.* are properly structured with valid JSON syntax.

app/config/locale/translations/km.json (1)

246-255: Session alert keys added correctly.

The English fallback strings for emails.sessionAlert.* are properly added with valid JSON syntax. This resolves the missing translation keys for Khmer users.

app/config/locale/translations/pt-br.json (1)

249-258: Session alert keys added correctly.

The English fallback strings for emails.sessionAlert.* are properly added with valid JSON syntax. This resolves the missing translation keys for Brazilian Portuguese users.

app/config/locale/translations/pa.json (1)

245-246: Critical JSON syntax error: missing comma.

Line 245 (emails.otpSession.signature) is missing a trailing comma before the next key on Line 246. This will cause the JSON file to fail parsing and prevent the Punjabi locale from loading.

🐛 Proposed fix
-  "emails.otpSession.signature": "{{project}} ਟੀਮ"
+  "emails.otpSession.signature": "{{project}} ਟੀਮ",
   "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",

Likely an incorrect or invalid review comment.

app/config/locale/translations/sd.json (1)

254-255: Critical JSON syntax error: missing comma.

Line 254 (sms.verification.body) is missing a trailing comma before the next key on Line 255. This will cause the JSON file to fail parsing and prevent the Sindhi locale from loading.

🐛 Proposed fix
-  "sms.verification.body": "{{secret}}"
+  "sms.verification.body": "{{secret}}",
   "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",

Likely an incorrect or invalid review comment.

app/config/locale/translations/mr.json (2)

249-258: Session alert keys look good (and JSON is valid for this block).


2-258: The file is a proper new creation (not a modification), containing a complete Marathi locale file with all standard translations including the new emails.sessionAlert.* entries. No unintended modifications detected—the scope is appropriate for its stated purpose.

app/config/locale/translations/ml.json (1)

255-264: LGTM! Session alert translations added correctly.

The addition of all 10 required emails.sessionAlert.* keys with English fallback values aligns with the PR objectives to fix missing translation keys across all locales.

app/config/locale/translations/kn.json (1)

249-258: LGTM! Session alert translations added correctly.

The addition of all 10 required emails.sessionAlert.* keys with English fallback values aligns with the PR objectives to fix missing translation keys across all locales.

app/config/locale/translations/or.json (1)

249-258: LGTM! Session alert translations added correctly.

The addition of all 10 required emails.sessionAlert.* keys with English fallback values aligns with the PR objectives to fix missing translation keys across all locales.

Comment on lines 254 to +255
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Missing comma causes JSON parse error.

Line 254 is missing a trailing comma before the new emails.sessionAlert.subject key on line 255, which will cause JSON parsing to fail.

🐛 Proposed fix
-    "sms.verification.body": "{{secret}}"
+    "sms.verification.body": "{{secret}}",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"sms.verification.body": "{{secret}}",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/as.json around lines 254 - 255, The JSON for
the translations is malformed because the "sms.verification.body" entry is
missing a trailing comma before the next key; add a comma after the
"sms.verification.body": "{{secret}}" entry so the following
"emails.sessionAlert.subject": "Security alert: new session on your {{project}}
account" key is valid JSON (ensure proper comma placement and that both keys
remain quoted exactly as "sms.verification.body" and
"emails.sessionAlert.subject").

Comment on lines 248 to +259
"emails.otpSession.signature": "{{project}} komandası"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: Missing comma after line 248.

Line 248 ("emails.otpSession.signature": "{{project}} komandası") is missing a comma before the new emails.sessionAlert.subject key on line 249. Additionally, line 259 has a trailing comma after emails.sessionAlert.signature. These syntax errors will prevent the JSON file from parsing, breaking email localizations for the Azerbaijani locale.

🐛 Fix the JSON syntax errors
-    "emails.otpSession.signature": "{{project}} komandası"
+    "emails.otpSession.signature": "{{project}} komandası",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
     "emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
     "emails.sessionAlert.hello": "Hello {{user}},",
     "emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
     "emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
     "emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
     "emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
     "emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
     "emails.sessionAlert.thanks": "Thanks,",
-    "emails.sessionAlert.signature": "{{project}} team",
+    "emails.sessionAlert.signature": "{{project}} team"
 
 }
📝 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
"emails.otpSession.signature": "{{project}} komandası"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",
"emails.otpSession.signature": "{{project}} komandası",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team"
🧰 Tools
🪛 Biome (2.1.2)

[error] 252-253: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

🤖 Prompt for AI Agents
In @app/config/locale/translations/az.json around lines 248 - 259, Add the
missing comma after the "emails.otpSession.signature" entry and remove the
trailing comma after "emails.sessionAlert.signature" so the JSON parses;
specifically, ensure there's a comma following the
"emails.otpSession.signature": "{{project}} komandası" line and that the final
object property "emails.sessionAlert.signature": "{{project}} team" does not
have a trailing comma.

Comment on lines 254 to +265
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify JSON syntax for be.json

echo "=== Validating be.json JSON syntax ==="
if jq empty app/config/locale/translations/be.json 2>&1; then
  echo "✓ JSON is valid"
else
  echo "✗ JSON syntax error detected"
fi

echo -e "\n=== Lines 250-270 with context ==="
sed -n '250,270p' app/config/locale/translations/be.json | cat -n

Repository: appwrite/appwrite

Length of output: 1855


Fix JSON syntax errors: missing comma on line 254 and trailing comma on line 264.

Line 254 (sms.verification.body) is missing a trailing comma before the new emails.sessionAlert keys. Additionally, line 264 (emails.sessionAlert.signature) has a trailing comma before the closing brace, which is invalid JSON syntax. The jq validator confirms the parse error: "Expected separator between values at line 255, column 33".

Add a comma after "{{secret}}" on line 254 and remove the comma after "{{project}} team" on line 264.

🤖 Prompt for AI Agents
In @app/config/locale/translations/be.json around lines 254 - 265, Fix the JSON
syntax by adding a comma after the "sms.verification.body" entry value
("{{secret}}") so it properly separates from the following "emails.sessionAlert"
block, and remove the trailing comma after the "emails.sessionAlert.signature"
value ("{{project}} team") so the final object entry does not end with a
dangling comma; ensure the file parses with a JSON validator after these two
changes.

Comment on lines 254 to +255
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Missing comma causes JSON parse error.

Line 254 is missing a trailing comma before the new emails.sessionAlert.subject key on line 255, which will cause JSON parsing to fail.

🐛 Proposed fix
-    "sms.verification.body": "{{secret}}"
+    "sms.verification.body": "{{secret}}",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"sms.verification.body": "{{secret}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"sms.verification.body": "{{secret}}",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🤖 Prompt for AI Agents
In @app/config/locale/translations/bh.json around lines 254 - 255, The JSON is
invalid because the "sms.verification.body" entry is missing a trailing comma
before the next key; add a comma after the value for "sms.verification.body" so
the "emails.sessionAlert.subject" key is a separate property and the file parses
as valid JSON.

Comment on lines 248 to +259
"emails.otpSession.signature": "{{project}} দল"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix JSON validity: add comma before inserted block + remove trailing comma on last property.

Proposed fix
-    "emails.otpSession.signature": "{{project}} দল"
+    "emails.otpSession.signature": "{{project}} দল",
@@
-    "emails.sessionAlert.signature": "{{project}} team",
+    "emails.sessionAlert.signature": "{{project}} team"
🤖 Prompt for AI Agents
In @app/config/locale/translations/bn.json around lines 248 - 259, The JSON is
invalid because the inserted block after "emails.otpSession.signature" is
missing a comma and the last property "emails.sessionAlert.signature" has a
trailing comma; open the translations object and add a comma immediately after
the "emails.otpSession.signature" entry, and remove the trailing comma after
"emails.sessionAlert.signature" so the block containing keys like
"emails.sessionAlert.subject", "emails.sessionAlert.body", and
"emails.sessionAlert.signature" becomes valid JSON.

Comment on lines 248 to +249
"emails.otpSession.signature": "tim {{project}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: missing comma.

Line 248 is missing a trailing comma, which is required before the next property on line 249. This will cause JSON parsing to fail and the Indonesian locale file will be unusable.

🐛 Proposed fix
-  "emails.otpSession.signature": "tim {{project}}"
+  "emails.otpSession.signature": "tim {{project}}",
   "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
📝 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
"emails.otpSession.signature": "tim {{project}}"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.otpSession.signature": "tim {{project}}",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
🧰 Tools
🪛 Biome (2.1.2)

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

🤖 Prompt for AI Agents
In @app/config/locale/translations/id.json around lines 248 - 249, The JSON for
the Indonesian locale has a missing comma between the
"emails.otpSession.signature" and "emails.sessionAlert.subject" entries; add the
trailing comma after the "emails.otpSession.signature" value so the object
property separator is present (i.e., ensure "emails.otpSession.signature": "tim
{{project}}", appears before "emails.sessionAlert.subject": ...).

Comment on lines 245 to +256
"emails.otpSession.signature": "{{project}} liðið"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical JSON syntax error: Missing comma after line 245.

Line 245 ("emails.otpSession.signature": "{{project}} liðið") is missing a comma before the new emails.sessionAlert.subject key on line 246. Additionally, line 256 has a trailing comma after emails.sessionAlert.signature. These syntax errors will prevent the JSON file from parsing, breaking email localizations for the Icelandic locale.

🐛 Fix the JSON syntax errors
-    "emails.otpSession.signature": "{{project}} liðið"
+    "emails.otpSession.signature": "{{project}} liðið",
     "emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
     "emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
     "emails.sessionAlert.hello": "Hello {{user}},",
     "emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
     "emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
     "emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
     "emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
     "emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
     "emails.sessionAlert.thanks": "Thanks,",
-    "emails.sessionAlert.signature": "{{project}} team",
+    "emails.sessionAlert.signature": "{{project}} team"
 
 }
📝 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
"emails.otpSession.signature": "{{project}} liðið"
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",
"emails.otpSession.signature": "{{project}} liðið",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team"
🧰 Tools
🪛 Biome (2.1.2)

[error] 249-249: expected , but instead found "emails.sessionAlert.subject"

Remove "emails.sessionAlert.subject"

(parse)

🤖 Prompt for AI Agents
In @app/config/locale/translations/is.json around lines 245 - 256, Add the
missing comma after the "emails.otpSession.signature" entry and remove the
trailing comma after the "emails.sessionAlert.signature" entry so the JSON is
valid; specifically insert a comma after the key "emails.otpSession.signature":
"{{project}} liðið" and delete the extra comma following
"emails.sessionAlert.signature": "{{project}} team", then validate the file
parses as JSON.

Comment on lines +249 to +258
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's check if the file exists and examine its structure
head -20 app/config/locale/translations/jv.json
wc -l app/config/locale/translations/jv.json

Repository: appwrite/appwrite

Length of output: 178


🏁 Script executed:

# Let's also check other locale files to understand the pattern
ls -la app/config/locale/translations/ | head -20

Repository: appwrite/appwrite

Length of output: 1165


🏁 Script executed:

# Check the English translations file for comparison
head -30 app/config/locale/translations/en.json

Repository: appwrite/appwrite

Length of output: 2611


🏁 Script executed:

# Check the Javanese translations file at the specified lines
sed -n '249,258p' app/config/locale/translations/jv.json

Repository: appwrite/appwrite

Length of output: 995


🏁 Script executed:

# Also check a wider context around those lines
sed -n '240,270p' app/config/locale/translations/jv.json

Repository: appwrite/appwrite

Length of output: 2122


🏁 Script executed:

# Check the English file for the same keys to compare
sed -n '28,37p' app/config/locale/translations/en.json

Repository: appwrite/appwrite

Length of output: 1015


🏁 Script executed:

# Search for translation-related documentation or workflows
find . -type f \( -name "*.md" -o -name "*.txt" -o -name "TRANSLATION*" -o -name "CONTRIBUTING*" \) | head -20

Repository: appwrite/appwrite

Length of output: 543


🏁 Script executed:

# Look for any translation scripts or tools
find . -type f \( -name "*translat*" -o -name "*i18n*" -o -name "*locale*" \) -path "*/scripts/*" -o -path "*/tools/*" | head -20

Repository: appwrite/appwrite

Length of output: 43


🏁 Script executed:

# Check the CONTRIBUTING.md for translation guidance
cat CONTRIBUTING.md | head -100

Repository: appwrite/appwrite

Length of output: 4751


🏁 Script executed:

# Look for any translation-related scripts or configuration
find . -type f -name "*.json" | grep -i "i18n\|translation\|locale" | grep -v "translations/"

Repository: appwrite/appwrite

Length of output: 147


🏁 Script executed:

# Check if there's a crowdsourcing or translation platform integration
rg -i "crowdin\|lokalise\|transifex\|phrase" --type json --type md --type yaml | head -20

Repository: appwrite/appwrite

Length of output: 43


🏁 Script executed:

# Search for localization-related configuration files
find . -type f \( -name ".crowdinrc*" -o -name "crowdin.yml" -o -name "*.lokalise*" \)

Repository: appwrite/appwrite

Length of output: 43


🏁 Script executed:

# Check git history or comments around these translation files for context
git log --oneline app/config/locale/translations/jv.json | head -20

Repository: appwrite/appwrite

Length of output: 134


Incomplete translations for sessionAlert keys in Javanese file.

The sessionAlert keys in jv.json are in English, not Javanese. While other email keys in the same file (like otpSession) are properly translated to Javanese, these sessionAlert keys remain untranslated. This creates inconsistency within the Javanese translation file and should be addressed by adding actual Javanese translations.

No formal translation workflows or platforms (Crowdin, Lokalise, etc.) were found in the Appwrite repository, so translations would need to be contributed directly to the localization files.

Comment on lines +236 to +241
"emails.magicSession.optionButton": "Kliknite na gumb ispod kako biste se sigurno prijavili na svoj {{project}} račun. Istječe za 1 sat.",
"emails.magicSession.buttonText": "Inicia sesión en {{project}}",
"emails.magicSession.clientInfo": "Tento přihlašovací požadavek byl zaznamenán pomocí {{agentClient}} na {{agentDevice}} {{agentOs}}. Pokud jste o přihlášení nepožádali, můžete tento e-mail bezpečně ignorovat.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Frase de segurança para este e-mail é {{phrase}}. Você pode confiar neste e-mail se essa frase coincidir com a frase mostrada durante o acesso.",
"emails.magicSession.optionUrl": "אם אתם לא מצליחים להיכנס באמצעות הכפתור שמעל, אנא בקרו בקישור הבא:",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's check if the file exists and examine the relevant lines
if [ -f "app/config/locale/translations/or.json" ]; then
  echo "=== File exists. Checking lines 236-241 ==="
  sed -n '236,241p' app/config/locale/translations/or.json
  echo ""
  echo "=== Context around lines 236-241 (lines 230-250) ==="
  sed -n '230,250p' app/config/locale/translations/or.json
else
  echo "File not found at app/config/locale/translations/or.json"
  echo "Looking for or.json files in the repository..."
  find . -name "or.json" -type f 2>/dev/null | head -20
fi

Repository: appwrite/appwrite

Length of output: 2819


🏁 Script executed:

#!/bin/bash
# Check for language consistency issues in locale files

echo "=== Checking for Spanish phrases ==="
rg -l "Inicia sesión" app/config/locale/translations/

echo ""
echo "=== Checking for Croatian phrases ==="
rg -l "Kliknite na gumb" app/config/locale/translations/

echo ""
echo "=== Checking for Czech phrases ==="
rg -l "Tento přihlašovací požadavek" app/config/locale/translations/

echo ""
echo "=== Checking for Portuguese phrases ==="
rg -l "Frase de segurança" app/config/locale/translations/

echo ""
echo "=== Checking for Hebrew phrases ==="
rg -l "אם אתם לא מצליחים" app/config/locale/translations/

echo ""
echo "=== Summary: Check which locale file each phrase appears in ==="
echo "Spanish 'Inicia sesión':"
rg "Inicia sesión" app/config/locale/translations/ --no-heading | head -5

echo ""
echo "Croatian 'Kliknite na gumb':"
rg "Kliknite na gumb" app/config/locale/translations/ --no-heading | head -5

echo ""
echo "Czech 'Tento přihlašovací':"
rg "Tento přihlašovací" app/config/locale/translations/ --no-heading | head -5

Repository: appwrite/appwrite

Length of output: 1676


🏁 Script executed:

# Check the emails.magicSession keys in sv.json and pa.json
echo "=== Swedish (sv.json) - emails.magicSession keys ==="
rg -A 5 "emails\.magicSession\." app/config/locale/translations/sv.json | head -30

echo ""
echo "=== Punjabi (pa.json) - emails.magicSession keys ==="
rg -A 5 "emails\.magicSession\." app/config/locale/translations/pa.json | head -30

echo ""
echo "=== Oriya (or.json) - emails.magicSession keys (for comparison) ==="
rg -A 5 "emails\.magicSession\." app/config/locale/translations/or.json | head -30

Repository: appwrite/appwrite

Length of output: 6083


Critical: Wrong language translations detected across multiple locale files.

The emails.magicSession.* and sms.verification.body keys in app/config/locale/translations/or.json (lines 236-241) contain text in incorrect languages:

  • Line 236: Croatian text for emails.magicSession.optionButton
  • Line 237: Spanish text for emails.magicSession.buttonText
  • Line 238: Czech text for emails.magicSession.clientInfo
  • Line 240: Portuguese text for emails.magicSession.securityPhrase
  • Line 241: Hebrew text for emails.magicSession.optionUrl

This is a systemic issue affecting multiple locale files. Similar corruptions appear in sv.json (Swedish) and pa.json (Punjabi), where the same keys contain Spanish translations instead of the expected language. All corrupted fields should be translated to their respective locale language or use English fallback values for consistency.

🤖 Prompt for AI Agents
In @app/config/locale/translations/or.json around lines 236 - 241, The listed
locale file contains incorrect-language strings for several keys
(emails.magicSession.optionButton, emails.magicSession.buttonText,
emails.magicSession.clientInfo, sms.verification.body,
emails.magicSession.securityPhrase, emails.magicSession.optionUrl); replace each
corrupted value with a correct Oriya translation (or a vetted English fallback)
and apply the same fixes to the equivalent keys in sv.json and pa.json so all
locales have the proper language for those keys; after updating, run the i18n
validation/lint (or our locale consistency script) to ensure no other locale
files contain mismatched-language values.

Comment on lines +236 to +238
"emails.magicSession.optionButton": "Kliknite spodnji gumb, da varno vstopite v svoj {{project}} račun. Poteče čez 1 uro.",
"emails.magicSession.buttonText": "Prijavite se v {{project}}",
"emails.magicSession.clientInfo": "Ta prijava je bila zahtevana z uporabo {{agentClient}} na {{agentDevice}} {{agentOs}}. Če te prijave niste zahtevali, lahko to e-pošto varno prezrete.",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Wrong language content in Sinhala locale file.

Lines 236-238 contain Slovenian text (e.g., "Kliknite spodnji gumb", "Prijavite se v {{project}}") in the Sinhala (si.json) locale file. This is a data correctness issue that will cause Slovenian text to appear for Sinhala users.

🔍 Verify language mismatch across locales
#!/bin/bash
# Check if si.json contains non-Sinhala text by searching for Slovenian patterns
rg -n "Kliknite|Prijavite|Zaščitna fraza" app/config/locale/translations/si.json

# Check if similar issues exist in other locale files
rg -l "Kliknite|Prijavite" app/config/locale/translations/*.json
🤖 Prompt for AI Agents
In @app/config/locale/translations/si.json around lines 236 - 238, The Sinhala
locale file app/config/locale/translations/si.json contains Slovenian text for
the keys "emails.magicSession.optionButton", "emails.magicSession.buttonText",
and "emails.magicSession.clientInfo"; replace those three values with proper
Sinhala translations (or the English originals from en.json as a temporary
fallback) while preserving all placeholders ({{project}}, {{agentClient}},
{{agentDevice}}, {{agentOs}}), punctuation, and UTF-8 encoding; verify the
updated strings read naturally in Sinhala and run a quick grep for the Slovenian
tokens ("Kliknite", "Prijavite") to ensure no leftover Slovenian text remains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 Bug Report: Session Alert template broken for all languages except English

1 participant