Skip to content

Commit 0ae171a

Browse files
fix: sentence case violations 6001-7000 of locales file (MetaMask#24056)
## **Description** This PR fixes sentence case violations in lines 6001-7000 of the `locales/languages/en.json` file as part of ongoing content papercut improvements. The changes convert Title Case strings to sentence case following standard capitalization conventions. **What is the reason for the change?** Content consistency and adherence to proper sentence case formatting across the app. **What is the improvement/solution?** Updated ~31 locale keys from Title Case to sentence case, and updated all affected test files to match the new casing. ## **Changelog** CHANGELOG entry: Fixed sentence case violations in English locale strings lines 6001-7000 ## **Related issues** Fixes: Part of content papercut improvements batch 7 Follows: MetaMask#23499 (lines 1-1000), MetaMask#23516 (lines 1001-2000), MetaMask#23957 (lines 2001-3000), MetaMask#23994 (lines 3001-4000), MetaMask#23996 (lines 4001-5000), MetaMask#24049 (lines 5001-6000) Related: MetaMask#23272 (original comprehensive PR) ## **Manual testing steps** ```gherkin Feature: Locale string display Scenario: user views UI elements with updated locale strings Given the app is running with the updated locale file When user views QR code options Then "Text" and "QR code" should display in sentence case When user views gas fee warnings Then "Max priority fee" and "Max fee" should display in sentence case When user views confirm screens Then "Get signature" should display in sentence case And "Standard account" should display in sentence case When user views bridge transaction details Then "Estimated time", "Quote details", "Network fee" should display in sentence case And "Price impact", "Minimum received" should display in sentence case And "View on block explorer", "Transaction details" should display in sentence case When user views wallet recovery Then "Wallet recovery", "Log in with social accounts", "Set up" should display in sentence case When user views multichain account screens Then "Account details", "Account name", "Account address" should display in sentence case And "Wallet name", "Reveal recovery phrase" should display in sentence case And "Edit account name", "Remove account", "Share address" should display in sentence case When user views Card screens Then "Enable card", "Enable assets" should display in sentence case And "Verification not approved", "Verification required" should display in sentence case When user views Rewards screens Then "Unknown error", "Season summary coming soon", "Rewards settings" should display in sentence case ``` ## **Screenshots/Recordings** N/A - This is a content-only change with no visual differences beyond text casing ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- ## **Technical Details** ### Changes Made: - **Locale file**: Updated ~31 keys in `locales/languages/en.json` (lines 6001-7000) - **Test files**: Updated 12 test files to match new casing - **Snapshots**: Regenerated 1 snapshot file to match new casing ### Affected Areas: - QR code display options (Text, QR code) - Gas fee validation messages (Max priority fee, Max fee) - Confirm/Signature flows (Get signature, Standard account) - Bridge transaction details (Estimated time, Quote details, Network fee, Price impact, etc.) - View on block explorer links - Wallet recovery and setup flows - Multichain account management (Account details, names, addresses, removal, sharing) - Card verification statuses and enablement - Rewards authentication and settings ### Validation: - All affected unit tests pass - No old Title Case strings remain in updated snapshot files - Changes are purely cosmetic (text casing only) 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Converts various Title Case strings to sentence case in `locales/languages/en.json` and updates affected tests/snapshots to match. > > - **Localization**: > - Convert multiple strings to sentence case in `locales/languages/en.json` (e.g., `Share address`, `Account details`, `Verification not approved`, `View on block explorer`, `Network fee`, `Price impact`, `Estimated time`, etc.). > - **Tests/Snapshots**: > - Update assertions and snapshot text to match new casing across: > - `app/components/Nav/App/App.test.tsx` (`Share address`) > - Bridge: `BlockExplorersModal.test.tsx`, `QuoteDetailsCard.test.tsx.snap` (tooltips/text) > - Card: `CardHome.test.tsx` (KYC titles/messages) > - Navbar: `index.test.jsx` (titles like `Account details`) > - Confirmations: footer/info/switch-account-type rows and modal tests (`Get signature`, `Standard account`) > - Rewards: `RewardsNavigator.test.tsx` (`Authentication failed`) > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a10cb71. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent a84b764 commit 0ae171a

13 files changed

Lines changed: 57 additions & 57 deletions

File tree

app/components/Nav/App/App.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ describe('App', () => {
835835
const { getByText } = renderAppWithRouteState(routeState);
836836

837837
await waitFor(() => {
838-
expect(getByText('Share Address')).toBeTruthy();
838+
expect(getByText('Share address')).toBeTruthy();
839839
});
840840
});
841841
});

app/components/UI/Bridge/components/QuoteDetailsCard/__snapshots__/QuoteDetailsCard.test.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ exports[`QuoteDetailsCard renders initial state 1`] = `
573573
Network fee
574574
</Text>
575575
<TouchableOpacity
576-
accessibilityLabel="Network Fee tooltip"
576+
accessibilityLabel="Network fee tooltip"
577577
accessibilityRole="button"
578578
accessible={true}
579579
activeOpacity={1}
@@ -870,7 +870,7 @@ exports[`QuoteDetailsCard renders initial state 1`] = `
870870
Price impact
871871
</Text>
872872
<TouchableOpacity
873-
accessibilityLabel="Price Impact tooltip"
873+
accessibilityLabel="Price impact tooltip"
874874
accessibilityRole="button"
875875
accessible={true}
876876
activeOpacity={1}

app/components/UI/Bridge/components/TransactionDetails/BlockExplorersModal.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ describe('BlockExplorersModal', () => {
6060
},
6161
{ state: mockState },
6262
);
63-
expect(getByText('View on Block Explorer')).toBeTruthy();
63+
expect(getByText('View on block explorer')).toBeTruthy();
6464
});
6565

6666
it('should display both source and destination chain block explorer buttons', () => {

app/components/UI/Card/Views/CardHome/CardHome.test.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -392,16 +392,16 @@ jest.mock('../../../../../../locales/i18n', () => ({
392392
'card.card_home.kyc_status.pending.title': 'Verification in Progress',
393393
'card.card_home.kyc_status.pending.description':
394394
'Your identity verification is being processed. This usually takes a few minutes. Please check back shortly to enable your card.',
395-
'card.card_home.kyc_status.rejected.title': 'Verification Not Approved',
395+
'card.card_home.kyc_status.rejected.title': 'Verification not approved',
396396
'card.card_home.kyc_status.rejected.description':
397397
'We were unable to verify your identity. Please contact support for assistance.',
398398
'card.card_home.kyc_status.rejected.support_description':
399399
"We were unable to verify your identity at this time. Please contact our support team for assistance and we'll help you resolve this issue.",
400-
'card.card_home.kyc_status.unverified.title': 'Verification Required',
400+
'card.card_home.kyc_status.unverified.title': 'Verification required',
401401
'card.card_home.kyc_status.unverified.description':
402402
'You need to complete identity verification before enabling your card. Please complete the onboarding process.',
403403
'card.card_home.kyc_status.error.title':
404-
'Verification Status Unavailable',
404+
'Verification status unavailable',
405405
'card.card_home.kyc_status.error.description':
406406
"We couldn't check your verification status. Please try again later or contact support if the issue persists.",
407407
'card.card_home.kyc_status.ok_button': 'OK',
@@ -2981,7 +2981,7 @@ describe('CardHome Component', () => {
29812981

29822982
await waitFor(() => {
29832983
expect(Alert.alert).toHaveBeenCalledWith(
2984-
'Verification Not Approved',
2984+
'Verification not approved',
29852985
"We were unable to verify your identity at this time. Please contact our support team for assistance and we'll help you resolve this issue.",
29862986
[{ text: 'OK', style: 'default' }],
29872987
);
@@ -3002,7 +3002,7 @@ describe('CardHome Component', () => {
30023002

30033003
await waitFor(() => {
30043004
expect(Alert.alert).toHaveBeenCalledWith(
3005-
'Verification Required',
3005+
'Verification required',
30063006
'You need to complete identity verification before enabling your card. Please complete the onboarding process.',
30073007
[{ text: 'OK', style: 'default' }],
30083008
);
@@ -3111,7 +3111,7 @@ describe('CardHome Component', () => {
31113111

31123112
await waitFor(() => {
31133113
expect(Alert.alert).toHaveBeenCalledWith(
3114-
'Verification Status Unavailable',
3114+
'Verification status unavailable',
31153115
"We couldn't check your verification status. Please try again later or contact support if the issue persists.",
31163116
[{ text: 'OK', style: 'default' }],
31173117
);
@@ -3133,7 +3133,7 @@ describe('CardHome Component', () => {
31333133

31343134
await waitFor(() => {
31353135
expect(Alert.alert).not.toHaveBeenCalledWith(
3136-
'Verification Status Unavailable',
3136+
'Verification status unavailable',
31373137
expect.any(String),
31383138
expect.any(Array),
31393139
);
@@ -3155,7 +3155,7 @@ describe('CardHome Component', () => {
31553155

31563156
await waitFor(() => {
31573157
expect(Alert.alert).not.toHaveBeenCalledWith(
3158-
'Verification Status Unavailable',
3158+
'Verification status unavailable',
31593159
expect.any(String),
31603160
expect.any(Array),
31613161
);
@@ -3217,7 +3217,7 @@ describe('CardHome Component', () => {
32173217

32183218
await waitFor(() => {
32193219
expect(Alert.alert).toHaveBeenCalledWith(
3220-
expect.stringContaining('Not Approved'),
3220+
expect.stringContaining('Verification not approved'),
32213221
expect.stringContaining('contact our support team'),
32223222
expect.any(Array),
32233223
);
@@ -3238,7 +3238,7 @@ describe('CardHome Component', () => {
32383238

32393239
await waitFor(() => {
32403240
expect(Alert.alert).toHaveBeenCalledWith(
3241-
expect.stringContaining('Required'),
3241+
expect.stringContaining('Verification required'),
32423242
expect.stringContaining('complete identity verification'),
32433243
expect.any(Array),
32443244
);

app/components/UI/Navbar/index.test.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ describe('getAddressListNavbarOptions', () => {
205205
});
206206

207207
it('handles different titles', () => {
208-
const titles = ['Receiving address', 'Account Details', ''];
208+
const titles = ['Receiving address', 'Account details', ''];
209209

210210
titles.forEach((title) => {
211211
expect(() => {

app/components/UI/Rewards/RewardsNavigator.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ jest.mock('../../../../locales/i18n', () => ({
119119
strings: jest.fn((key: string) => {
120120
const translations: Record<string, string> = {
121121
'rewards.main_title': 'Rewards',
122-
'rewards.auth_fail_title': 'Authentication Failed',
122+
'rewards.auth_fail_title': 'Authentication failed',
123123
'rewards.auth_fail_description': 'Please try again later',
124124
'navigation.back': 'Back',
125125
};

app/components/Views/confirmations/components/footer/footer.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,14 @@ describe('Footer', () => {
143143
});
144144
});
145145

146-
it('renders confirm button text "Get Signature" if QR signing is in progress', () => {
146+
it('renders confirm button text "Get signature" if QR signing is in progress', () => {
147147
jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({
148148
isSigningQRObject: true,
149149
} as QRHardwareHook.QRHardwareContextType);
150150
const { getByText } = renderWithProvider(<Footer />, {
151151
state: personalSignatureConfirmationState,
152152
});
153-
expect(getByText('Get Signature')).toBeTruthy();
153+
expect(getByText('Get signature')).toBeTruthy();
154154
});
155155

156156
it('confirm button is disabled if `needsCameraPermission` is true', () => {

app/components/Views/confirmations/components/info-root/info-root.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ describe('Info', () => {
168168
expect(
169169
getByTestId(ConfirmationInfoComponentIDs.SWITCH_ACCOUNT_TYPE),
170170
).toBeDefined();
171-
expect(getByText('Standard Account')).toBeTruthy();
171+
expect(getByText('Standard account')).toBeTruthy();
172172
});
173173

174174
it('renders SwitchAccountType for smart account type - upgrade confirmations', () => {

app/components/Views/confirmations/components/info/switch-account-type/switch-account-type.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ describe('SwitchAccountType - Info Component', () => {
6262
state: getAppStateForConfirmation(upgradeOnlyAccountConfirmation),
6363
});
6464
expect(getByText('Now')).toBeDefined();
65-
expect(getByText('Standard Account')).toBeDefined();
65+
expect(getByText('Standard account')).toBeDefined();
6666
expect(getByText('Switching to')).toBeDefined();
6767
expect(getByText('Smart Account')).toBeDefined();
6868
});
@@ -74,6 +74,6 @@ describe('SwitchAccountType - Info Component', () => {
7474
expect(getByText('Now')).toBeDefined();
7575
expect(getByText('Smart Account')).toBeDefined();
7676
expect(getByText('Switching to')).toBeDefined();
77-
expect(getByText('Standard Account')).toBeDefined();
77+
expect(getByText('Standard account')).toBeDefined();
7878
});
7979
});

app/components/Views/confirmations/components/modals/switch-account-type-modal/account-network-row/account-network-row.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ describe('Account Network Row', () => {
9999
{ state: MOCK_STATE },
100100
);
101101

102-
expect(getByText('Standard Account')).toBeTruthy();
102+
expect(getByText('Standard account')).toBeTruthy();
103103
expect(getByText('Switch')).toBeTruthy();
104104
});
105105

0 commit comments

Comments
 (0)