[PM-23258] changing verbiage from import data to import items
đī¸ Tracking
https://bitwarden.atlassian.net/browse/PM-23258
đ Objective
We have some minor verbiage inconsistency around import and export screens, navigation bars, and menu items. The changes are shown below, per client
Desktop
Export vault â Export
Import data â Import
Sync vault â Sync now
Import vault â Import
Browser
Sync vault now â Sync now
Export vault â Export
Import data â Import
Import items â Import
Web Vault
Import data â Import
Export vault â Export
Confirm format -> Export
Libs
Import data â Import
Export vault â Export
đ¸ Screenshots
â° Reminders before review
- Contributor guidelines followed
- All formatters and local linters executed and passed
- Written new unit and / or integration tests where applicable
- Protected functional changes with optionality (feature flags)
- Used internationalization (i18n) for all UI strings
- CI builds passed
- Communicated to DevOps any deployment requirements
- Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team
đĻŽ Reviewer guidelines
- đ (
:+1:) or similar for great changes - đ (
:memo:) or âšī¸ (:information_source:) for notes or general info - â (
:question:) for questions - đ¤ (
:thinking:) or đ (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - đ¨ (
:art:) for suggestions / improvements - â (
:x:) or â ī¸ (:warning:) for more significant problems or concerns needing attention - đą (
:seedling:) or âģī¸ (:recycle:) for future improvements or indications of technical debt - â (
:pick:) for minor or nitpick changes
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 41.82%. Comparing base (7f892cf) to head (d150542).
:warning: Report is 29 commits behind head on main.
:white_check_mark: All tests successful. No failed tests found.
Additional details and impacted files
@@ Coverage Diff @@
## main #17123 +/- ##
=======================================
Coverage 41.81% 41.82%
=======================================
Files 3589 3589
Lines 104160 104160
Branches 15707 15707
=======================================
+ Hits 43557 43564 +7
+ Misses 58759 58748 -11
- Partials 1844 1848 +4
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
Checkmarx One â Scan Summary & Details â b31127a9-a078-47ab-8da6-f26b5d8ef4cc
Great job! No new security vulnerabilities introduced in this pull request
Claude finished @itsadrago's task ââ View job
Code Review Complete
Tasks
- [x] Analyze PR changes using bitwarden-code-reviewer agent
- [x] Review locale file changes for consistency
- [x] Verify template changes are correct
- [x] Check for any unused locale keys
- [x] Provide comprehensive review feedback
Review Findings
â Critical Issues Found
Issue 1: Incomplete locale cleanup for Secrets Manager
The latest commit (d150542612) removed exportData and exportSecrets keys from the English locale file (apps/web/src/locales/en/messages.json), but these keys still exist in all other locale files (fil, or, ca, ru, tr, nb, ka, sk, ko, pt_BR, el, be, da, bg, de, zh_CN, fi, uk, sr_CS, te, es, th, en_IN, fa, ta, mr, ml, km, sr, zh_TW, en_GB, ja, vi, cs, sv, eu, my, lv, nn, cy, bs, it, ro, et, ar, bn, fr, nl, pl, eo, kn, gl, pt_PT, az, sl, id, hr, si, hi, ne, hu, he, sr_CY, af).
Impact: When Crowdin syncs, translators will see orphaned keys that no longer exist in the English base. This creates translation inconsistency.
Recommendation: Remove exportData and exportSecrets from all non-English locale files in apps/web/src/locales/*/messages.json.
Issue 2: Missed importData references still in code
The importData i18n key is still being used in TWO locations that were NOT updated in this PR:
-
bitwarden_license/bit-web/src/app/dirt/access-intelligence/risk-insights.component.html:22[buttonText]="this.i18nService.t('importData')" -
apps/web/src/app/vault/individual-vault/vault-onboarding/vault-onboarding.component.html:17[title]="'importData' | i18n"
Impact: These components will continue displaying "Import data" instead of "Import", creating inconsistency across the application.
Recommendation: Update these two templates to use import instead of importData, or clarify if these are intentionally excluded from the scope.
â What Works Well
- Secrets Manager changes are consistent and complete within their scope
- The new simpler verbiage ("Import", "Export") is clearer and more concise
- No security issues introduced (text-only changes)
- Changes follow i18n best practices by using translation keys
- Desktop, Browser, and main Web Vault changes appear complete and consistent
đ¨ Suggested Actions
- Clarify scope: Should the two remaining
importDatausages in risk-insights and vault-onboarding also be updated? - Clean up locale files: Remove orphaned
exportDataandexportSecretskeys from all non-English locale files - Verify completeness: Run a global search to ensure no other instances were missed
Are the old keys actively used? If not please delete them from the english locale files.
Old keys preserved: The original keys like "importData" and "exportVault" are intentionally kept in locale files for backward compatibility (e.g., used in other contexts or by other locales during translation cycles).
But, probably a larger question for product/design.
Yep, these are changes from design
Are the old keys actively used? If not please delete them from the english locale files.
Old keys preserved: The original keys like "importData" and "exportVault" are intentionally kept in locale files for backward compatibility (e.g., used in other contexts or by other locales during translation cycles).
Old keys that are no longer referenced in the code have been removed
Regarding the issues that Claude is reporting...
Issue 1: Incomplete locale cleanup for Secrets Manager
We don't remove entries from non-English locale files because the export / import process from Crowdin refreshes the non-English locale files
Issue 2: Missed importData references still in code
This was purposeful and approved by Design
Sorry for commenting right into a PR again. But as I translate (sometimes / a bit) on Crowdin, I just wanted to add, that there are many languages where such single words as "Import" and "Export" are ambiguous in that way, that if it's not clear if it's meant as a noun or as a verb, the translation would be different.
E.g. for German:
"Export" as a noun = Export "Export" as verb = Exportieren
"Import" as a noun = Import "Import" as a verb = Importieren
So I hope that the strings get at least some hints whether they are meant as a noun or as a verb.