From 5153cee0e0b976fa190aff71394d2106dfb2fe49 Mon Sep 17 00:00:00 2001 From: Alexandru2909 Date: Wed, 12 Jan 2022 16:59:26 +0200 Subject: [PATCH] For #22189 - Replace the 'Firefox' word in all strings with placeholder --- .../fenix/ui/robots/HomeScreenRobot.kt | 4 +- .../browser/OpenInAppOnboardingObserver.kt | 3 +- .../OnboardingManualSignInViewHolder.kt | 4 +- .../OnboardingTrackingProtectionViewHolder.kt | 3 +- .../HomeOnboardingDialogFragment.kt | 8 ++++ .../fenix/settings/studies/StudiesView.kt | 3 +- .../fenix/tabstray/syncedtabs/SyncedTabs.kt | 5 ++- .../syncedtabs/SyncedTabsIntegration.kt | 5 ++- .../gecko/search/SearchWidgetProvider.kt | 6 +++ .../fragment_onboarding_home_dialog.xml | 2 - .../res/layout/inactive_tabs_auto_close.xml | 2 +- .../res/layout/onboarding_manual_signin.xml | 4 +- .../layout/onboarding_tracking_protection.xml | 2 +- .../layout/search_widget_extra_small_v1.xml | 2 +- .../layout/search_widget_extra_small_v2.xml | 2 +- .../main/res/layout/search_widget_large.xml | 2 +- .../main/res/layout/search_widget_medium.xml | 2 +- .../main/res/layout/search_widget_small.xml | 2 +- .../res/layout/search_widget_small_no_mic.xml | 2 +- app/src/main/res/values/strings.xml | 40 ++++++++++++++----- .../OnboardingManualSignInViewHolderTest.kt | 3 +- ...oardingTrackingProtectionViewHolderTest.kt | 4 +- 22 files changed, 78 insertions(+), 32 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt index bf294b5771..bf78980872 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt @@ -443,7 +443,7 @@ private fun assertWelcomeHeader() = private fun assertStartSyncHeader() { scrollToElementByText(STRING_ONBOARDING_ACCOUNT_SIGN_IN_HEADER) - onView(allOf(withText(R.string.onboarding_account_sign_in_header_1))) + onView(allOf(withText("Sync $appName between devices"))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE))) } private fun assertAccountsSignInButton() = @@ -507,7 +507,7 @@ private fun assertAlwaysPrivacyText() { onView( allOf( withText( - R.string.onboarding_tracking_protection_description_3 + "$appName automatically stops companies from secretly following you around the web." ) ) ) diff --git a/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt b/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt index c1792b1fa2..5fcfa20d95 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt @@ -93,9 +93,10 @@ class OpenInAppOnboardingObserver( @VisibleForTesting internal fun createInfoBanner(): DynamicInfoBanner { + val appName = context.getString(R.string.app_name) return DynamicInfoBanner( context = context, - message = context.getString(R.string.open_in_app_cfr_info_message), + message = context.getString(R.string.open_in_app_cfr_info_message_2, appName), dismissText = context.getString(R.string.open_in_app_cfr_negative_button_text), actionText = context.getString(R.string.open_in_app_cfr_positive_button_text), container = container, diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolder.kt index 1c8d52f59e..76919c05d5 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolder.kt @@ -27,7 +27,9 @@ class OnboardingManualSignInViewHolder(view: View) : RecyclerView.ViewHolder(vie fun bind() { val context = itemView.context - binding.headerText.text = context.getString(R.string.onboarding_account_sign_in_header_1) + val appName = context.getString(R.string.app_name) + binding.headerText.text = + context.getString(R.string.onboarding_account_sign_in_header_2, appName) } companion object { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt index d55d3c267d..850a778430 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt @@ -27,8 +27,9 @@ class OnboardingTrackingProtectionViewHolder(view: View) : RecyclerView.ViewHold standardTrackingProtection = binding.trackingProtectionStandardOption strictTrackingProtection = binding.trackingProtectionStrictDefault + val appName = view.context.getString(R.string.app_name) binding.descriptionText.text = view.context.getString( - R.string.onboarding_tracking_protection_description_3 + R.string.onboarding_tracking_protection_description_4, appName ) val isTrackingProtectionEnabled = view.context.settings().shouldUseTrackingProtection diff --git a/app/src/main/java/org/mozilla/fenix/onboarding/HomeOnboardingDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/onboarding/HomeOnboardingDialogFragment.kt index ad078aadba..74601c9c92 100644 --- a/app/src/main/java/org/mozilla/fenix/onboarding/HomeOnboardingDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/onboarding/HomeOnboardingDialogFragment.kt @@ -33,6 +33,14 @@ class HomeOnboardingDialogFragment : DialogFragment() { super.onViewCreated(view, savedInstanceState) val binding = FragmentOnboardingHomeDialogBinding.bind(view) + val appName = requireContext().getString(R.string.app_name) + binding.welcomeTitle.text = + requireContext().getString(R.string.onboarding_home_screen_title_3, appName) + binding.homeTitle.text = requireContext().getString( + R.string.onboarding_home_screen_section_home_title_3, + appName + ) + binding.finishButton.setOnClickListener { context?.settings()?.let { settings -> settings.hasShownHomeOnboardingDialog = true diff --git a/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt b/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt index 2e57717a39..c635913f01 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt @@ -114,7 +114,8 @@ class StudiesView( @VisibleForTesting internal fun bindDescription() { val sumoUrl = SupportUtils.getGenericSumoURLForTopic(OPT_OUT_STUDIES) - val description = context.getString(R.string.studies_description) + val appName = context.getString(R.string.app_name) + val description = context.getString(R.string.studies_description_2, appName) val learnMore = context.getString(R.string.studies_learn_more) val rawText = "$description $learnMore" val text = HtmlCompat.fromHtml(rawText, HtmlCompat.FROM_HTML_MODE_COMPACT) diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabs.kt b/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabs.kt index 55027a0134..943ac064b0 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabs.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabs.kt @@ -321,7 +321,10 @@ private fun SyncedTabsErrorPreview() { FirefoxTheme { Box(Modifier.background(FirefoxTheme.colors.layer1)) { SyncedTabsErrorItem( - errorText = stringResource(R.string.synced_tabs_no_tabs), + errorText = stringResource( + R.string.synced_tabs_no_tabs_2, + stringResource(R.string.app_name) + ), errorButton = SyncedTabsListItem.ErrorButton( buttonText = stringResource(R.string.synced_tabs_sign_in_button) ) { diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt b/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt index 6bbf246971..0ee3b7daf4 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt @@ -112,7 +112,10 @@ class SyncedTabsIntegration( SyncedTabsView.ErrorType.SYNC_UNAVAILABLE -> SyncedTabsListItem.Error( - errorText = context.getString(R.string.synced_tabs_no_tabs), + errorText = context.getString( + R.string.synced_tabs_no_tabs_2, + context.getString(R.string.app_name) + ), errorButton = SyncedTabsListItem.ErrorButton( buttonText = context.getString(R.string.synced_tabs_sign_in_button) ) { diff --git a/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt b/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt index 2f35ea8a77..9626cc335a 100644 --- a/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt +++ b/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt @@ -176,6 +176,12 @@ class SearchWidgetProvider : AppWidgetProvider() { )?.toBitmap() ) } + + val appName = context.getString(R.string.app_name) + setContentDescription( + R.id.button_search_widget_new_tab_icon, + context.getString(R.string.search_widget_content_description_2, appName) + ) } // Cell sizes obtained from the actual dimensions listed in search widget specs diff --git a/app/src/main/res/layout/fragment_onboarding_home_dialog.xml b/app/src/main/res/layout/fragment_onboarding_home_dialog.xml index f648279450..475f87c22d 100644 --- a/app/src/main/res/layout/fragment_onboarding_home_dialog.xml +++ b/app/src/main/res/layout/fragment_onboarding_home_dialog.xml @@ -37,7 +37,6 @@ android:layout_marginTop="16dp" android:layout_marginHorizontal="@dimen/oboarding_home_dialog_margin_horizontal" android:lineHeight="24sp" - android:text="@string/onboarding_home_screen_title_2" android:textAppearance="@style/Header20TextStyle" android:textAlignment="center" app:layout_constraintEnd_toEndOf="parent" @@ -78,7 +77,6 @@ android:layout_marginEnd="@dimen/oboarding_home_dialog_margin_horizontal" android:layout_marginTop="26dp" android:lineHeight="20sp" - android:text="@string/onboarding_home_screen_section_home_title_2" android:textAppearance="@style/Header14TextStyle" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/home_icon" diff --git a/app/src/main/res/layout/inactive_tabs_auto_close.xml b/app/src/main/res/layout/inactive_tabs_auto_close.xml index 873597fe11..4a4f55e708 100644 --- a/app/src/main/res/layout/inactive_tabs_auto_close.xml +++ b/app/src/main/res/layout/inactive_tabs_auto_close.xml @@ -55,7 +55,7 @@ android:layout_height="wrap_content" android:layout_width="0dp" android:padding="8dp" - android:text="@string/tab_tray_inactive_auto_close_body" + android:text="@string/tab_tray_inactive_auto_close_body_2" android:textAppearance="@style/Body14TextStyle" app:layout_constraintTop_toBottomOf="@id/banner_info_message" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/onboarding_manual_signin.xml b/app/src/main/res/layout/onboarding_manual_signin.xml index 8fcb2b5e48..5d787262c6 100644 --- a/app/src/main/res/layout/onboarding_manual_signin.xml +++ b/app/src/main/res/layout/onboarding_manual_signin.xml @@ -33,14 +33,14 @@ app:layout_constraintStart_toStartOf="@id/avatar_icon" app:layout_constraintBottom_toBottomOf="@id/avatar_icon" android:layout_marginStart="52dp" - tools:text="@string/onboarding_account_sign_in_header_1" /> + tools:text="@string/onboarding_account_sign_in_header_2" /> diff --git a/app/src/main/res/layout/onboarding_tracking_protection.xml b/app/src/main/res/layout/onboarding_tracking_protection.xml index be5a33bea8..cb01e8c5c8 100644 --- a/app/src/main/res/layout/onboarding_tracking_protection.xml +++ b/app/src/main/res/layout/onboarding_tracking_protection.xml @@ -35,7 +35,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/header_text" - tools:text="@string/onboarding_tracking_protection_description_3" /> + tools:text="@string/onboarding_tracking_protection_description_4" /> diff --git a/app/src/main/res/layout/search_widget_extra_small_v2.xml b/app/src/main/res/layout/search_widget_extra_small_v2.xml index 6719541066..6bac1cbcfe 100644 --- a/app/src/main/res/layout/search_widget_extra_small_v2.xml +++ b/app/src/main/res/layout/search_widget_extra_small_v2.xml @@ -15,7 +15,7 @@ android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center" - android:contentDescription="@string/search_widget_content_description" + android:contentDescription="@string/search_widget_content_description_2" android:scaleType="centerInside" tools:src="@drawable/ic_launcher_foreground" /> diff --git a/app/src/main/res/layout/search_widget_large.xml b/app/src/main/res/layout/search_widget_large.xml index c3971b8d2f..dc0cb538de 100644 --- a/app/src/main/res/layout/search_widget_large.xml +++ b/app/src/main/res/layout/search_widget_large.xml @@ -14,7 +14,7 @@ android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentStart="true" - android:contentDescription="@string/search_widget_content_description" + android:contentDescription="@string/search_widget_content_description_2" android:scaleType="centerInside" /> + android:contentDescription="@string/search_widget_content_description_2" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2d7a12cd1a..1f9959479c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -69,7 +69,9 @@ - You can set Firefox to automatically open links in apps. + You can set Firefox to automatically open links in apps. + + You can set %1$s to automatically open links in apps. Go to settings @@ -95,7 +97,10 @@ Auto-close after one month? - Firefox can close tabs you haven’t viewed over the past month. + Firefox can close tabs you haven’t viewed over the past month. + + %1$s can close tabs you haven’t viewed over the past month. Close @@ -237,11 +242,15 @@ - What’s new in Firefox + What’s new in Firefox + + What’s new in %1$s It’s now easier to pick back up where you left off. - Personalized Firefox homepage + Personalized Firefox homepage + + Personalized %1$s homepage Jump to your open tabs, bookmarks, and browsing history. @@ -258,7 +267,9 @@ - Open a new Firefox tab + Open a new Firefox tab + + Open a new %1$s tab Search @@ -624,7 +635,9 @@ Active - Firefox may install and run studies from time to time. + Firefox may install and run studies from time to time. + + %1$s may install and run studies from time to time. Learn more @@ -1115,9 +1128,12 @@ The first parameter is the name of the app (e.g. Firefox Preview) --> Welcome to %s! - Sync Firefox between devices + Sync Firefox between devices + + Sync %1$s between devices - Bring bookmarks, history, and passwords to Firefox on this device. + + Bring bookmarks, history, and passwords to %1$s on this device. Sign up @@ -1125,7 +1141,9 @@ Always-on privacy - Firefox automatically stops companies from secretly following you around the web. + Firefox automatically stops companies from secretly following you around the web. + + %1$s automatically stops companies from secretly following you around the web. Standard (default) @@ -1615,7 +1633,9 @@ Please enable tab syncing. - You don’t have any tabs open in Firefox on your other devices. + You don’t have any tabs open in Firefox on your other devices. + + You don’t have any tabs open in %1$s on your other devices. View a list of tabs from your other devices. diff --git a/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolderTest.kt b/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolderTest.kt index abb66aff05..efbc64c0df 100644 --- a/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolderTest.kt +++ b/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingManualSignInViewHolderTest.kt @@ -51,7 +51,8 @@ class OnboardingManualSignInViewHolderTest { @Test fun `bind header text`() { OnboardingManualSignInViewHolder(binding.root).bind() - val string = testContext.getString(R.string.onboarding_account_sign_in_header_1) + val appName = testContext.getString(R.string.app_name) + val string = testContext.getString(R.string.onboarding_account_sign_in_header_2, appName) assertEquals( string, binding.headerText.text diff --git a/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolderTest.kt b/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolderTest.kt index c41d7d7f4a..2699c3add2 100644 --- a/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolderTest.kt +++ b/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolderTest.kt @@ -34,7 +34,9 @@ class OnboardingTrackingProtectionViewHolderTest { every { testContext.components.settings } returns Settings(testContext) OnboardingTrackingProtectionViewHolder(binding.root) - val string = testContext.getString(R.string.onboarding_tracking_protection_description_3) + val appName = testContext.getString(R.string.app_name) + val string = + testContext.getString(R.string.onboarding_tracking_protection_description_4, appName) assertEquals(string, binding.descriptionText.text) } }