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 bf294b577..bf7898087 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 c1792b1fa..5fcfa20d9 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 1c8d52f59..76919c05d 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 d55d3c267..850a77843 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 ad078aadb..74601c9c9 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 2e57717a3..c635913f0 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 55027a013..943ac064b 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 6bbf24697..0ee3b7daf 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 2f35ea8a7..9626cc335 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 f64827945..475f87c22 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 873597fe1..4a4f55e70 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 8fcb2b5e4..5d787262c 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 be5a33bea..cb01e8c5c 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 671954106..6bac1cbcf 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 c3971b8d2..dc0cb538d 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 2d7a12cd1..1f9959479 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 abb66aff0..efbc64c0d 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 c41d7d7f4..2699c3add 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)
}
}