-
Notifications
You must be signed in to change notification settings - Fork 1.4k
feat: reset e2ee key flow improvement #6655
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughAdds E2EE localization keys across many locales, updates Enter E2EE Password wording, exposes "Forgot E2EE password?" and "Do it later" actions on the Enter Password screen, registers a Reset Password view in navigation, updates the Security reset UI, adjusts styles, and updates Maestro E2E tests/selectors. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant EnterPwd as E2E Enter Password View
participant Security as E2E Security View
participant ResetView as E2E Reset Password View
User->>EnterPwd: Open Enter E2EE Password screen
Note right of EnterPwd `#DDEBF7`: shows input, "Enable encryption", "Forgot E2EE password?", "Do it later"
alt User provides password
User->>EnterPwd: Enter password & tap "Enable encryption"
EnterPwd->>User: Attempt enable/unlock (E2E enable)
else User taps Forgot
User->>EnterPwd: Tap "Forgot E2EE password?"
EnterPwd->>Security: Navigate to Security → E2E section
Note right of Security `#FFF4E5`: shows Reset description + Reset button
User->>Security: Tap Reset
Security->>Security: Call reset handler -> trigger logout / re-login flow
else User taps Do it later
User->>EnterPwd: Tap "Do it later"
EnterPwd->>User: Navigate back / dismiss
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Areas to review closely:
Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Tip 📝 Customizable high-level summaries are now available in beta!You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. 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. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (22)
app/i18n/locales/ar.json (1)
153-153: Arabic grammar: prefer “كلمة مرور” over “كلمة المرور”.Use the idiomatic construct for compound nouns.
- "E2EE_password": "كلمة المرور E2EE", + "E2EE_password": "كلمة مرور E2EE",app/i18n/locales/te-IN.json (1)
250-251: Unify “పాస్వర్డ్” spelling across keys.Keep one spelling to avoid UI inconsistency.
- "E2EE_password": "E2EE పాస్వర్డ్", + "E2EE_password": "E2EE పాస్వర్డ్",app/i18n/locales/ta-IN.json (1)
278-279: Add “E2EE” to the description for clarity and parity with other locales.Current text omits “E2EE”.
- "Enter_E2EE_Password_description": "உங்கள் கடவுச்சொல்லைப் பதிவு செய்து குறியாக்கச் செய்திகளைப் பார்க்கவும் மற்றும் அனுப்பவும். \n\nஒவ்வொரு சாதனத்திலும் கடவுச்சொல்லை உள்ளிட வேண்டும்.", + "Enter_E2EE_Password_description": "உங்கள் E2EE கடவுச்சொல்லை உள்ளிட்டு குறியாக்கப்பட்ட செய்திகளைப் பார்க்கவும் மற்றும் அனுப்பவும்.\n\nஒவ்வொரு சாதனத்திலும் கடவுச்சொல்லை உள்ளிட வேண்டும்.",app/i18n/locales/ru.json (1)
199-199: Natural Russian phrasing for “Do it later”.“Sделать позже” reads better in UI.
- "Do_it_later": "Сделай это позже", + "Do_it_later": "Сделать позже",app/i18n/locales/sv.json (1)
207-207: Tighten “Forgot E2EE password” phrasing (shorter button).Suggested Swedish is more idiomatic/compact for UI buttons.
- "Forgot_E2EE_password": "Glömt lösenordet för E2EE?", + "Forgot_E2EE_password": "Glömt E2EE-lösenordet?"Also applies to: 231-231, 246-246, 257-257, 298-298, 590-590
app/i18n/locales/zh-CN.json (1)
139-139: Chinese spacing around English acronym in prose.Add a thin space around “E2EE” for consistency with other zh-CN strings (e.g., “E2EE 密码”).
- "Enter_E2EE_Password_description": "输入您的E2EE密码以查看和发送加密消息.\n\n每台设备都需要输入密码。", + "Enter_E2EE_Password_description": "输入您的 E2EE 密码以查看和发送加密消息。\n\n每台设备都需要输入密码。"Also applies to: 162-162, 176-176, 185-185, 220-220, 442-442
app/i18n/locales/sl-SI.json (1)
185-185: Slight word-order tweaks for natural Slovenian.“Slo-fication” reads more naturally with noun after acronym.
- "E2EE_password": "Geslo E2EE", + "E2EE_password": "E2EE geslo", … - "Reset_E2EE_Password": "Ponastavi geslo E2EE", + "Reset_E2EE_Password": "Ponastavi E2EE geslo"Also applies to: 209-209, 224-224, 234-234, 275-275, 559-559
app/i18n/locales/pt-BR.json (1)
248-248: Shorter CTA for button width.“Faça isso mais tarde” can truncate on smaller devices. Suggest a shorter, common phrasing.
- "Do_it_later": "Faça isso mais tarde", + "Do_it_later": "Depois",If you prefer, “Deixar para depois” is another option; validate with UI snapshot for truncation.
Also applies to: 273-273, 289-289, 305-305, 350-350, 685-685
app/i18n/locales/tr.json (1)
143-143: Minor Turkish naturalness and button brevity.
- Make CTA shorter.
- Use simpler passive for “must be entered”.
- "Do_it_later": "Daha sonra yap", + "Do_it_later": "Daha sonra", … - "Enter_E2EE_Password_description": "Şifreli mesajları görüntülemek ve göndermek için E2EE şifrenizi girin.\n\nHer cihazda şifre girişi yapılmalıdır.", + "Enter_E2EE_Password_description": "Şifreli mesajları görüntülemek ve göndermek için E2EE şifrenizi girin.\n\nHer cihazda şifre girilmelidir.",Also applies to: 166-166, 180-180, 189-189, 225-225, 461-461
app/i18n/locales/fi.json (2)
207-207: Shorter Finnish CTA for button fit.“ Myöhemmin” is concise and common on buttons.
- "Do_it_later": "Tee se myöhemmin", + "Do_it_later": "Myöhemmin",Also applies to: 231-231, 247-247, 258-258, 300-300, 591-591
258-258: Typo/consistency check: punctuation style.Ensure full stops are consistent (some lines use “.” vs “.” with spacing). Current line is fine; just flagging for locale-wide consistency as you touch this block.
app/i18n/locales/no.json (1)
238-238: Minor wording nits (NB): consider hyphenation.
- Prefer “E2EE‑passord” over “E2EE passord” for consistency with NN/DE.
- Current text is otherwise clear.
Also applies to: 265-265, 281-281, 301-301, 338-338, 661-661
app/i18n/locales/nn.json (1)
114-114: Fix NN grammar in password description.Use NN forms “skrivast”/“kvar eining”.
Apply this diff:
-"Enter_E2EE_Password_description": "Skriv inn E2EE-passordet ditt for å vise og sende krypterte meldinger.\n\nPassordet må skrives inn på hver enhet.", +"Enter_E2EE_Password_description": "Skriv inn E2EE‑passordet ditt for å vise og sende krypterte meldingar.\n\nPassordet må skrivast inn på kvar eining."Also applies to: 119-119, 128-128, 138-139, 283-284
app/i18n/locales/hu.json (1)
227-227: Tighten HU phrasing for “Do it later”.“Csak később tedd meg” sounds imperative; concise buttons usually use “Később”.
-"Do_it_later": "Csak később tedd meg", +"Do_it_later": "Később",Also applies to: 251-251, 266-266, 278-279, 320-320, 629-629
app/views/E2EResetYourPasswordView.tsx (1)
40-56: Handle non-successful responses explicitly.If success !== true, show an error (current code silently does nothing).
- if (res?.success === true) { - dispatch(logout()); - } + if (res?.success) { + dispatch(logout()); + } else { + showErrorAlert(I18n.t('E2E_encryption_reset_error')); + }app/views/E2EEnterYourPasswordView.tsx (1)
95-101: Screen reader announces the wrong message on E2EE auth failure.Announcing Invalid_URL is misleading. Announce the encryption/password error instead.
Apply:
- AccessibilityInfo.announceForAccessibility(I18n.t('Invalid_URL')); + AccessibilityInfo.announceForAccessibility(I18n.t('Encryption_error_title'));.maestro/tests/E2EEncryption/enter-e2ee-encryption.yaml (1)
106-110: Brittle selector: case mismatch vs locale; prefer testIDs.The UI string is “Reset E2EE Password” (capital P). This step taps 'Reset E2EE password' (lowercase), which may fail. Use the view’s testID and include the confirmation.
-# Reset E2EE password from Enter E2EE password view ... - tapOn: id: 'e2e-enter-your-password-view-forgot-password' -- tapOn: - text: 'Reset E2EE password' -#- tapOn: 'Enter E2EE password' -#- tapOn: 'Forgot E2EE password?' -#- tapOn: -# id: 'e2e-reset-your-password-view-reset-password' -#- tapOn: 'Yes, reset it' +- tapOn: + id: 'e2e-reset-your-password-view-reset-password' +- tapOn: 'Yes, reset it'app/i18n/locales/en.json (1)
314-315: Fix grammar and align with test strings.
- Grammar: “Password need to be entered...” → “The password must be entered on each device.”
- Ensure tests and UI use the same casing for “Reset E2EE Password” (tests currently use lowercase ‘password’).
- "Enter_E2EE_Password_description": "Enter your E2EE password to view and send encrypted messages.\n\nPassword need to be entered on each device.", + "Enter_E2EE_Password_description": "Enter your E2EE password to view and send encrypted messages.\n\nThe password must be entered on each device.",Also applies to: 700-700
app/i18n/locales/es.json (1)
122-122: ES additions LGTM; consider voice consistency.Strings read well. Minor: file mixes “tú” (e.g., ¿Ya tienes...?) and formal “usted” (Ingrese su..., ¿Olvidó...?). Consider aligning to one voice across E2EE strings for consistency.
Also applies to: 126-126, 136-136, 139-140, 170-170, 313-313
app/i18n/locales/it.json (1)
154-154: IT translations OK; tweak “Forgot…” for natural phrasing.Prefer “Hai dimenticato la password E2EE?” over “Dimenticato la password E2EE?”.
- "Forgot_E2EE_password": "Dimenticato la password E2EE?", + "Forgot_E2EE_password": "Hai dimenticato la password E2EE?",Also applies to: 177-177, 191-191, 200-201, 237-237, 478-478
app/i18n/locales/nl.json (1)
547-547: Natural NL phrasing for reset label.Use “E2EE-wachtwoord resetten” (or “opnieuw instellen”) instead of “Wachtwoord voor E2EE Resetten”.
- "Reset_E2EE_Password": "Wachtwoord voor E2EE Resetten", + "Reset_E2EE_Password": "E2EE-wachtwoord resetten",app/i18n/locales/bn-IN.json (1)
251-251: Fix BN typos and keep “E2EE” consistent.
- Prefer keeping “E2EE” in Latin across strings.
- Correct misspelling “ই2ইইই/পাসওয়ার্ড”.
- "E2EE_password": "এন্ড-টু-এন্ড এনক্রিপ্টেড পাসওয়ার্ড", + "E2EE_password": "E2EE পাসওয়ার্ড", - "Enter_E2EE_Password_description": "আপনার ই2ইইই পাসওয়ার্ড প্রবেশ করান গোপন বার্তা দেখতে এবং পাঠানোর জন্য।\n\nপ্রতিটি যন্ত্রে পাসওয়ার্ড প্রবেশ করতে হবে।", + "Enter_E2EE_Password_description": "গোপন বার্তা দেখতে ও পাঠাতে আপনার E2EE পাসওয়ার্ড লিখুন।\n\nপ্রতিটি ডিভাইসে এই পাসওয়ার্ড লিখতে হবে।",Also applies to: 278-279
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (30)
.maestro/tests/E2EEncryption/enter-e2ee-encryption.yaml(1 hunks)app/i18n/locales/ar.json(6 hunks)app/i18n/locales/bn-IN.json(6 hunks)app/i18n/locales/cs.json(6 hunks)app/i18n/locales/de.json(6 hunks)app/i18n/locales/en.json(6 hunks)app/i18n/locales/es.json(4 hunks)app/i18n/locales/fi.json(6 hunks)app/i18n/locales/fr.json(6 hunks)app/i18n/locales/hi-IN.json(6 hunks)app/i18n/locales/hu.json(6 hunks)app/i18n/locales/it.json(6 hunks)app/i18n/locales/ja.json(6 hunks)app/i18n/locales/nl.json(6 hunks)app/i18n/locales/nn.json(5 hunks)app/i18n/locales/no.json(6 hunks)app/i18n/locales/pt-BR.json(6 hunks)app/i18n/locales/pt-PT.json(6 hunks)app/i18n/locales/ru.json(6 hunks)app/i18n/locales/sl-SI.json(6 hunks)app/i18n/locales/sv.json(6 hunks)app/i18n/locales/ta-IN.json(6 hunks)app/i18n/locales/te-IN.json(6 hunks)app/i18n/locales/tr.json(6 hunks)app/i18n/locales/zh-CN.json(6 hunks)app/i18n/locales/zh-TW.json(6 hunks)app/stacks/InsideStack.tsx(2 hunks)app/stacks/types.ts(1 hunks)app/views/E2EEnterYourPasswordView.tsx(4 hunks)app/views/E2EResetYourPasswordView.tsx(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
app/views/E2EResetYourPasswordView.tsx (5)
app/stacks/types.ts (1)
E2EEnterYourPasswordStackParamList(272-275)app/theme.tsx (1)
useTheme(29-29)app/lib/methods/helpers/info.ts (2)
showConfirmationAlert(30-54)showErrorAlert(5-6)app/lib/methods/helpers/log/index.ts (1)
logEvent(35-42)app/lib/services/index.ts (1)
Services(4-7)
app/views/E2EEnterYourPasswordView.tsx (3)
app/stacks/types.ts (1)
E2EEnterYourPasswordStackParamList(272-275)app/containers/TextInput/ControlledFormTextInput.tsx (1)
ControlledFormTextInput(11-19)app/containers/List/List.stories.tsx (1)
Separator(64-68)
⏰ 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: ESLint and Test / run-eslint-and-test
🔇 Additional comments (11)
app/i18n/locales/ja.json (1)
142-176: LGTM: keys and placeholders are consistent with other locales.app/i18n/locales/zh-TW.json (1)
145-192: LGTM: updated keys and multiline description look correct.app/i18n/locales/cs.json (1)
244-294: LGTM: Czech additions read naturally; placeholders and newlines are correct.app/i18n/locales/hi-IN.json (1)
227-227: E2EE additions look good — 'पासवर्ड' spelling is consistent.
Searched app/i18n/locales/hi-IN.json with the suggested regex; all matches use "पासवर्ड" (no "पासवॉर्ड" variants found).app/i18n/locales/de.json (1)
222-222: LGTM on added/updated DE strings.Terminology and punctuation are consistent with existing locale.
Also applies to: 246-246, 261-261, 272-272, 314-314, 616-616
app/stacks/InsideStack.tsx (1)
63-63: Route registration looks correct.Import + screen added to E2EEnterYourPassword stack aligns with types.
Also applies to: 293-294
app/stacks/types.ts (1)
272-275: Type addition is correct.The new route is properly typed for navigation.
app/views/E2EResetYourPasswordView.tsx (1)
28-29: Confirm RN version supportsgapin styles.
gaprequires modern RN. If unsupported, replace with margin spacers.Would you confirm the app’s RN version? If <0.71, I’ll suggest a compatible spacing refactor.
app/views/E2EEnterYourPasswordView.tsx (3)
118-131: Use handleSubmit on onSubmitEditing for consistency.Directly calling submit skips react-hook-form’s submission path. Use handleSubmit here as you did on the button.
[ suggest_optional_refactor ]
- onSubmitEditing={submit} + onSubmitEditing={handleSubmit(submit)}
83-87: Confirm toast on closing without enabling E2EE.This shows e2ee_disabled whenever the screen is not focused and encryption isn’t enabled (e.g., closing with Do it later). If that’s noisy UX, gate it behind an explicit “dismissed” action.
32-37: Gap OK — repo uses react-native@0.79.4gap/rowGap/columnGap were added in RN 0.71 (number/pixel values supported); your use gap: 32 is supported. Percentage gaps require RN 0.75+ and the New Architecture. (reactnative.dev)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
app/views/E2EEncryptionSecurityView/index.tsx (1)
41-59: I found a critical issue. Let me gather more context about the expected behavior:The documentation confirms a critical issue. Let me search for how the API response is actually meant to be handled in the codebase:
Based on my verification, I found a critical issue in the implementation. The API signature shows that
successis an optional property, and according to Rocket.Chat documentation, users are logged out after resetting E2EE password, and if TOTP is enabled, they enter the verification code upon login. However, the code's conditionres?.success === truewon't trigger logout when TOTP is enabled because the API returns an empty object{}in that scenario (as noted in the source comment// {} when TOTP is enabled), makingres?.successundefined.Fix the success check to handle both response cases
When
e2eResetOwnKey()returns{}(TOTP enabled), the logout doesn't execute. Change the condition to trigger logout whenever the API call succeeds, regardless of the response structure:try { const res = await e2eResetOwnKey(); // Logout regardless of whether res.success exists (handles {} when TOTP enabled) dispatch(logout()); } catch (e) { log(e); showErrorAlert(I18n.t('E2E_encryption_reset_error')); }The logout should happen after a successful API call in all scenarios, not conditionally on the presence of
success: true.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
app/views/E2EEncryptionSecurityView/index.tsx(2 hunks)
⏰ 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). (2)
- GitHub Check: ESLint and Test / run-eslint-and-test
- GitHub Check: format
🔇 Additional comments (5)
app/views/E2EEncryptionSecurityView/index.tsx (5)
1-19: LGTM — Imports are well-organized.All imports serve clear purposes in the E2EE reset flow: React hooks, navigation, Redux dispatch for logout, API services, UI helpers, and logging utilities are appropriately included.
21-34: LGTM — Styles follow best practices.The styles use shared constants (PADDING_HORIZONTAL, sharedStyles) for consistency and define appropriate spacing and typography for the reset flow UI.
36-39: LGTM — Component setup is correct.The component properly initializes navigation with typed params, theme colors, and Redux dispatch.
61-65: LGTM — Title setup is correct.Using
useLayoutEffectto set the navigation title is appropriate and ensures synchronous updates before paint.
67-69: LGTM — Cancel handler is straightforward.The cancel function appropriately navigates back.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
♻️ Duplicate comments (5)
app/i18n/locales/te-IN.json (1)
639-639: Fix Reset label; prior feedback still pending.Match existing RESET pattern: use “రీసెట్ చేయండి”.
- "Reset_E2EE_Password": "E2EE పాస్వర్డ్ను పునస్ధాపించండి", + "Reset_E2EE_Password": "E2EE పాస్వర్డ్ను రీసెట్ చేయండి",app/i18n/locales/pt-PT.json (4)
98-98: [DUPLICATE] Unresolved pt-PT possessive & terminology on Confirm_password.This issue was flagged in a previous review. Line 98 still uses Brazilian Portuguese "sua" and "senha" instead of European Portuguese "A sua" and "palavra-passe".
- "Confirm_password": "Confirme sua senha", + "Confirm_password": "Confirme a sua palavra-passe",
151-151: [DUPLICATE] Unresolved typo "posa" → "possa" in E2E_How_It_Works_info2.This issue was flagged in a previous review. Line 151 still contains the typo "posa" which should be "possa" ("que você possa aceder").
- "E2E_How_It_Works_info2": "Isto é *criptografia ponto a ponto* portanto a chave para codificar/descodificar as suas mensagens não será salva no servidor. Por essa razão *você precisa armazenar esta palavra-passe em algum lugar seguro* que você posa aceder mais tarde, se precisar.", + "E2E_How_It_Works_info2": "Isto é *criptografia ponto a ponto* portanto a chave para codificar/descodificar as suas mensagens não será salva no servidor. Por essa razão *você precisa armazenar esta palavra-passe em algum lugar seguro* que você possa aceder mais tarde, se precisar.",
176-176: [DUPLICATE] Unresolved pt-PT terminology & verb on Enter_E2EE_Password.This issue was flagged in a previous review. Line 176 still uses Brazilian Portuguese "Digite" and "senha". It should use European Portuguese "Introduza" and "palavra-passe" (as correctly applied in the new description key on line 177).
- "Enter_E2EE_Password": "Digite a senha E2EE", + "Enter_E2EE_Password": "Introduza a palavra-passe E2EE",
519-519: [DUPLICATE] Unresolved pt-PT possessive on Your_Password_Must_Have.This issue was flagged in a previous review. Line 519 uses Brazilian Portuguese "Sua" instead of European Portuguese "A sua".
- "Your_Password_Must_Have": "Sua palavra-passe deve ter:", + "Your_Password_Must_Have": "A sua palavra-passe deve ter:",
🧹 Nitpick comments (3)
app/i18n/locales/cs.json (1)
250-250: Prefer concise button label “Později”.More idiomatic and consistent with other short action buttons.
- "Do_it_later": "Udělám to později", + "Do_it_later": "Později",app/i18n/locales/te-IN.json (2)
271-271: Unify terminology: “ఎన్క్రిప్షన్”, “పాస్వర్డ్”.Use consistent transliteration across strings.
- "Enable_encryption_button_label": "గూఢీకరణను ప్రారంభించు", + "Enable_encryption_button_label": "ఎన్క్రిప్షన్ను ప్రారంభించండి", - "E2EE_password": "E2EE పాస్వర్డ్", + "E2EE_password": "E2EE పాస్వర్డ్",Also applies to: 256-256
232-232: Polish tone for action button.Use polite imperative to match other UI verbs.
- "Do_it_later": "తర్వాత చెయ్యి", + "Do_it_later": "తర్వాత చేయండి",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (24)
app/i18n/locales/ar.json(6 hunks)app/i18n/locales/bn-IN.json(6 hunks)app/i18n/locales/cs.json(6 hunks)app/i18n/locales/de.json(6 hunks)app/i18n/locales/en.json(6 hunks)app/i18n/locales/es.json(4 hunks)app/i18n/locales/fi.json(6 hunks)app/i18n/locales/fr.json(6 hunks)app/i18n/locales/hi-IN.json(6 hunks)app/i18n/locales/hu.json(6 hunks)app/i18n/locales/it.json(6 hunks)app/i18n/locales/ja.json(6 hunks)app/i18n/locales/nl.json(6 hunks)app/i18n/locales/no.json(6 hunks)app/i18n/locales/pt-BR.json(6 hunks)app/i18n/locales/pt-PT.json(9 hunks)app/i18n/locales/ru.json(6 hunks)app/i18n/locales/sl-SI.json(6 hunks)app/i18n/locales/sv.json(6 hunks)app/i18n/locales/ta-IN.json(6 hunks)app/i18n/locales/te-IN.json(6 hunks)app/i18n/locales/tr.json(6 hunks)app/i18n/locales/zh-CN.json(6 hunks)app/i18n/locales/zh-TW.json(6 hunks)
🚧 Files skipped from review as they are similar to previous changes (10)
- app/i18n/locales/de.json
- app/i18n/locales/it.json
- app/i18n/locales/sl-SI.json
- app/i18n/locales/zh-TW.json
- app/i18n/locales/nl.json
- app/i18n/locales/sv.json
- app/i18n/locales/zh-CN.json
- app/i18n/locales/ar.json
- app/i18n/locales/hu.json
- app/i18n/locales/bn-IN.json
🔇 Additional comments (14)
app/i18n/locales/te-IN.json (2)
283-283: LGTM on placeholder fix.“{{E2EE}}” interpolation was removed; string now mirrors other locales.
326-326: Descriptions/readability look fine.No issues with Forgot/Description wording; newline formatting OK.
Also applies to: 641-641
app/i18n/locales/tr.json (1)
149-149: LGTM – Turkish additions are consistent and clear.Wording, casing, and newline formatting look correct.
Also applies to: 172-172, 186-186, 195-195, 231-231, 473-475
app/i18n/locales/hi-IN.json (1)
233-233: LGTM – Hindi updates read naturally.Consistent terminology and correct multiline formatting.
Also applies to: 257-257, 272-272, 284-284, 327-327, 640-642
app/i18n/locales/ja.json (1)
148-148: LGTM – Japanese translations are correct and consistent.No issues found.
Also applies to: 158-158, 172-172, 181-182, 218-218, 406-408
app/i18n/locales/es.json (1)
130-130: LGTM – Spanish updates look good.Consistent terminology and clear, user-friendly phrasing.
Also applies to: 134-134, 145-145, 148-148, 179-179, 327-329
app/i18n/locales/fi.json (1)
213-213: LGTM – Finnish translations are consistent and clear.No changes requested.
Also applies to: 237-237, 252-252, 263-263, 306-306, 603-605
app/i18n/locales/ta-IN.json (1)
233-233: LGTM on added/updated E2EE strings.Keys added and wording align with the new flow.
Also applies to: 257-257, 272-272, 284-284, 327-327, 640-640
app/i18n/locales/pt-BR.json (1)
254-254: LGTM — BR-PT translations consistent with E2EE flow.No placeholder mismatches detected.
Also applies to: 279-279, 295-295, 312-312, 357-357, 697-699
app/i18n/locales/no.json (1)
244-244: LGTM — NO locale updates match canonical keys/wiring.Also applies to: 271-271, 287-287, 308-308, 345-345, 673-675
app/i18n/locales/ru.json (1)
205-205: LGTM — RU locale adds/updates are consistent and accurate.Also applies to: 229-229, 244-244, 254-255, 296-296, 590-592
app/i18n/locales/fr.json (1)
181-181: LGTM — FR translations align with flow and placeholders.Also applies to: 205-205, 220-220, 231-231, 271-271, 559-561
app/i18n/locales/en.json (1)
257-257: LGTM — new keys and descriptions read clearly and match the flow.Also applies to: 284-284, 300-300, 366-366, 712-714
app/i18n/locales/pt-PT.json (1)
144-144: New E2EE localization keys look good.The new keys added to support the E2EE password reset flow (Do_it_later, E2EE_password, Enable_encryption_button_label, Forgot_E2EE_password, Reset_E2EE_Password) use correct European Portuguese terminology and phrasing.
Also applies to: 154-154, 168-168, 213-213, 416-416
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (9)
app/i18n/locales/ta-IN.json (1)
642-642: Remove stray placeholder to prevent unresolved token at runtime (unresolved from prior review).The
{{E2EE}}placeholder in this string was flagged in a previous review but remains unaddressed. Other locales don't include interpolation here; leaving it causes the literal string "{{E2EE}}" to render if not provided.Apply this diff:
- "Reset_E2EE_Password_Description": "மீட்டமைத்தல் உங்களை வெளியேற்றும் மற்றும் மீண்டும் உள்நுழைந்த பின் புதிய {{E2EE}} கடவுச்சொல்லைப் உருவாக்கும்.\n\nஉங்களுக்கு ஒன்லைன் உறுப்பினர்களுடன் குறியாக்கப்பட்ட அறைகளில் மறுபடியும் அணுகுமுறை கிடைக்கும், ஆனால் ஒன்லைன் உறுப்பினர்கள் ஏதுமில்லாதவற்றில் இல்லை.", + "Reset_E2EE_Password_Description": "மீட்டமைத்தல் உங்களை வெளியேற்றும் மற்றும் மீண்டும் உள்நுழைந்த பின் புதிய E2EE கடவுச்சொல்லைப் உருவாக்கும்.\n\nஉங்களுக்கு ஒன்லைன் உறுப்பினர்களுடன் குறியாக்கப்பட்ட அறைகளில் மறுபடியும் அணுகுமுறை கிடைக்கும், ஆனால் ஒன்லைன் உறுப்பினர்கள் ஏதுமில்லாதவற்றில் இல்லை.",app/i18n/locales/te-IN.json (1)
640-640: Fix persisting typo in Reset_E2EE_Password translation.This translation continues to use "పునస్ధాపించండి" (restore/reinstate) rather than the intended "రీసెట్ చేయండి" (reset) to align with the RESET key pattern. This mismatch was flagged in a prior review and remains unfixed.
Apply this diff:
- "Reset_E2EE_Password": "E2EE పాస్వర్డ్ను పునస్ధాపించండి", + "Reset_E2EE_Password": "E2EE పాస్వర్డ్ను రీసెట్ చేయండి",app/i18n/locales/pt-PT.json (6)
98-98: Unresolved pt-PT possessive and terminology issue (duplicate).Line 98 still uses Brazilian Portuguese forms: "Sua" (possessive) and "senha" (term). European Portuguese requires "A sua palavra-passe".
- "Confirm_password": "Confirme sua senha", + "Confirm_password": "Confirme a sua palavra-passe",
151-151: Unresolved Portuguese typo in E2E_How_It_Works_info2 (duplicate).Line 151 contains the typo "posa" which should be "possa" in the phrase "que você possa aceder". This was flagged in prior review.
- "E2E_How_It_Works_info2": "Isto é *criptografia ponto a ponto* portanto a chave para codificar/descodificar as suas mensagens não será salva no servidor. Por essa razão *você precisa armazenar esta palavra-passe em algum lugar seguro* que você posa aceder mais tarde, se precisar.", + "E2E_How_It_Works_info2": "Isto é *criptografia ponto a ponto* portanto a chave para codificar/descodificar as suas mensagens não será salva no servidor. Por essa razão *você precisa armazenar esta palavra-passe em algum lugar seguro* que você possa aceder mais tarde, se precisar.",
153-153: Unresolved pt-PT possessive form in E2E_How_It_Works_info4 (duplicate).Line 153 uses Brazilian-style possessive "sua chave" instead of European Portuguese "a sua chave".
- "E2E_How_It_Works_info4": "Você também pode configurar uma nova palavra-passe para sua chave de criptografia a qualquer momento a partir de qualquer navegador que você tenha inserido a palavra-passe existente do E2E.", + "E2E_How_It_Works_info4": "Você também pode configurar uma nova palavra-passe para a sua chave de criptografia a qualquer momento a partir de qualquer navegador que você tenha inserido a palavra-passe existente do E2E.",
176-176: Unresolved Brazilian Portuguese terminology in Enter_E2EE_Password (duplicate).Line 176 uses two Brazilian Portuguese terms: "Digite" (should be "Introduza") and "senha" (should be "palavra-passe").
- "Enter_E2EE_Password": "Digite a senha E2EE", + "Enter_E2EE_Password": "Introduza a palavra-passe E2EE",
418-418: Unresolved awkward grammar in Reset_E2EE_Password_Description (duplicate).Line 418 contains the grammatically awkward phrase "terminá-lo a sessão". European Portuguese prefers "terminar a sua sessão" or "terminar-lhe a sessão" for clarity.
- "Reset_E2EE_Password_Description": "Repor irá terminá-lo a sessão e gerar uma nova palavra-passe E2EE ao iniciar sessão novamente.\n\nVoltará a ter acesso a salas encriptadas com membros online, mas não àquelas sem qualquer membro online.", + "Reset_E2EE_Password_Description": "Repor irá terminar a sua sessão e gerar uma nova palavra-passe E2EE ao iniciar sessão novamente.\n\nVoltará a ter acesso a salas encriptadas com membros online, mas não àquelas sem qualquer membro online.",
520-520: Unresolved pt-PT possessive form in Your_Password_Must_Have (duplicate).Line 520 uses Brazilian-style possessive "Sua" instead of European Portuguese "A sua".
- "Your_Password_Must_Have": "Sua palavra-passe deve ter:", + "Your_Password_Must_Have": "A sua palavra-passe deve ter:",app/i18n/locales/en.json (1)
320-320: Fix grammar in E2EE password description.This is a duplicate of a previous review comment. The grammar error persists: "Password need to be entered" should use the singular verb form "needs".
Apply this diff:
- "Enter_E2EE_Password_description": "Enter your E2EE password to view and send encrypted messages.\n\nPassword need to be entered on each device.", + "Enter_E2EE_Password_description": "Enter your E2EE password to view and send encrypted messages.\n\nPassword needs to be entered on each device.",
🧹 Nitpick comments (4)
app/i18n/locales/ru.json (1)
205-205: Rus copy polish: neutralize “Do it later”.Prefer “Сделать позже” over the imperative “Сделай это позже”.
- "Do_it_later": "Сделай это позже", + "Do_it_later": "Сделать позже",app/i18n/locales/hu.json (1)
233-233: HU microcopy: simplify “Do it later”.“Csak később tedd meg” sounds awkward for a button. Recommend concise “Később”.
- "Do_it_later": "Csak később tedd meg", + "Do_it_later": "Később",app/i18n/locales/nl.json (1)
560-562: NL copy: avoid “Resetten”.Use “opnieuw instellen” and consistent casing.
- "Reset_E2EE_Password": "Wachtwoord voor E2EE Resetten", - "Reset_E2EE_Password_Description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.", + "Reset_E2EE_Password": "E2EE-wachtwoord opnieuw instellen", + "Reset_E2EE_Password_Description": "Het opnieuw instellen meldt u af en genereert een nieuw E2EE‑wachtwoord wanneer u opnieuw inlogt.\n\nU krijgt opnieuw toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.",app/i18n/locales/ja.json (1)
148-148: Optional: unify “Enter E2EE Password” phrasing across locales.If you standardize tone, consider “E2EEパスワードを入力してください” for polite consistency. No blocker.
Also applies to: 158-158, 172-172, 182-182, 218-218, 407-409
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (25)
app/i18n/locales/ar.json(6 hunks)app/i18n/locales/bn-IN.json(6 hunks)app/i18n/locales/cs.json(6 hunks)app/i18n/locales/de.json(6 hunks)app/i18n/locales/en.json(6 hunks)app/i18n/locales/es.json(4 hunks)app/i18n/locales/fi.json(6 hunks)app/i18n/locales/fr.json(6 hunks)app/i18n/locales/hi-IN.json(6 hunks)app/i18n/locales/hu.json(6 hunks)app/i18n/locales/it.json(6 hunks)app/i18n/locales/ja.json(6 hunks)app/i18n/locales/nl.json(6 hunks)app/i18n/locales/nn.json(5 hunks)app/i18n/locales/no.json(6 hunks)app/i18n/locales/pt-BR.json(6 hunks)app/i18n/locales/pt-PT.json(9 hunks)app/i18n/locales/ru.json(6 hunks)app/i18n/locales/sl-SI.json(6 hunks)app/i18n/locales/sv.json(6 hunks)app/i18n/locales/ta-IN.json(6 hunks)app/i18n/locales/te-IN.json(6 hunks)app/i18n/locales/tr.json(6 hunks)app/i18n/locales/zh-CN.json(6 hunks)app/i18n/locales/zh-TW.json(6 hunks)
🚧 Files skipped from review as they are similar to previous changes (8)
- app/i18n/locales/it.json
- app/i18n/locales/es.json
- app/i18n/locales/cs.json
- app/i18n/locales/hi-IN.json
- app/i18n/locales/sl-SI.json
- app/i18n/locales/tr.json
- app/i18n/locales/no.json
- app/i18n/locales/fr.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). (4)
- GitHub Check: E2E Build Android / android-build
- GitHub Check: E2E Build iOS / ios-build
- GitHub Check: ESLint and Test / run-eslint-and-test
- GitHub Check: format
🔇 Additional comments (14)
app/i18n/locales/bn-IN.json (1)
233-233: E2EE localization keys added for Bengali locale.The file adds all required E2EE-related keys for the reset password flow improvement:
Do_it_later,Forgot_E2EE_password,Reset_E2EE_Password, andReset_E2EE_Password_Description- Updated
Enter_E2EE_Password_descriptionwith device-wide entry context- All keys follow the established naming convention and JSON formatting is correct
However, I'm unable to validate the accuracy of the Bengali translations as a non-native speaker. Please verify that the translations are semantically correct and culturally appropriate for the target audience, particularly for:
- Line 327: "E2EE পাসওয়ার্ড ভুলে গেছেন?" (Forgot E2EE password phrasing)
- Lines 641-642: Multi-line reset confirmation and warning text (readability and clarity in Bengali)
Also applies to: 257-257, 272-272, 284-284, 327-327, 641-642
app/i18n/locales/fi.json (1)
213-213: Localization translations are well-executed and properly integrated. The Finnish translations are grammatically correct, idiomatic, and clearly support the E2EE password reset flow improvements. All new keys follow the existing naming convention, maintain alphabetical ordering, and align with the PR objectives (forgot password link, defer-action button, reset flow descriptions).Also applies to: 237-237, 252-252, 263-263, 306-306, 604-605
app/i18n/locales/de.json (1)
228-228: Localization additions are well-executed and align with feature objectives.The German translations for the E2EE password reset flow are accurate, idiomatic, and properly formatted:
- "Später erledigen" (Do it later) and "E2EE-Passwort vergessen?" (Forgot E2EE Password?) provide clear user action labels.
- Multi-line descriptions for
Enter_E2EE_Password_descriptionandReset_E2EE_Password_Descriptionexplain the per-device requirement and reset behavior comprehensively.- All new keys support the corresponding UI/navigation changes referenced in the PR (E2EEncryptionSecurityView, navigation types, etc.).
- JSON structure and formatting are correct throughout.
Also applies to: 252-252, 267-267, 278-278, 321-321, 629-630
app/i18n/locales/te-IN.json (1)
283-283: Previous issue resolved: E2EE localization corrected.The {{E2EE}} interpolation token flagged in the prior review has been correctly addressed. The string now uses the literal "E2EE" term as appropriate for this locale.
app/i18n/locales/nn.json (1)
123-128: JSON localization file properly structured and formatted.The new E2EE-related translation keys are correctly added with proper formatting, escaped newlines, and consistent naming conventions aligned with the PR objectives (Forgot E2EE password flow, password reset, etc.). JSON syntax is valid throughout.
Also applies to: 137-137, 147-147, 170-170, 299-300
app/i18n/locales/pt-BR.json (1)
254-254: All E2EE localization keys verified across pt-BR.json and consistent across all major locale files.Verification confirms:
- All 7 new E2EE keys present in pt-BR.json at specified lines (254, 279, 295, 311, 357, 698-699)
- Portuguese translations are natural and appropriate
- Complete consistency across all major supported locales (en, es, de, fr, ar, ja, zh-CN)
- All key additions properly support the new E2EE password reset UI flow
The localization implementation is complete and consistent.
app/i18n/locales/sv.json (1)
213-213: LGTM for new E2EE strings (SV).Wording, casing, and multiline formatting look correct and consistent.
Also applies to: 237-237, 252-252, 263-263, 305-305, 603-605
app/i18n/locales/ru.json (1)
229-229: LGTM for other RU E2EE updates.Keys read naturally; placeholders and newlines are correct.
Also applies to: 245-245, 255-255, 297-297, 591-593
app/i18n/locales/hu.json (1)
257-257: LGTM for other HU E2EE updates.Translations and formatting look good.
Also applies to: 272-272, 284-284, 327-327, 642-644
app/i18n/locales/ar.json (1)
149-149: LGTM for AR E2EE additions.Wording and RTL punctuation look good; multiline preserved.
Also applies to: 160-160, 174-174, 182-182, 218-218, 456-458
app/i18n/locales/nl.json (1)
181-181: LGTM for other NL E2EE updates.Keys and formatting look consistent.
Also applies to: 205-205, 221-221, 231-231, 271-271
app/i18n/locales/zh-CN.json (1)
145-145: LGTM for ZH‑CN E2EE additions.Translations are natural; placeholders and newlines OK.
Also applies to: 168-168, 183-183, 191-191, 227-227, 455-457
app/i18n/locales/zh-TW.json (1)
151-151: LGTM for ZH‑TW E2EE additions.Wording and Traditional characters are consistent; multiline formatting OK.
Also applies to: 174-174, 189-189, 197-197, 235-235, 473-475
app/i18n/locales/ja.json (1)
148-148: LGTM for JA E2EE additions.Natural phrasing and correct multiline handling.
Also applies to: 158-158, 172-172, 182-182, 218-218, 407-409
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (2)
app/i18n/locales/en.json (2)
259-259: LGTM: new keys and reset copy; please re‑verify all locales include these keys.English strings look good. Re‑run the locale audit to ensure every locale has:
Do_it_later, E2EE_password, Enable_encryption_button_label, Forgot_E2EE_password, Reset_E2EE_Password, Reset_E2EE_Password_Description.#!/bin/bash # Verify presence of required E2EE keys across locales set -euo pipefail cd app/i18n/locales REQ_KEYS=('Do_it_later' 'E2EE_password' 'Enable_encryption_button_label' 'Forgot_E2EE_password' 'Reset_E2EE_Password' 'Reset_E2EE_Password_Description') missing=0 for f in *.json; do for k in "${REQ_KEYS[@]}"; do if ! jq -e --arg k "$k" 'has($k)' "$f" >/dev/null 2>&1; then printf "MISSING: %-34s in %s\n" "$k" "$f" ((missing++)) fi done done if (( missing == 0 )); then echo "✓ All required keys present in all locales" else echo "✗ Missing occurrences: $missing" echo "Tip: seed placeholders from en.json for any missing locales to avoid runtime fallbacks." fiAlso applies to: 286-286, 303-303, 368-368, 715-717
322-322: Fix grammar in E2EE password description.Use “needs”.
Apply this diff:
- "Enter_E2EE_Password_description": "Enter your E2EE password to view and send encrypted messages.\n\nPassword need to be entered on each device.", + "Enter_E2EE_Password_description": "Enter your E2EE password to view and send encrypted messages.\n\nPassword needs to be entered on each device.",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (25)
app/i18n/locales/ar.json(6 hunks)app/i18n/locales/bn-IN.json(6 hunks)app/i18n/locales/cs.json(6 hunks)app/i18n/locales/de.json(6 hunks)app/i18n/locales/en.json(6 hunks)app/i18n/locales/es.json(4 hunks)app/i18n/locales/fi.json(6 hunks)app/i18n/locales/fr.json(6 hunks)app/i18n/locales/hi-IN.json(6 hunks)app/i18n/locales/hu.json(6 hunks)app/i18n/locales/it.json(6 hunks)app/i18n/locales/ja.json(6 hunks)app/i18n/locales/nl.json(6 hunks)app/i18n/locales/nn.json(5 hunks)app/i18n/locales/no.json(6 hunks)app/i18n/locales/pt-BR.json(6 hunks)app/i18n/locales/pt-PT.json(9 hunks)app/i18n/locales/ru.json(6 hunks)app/i18n/locales/sl-SI.json(6 hunks)app/i18n/locales/sv.json(6 hunks)app/i18n/locales/ta-IN.json(6 hunks)app/i18n/locales/te-IN.json(6 hunks)app/i18n/locales/tr.json(6 hunks)app/i18n/locales/zh-CN.json(6 hunks)app/i18n/locales/zh-TW.json(6 hunks)
🚧 Files skipped from review as they are similar to previous changes (13)
- app/i18n/locales/cs.json
- app/i18n/locales/ja.json
- app/i18n/locales/es.json
- app/i18n/locales/tr.json
- app/i18n/locales/ar.json
- app/i18n/locales/sv.json
- app/i18n/locales/zh-CN.json
- app/i18n/locales/nn.json
- app/i18n/locales/hi-IN.json
- app/i18n/locales/te-IN.json
- app/i18n/locales/sl-SI.json
- app/i18n/locales/ta-IN.json
- app/i18n/locales/pt-PT.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). (2)
- GitHub Check: ESLint and Test / run-eslint-and-test
- GitHub Check: format
🔇 Additional comments (21)
app/i18n/locales/pt-BR.json (1)
256-256: Localization keys properly added and formatted.All JSON entries are syntactically correct, key names follow existing conventions, and translations are appropriately placed. The additions align with PR objectives to surface "Forgot E2EE password?" and "Reset E2EE Password" flows, plus the per-device password requirement note.
Please verify that all Portuguese translations match the intended UX/UI text and designs, and ensure consistency with translations in the other locale files (en.json, es.json, etc.) for the same keys.
Also applies to: 281-281, 297-297, 313-313, 359-359, 700-701
app/i18n/locales/no.json (1)
246-246: Localization additions for E2EE flow look good.The Norwegian translations for the new E2EE functionality are syntactically valid JSON and follow the existing naming and formatting conventions in the file. All keys referenced in the PR objectives are present:
- Line 246: "Do_it_later" for the "Do it later" button
- Line 347: "Forgot_E2EE_password" for the forgot password action
- Lines 676–677: Reset flow descriptions and title
- Line 309: Updated Enter_E2EE_Password_description mentioning per-device entry
The translations align with Norwegian conventions used throughout the file (e.g., "Tilbakestill" for reset, "Glemt" for forgot).
To ensure consistency and correctness, please verify:
- That all added keys are used consistently across the codebase (exact key names match UI/component references).
- That Norwegian translations are idiomatic and reviewed by a native speaker (outside the scope of this code review).
- That these same keys have been added to other locale files (en.json, fr.json, etc.) as mentioned in the PR summary.
Also applies to: 273-273, 289-289, 309-309, 347-347, 676-677
app/i18n/locales/it.json (2)
246-246: Fix Italian grammar in "Forgot E2EE password?" button label.Line 246 uses "Dimenticato la password E2EE?" which is grammatically incorrect Italian. The past participle "dimenticato" requires an auxiliary verb. Align with the existing pattern at line 247 ("Forgot_password": "Password dimenticata") or use a complete verb phrase:
- "Forgot_E2EE_password": "Dimenticato la password E2EE?", + "Forgot_E2EE_password": "Password E2EE dimenticata?",Alternatively, for a more natural question phrasing:
- "Forgot_E2EE_password": "Dimenticato la password E2EE?", + "Forgot_E2EE_password": "Hai dimenticato la password E2EE?",
162-162: Remaining E2EE translation additions look good.The new translation keys for the E2EE reset flow are well-structured:
- "Do_it_later" provides the deferred action option (PR objective)
- "Enable_encryption_button_label" and "E2EE_password" use consistent terminology
- "Enter_E2EE_Password_description" and "Reset_E2EE_Password_Description" both use multi-line formatting with
\nto match the design intent- "Reset_E2EE_Password" key aligns with the reset flow navigation
Also applies to: 185-185, 199-199, 208-208, 493-493, 494-494
app/i18n/locales/zh-TW.json (1)
153-153: Localization changes appropriately support E2EE password reset flow improvements.The new Traditional Chinese translations are well-structured and align with the PR objectives. The added keys (
Do_it_later,Forgot_E2EE_password,Reset_E2EE_Password, etc.) provide necessary UI labels for the new E2EE password reset discovery flow. The updatedEnter_E2EE_Password_description(line 199) simplifies the previous lengthy explanation into a concise, user-friendly message with proper line-break escaping.Key observations:
- Terminology is consistent with existing E2EE translations in the file.
- JSON structure is valid; keys and values are properly formatted.
- The new reset password description (lines 475–476) accurately conveys the flow consequences.
Also applies to: 176-176, 190-190, 199-199, 237-237, 475-476
app/i18n/locales/nl.json (1)
183-183: Dutch translations are contextually appropriate and well-ordered alphabetically.The new localization keys for the E2EE password reset flow are semantically accurate:
- "Doe het later" (Do it later) and "E2EE-wachtwoord vergeten?" (Forgot E2EE password?) clearly support the UI flow.
- All entries maintain proper alphabetical ordering within their sections.
- Terminology aligns with existing E2E/E2EE usage patterns in the file.
Verify that all corresponding changes across other locale files (mentioned in enriched summary) consistently use the same capitalization pattern for
*_descriptionkeys.Also applies to: 207-207, 222-222, 232-232, 273-273, 562-563
app/i18n/locales/de.json (3)
230-230: LGTM: new E2EE labels.Strings read naturally (“Später erledigen”, “E2EE‑Passwort”, “Verschlüsselung aktivieren”, “E2EE‑Passwort vergessen?”). Placeholders unaffected.
Also applies to: 254-254, 269-269, 323-323
281-281: LGTM: description copy and line breaks.Text is clear and the “\n\n” paragraph break is correct.
631-633: LGTM: reset flow copy.Accurate, concise, and consistent with product behavior.
app/i18n/locales/fi.json (3)
215-215: LGTM: new E2EE labels.“Tee se myöhemmin”, “E2EE‑salasana”, “Ota salaus käyttöön”, “Unohditko E2EE‑salasanan?” look good.
Also applies to: 239-239, 254-254, 308-308
266-266: LGTM: description and line breaks.Wording and “\n\n” are correct.
606-608: LGTM: reset flow copy.Accurate and clear.
app/i18n/locales/ru.json (4)
231-231: LGTM: labels.“Пароль E2EE”, “Включить шифрование” are correct.
Also applies to: 246-246
256-256: LGTM: description.Wording is clear; per‑device note is correct.
298-298: LGTM: forgot password label.Text is natural and consistent.
593-595: LGTM: reset flow copy.Accurate and properly warns about offline members.
app/i18n/locales/fr.json (3)
183-183: LGTM: new E2EE labels.“Faites‑le plus tard”, “Mot de passe E2EE”, “Activer le chiffrement”, “Mot de passe E2EE oublié ?” read well.
Also applies to: 207-207, 222-222, 273-273
232-232: LGTM: description and line breaks.Clear copy; “\n\n” preserved.
562-564: LGTM: reset flow copy.Accurate and consistent with behavior.
app/i18n/locales/bn-IN.json (1)
235-235: Translation keys properly added for E2EE reset flow.The new Bengali translations for the E2EE password reset flow appear well-structured:
- Line 235:
Do_it_laterprovides the "do it later" option referenced in PR objectives- Line 259:
E2EE_passwordintroduces the term clearly- Line 274:
Enable_encryption_button_labelexplicitly labels encryption activation- Line 286: Updated
Enter_E2EE_Password_descriptionnow mentions per-device entry requirement- Line 329:
Forgot_E2EE_passwordsurfaces the password recovery action- Lines 643–645:
Reset_E2EE_PasswordandReset_E2EE_Password_Descriptionexplain reset consequencesAll keys follow established naming conventions and the descriptions align with the PR's objective to improve E2EE password reset discovery.
However, verify that these keys are actually referenced in the corresponding view files (e.g.,
E2EEnterYourPasswordView,E2EEncryptionSecurityView) to confirm they're not orphaned translations. Additionally, confirm that all other locales have been updated with these same keys to maintain consistency.Also applies to: 259-259, 274-274, 286-286, 329-329, 643-645
app/i18n/locales/hu.json (1)
235-235: Hungarian translations align with E2EE reset flow requirements.The Hungarian locale additions mirror the Bengali translations appropriately:
- Line 235:
Do_it_later→ "Csak később tedd meg"- Line 259:
E2EE_password→ "E2EE jelszó"- Line 274:
Enable_encryption_button_label→ "A titkosítás engedélyezése"- Line 286: Updated
Enter_E2EE_Password_descriptionreferences per-device entry- Line 329:
Forgot_E2EE_password→ "Elfelejtette az E2EE jelszót?"- Lines 644–645: Reset flow descriptions properly localized
The translations read naturally in Hungarian and maintain feature parity with the Bengali locale file.
Confirm that (1) these keys are consumed by the E2EE view layer, and (2) all other locales in the codebase have received corresponding translations to prevent runtime key-not-found errors or inconsistent UX across supported languages.
Also applies to: 259-259, 274-274, 286-286, 329-329, 644-645
| "Reset_E2EE_Password": "Wachtwoord voor E2EE Resetten", | ||
| "Reset_E2EE_Password_Description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Script executed:
#!/bin/bash
# First, let's examine the specific lines mentioned in the review comment
# Line 192 should have "E2E_encryption_change_password_description"
# Lines 562-563 should have "Reset_E2EE_Password_Description"
# Get line counts first to understand file size
wc -l app/i18n/locales/nl.json
# Read specific lines mentioned in the review
echo "=== Lines 190-195 (checking line 192) ==="
sed -n '190,195p' app/i18n/locales/nl.json
echo -e "\n=== Lines 560-565 (checking lines 562-563) ==="
sed -n '560,565p' app/i18n/locales/nl.jsonRepository: RocketChat/Rocket.Chat.ReactNative
<shell_result>
Repository: RocketChat/Rocket.Chat.ReactNative
Exit code: 0
stdout:
788 app/i18n/locales/nl.json
=== Lines 190-195 (checking line 192) ===
"E2E_Encryption": "E2E-codering",
"E2E_encryption_change_password_confirmation": "Ja, verander het",
"E2E_encryption_change_password_description": "Je kan nu versleutelde privégroepen en directe berichten aanmaken. Je kan ook bestaande privégroepen of DM's wijzigen in versleuteld.\nDit is end-to-end codering, dus de sleutel om jouw berichten te coderen/decoderen en deze wordt niet op de server opgeslagen. Daarom moet je dit wachtwoord op een veilige plaats opslaan. Je moet het invoeren op andere apparaten waarop je e2e-codering wilt gebruiken.",
"E2E_encryption_change_password_error": "Fout bij het wijzigen van het E2E-wachtwoord",
"E2E_encryption_change_password_message": "Zorg ervoor dat je het zorgvuldig ergens anders hebt bewaard.",
"E2E_encryption_change_password_success": "E2E-wachtwoord succesvol gewijzigd!",
=== Lines 560-565 (checking lines 562-563) ===
"Resend": "Opnieuw verzenden",
"RESET": "Reset",
"Reset_E2EE_Password": "Wachtwoord voor E2EE Resetten",
"Reset_E2EE_Password_Description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.",
"Reset_password": "Wachtwoord resetten",
"resetting_password": "wachtwoord aan het resetten",
</shell_result>
Script executed:
#!/bin/bash
# Search for all keys ending with "description" or "Description" in nl.json
# to determine if there's a consistent pattern
echo "=== Searching for all 'description' keys (case-insensitive) ==="
rg -i '"[^"]*_description["\:]' app/i18n/locales/nl.json | head -20
echo -e "\n=== Counting lowercase '_description' keys ==="
rg '"[^"]*_description":' app/i18n/locales/nl.json | wc -l
echo -e "\n=== Counting capitalized '_Description' keys ==="
rg '"[^"]*_Description":' app/i18n/locales/nl.json | wc -lRepository: RocketChat/Rocket.Chat.ReactNative
<shell_result>
Repository: RocketChat/Rocket.Chat.ReactNative
Exit code: 0
stdout:
=== Searching for all 'description' keys (case-insensitive) ===
=== Counting lowercase '_description' keys ===
8
=== Counting capitalized '_Description' keys ===
8
stderr:
regex parse error:
"[^"]*_description["\:]
^^
error: unrecognized escape sequence
</shell_result>
Script executed:
#!/bin/bash
# Fix regex and get all description keys
echo "=== All lowercase '_description' keys ==="
rg '"[^"]*_description":' app/i18n/locales/nl.json
echo -e "\n=== All capitalized '_Description' keys ==="
rg '"[^"]*_Description":' app/i18n/locales/nl.jsonRepository: RocketChat/Rocket.Chat.ReactNative
<shell_result>
Repository: RocketChat/Rocket.Chat.ReactNative
Exit code: 0
stdout:
=== All lowercase '_description' keys ===
"AirGapped_workspace_read_only_description": "Beheerders kunnen de volledige functionaliteit herstellen door deze met internet te verbinden of te upgraden naar een premiumplan.",
"E2E_encryption_change_password_description": "Je kan nu versleutelde privégroepen en directe berichten aanmaken. Je kan ook bestaande privégroepen of DM's wijzigen in versleuteld.\nDit is end-to-end codering, dus de sleutel om jouw berichten te coderen/decoderen en deze wordt niet op de server opgeslagen. Daarom moet je dit wachtwoord op een veilige plaats opslaan. Je moet het invoeren op andere apparaten waarop je e2e-codering wilt gebruiken.",
"E2E_encryption_reset_description": "Deze optie zal je huidige E2E-sleutel verwijderen en je wordt uitgelogd.\nWanneer je opniew inlogt, genereert Rocket.Chat je een nieuwe sleutel en herstelt je toegang tot elke versleutelde kamer die een of meer leden heeft.\nDoor de aard van E2E-versleuteling kan Rocket.Chat de toegang tot een versleutelde kamer zonder online lid niet herstellen.",
"encrypted_room_description": "Voer uw end-to-end encryptiewachtwoord in om toegang te krijgen.",
"Enter_E2EE_Password_description": "Voer je E2EE-wachtwoord in om versleutelde berichten te bekijken en te verzenden.\n\nHet wachtwoord moet op elk apparaat worden ingevoerd.",
"File_description": "Bestandsbeschrijving",
"missing_room_e2ee_description": "De versleutelingssleutels voor de kamer moeten worden bijgewerkt, een ander kamerlid moet online zijn om dit te laten gebeuren.",
"Search_global_users_description": "Als je dit inschakelt, kan je gebruikers van andere bedrijven en servers opzoeken.",
=== All capitalized '_Description' keys ===
"Reset_E2EE_Password_Description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.",
"Slash_Gimme_Description": "Geeft ༼ つ ◕_◕ ༽つ weer voor uw bericht",
"Slash_LennyFace_Description": "Geeft ( ͡° ͜ʖ ͡°) na uw bericht weer",
"Slash_Shrug_Description": "Geeft ¯\\_(ツ)_/¯ na uw bericht",
"Slash_Status_Description": "Stel uw statusbericht in",
"Slash_Tableflip_Description": "Geeft (╯°□°)╯︵ ┻━┻ weer",
"Slash_TableUnflip_Description": "Geeft ┬─┬ ノ( ゜-゜ノ) weer",
"Slash_Topic_Description": "Stel onderwerp in",
</shell_result>
Script executed:
#!/bin/bash
# Check if other locale files follow the same pattern
# Look for the same keys in a few other locale files
echo "=== Checking en.json for consistency ==="
if [ -f app/i18n/locales/en.json ]; then
echo "Reset_E2EE_Password_Description in en.json:"
rg '"Reset_E2EE_Password_Description"' app/i18n/locales/en.json
echo -e "\nSlash command descriptions in en.json (sample):"
rg '"Slash_.*_Description"' app/i18n/locales/en.json | head -3
echo -e "\nOther descriptions in en.json (sample):"
rg '"[^"]*_description"' app/i18n/locales/en.json | head -3
fiRepository: RocketChat/Rocket.Chat.ReactNative
<shell_result>
Repository: RocketChat/Rocket.Chat.ReactNative
Exit code: 0
stdout:
=== Checking en.json for consistency ===
Reset_E2EE_Password_Description in en.json:
"Reset_E2EE_Password_Description": "Resetting will log you out and generate a new E2EE password upon logging back in.\n\nYou'll regain access to encrypted rooms with online members, but not to those without any members online.",
Slash command descriptions in en.json (sample):
"Slash_Gimme_Description": "Displays ༼ つ ◕_◕ ༽つ before your message",
"Slash_LennyFace_Description": "Displays ( ͡° ͜ʖ ͡°) after your message",
"Slash_Shrug_Description": "Displays ¯\\_(ツ)_/¯ after your message",
Other descriptions in en.json (sample):
"AirGapped_workspace_read_only_description": "Admins can restore full functionality by connecting it to internet or upgrading to a premium plan.",
"changed_room_description": "changed room description to: {{description}}",
"Custom_push_gateway_connected_description": "Your workspace uses a custom push notification gateway. Check with your workspace administrator for any issues.",
</shell_result>
Naming convention inconsistency confirmed: Use lowercase description suffix for non-slash command keys.
The review comment is correct. Analysis of nl.json and en.json reveals a clear pattern:
- Slash command descriptions use capitalized
_Description(e.g.,Slash_Gimme_Description,Slash_Status_Description) - All other description keys use lowercase
_description(e.g.,E2E_encryption_change_password_description,AirGapped_workspace_read_only_description)
Reset_E2EE_Password_Description violates this established convention and should be renamed to Reset_E2EE_Password_description to maintain consistency. This change should be applied across all locale files.
- "Reset_E2EE_Password_Description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.",
+ "Reset_E2EE_Password_description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.",📝 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.
| "Reset_E2EE_Password": "Wachtwoord voor E2EE Resetten", | |
| "Reset_E2EE_Password_Description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.", | |
| "Reset_E2EE_Password": "Wachtwoord voor E2EE Resetten", | |
| "Reset_E2EE_Password_description": "Opnieuw instellen zal u afmelden en een nieuw E2EE-wachtwoord genereren wanneer u opnieuw inlogt.\n\nU krijgt weer toegang tot versleutelde kamers met online leden, maar niet tot die zonder online leden.", |
🤖 Prompt for AI Agents
In app/i18n/locales/nl.json around lines 562-563, the key
"Reset_E2EE_Password_Description" violates the established naming convention for
non-slash command description keys (should use lowercase `_description`); rename
the key to "Reset_E2EE_Password_description" in this file and apply the same
rename across all locale files (e.g., en.json and any other locales) to keep
keys consistent, update any code references or translation lookups that depend
on the old key, and run a quick search to ensure no remaining occurrences of the
old key remain.
| "Discussions": "Обсуждения", | ||
| "Display": "Внешний вид", | ||
| "Displays_action_text": "Показать текст действия", | ||
| "Do_it_later": "Сделай это позже", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use neutral UI tone for “Do it later”.
Prefer neutral/impersonal over informal “ты” form. Suggest “Позже”.
Apply this diff:
- "Do_it_later": "Сделай это позже",
+ "Do_it_later": "Позже",📝 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.
| "Do_it_later": "Сделай это позже", | |
| "Do_it_later": "Позже", |
🤖 Prompt for AI Agents
In app/i18n/locales/ru.json around line 207, the key "Do_it_later" currently
uses informal phrasing "Сделай это позже"; replace its value with the neutral
impersonal UI phrasing "Позже" so the JSON line becomes "Do_it_later": "Позже",
ensuring proper quotation and trailing comma consistency with surrounding
entries.
Proposed changes
Improve reset e2e key flow.
Issue(s)
https://rocketchat.atlassian.net/browse/CORE-1316
How to test or reproduce
Forgot E2EE password?button;Reset E2EE Passwordbutton;Screenshots
Types of changes
Checklist
Further comments
Summary by CodeRabbit
New Features
Localization
UI
Tests
✏️ Tip: You can customize this high-level summary in your review settings.