Merge remote-tracking branch 'upstream/master' into fork

pull/58/head
Adam Novak 4 years ago
commit e927400939

@ -11,6 +11,7 @@ apply plugin: 'com.google.android.gms.oss-licenses-plugin'
import com.android.build.OutputFile import com.android.build.OutputFile
import groovy.json.JsonOutput
import org.gradle.internal.logging.text.StyledTextOutput.Style import org.gradle.internal.logging.text.StyledTextOutput.Style
import org.gradle.internal.logging.text.StyledTextOutputFactory import org.gradle.internal.logging.text.StyledTextOutputFactory
import org.mozilla.fenix.gradle.tasks.LintUnitTestRunner import org.mozilla.fenix.gradle.tasks.LintUnitTestRunner
@ -59,12 +60,14 @@ android {
shrinkResources false shrinkResources false
minifyEnabled false minifyEnabled false
applicationIdSuffix ".fenix.debug" applicationIdSuffix ".fenix.debug"
buildConfigField "String", "AMO_COLLECTION", "\"83a9cccfe6e24a34bd7b155ff9ee32\""
resValue "bool", "IS_DEBUG", "true" resValue "bool", "IS_DEBUG", "true"
pseudoLocalesEnabled true pseudoLocalesEnabled true
} }
nightly releaseTemplate >> { nightly releaseTemplate >> {
applicationIdSuffix ".fenix" applicationIdSuffix ".fenix"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
buildConfigField "String", "AMO_COLLECTION", "\"83a9cccfe6e24a34bd7b155ff9ee32\""
def deepLinkSchemeValue = "fenix-nightly" def deepLinkSchemeValue = "fenix-nightly"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\"" buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = ["deepLinkScheme": deepLinkSchemeValue] manifestPlaceholders = ["deepLinkScheme": deepLinkSchemeValue]
@ -533,7 +536,7 @@ dependencies {
} }
if (project.hasProperty("coverage")) { if (project.hasProperty("coverage")) {
tasks.withType(Test) { tasks.withType(Test).configureEach {
jacoco.includeNoLocationClasses = true jacoco.includeNoLocationClasses = true
} }
@ -578,7 +581,7 @@ if (project.hasProperty("coverage")) {
// Task for printing APK information for the requested variant // Task for printing APK information for the requested variant
// Usage: "./gradlew printVariants // Usage: "./gradlew printVariants
// ------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------
task printVariants { tasks.register('printVariants') {
doLast { doLast {
def variants = android.applicationVariants.collect {[ def variants = android.applicationVariants.collect {[
apks: it.variantData.outputScope.apkDatas.collect {[ apks: it.variantData.outputScope.apkDatas.collect {[
@ -597,11 +600,13 @@ task printVariants {
build_type: 'androidTest', build_type: 'androidTest',
name: 'androidTest', name: 'androidTest',
]) ])
println 'variants: ' + groovy.json.JsonOutput.toJson(variants) println 'variants: ' + JsonOutput.toJson(variants)
} }
} }
task buildTranslationArray { task buildTranslationArray {
// This isn't running as a task, instead the array is build when the gradle file is parsed.
// https://github.com/mozilla-mobile/fenix/issues/14175
def foundLocales = new StringBuilder() def foundLocales = new StringBuilder()
foundLocales.append("new String[]{") foundLocales.append("new String[]{")
@ -618,12 +623,12 @@ task buildTranslationArray {
android.defaultConfig.buildConfigField "String[]", "SUPPORTED_LOCALE_ARRAY", foundLocalesString android.defaultConfig.buildConfigField "String[]", "SUPPORTED_LOCALE_ARRAY", foundLocalesString
} }
task lintUnitTestRunner(type: LintUnitTestRunner) tasks.register('lintUnitTestRunner', LintUnitTestRunner)
afterEvaluate { afterEvaluate {
// Format test output. Ported from AC #2401 // Format test output. Ported from AC #2401
tasks.matching {it instanceof Test}.all { tasks.withType(Test).configureEach {
systemProperty "robolectric.logging", "stdout" systemProperty "robolectric.logging", "stdout"
systemProperty "logging.test-mode", "true" systemProperty "logging.test-mode", "true"
@ -711,5 +716,5 @@ tasks.register("updateCookiesExtensionVersion", Copy) { task ->
updateExtensionVersion(task, 'src/main/assets/extensions/cookies') updateExtensionVersion(task, 'src/main/assets/extensions/cookies')
} }
preBuild.dependsOn updateAdsExtensionVersion preBuild.dependsOn "updateAdsExtensionVersion"
preBuild.dependsOn updateCookiesExtensionVersion preBuild.dependsOn "updateCookiesExtensionVersion"

@ -3284,7 +3284,7 @@ app_theme:
- interaction - interaction
notification_emails: notification_emails:
- fenix-core@mozilla.com - fenix-core@mozilla.com
expires: "2020-04-01" expires: "2021-04-01"
pocket: pocket:
pocket_top_site_clicked: pocket_top_site_clicked:
@ -3946,3 +3946,31 @@ progressive_web_app:
- fenix-core@mozilla.com - fenix-core@mozilla.com
- erichards@mozilla.com - erichards@mozilla.com
expires: "2021-03-01" expires: "2021-03-01"
master_password:
displayed:
type: event
description: |
The master password migration dialog was displayed
bugs:
- https://github.com/mozilla-mobile/fenix/pull/14468#issuecomment-684114534
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/14468#issuecomment-684114534
data_sensitivity:
- interaction
notification_emails:
- fenix-core@mozilla.com
expires: "2021-03-01"
migration:
type: event
description: |
Logins were successfully migrated using a master password.
bugs:
- https://github.com/mozilla-mobile/fenix/pull/14468#issuecomment-684114534
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/14468#issuecomment-684114534
data_sensitivity:
- interaction
notification_emails:
- fenix-core@mozilla.com
expires: "2021-03-01"

@ -1,5 +1,6 @@
package org.mozilla.fenix.ui package org.mozilla.fenix.ui
import androidx.test.espresso.IdlingRegistry
import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestAssetHelper
/* This Source Code Form is subject to the terms of the Mozilla Public /* This Source Code Form is subject to the terms of the Mozilla Public
@ -11,8 +12,10 @@ import org.junit.Rule
import org.junit.Before import org.junit.Before
import org.junit.After import org.junit.After
import org.junit.Test import org.junit.Test
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.HomeActivityTestRule import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.RecyclerViewIdlingResource
import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.homeScreen
import org.mozilla.fenix.ui.robots.navigationToolbar import org.mozilla.fenix.ui.robots.navigationToolbar
@ -25,6 +28,7 @@ class SettingsAddonsTest {
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping. /* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
private lateinit var mockWebServer: MockWebServer private lateinit var mockWebServer: MockWebServer
private var addonsListIdlingResource: RecyclerViewIdlingResource? = null
@get:Rule @get:Rule
val activityTestRule = HomeActivityTestRule() val activityTestRule = HomeActivityTestRule()
@ -40,6 +44,10 @@ class SettingsAddonsTest {
@After @After
fun tearDown() { fun tearDown() {
mockWebServer.shutdown() mockWebServer.shutdown()
if (addonsListIdlingResource != null) {
IdlingRegistry.getInstance().unregister(addonsListIdlingResource!!)
}
} }
// Walks through settings add-ons menu to ensure all items are present // Walks through settings add-ons menu to ensure all items are present
@ -51,6 +59,9 @@ class SettingsAddonsTest {
verifyAdvancedHeading() verifyAdvancedHeading()
verifyAddons() verifyAddons()
}.openAddonsManagerMenu { }.openAddonsManagerMenu {
addonsListIdlingResource =
RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.add_ons_list), 1)
IdlingRegistry.getInstance().register(addonsListIdlingResource!!)
verifyAddonsItems() verifyAddonsItems()
} }
} }
@ -65,6 +76,9 @@ class SettingsAddonsTest {
}.openNewTabAndEnterToBrowser(defaultWebPage.url) { }.openNewTabAndEnterToBrowser(defaultWebPage.url) {
}.openThreeDotMenu { }.openThreeDotMenu {
}.openAddonsManagerMenu { }.openAddonsManagerMenu {
addonsListIdlingResource =
RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.add_ons_list), 1)
IdlingRegistry.getInstance().register(addonsListIdlingResource!!)
clickInstallAddon(addonName) clickInstallAddon(addonName)
verifyAddonPrompt(addonName) verifyAddonPrompt(addonName)
cancelInstallAddon() cancelInstallAddon()
@ -85,6 +99,9 @@ class SettingsAddonsTest {
verifyAdvancedHeading() verifyAdvancedHeading()
verifyAddons() verifyAddons()
}.openAddonsManagerMenu { }.openAddonsManagerMenu {
addonsListIdlingResource =
RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.add_ons_list), 1)
IdlingRegistry.getInstance().register(addonsListIdlingResource!!)
clickInstallAddon(addonName) clickInstallAddon(addonName)
acceptInstallAddon() acceptInstallAddon()
verifyDownloadAddonPrompt(addonName, activityTestRule) verifyDownloadAddonPrompt(addonName, activityTestRule)

@ -52,6 +52,8 @@ class SettingsAdvancedTest {
// ADVANCED // ADVANCED
verifyAdvancedHeading() verifyAdvancedHeading()
verifyAddons() verifyAddons()
verifyOpenLinksInAppsButton()
verifyOpenLinksInAppsSwitchDefault()
verifyRemoteDebug() verifyRemoteDebug()
verifyLeakCanaryButton() verifyLeakCanaryButton()
} }

@ -69,6 +69,7 @@ class SettingsBasicsTest {
verifyBasicsHeading() verifyBasicsHeading()
verifySearchEngineButton() verifySearchEngineButton()
verifyDefaultBrowserItem() verifyDefaultBrowserItem()
verifyCloseTabsItem()
// drill down to submenu // drill down to submenu
}.openSearchSubMenu { }.openSearchSubMenu {
verifyDefaultSearchEngineHeader() verifyDefaultSearchEngineHeader()
@ -168,6 +169,17 @@ class SettingsBasicsTest {
} }
} }
@Test
fun changeCloseTabsSetting() {
// Goes through the settings and verified the close tabs setting options.
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openCloseTabsSubMenu {
verifyOptions()
}
}
@Test @Test
fun changeAccessibiltySettings() { fun changeAccessibiltySettings() {
// Goes through the settings and changes the default text on a webpage, then verifies if the text has changed. // Goes through the settings and changes the default text on a webpage, then verifies if the text has changed.

@ -147,10 +147,6 @@ class SettingsPrivacyTest {
verifyNavigationToolBarHeader() verifyNavigationToolBarHeader()
verifyDataCollectionSubMenuItems() verifyDataCollectionSubMenuItems()
}.goBack { }.goBack {
// OPEN LINKS IN APPS
verifyOpenLinksInAppsButton()
verifyOpenLinksInAppsSwitchDefault()
}.goBack { }.goBack {
verifyHomeComponent() verifyHomeComponent()
} }

@ -285,14 +285,6 @@ class SmokeTest {
}.goToSearchEngine { }.goToSearchEngine {
}.enterURLAndEnterToBrowser(defaultWebPage.url) { }.enterURLAndEnterToBrowser(defaultWebPage.url) {
}.openTabDrawer { }.openTabDrawer {
}.openNewTab {
clickSearchEngineButton()
mDevice.waitForIdle()
changeDefaultSearchEngine("Twitter")
verifySearchEngineIcon("Twitter")
}.goToSearchEngine {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
}.openTabDrawer {
}.openNewTab { }.openNewTab {
clickSearchEngineButton() clickSearchEngineButton()
changeDefaultSearchEngine("Wikipedia") changeDefaultSearchEngine("Wikipedia")

@ -248,8 +248,6 @@ private fun assertSearchEngineList() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("DuckDuckGo")) onView(withText("DuckDuckGo"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("Twitter"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("Wikipedia")) onView(withText("Wikipedia"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
} }

@ -51,6 +51,7 @@ class SettingsRobot {
fun verifyAccessibilityButton() = assertAccessibilityButton() fun verifyAccessibilityButton() = assertAccessibilityButton()
fun verifySetAsDefaultBrowserButton() = assertSetAsDefaultBrowserButton() fun verifySetAsDefaultBrowserButton() = assertSetAsDefaultBrowserButton()
fun verifyDefaultBrowserItem() = assertDefaultBrowserItem() fun verifyDefaultBrowserItem() = assertDefaultBrowserItem()
fun verifyCloseTabsItem() = assertCloseTabsItem()
fun verifyDefaultBrowserIsDisaled() = assertDefaultBrowserIsDisabled() fun verifyDefaultBrowserIsDisaled() = assertDefaultBrowserIsDisabled()
fun clickDefaultBrowserSwitch() = toggleDefaultBrowserSwitch() fun clickDefaultBrowserSwitch() = toggleDefaultBrowserSwitch()
fun verifyAndroidDefaultAppsMenuAppears() = assertAndroidDefaultAppsMenuAppears() fun verifyAndroidDefaultAppsMenuAppears() = assertAndroidDefaultAppsMenuAppears()
@ -134,6 +135,15 @@ class SettingsRobot {
return SettingsSubMenuThemeRobot.Transition() return SettingsSubMenuThemeRobot.Transition()
} }
fun openCloseTabsSubMenu(interact: SettingsSubMenuTabsRobot.() -> Unit): SettingsSubMenuTabsRobot.Transition {
fun closeTabsButton() = onView(withText("Close tabs"))
closeTabsButton().click()
SettingsSubMenuTabsRobot().interact()
return SettingsSubMenuTabsRobot.Transition()
}
fun openAccessibilitySubMenu(interact: SettingsSubMenuAccessibilityRobot.() -> Unit): SettingsSubMenuAccessibilityRobot.Transition { fun openAccessibilitySubMenu(interact: SettingsSubMenuAccessibilityRobot.() -> Unit): SettingsSubMenuAccessibilityRobot.Transition {
fun accessibilityButton() = onView(withText("Accessibility")) fun accessibilityButton() = onView(withText("Accessibility"))
@ -237,8 +247,11 @@ private fun assertSettingsView() {
} }
// GENERAL SECTION // GENERAL SECTION
private fun assertGeneralHeading() = onView(withText("General")) private fun assertGeneralHeading() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) scrollToElementByText("General")
onView(withText("General"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
private fun assertSearchEngineButton() { private fun assertSearchEngineButton() {
mDevice.wait(Until.findObject(By.text("Search")), waitingTime) mDevice.wait(Until.findObject(By.text("Search")), waitingTime)
@ -284,8 +297,15 @@ private fun assertDefaultBrowserItem() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
} }
private fun assertCloseTabsItem() {
mDevice.wait(Until.findObject(By.text("Close tabs")), waitingTime)
onView(withText("Close tabs"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
// PRIVACY SECTION // PRIVACY SECTION
private fun assertPrivacyHeading() { private fun assertPrivacyHeading() {
scrollToElementByText("Privacy and security")
onView(withText("Privacy and security")) onView(withText("Privacy and security"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
} }
@ -345,11 +365,16 @@ private fun assertDataCollectionButton() = onView(withText("Data collection"))
private fun openLinksInAppsButton() = onView(withText("Open links in apps")) private fun openLinksInAppsButton() = onView(withText("Open links in apps"))
private fun assertOpenLinksInAppsButton() = openLinksInAppsButton() private fun assertOpenLinksInAppsButton() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) scrollToElementByText("Open links in apps")
openLinksInAppsButton()
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
private fun assertOpenLinksInAppsValue() = openLinksInAppsButton() private fun assertOpenLinksInAppsValue() {
.assertIsEnabled(isEnabled = true) scrollToElementByText("Open links in apps")
openLinksInAppsButton().assertIsEnabled(isEnabled = true)
}
// DEVELOPER TOOLS SECTION // DEVELOPER TOOLS SECTION
private fun assertDeveloperToolsHeading() { private fun assertDeveloperToolsHeading() {

@ -64,8 +64,6 @@ private fun assertSearchEngineList() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("DuckDuckGo")) onView(withText("DuckDuckGo"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("Twitter"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("Wikipedia")) onView(withText("Wikipedia"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("Add search engine")) onView(withText("Add search engine"))

@ -0,0 +1,58 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@file:Suppress("TooManyFunctions")
package org.mozilla.fenix.ui.robots
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.assertion.ViewAssertions
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
import org.hamcrest.CoreMatchers.allOf
/**
* Implementation of Robot Pattern for the settings Tabs sub menu.
*/
class SettingsSubMenuTabsRobot {
fun verifyOptions() = assertOptions()
class Transition {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
mDevice.waitForIdle()
goBackButton().perform(ViewActions.click())
SettingsRobot().interact()
return SettingsRobot.Transition()
}
}
}
private fun assertOptions() {
afterOneDayToggle()
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
manualToggle()
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
afterOneWeekToggle()
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
afterOneMonthToggle()
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
}
private fun manualToggle() = onView(withText("Manually"))
private fun afterOneDayToggle() = onView(withText("After one day"))
private fun afterOneWeekToggle() = onView(withText("After one week"))
private fun afterOneMonthToggle() = onView(withText("After one month"))
private fun goBackButton() =
onView(allOf(ViewMatchers.withContentDescription("Navigate up")))

@ -21,10 +21,6 @@ object FeatureFlags {
*/ */
val syncedTabsInTabsTray = Config.channel.isNightlyOrDebug val syncedTabsInTabsTray = Config.channel.isNightlyOrDebug
/**
* Enables viewing tab history
*/
val tabHistory = true
/** /**
* Enables the new search experience * Enables the new search experience
*/ */
@ -38,19 +34,11 @@ object FeatureFlags {
/** /**
* Enables wait til first contentful paint * Enables wait til first contentful paint
*/ */
val waitUntilPaintToDraw = true // Just enables the setting in Secret Settings val waitUntilPaintToDraw = true
/** /**
* Enables downloads with external download managers. * Enables downloads with external download managers.
*/ */
val externalDownloadManager = true // Just enables the setting in Secret Settings val externalDownloadManager = true
/**
* Enables viewing downloads in browser.
*/
val viewDownloads = true
/**
* Enables selecting from multiple logins.
*/
val loginSelect = true
} }

@ -164,9 +164,7 @@ open class FenixApplication : LocaleAwareApplication(), Provider {
} }
private fun restoreDownloads() { private fun restoreDownloads() {
if (FeatureFlags.viewDownloads) { components.useCases.downloadUseCases.restoreDownloads()
components.useCases.downloadUseCases.restoreDownloads()
}
} }
private fun initVisualCompletenessQueueAndQueueTasks() { private fun initVisualCompletenessQueueAndQueueTasks() {

@ -281,6 +281,14 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
} }
settings().wasDefaultBrowserOnLastResume = settings().isDefaultBrowser() settings().wasDefaultBrowserOnLastResume = settings().isDefaultBrowser()
if (!settings().manuallyCloseTabs) {
components.core.store.state.tabs.filter {
(System.currentTimeMillis() - it.lastAccess) > settings().getTabTimeout()
}.forEach {
components.useCases.tabsUseCases.removeTab(it.id)
}
}
} }
} }
@ -462,8 +470,14 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
super.onBackPressed() super.onBackPressed()
} }
private fun isAndroidN(): Boolean = private fun shouldUseCustomBackLongPress(): Boolean {
Build.VERSION.SDK_INT == Build.VERSION_CODES.N || Build.VERSION.SDK_INT == Build.VERSION_CODES.N_MR1 val isAndroidN =
Build.VERSION.SDK_INT == Build.VERSION_CODES.N || Build.VERSION.SDK_INT == Build.VERSION_CODES.N_MR1
// Huawei devices seem to have problems with onKeyLongPress
// See https://github.com/mozilla-mobile/fenix/issues/13498
val isHuawei = Build.MANUFACTURER.equals("huawei", ignoreCase = true)
return isAndroidN || isHuawei
}
private fun handleBackLongPress(): Boolean { private fun handleBackLongPress(): Boolean {
supportFragmentManager.primaryNavigationFragment?.childFragmentManager?.fragments?.forEach { supportFragmentManager.primaryNavigationFragment?.childFragmentManager?.fragments?.forEach {
@ -476,12 +490,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
final override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { final override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
// Inspired by https://searchfox.org/mozilla-esr68/source/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java#584-613 // Inspired by https://searchfox.org/mozilla-esr68/source/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java#584-613
// Android N has broken passing onKeyLongPress events for the back button, so we // Android N and Huawei devices have broken onKeyLongPress events for the back button, so we
// instead implement the long press behavior ourselves // instead implement the long press behavior ourselves
// - For short presses, we cancel the callback in onKeyUp // - For short presses, we cancel the callback in onKeyUp
// - For long presses, the normal keypress is marked as cancelled, hence won't be handled elsewhere // - For long presses, the normal keypress is marked as cancelled, hence won't be handled elsewhere
// (but Android still provides the haptic feedback), and the long press action is run // (but Android still provides the haptic feedback), and the long press action is run
if (isAndroidN() && keyCode == KeyEvent.KEYCODE_BACK) { if (shouldUseCustomBackLongPress() && keyCode == KeyEvent.KEYCODE_BACK) {
backLongPressJob = lifecycleScope.launch { backLongPressJob = lifecycleScope.launch {
delay(ViewConfiguration.getLongPressTimeout().toLong()) delay(ViewConfiguration.getLongPressTimeout().toLong())
handleBackLongPress() handleBackLongPress()
@ -491,7 +505,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
} }
final override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { final override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
if (isAndroidN() && keyCode == KeyEvent.KEYCODE_BACK) { if (shouldUseCustomBackLongPress() && keyCode == KeyEvent.KEYCODE_BACK) {
backLongPressJob?.cancel() backLongPressJob?.cancel()
} }
return super.onKeyUp(keyCode, event) return super.onKeyUp(keyCode, event)
@ -500,7 +514,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
final override fun onKeyLongPress(keyCode: Int, event: KeyEvent?): Boolean { final override fun onKeyLongPress(keyCode: Int, event: KeyEvent?): Boolean {
// onKeyLongPress is broken in Android N so we don't handle back button long presses here // onKeyLongPress is broken in Android N so we don't handle back button long presses here
// for N. The version check ensures we don't handle back button long presses twice. // for N. The version check ensures we don't handle back button long presses twice.
if (!isAndroidN() && keyCode == KeyEvent.KEYCODE_BACK) { if (!shouldUseCustomBackLongPress() && keyCode == KeyEvent.KEYCODE_BACK) {
return handleBackLongPress() return handleBackLongPress()
} }
return super.onKeyLongPress(keyCode, event) return super.onKeyLongPress(keyCode, event)

@ -508,7 +508,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
onNeedToRequestPermissions = { permissions -> onNeedToRequestPermissions = { permissions ->
requestPermissions(permissions, REQUEST_CODE_PROMPT_PERMISSIONS) requestPermissions(permissions, REQUEST_CODE_PROMPT_PERMISSIONS)
}, },
loginPickerView = if (FeatureFlags.loginSelect) loginSelectBar else null, loginPickerView = loginSelectBar,
onManageLogins = { onManageLogins = {
browserAnimator.captureEngineViewAndDrawStatically { browserAnimator.captureEngineViewAndDrawStatically {
val directions = val directions =
@ -1163,6 +1163,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
} }
override fun onAccessibilityStateChanged(enabled: Boolean) { override fun onAccessibilityStateChanged(enabled: Boolean) {
browserToolbarView.setScrollFlags(enabled) if (_browserToolbarView != null) {
browserToolbarView.setScrollFlags(enabled)
}
} }
} }

@ -111,7 +111,7 @@ class Core(private val context: Context, private val crashReporter: CrashReporti
* This is consistent with both Fennec and Firefox Desktop. * This is consistent with both Fennec and Firefox Desktop.
*/ */
if (Config.channel.isNightlyOrDebug || Config.channel.isBeta) { if (Config.channel.isNightlyOrDebug || Config.channel.isBeta) {
WebCompatReporterFeature.install(it) WebCompatReporterFeature.install(it, "fenix")
} }
} }
} }

@ -186,6 +186,9 @@ sealed class Event {
object ProgressiveWebAppOpenFromHomescreenTap : Event() object ProgressiveWebAppOpenFromHomescreenTap : Event()
object ProgressiveWebAppInstallAsShortcut : Event() object ProgressiveWebAppInstallAsShortcut : Event()
object MasterPasswordMigrationSuccess : Event()
object MasterPasswordMigrationDisplayed : Event()
// Interaction events with extras // Interaction events with extras
data class ProgressiveWebAppForeground(val timeForegrounded: Long) : Event() { data class ProgressiveWebAppForeground(val timeForegrounded: Long) : Event() {

@ -27,6 +27,7 @@ import org.mozilla.fenix.GleanMetrics.FindInPage
import org.mozilla.fenix.GleanMetrics.History import org.mozilla.fenix.GleanMetrics.History
import org.mozilla.fenix.GleanMetrics.LoginDialog import org.mozilla.fenix.GleanMetrics.LoginDialog
import org.mozilla.fenix.GleanMetrics.Logins import org.mozilla.fenix.GleanMetrics.Logins
import org.mozilla.fenix.GleanMetrics.MasterPassword
import org.mozilla.fenix.GleanMetrics.MediaNotification import org.mozilla.fenix.GleanMetrics.MediaNotification
import org.mozilla.fenix.GleanMetrics.MediaState import org.mozilla.fenix.GleanMetrics.MediaState
import org.mozilla.fenix.GleanMetrics.Metrics import org.mozilla.fenix.GleanMetrics.Metrics
@ -684,6 +685,13 @@ private val Event.wrapper: EventWrapper<*>?
{ ProgressiveWebApp.backgroundKeys.valueOf(it) } { ProgressiveWebApp.backgroundKeys.valueOf(it) }
) )
Event.MasterPasswordMigrationDisplayed -> EventWrapper<NoExtraKeys>(
{ MasterPassword.displayed.record(it) }
)
Event.MasterPasswordMigrationSuccess -> EventWrapper<NoExtraKeys>(
{ MasterPassword.migration.record(it) }
)
// Don't record other events in Glean: // Don't record other events in Glean:
is Event.AddBookmark -> null is Event.AddBookmark -> null
is Event.OpenedBookmark -> null is Event.OpenedBookmark -> null

@ -4,6 +4,8 @@
package org.mozilla.fenix.components.tips package org.mozilla.fenix.components.tips
import android.graphics.drawable.Drawable
sealed class TipType { sealed class TipType {
data class Button(val text: String, val action: () -> Unit) : TipType() data class Button(val text: String, val action: () -> Unit) : TipType()
} }
@ -13,7 +15,8 @@ open class Tip(
val identifier: String, val identifier: String,
val title: String, val title: String,
val description: String, val description: String,
val learnMoreURL: String? val learnMoreURL: String?,
val titleDrawable: Drawable? = null
) )
interface TipProvider { interface TipProvider {

@ -0,0 +1,265 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.components.tips.providers
import android.content.Context
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.google.android.material.button.MaterialButton
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import io.sentry.Sentry
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import mozilla.appservices.logins.IdCollisionException
import mozilla.appservices.logins.InvalidRecordException
import mozilla.appservices.logins.LoginsStorageException
import mozilla.appservices.logins.ServerPassword
import mozilla.components.concept.storage.Login
import mozilla.components.support.migration.FennecLoginsMPImporter
import mozilla.components.support.migration.FennecProfile
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.components.tips.TipProvider
import org.mozilla.fenix.components.tips.TipType
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.settings
/**
* Tip explaining to master password users how to migrate their logins.
*/
class MasterPasswordTipProvider(
private val context: Context,
private val navigateToLogins: () -> Unit,
private val dismissTip: (Tip) -> Unit
) : TipProvider {
private val fennecLoginsMPImporter: FennecLoginsMPImporter? by lazy {
FennecProfile.findDefault(
context,
context.components.analytics.crashReporter
)?.let {
FennecLoginsMPImporter(
it
)
}
}
override val tip: Tip? by lazy { masterPasswordMigrationTip() }
override val shouldDisplay: Boolean by lazy {
context.settings().shouldDisplayMasterPasswordMigrationTip &&
fennecLoginsMPImporter?.hasMasterPassword() == true
}
private fun masterPasswordMigrationTip(): Tip =
Tip(
type = TipType.Button(
text = context.getString(R.string.mp_homescreen_button),
action = ::showMasterPasswordMigration
),
identifier = context.getString(R.string.pref_key_master_password_tip),
title = context.getString(R.string.mp_homescreen_tip_title),
description = context.getString(R.string.mp_homescreen_tip_message),
learnMoreURL = null,
titleDrawable = ContextCompat.getDrawable(context, R.drawable.ic_login)
)
private fun showMasterPasswordMigration() {
val dialogView = LayoutInflater.from(context).inflate(R.layout.mp_migration_dialog, null)
val dialogBuilder = AlertDialog.Builder(context).apply {
setTitle(context.getString(R.string.mp_dialog_title_recovery_transfer_saved_logins))
setMessage(context.getString(R.string.mp_dialog_message_recovery_transfer_saved_logins))
setView(dialogView)
create()
}
val dialog = dialogBuilder.show()
context.metrics.track(Event.MasterPasswordMigrationDisplayed)
val passwordErrorText = context.getString(R.string.mp_dialog_error_transfer_saved_logins)
val migrationContinueButton =
dialogView.findViewById<MaterialButton>(R.id.migration_continue)
val passwordView = dialogView.findViewById<TextInputEditText>(R.id.password_field)
val passwordLayout =
dialogView.findViewById<TextInputLayout>(R.id.password_text_input_layout)
passwordView.addTextChangedListener(
object : TextWatcher {
var isValid = false
override fun afterTextChanged(p: Editable?) {
when {
p.toString().isEmpty() -> {
isValid = false
passwordLayout.error = passwordErrorText
}
else -> {
val possiblePassword = passwordView.text.toString()
isValid =
fennecLoginsMPImporter?.checkPassword(possiblePassword) == true
passwordLayout.error = if (isValid) null else passwordErrorText
}
}
migrationContinueButton.alpha = if (isValid) 1F else HALF_OPACITY
migrationContinueButton.isEnabled = isValid
}
override fun beforeTextChanged(
p: CharSequence?,
start: Int,
count: Int,
after: Int
) {
// NOOP
}
override fun onTextChanged(p: CharSequence?, start: Int, before: Int, count: Int) {
// NOOP
}
})
migrationContinueButton.apply {
setOnClickListener {
// Step 1: Verify the password again before trying to use it
val possiblePassword = passwordView.text.toString()
val isValid = fennecLoginsMPImporter?.checkPassword(possiblePassword) == true
// Step 2: With valid MP, get logins and complete the migration
if (isValid) {
val logins = fennecLoginsMPImporter?.getLoginRecords(
possiblePassword,
context.components.analytics.crashReporter
)
if (logins.isNullOrEmpty()) {
showFailureDialog()
dialog.dismiss()
} else {
saveLogins(logins, dialog)
}
} else {
passwordView.error =
context?.getString(R.string.mp_dialog_error_transfer_saved_logins)
}
}
}
dialogView.findViewById<MaterialButton>(R.id.migration_cancel).apply {
setOnClickListener {
dialog.dismiss()
}
}
}
private fun showFailureDialog() {
val dialogView =
LayoutInflater.from(context).inflate(R.layout.mp_migration_done_dialog, null)
val dialogBuilder = AlertDialog.Builder(context).apply {
setTitle(context.getString(R.string.mp_dialog_title_transfer_failure))
setMessage(context.getString(R.string.mp_dialog_message_transfer_failure))
setView(dialogView)
create()
}
val dialog = dialogBuilder.show()
dialogView.findViewById<MaterialButton>(R.id.positive_button).apply {
text = context.getString(R.string.mp_dialog_close_transfer)
setOnClickListener {
tip?.let { dismissTip(it) }
dialog.dismiss()
}
}
dialogView.findViewById<MaterialButton>(R.id.negative_button).apply {
isVisible = false
}
}
private fun saveLogins(logins: List<ServerPassword>, dialog: AlertDialog) {
CoroutineScope(IO).launch {
logins.map { it.toLogin() }.forEach {
try {
context.components.core.passwordsStorage.add(it)
} catch (e: InvalidRecordException) {
// This record was invalid and we couldn't save this login
Sentry.capture("Master Password migration add login error $e for reason ${e.reason}")
} catch (e: IdCollisionException) {
// Nonempty ID was provided
Sentry.capture("Master Password migration add login error $e")
} catch (e: LoginsStorageException) {
// Some other error occurred
Sentry.capture("Master Password migration add login error $e")
}
}
withContext(Dispatchers.Main) {
// Step 3: Dismiss this dialog and show the success dialog
showSuccessDialog()
dialog.dismiss()
}
}
}
private fun showSuccessDialog() {
tip?.let { dismissTip(it) }
context.metrics.track(Event.MasterPasswordMigrationSuccess)
val dialogView =
LayoutInflater.from(context).inflate(R.layout.mp_migration_done_dialog, null)
val dialogBuilder = AlertDialog.Builder(context).apply {
setTitle(context.getString(R.string.mp_dialog_title_transfer_success))
setMessage(context.getString(R.string.mp_dialog_message_transfer_success))
setView(dialogView)
create()
}
val dialog = dialogBuilder.show()
dialogView.findViewById<MaterialButton>(R.id.positive_button).apply {
setOnClickListener {
navigateToLogins()
dialog.dismiss()
}
}
dialogView.findViewById<MaterialButton>(R.id.negative_button).apply {
setOnClickListener {
dialog.dismiss()
}
}
}
/**
* Converts an Application Services [ServerPassword] to an Android Components [Login]
*/
fun ServerPassword.toLogin() = Login(
origin = hostname,
formActionOrigin = formSubmitURL,
httpRealm = httpRealm,
username = username,
password = password,
timesUsed = timesUsed,
timeCreated = timeCreated,
timeLastUsed = timeLastUsed,
timePasswordChanged = timePasswordChanged,
usernameField = usernameField,
passwordField = passwordField
)
companion object {
private const val HALF_OPACITY = .5F
}
}

@ -24,7 +24,6 @@ import mozilla.components.browser.state.selector.findTab
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.storage.BookmarksStorage import mozilla.components.concept.storage.BookmarksStorage
import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.getColorFromAttr
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
@ -181,7 +180,7 @@ class DefaultToolbarMenu(
.syncedTabsInTabsTray .syncedTabsInTabsTray
val menuItems = listOfNotNull( val menuItems = listOfNotNull(
if (FeatureFlags.viewDownloads) downloadsItem else null, downloadsItem,
historyItem, historyItem,
bookmarksItem, bookmarksItem,
if (syncedTabsInTabsTray) null else syncedTabs, if (syncedTabsInTabsTray) null else syncedTabs,

@ -82,6 +82,8 @@ import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.components.TabCollectionStorage import org.mozilla.fenix.components.TabCollectionStorage
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.tips.FenixTipManager import org.mozilla.fenix.components.tips.FenixTipManager
import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.components.tips.providers.MasterPasswordTipProvider
import org.mozilla.fenix.components.tips.providers.MigrationTipProvider import org.mozilla.fenix.components.tips.providers.MigrationTipProvider
import org.mozilla.fenix.components.toolbar.TabCounterMenu import org.mozilla.fenix.components.toolbar.TabCounterMenu
import org.mozilla.fenix.components.toolbar.ToolbarPosition import org.mozilla.fenix.components.toolbar.ToolbarPosition
@ -174,6 +176,7 @@ class HomeFragment : Fragment() {
} }
} }
@Suppress("LongMethod")
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
@ -197,7 +200,18 @@ class HomeFragment : Fragment() {
expandedCollections = emptySet(), expandedCollections = emptySet(),
mode = currentMode.getCurrentMode(), mode = currentMode.getCurrentMode(),
topSites = components.core.topSiteStorage.cachedTopSites, topSites = components.core.topSiteStorage.cachedTopSites,
tip = FenixTipManager(listOf(MigrationTipProvider(requireContext()))).getTip(), tip = StrictMode.allowThreadDiskReads().resetPoliciesAfter {
FenixTipManager(
listOf(
MasterPasswordTipProvider(
requireContext(),
::navToSavedLogins,
::dismissTip
),
MigrationTipProvider(requireContext())
)
).getTip()
},
showCollectionPlaceholder = components.settings.showCollectionsPlaceholderOnHome showCollectionPlaceholder = components.settings.showCollectionsPlaceholderOnHome
) )
) )
@ -232,6 +246,7 @@ class HomeFragment : Fragment() {
handleSwipedItemDeletionCancel = ::handleSwipedItemDeletionCancel handleSwipedItemDeletionCancel = ::handleSwipedItemDeletionCancel
) )
) )
updateLayout(view) updateLayout(view)
sessionControlView = SessionControlView( sessionControlView = SessionControlView(
view.sessionControlRecyclerView, view.sessionControlRecyclerView,
@ -246,6 +261,10 @@ class HomeFragment : Fragment() {
return view return view
} }
private fun dismissTip(tip: Tip) {
sessionControlInteractor.onCloseTip(tip)
}
/** /**
* Returns a [TopSitesConfig] which specifies how many top sites to display and whether or * Returns a [TopSitesConfig] which specifies how many top sites to display and whether or
* not frequently visited sites should be displayed. * not frequently visited sites should be displayed.
@ -411,7 +430,8 @@ class HomeFragment : Fragment() {
// We call this onLayout so that the bottom bar width is correctly set for us to center // We call this onLayout so that the bottom bar width is correctly set for us to center
// the CFR in. // the CFR in.
view.toolbar_wrapper.doOnLayout { view.toolbar_wrapper.doOnLayout {
val willNavigateToSearch = !bundleArgs.getBoolean(FOCUS_ON_ADDRESS_BAR) && FeatureFlags.newSearchExperience val willNavigateToSearch =
!bundleArgs.getBoolean(FOCUS_ON_ADDRESS_BAR) && FeatureFlags.newSearchExperience
if (!browsingModeManager.mode.isPrivate && !willNavigateToSearch) { if (!browsingModeManager.mode.isPrivate && !willNavigateToSearch) {
SearchWidgetCFR( SearchWidgetCFR(
context = view.context, context = view.context,
@ -540,7 +560,18 @@ class HomeFragment : Fragment() {
collections = components.core.tabCollectionStorage.cachedTabCollections, collections = components.core.tabCollectionStorage.cachedTabCollections,
mode = currentMode.getCurrentMode(), mode = currentMode.getCurrentMode(),
topSites = components.core.topSiteStorage.cachedTopSites, topSites = components.core.topSiteStorage.cachedTopSites,
tip = FenixTipManager(listOf(MigrationTipProvider(requireContext()))).getTip(), tip = StrictMode.allowThreadDiskReads().resetPoliciesAfter {
FenixTipManager(
listOf(
MasterPasswordTipProvider(
requireContext(),
::navToSavedLogins,
::dismissTip
),
MigrationTipProvider(requireContext())
)
).getTip()
},
showCollectionPlaceholder = components.settings.showCollectionsPlaceholderOnHome showCollectionPlaceholder = components.settings.showCollectionsPlaceholderOnHome
) )
) )
@ -587,6 +618,10 @@ class HomeFragment : Fragment() {
} }
} }
private fun navToSavedLogins() {
findNavController().navigate(HomeFragmentDirections.actionGlobalSavedLoginsAuthFragment())
}
private fun dispatchModeChanges(mode: Mode) { private fun dispatchModeChanges(mode: Mode) {
if (mode != Mode.fromBrowsingMode(browsingModeManager.mode)) { if (mode != Mode.fromBrowsingMode(browsingModeManager.mode)) {
homeFragmentStore.dispatch(HomeFragmentAction.ModeChange(mode)) homeFragmentStore.dispatch(HomeFragmentAction.ModeChange(mode))

@ -21,7 +21,6 @@ import mozilla.components.concept.sync.AccountObserver
import mozilla.components.concept.sync.AuthType import mozilla.components.concept.sync.AuthType
import mozilla.components.concept.sync.OAuthAccount import mozilla.components.concept.sync.OAuthAccount
import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.getColorFromAttr
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
@ -170,7 +169,7 @@ class HomeMenu(
if (settings.syncedTabsInTabsTray) null else syncedTabsItem, if (settings.syncedTabsInTabsTray) null else syncedTabsItem,
bookmarksItem, bookmarksItem,
historyItem, historyItem,
if (FeatureFlags.viewDownloads) downloadsItem else null, downloadsItem,
BrowserMenuDivider(), BrowserMenuDivider(),
addons, addons,
BrowserMenuDivider(), BrowserMenuDivider(),

@ -41,7 +41,7 @@ class OnboardingAutomaticSignInViewHolder(
fun bind(account: ShareableAccount) { fun bind(account: ShareableAccount) {
shareableAccount = account shareableAccount = account
headerText.text = itemView.context.getString( headerText.text = itemView.context.getString(
R.string.onboarding_firefox_account_auto_signin_header_2, account.email R.string.onboarding_firefox_account_auto_signin_header_3, account.email
) )
val icon = getDrawable(itemView.context, R.drawable.ic_onboarding_avatar_anonymous) val icon = getDrawable(itemView.context, R.drawable.ic_onboarding_avatar_anonymous)
headerText.putCompoundDrawablesRelativeWithIntrinsicBounds(start = icon) headerText.putCompoundDrawablesRelativeWithIntrinsicBounds(start = icon)

@ -37,6 +37,9 @@ class ButtonTipViewHolder(
metrics.track(Event.TipDisplayed(tip.identifier)) metrics.track(Event.TipDisplayed(tip.identifier))
tip_header_text.text = tip.title tip_header_text.text = tip.title
tip.titleDrawable?.let {
tip_header_text.setCompoundDrawablesWithIntrinsicBounds(it, null, null, null)
}
tip_description_text.text = tip.description tip_description_text.text = tip.description
tip_button.text = tip.type.text tip_button.text = tip.type.text

@ -17,6 +17,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.ViewStub import android.view.ViewStub
import android.view.WindowManager
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDialogFragment import androidx.appcompat.app.AppCompatDialogFragment
import androidx.constraintlayout.widget.ConstraintProperties.BOTTOM import androidx.constraintlayout.widget.ConstraintProperties.BOTTOM
@ -40,6 +41,7 @@ import mozilla.components.feature.qr.QrFeature
import mozilla.components.lib.state.ext.consumeFrom import mozilla.components.lib.state.ext.consumeFrom
import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.UserInteractionHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.content.hasCamera import mozilla.components.support.ktx.android.content.hasCamera
import mozilla.components.support.ktx.android.content.res.getSpanned import mozilla.components.support.ktx.android.content.res.getSpanned
import mozilla.components.support.ktx.android.view.hideKeyboard import mozilla.components.support.ktx.android.view.hideKeyboard
@ -79,6 +81,21 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
private val qrFeature = ViewBoundFeatureWrapper<QrFeature>() private val qrFeature = ViewBoundFeatureWrapper<QrFeature>()
private val speechIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH) private val speechIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
override fun onStart() {
super.onStart()
// https://github.com/mozilla-mobile/fenix/issues/14279
// To prevent GeckoView from resizing we're going to change the softInputMode to not adjust
// the size of the window.
requireActivity().window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING)
}
override fun onStop() {
super.onStop()
// https://github.com/mozilla-mobile/fenix/issues/14279
// Let's reset back to the default behavior after we're done searching
requireActivity().window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.SearchDialogStyle) setStyle(STYLE_NO_TITLE, R.style.SearchDialogStyle)
@ -254,6 +271,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
updateSearchSuggestionsHintVisibility(it) updateSearchSuggestionsHintVisibility(it)
updateClipboardSuggestion(it, requireContext().components.clipboardHandler.url) updateClipboardSuggestion(it, requireContext().components.clipboardHandler.url)
updateToolbarContentDescription(it) updateToolbarContentDescription(it)
updateSearchShortcutsIcon(it)
toolbarView.update(it) toolbarView.update(it)
awesomeBarView.update(it) awesomeBarView.update(it)
firstUpdate = false firstUpdate = false
@ -416,6 +434,20 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
urlView?.importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO urlView?.importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO
} }
private fun updateSearchShortcutsIcon(searchState: SearchFragmentState) {
view?.apply {
search_engines_shortcut_button.isVisible = searchState.areShortcutsAvailable
val showShortcuts = searchState.showSearchShortcuts
search_engines_shortcut_button.isChecked = showShortcuts
val color = if (showShortcuts) R.attr.contrastText else R.attr.primaryText
search_engines_shortcut_button.compoundDrawables[0]?.setTint(
requireContext().getColorFromAttr(color)
)
}
}
companion object { companion object {
private const val REQUEST_CODE_CAMERA_PERMISSIONS = 1 private const val REQUEST_CODE_CAMERA_PERMISSIONS = 1
} }

@ -0,0 +1,48 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.settings
import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.utils.view.addToRadioGroup
/**
* Lets the user customize auto closing tabs.
*/
class CloseTabsSettingsFragment : PreferenceFragmentCompat() {
private lateinit var radioManual: RadioButtonPreference
private lateinit var radioOneDay: RadioButtonPreference
private lateinit var radioOneWeek: RadioButtonPreference
private lateinit var radioOneMonth: RadioButtonPreference
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.close_tabs_preferences, rootKey)
}
override fun onResume() {
super.onResume()
showToolbar(getString(R.string.preferences_close_tabs))
setupPreferences()
}
private fun setupPreferences() {
radioManual = requirePreference(R.string.pref_key_close_tabs_manually)
radioOneDay = requirePreference(R.string.pref_key_close_tabs_after_one_day)
radioOneWeek = requirePreference(R.string.pref_key_close_tabs_after_one_week)
radioOneMonth = requirePreference(R.string.pref_key_close_tabs_after_one_month)
setupRadioGroups()
}
private fun setupRadioGroups() {
addToRadioGroup(
radioManual,
radioOneDay,
radioOneMonth,
radioOneWeek
)
}
}

@ -170,6 +170,10 @@ class SettingsFragment : PreferenceFragmentCompat() {
} }
} }
val tabSettingsPreference =
requirePreference<Preference>(R.string.pref_key_close_tabs)
tabSettingsPreference.summary = context?.settings()?.getTabTimeoutString()
setupPreferences() setupPreferences()
if (shouldUpdateAccountUIState) { if (shouldUpdateAccountUIState) {
@ -192,6 +196,9 @@ class SettingsFragment : PreferenceFragmentCompat() {
resources.getString(R.string.pref_key_sign_in) -> { resources.getString(R.string.pref_key_sign_in) -> {
SettingsFragmentDirections.actionSettingsFragmentToTurnOnSyncFragment() SettingsFragmentDirections.actionSettingsFragmentToTurnOnSyncFragment()
} }
resources.getString(R.string.pref_key_close_tabs) -> {
SettingsFragmentDirections.actionSettingsFragmentToCloseTabsSettingsFragment()
}
resources.getString(R.string.pref_key_search_settings) -> { resources.getString(R.string.pref_key_search_settings) -> {
SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment() SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment()
} }
@ -301,7 +308,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
requirePreference<Preference>(R.string.pref_key_external_download_manager) requirePreference<Preference>(R.string.pref_key_external_download_manager)
val preferenceLeakCanary = findPreference<Preference>(leakKey) val preferenceLeakCanary = findPreference<Preference>(leakKey)
val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey) val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey)
val preferenceMakeDefaultBrowser = requirePreference<Preference>(R.string.pref_key_make_default_browser) val preferenceMakeDefaultBrowser =
requirePreference<Preference>(R.string.pref_key_make_default_browser)
if (!Config.channel.isReleased) { if (!Config.channel.isReleased) {
preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue -> preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue ->

@ -124,7 +124,6 @@ open class SavedLoginsStorageController(
fun findPotentialDuplicates(loginId: String) { fun findPotentialDuplicates(loginId: String) {
var deferredLogin: Deferred<List<Login>>? = null var deferredLogin: Deferred<List<Login>>? = null
// What scope should be used here?
val fetchLoginJob = viewLifecycleScope.launch(ioDispatcher) { val fetchLoginJob = viewLifecycleScope.launch(ioDispatcher) {
deferredLogin = async { deferredLogin = async {
val login = getLogin(loginId) val login = getLogin(loginId)

@ -76,6 +76,11 @@ abstract class SearchEngineListPreference @JvmOverloads constructor(
it.identifier == defaultEngine it.identifier == defaultEngine
} ?: searchEngineList.list.first()).identifier } ?: searchEngineList.list.first()).identifier
context.components.search.searchEngineManager.defaultSearchEngine =
searchEngineList.list.find {
it.identifier == selectedEngine
}
searchEngineGroup!!.removeAllViews() searchEngineGroup!!.removeAllViews()
val layoutInflater = LayoutInflater.from(context) val layoutInflater = LayoutInflater.from(context)
@ -97,6 +102,10 @@ abstract class SearchEngineListPreference @JvmOverloads constructor(
engineItem.tag = engineId engineItem.tag = engineId
if (engineId == selectedEngine) { if (engineId == selectedEngine) {
updateDefaultItem(engineItem.radio_button) updateDefaultItem(engineItem.radio_button)
/* #11465 -> radio_button.isChecked = true does not trigger
* onSearchEngineSelected because searchEngineGroup has null views at that point.
* So we trigger it here.*/
onSearchEngineSelected(engine)
} }
searchEngineGroup!!.addView(engineItem, layoutParams) searchEngineGroup!!.addView(engineItem, layoutParams)
} }

@ -31,6 +31,7 @@ import org.mozilla.fenix.home.HomeFragment
interface TabTrayController { interface TabTrayController {
fun onNewTabTapped(private: Boolean) fun onNewTabTapped(private: Boolean)
fun onTabTrayDismissed() fun onTabTrayDismissed()
fun handleTabSettingsClicked()
fun onShareTabsClicked(private: Boolean) fun onShareTabsClicked(private: Boolean)
fun onSyncedTabClicked(syncTab: SyncTab) fun onSyncedTabClicked(syncTab: SyncTab)
fun onSaveToCollectionClicked(selectedTabs: Set<Tab>) fun onSaveToCollectionClicked(selectedTabs: Set<Tab>)
@ -88,6 +89,10 @@ class DefaultTabTrayController(
) )
} }
override fun handleTabSettingsClicked() {
navController.navigate(TabTrayDialogFragmentDirections.actionGlobalCloseTabSettingsFragment())
}
override fun onTabTrayDismissed() { override fun onTabTrayDismissed() {
dismissTabTray() dismissTabTray()
} }

@ -24,6 +24,11 @@ interface TabTrayInteractor {
*/ */
fun onShareTabsClicked(private: Boolean) fun onShareTabsClicked(private: Boolean)
/**
* Called when user clicks the tab settings button.
*/
fun onTabSettingsClicked()
/** /**
* Called when user clicks button to save selected tabs to a collection. * Called when user clicks button to save selected tabs to a collection.
*/ */
@ -83,6 +88,10 @@ class TabTrayFragmentInteractor(private val controller: TabTrayController) : Tab
controller.onTabTrayDismissed() controller.onTabTrayDismissed()
} }
override fun onTabSettingsClicked() {
controller.handleTabSettingsClicked()
}
override fun onShareTabsClicked(private: Boolean) { override fun onShareTabsClicked(private: Boolean) {
controller.onShareTabsClicked(private) controller.onShareTabsClicked(private)
} }

@ -198,6 +198,7 @@ class TabTrayView(
is TabTrayItemMenu.Item.ShareAllTabs -> interactor.onShareTabsClicked( is TabTrayItemMenu.Item.ShareAllTabs -> interactor.onShareTabsClicked(
isPrivateModeSelected isPrivateModeSelected
) )
is TabTrayItemMenu.Item.OpenTabSettings -> interactor.onTabSettingsClicked()
is TabTrayItemMenu.Item.SaveToCollection -> interactor.onEnterMultiselect() is TabTrayItemMenu.Item.SaveToCollection -> interactor.onEnterMultiselect()
is TabTrayItemMenu.Item.CloseAllTabs -> interactor.onCloseAllTabsClicked( is TabTrayItemMenu.Item.CloseAllTabs -> interactor.onCloseAllTabsClicked(
isPrivateModeSelected isPrivateModeSelected
@ -554,6 +555,7 @@ class TabTrayItemMenu(
sealed class Item { sealed class Item {
object ShareAllTabs : Item() object ShareAllTabs : Item()
object OpenTabSettings : Item()
object SaveToCollection : Item() object SaveToCollection : Item()
object CloseAllTabs : Item() object CloseAllTabs : Item()
} }
@ -578,6 +580,13 @@ class TabTrayItemMenu(
onItemTapped.invoke(Item.ShareAllTabs) onItemTapped.invoke(Item.ShareAllTabs)
}, },
SimpleBrowserMenuItem(
context.getString(R.string.tab_tray_menu_tab_settings),
textColorResource = R.color.primary_text_normal_theme
) {
onItemTapped.invoke(Item.OpenTabSettings)
},
SimpleBrowserMenuItem( SimpleBrowserMenuItem(
context.getString(R.string.tab_tray_menu_item_close), context.getString(R.string.tab_tray_menu_item_close),
textColorResource = R.color.primary_text_normal_theme textColorResource = R.color.primary_text_normal_theme

@ -95,10 +95,7 @@ class TabTrayViewHolder(
contentDescription = contentDescription =
context.getString(R.string.mozac_feature_media_notification_action_play) context.getString(R.string.mozac_feature_media_notification_action_play)
setImageDrawable( setImageDrawable(
AppCompatResources.getDrawable( AppCompatResources.getDrawable(context, R.drawable.media_state_play)
context,
R.drawable.tab_tray_play_with_background
)
) )
} }
@ -107,10 +104,7 @@ class TabTrayViewHolder(
contentDescription = contentDescription =
context.getString(R.string.mozac_feature_media_notification_action_pause) context.getString(R.string.mozac_feature_media_notification_action_pause)
setImageDrawable( setImageDrawable(
AppCompatResources.getDrawable( AppCompatResources.getDrawable(context, R.drawable.media_state_pause)
context,
R.drawable.tab_tray_pause_with_background
)
) )
} }

@ -62,6 +62,10 @@ class Settings(private val appContext: Context) : PreferencesHolder {
private const val CFR_COUNT_CONDITION_FOCUS_NOT_INSTALLED = 3 private const val CFR_COUNT_CONDITION_FOCUS_NOT_INSTALLED = 3
private const val MIN_DAYS_SINCE_FEEDBACK_PROMPT = 120 private const val MIN_DAYS_SINCE_FEEDBACK_PROMPT = 120
const val ONE_DAY_MS = 60 * 60 * 24 * 1000L
const val ONE_WEEK_MS = 60 * 60 * 24 * 7 * 1000L
const val ONE_MONTH_MS = (60 * 60 * 24 * 365 * 1000L) / 12
private fun Action.toInt() = when (this) { private fun Action.toInt() = when (this) {
Action.BLOCKED -> BLOCKED_INT Action.BLOCKED -> BLOCKED_INT
Action.ASK_TO_ALLOW -> ASK_TO_ALLOW_INT Action.ASK_TO_ALLOW -> ASK_TO_ALLOW_INT
@ -159,6 +163,11 @@ class Settings(private val appContext: Context) : PreferencesHolder {
default = false default = false
) )
var shouldDisplayMasterPasswordMigrationTip by booleanPreference(
appContext.getString(R.string.pref_key_master_password_tip),
true
)
// If any of the prefs have been modified, quit displaying the fenix moved tip // If any of the prefs have been modified, quit displaying the fenix moved tip
fun shouldDisplayFenixMovingTip(): Boolean = fun shouldDisplayFenixMovingTip(): Boolean =
preferences.getBoolean( preferences.getBoolean(
@ -324,6 +333,48 @@ class Settings(private val appContext: Context) : PreferencesHolder {
default = false default = false
) )
var manuallyCloseTabs by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_close_tabs_manually),
default = true
)
var closeTabsAfterOneDay by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_close_tabs_after_one_day),
default = false
)
var closeTabsAfterOneWeek by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_close_tabs_after_one_week),
default = false
)
var closeTabsAfterOneMonth by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_close_tabs_after_one_month),
default = false
)
fun getTabTimeout(): Long = when {
closeTabsAfterOneDay -> ONE_DAY_MS
closeTabsAfterOneWeek -> ONE_WEEK_MS
closeTabsAfterOneMonth -> ONE_MONTH_MS
else -> System.currentTimeMillis()
}
fun getTabTimeoutString(): String = when {
closeTabsAfterOneDay -> {
appContext.getString(R.string.close_tabs_after_one_day)
}
closeTabsAfterOneWeek -> {
appContext.getString(R.string.close_tabs_after_one_week)
}
closeTabsAfterOneMonth -> {
appContext.getString(R.string.close_tabs_after_one_month)
}
else -> {
appContext.getString(R.string.close_tabs_manually)
}
}
val shouldUseDarkTheme by booleanPreference( val shouldUseDarkTheme by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_dark_theme), appContext.getPreferenceKey(R.string.pref_key_dark_theme),
default = false default = false

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M15.22 22H5.78A3.78 3.78 0 0 1 2 18.22V8.78C2 6.69 3.7 5 5.78 5h9.44C17.31 5 19 6.7 19 8.78v9.44c0 2-1.7 3.78-3.78 3.78zM5.86 7C4.83 7 4 7.83 4 8.86v9.28C4 19.17 4.83 20 5.86 20h9.28c1 0 1.86-0.83 1.86-1.86V8.86C17 8 16.17 7 15 7H6zM6 4c0-1.1 1-2 2-2h8a6 6 0 0 1 6 6v0L22 16a2 2 0 0 1-2 2L20 8V8a4 4 0 0 0-4-4H6z"
android:fillColor="?primaryText" />
</vector>

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="24dp"
android:height="24dp" />
<!-- Background color of the circle -->
<solid android:color="?tabTrayItemMediaBackground" />
<!-- Outer circle border -->
<stroke android:color="@color/tab_tray_item_media_stroke"
android:width="2dp"/>
</shape>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/media_state_background" />
<item>
<vector
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<!-- Background color of the circle -->
<path
android:fillColor="@color/tab_tray_item_media_stroke"
android:pathData="M10.5,16.125c0,0.1 0,0.195 -0.1,0.265c-0,0 -0.166,0.1 -0.265,0.1l-2.25,0c-0,0 -0.195,0 -0.265,-0.1c-0,-0 -0.1,-0.166 -0.1,-0.265l0,-8.25c0,-0 0,-0.195 0.1,-0.265c0,0 0.166,-0.1 0.265,-0.1l2.25,0c0,0 0.195,0 0.265,0.11c0,0 0.1,0.166 0.1,0.265l0,8.25Zm6,0c0,0 0,0.195 -0.1,0.265c0,0 -0.166,0.1 -0.265,0.1l-2.25,0c0,0 -0.195,0 -0.265,-0.1c0,0 -0.1,-0.166 -0.1,-0.265l0,-8.25c0,-0.099 0,-0.195 0.1,-0.265c0,0 0.166,-0.1 0.265,-0.1l2.25,0c0,0 0.195,0 0.265,0.11c0,0 0.1,0.166 0.1,0.265l0,8.25Z"/>
</vector>
</item>
</layer-list>

@ -3,16 +3,7 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this - License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item> <item android:drawable="@drawable/media_state_background" />
<shape android:shape="oval">
<size
android:width="24dp"
android:height="24dp" />
<solid android:color="?above" />
<stroke android:color="?above"
android:width="2dp"/>
</shape>
</item>
<item> <item>
<vector <vector
android:width="24dp" android:width="24dp"
@ -20,8 +11,8 @@
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:fillColor="?accent" android:fillColor="@color/tab_tray_item_media_stroke"
android:pathData="M12,22a10,10 0,1 1,10 -10,10 10,0 0,1 -10,10zM10,16.363l6,-3.5a1,1 0,0 0,0 -1.732l-6,-3.5A1,1 0,0 0,8.5 8.5v7a1,1 0,0 0,1.5 0.863z"/> android:pathData="M10,16.363l6,-3.5c0.2,-0.12 0.36,-0.3 0.44,-0.524c0.1,-0.2 0.1,-0.46 0,-0.684c-0.1,-0.22 -0.236,-0.4 -0.44,-0.524l-6,-3.5c-0.2,-0.12 -0.44,-0.16 -0.675,-0.12c-0.23,0.04 -0.44,0.163 -0.6,0.344c-0.15,0.2 -0.234,0.4 -0.233,0.644l0,7c0,0.235 0.084,0.46 0.235,0.641c0.15,0.2 0.36,0.3 0.59,0.34c0.23,0.04 0.5,-0 0.673,-0.1Z"/>
</vector> </vector>
</item> </item>
</layer-list> </layer-list>

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size
android:width="24dp"
android:height="24dp" />
<solid android:color="?above" />
<stroke android:color="?above"
android:width="2dp"/>
</shape>
</item>
<item>
<vector
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?accent"
android:pathData="M12,2a10,10 0,1 0,10 10A10,10 0,0 0,12 2zM10.5,16.125a0.375,0.375 0,0 1,-0.375 0.375h-2.25A0.375,0.375 0,0 1,7.5 16.125v-8.25A0.375,0.375 0,0 1,7.875 7.5h2.25A0.375,0.375 0,0 1,10.5 7.875zM16.5,16.125a0.375,0.375 0,0 1,-0.375 0.375h-2.25a0.375,0.375 0,0 1,-0.375 -0.375v-8.25A0.375,0.375 0,0 1,13.875 7.5h2.25A0.375,0.375 0,0 1,16.5 7.875z"/>
</vector>
</item>
</layer-list>

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size
android:width="24dp"
android:height="24dp" />
<!-- Vertical pause lines -->
<solid android:color="@color/tab_tray_item_media_stroke" />
<!-- Outer circle border -->
<stroke android:color="@color/tab_tray_item_media_stroke"
android:width="2dp"/>
</shape>
</item>
<item>
<vector
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<!-- Background color of the circle -->
<path
android:fillColor="?tabTrayItemMediaBackground"
android:pathData="M12,2a10,10 0,1 0,10 10A10,10 0,0 0,12 2zM10.5,16.125a0.375,0.375 0,0 1,-0.375 0.375h-2.25A0.375,0.375 0,0 1,7.5 16.125v-8.25A0.375,0.375 0,0 1,7.875 7.5h2.25A0.375,0.375 0,0 1,10.5 7.875zM16.5,16.125a0.375,0.375 0,0 1,-0.375 0.375h-2.25a0.375,0.375 0,0 1,-0.375 -0.375v-8.25A0.375,0.375 0,0 1,13.875 7.5h2.25A0.375,0.375 0,0 1,16.5 7.875z"/>
</vector>
</item>
</layer-list>

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size
android:width="24dp"
android:height="24dp" />
<!-- Vertical pause lines -->
<solid android:color="@color/tab_tray_item_media_stroke" />
<!-- Outer circle border -->
<stroke android:color="@color/tab_tray_item_media_stroke"
android:width="2dp"/>
</shape>
</item>
<item>
<vector
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<!-- Background color of the circle -->
<path
android:fillColor="?tabTrayItemMediaBackground"
android:pathData="M12,22a10,10 0,1 1,10 -10,10 10,0 0,1 -10,10zM10,16.363l6,-3.5a1,1 0,0 0,0 -1.732l-6,-3.5A1,1 0,0 0,8.5 8.5v7a1,1 0,0 0,1.5 0.863z"/>
</vector>
</item>
</layer-list>

@ -2,56 +2,57 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public <!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this - License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tip_card" android:id="@+id/tip_card"
android:background="@drawable/cfr_background_gradient"
style="@style/OnboardingCardLight" style="@style/OnboardingCardLight"
android:padding="0dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:background="@drawable/cfr_background_gradient"
android:padding="0dp">
<TextView <TextView
android:id="@+id/tip_header_text" android:id="@+id/tip_header_text"
android:layout_width="0dp" android:layout_width="0dp"
android:maxLines="2"
android:lineSpacingExtra="2dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/primary_text_dark_theme"
android:textAppearance="@style/HeaderTextStyle"
android:gravity="center_vertical"
tools:text="Header text"
android:layout_margin="16dp" android:layout_margin="16dp"
android:drawablePadding="12dp"
android:gravity="center_vertical"
android:lineSpacingExtra="2dp"
android:maxLines="2"
android:textAppearance="@style/HeaderTextStyle"
android:textColor="@color/primary_text_dark_theme"
app:drawableTint="@color/primary_text_dark_theme"
app:layout_constraintEnd_toStartOf="@id/tip_close"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/tip_close" /> tools:text="Header text" />
<ImageButton <ImageButton
android:id="@+id/tip_close" android:id="@+id/tip_close"
android:tint="@color/primary_text_dark_theme" android:layout_width="48dp"
app:srcCompat="@drawable/ic_close" android:layout_height="48dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:background="?selectableItemBackgroundBorderless" android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/create_collection_close" android:contentDescription="@string/create_collection_close"
android:layout_width="48dp" android:tint="@color/primary_text_dark_theme"
android:layout_height="48dp" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_close" />
<TextView <TextView
android:id="@+id/tip_description_text" android:id="@+id/tip_description_text"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="8dp"
android:lineSpacingExtra="2dp" android:lineSpacingExtra="2dp"
android:textAppearance="@style/Body14TextStyle" android:textAppearance="@style/Body14TextStyle"
android:textColor="@color/primary_text_dark_theme" android:textColor="@color/primary_text_dark_theme"
tools:text="Tip description" app:layout_constraintEnd_toStartOf="@id/tip_close"
android:layout_marginTop="8dp"
android:layout_marginHorizontal="16dp"
app:layout_constraintTop_toBottomOf="@id/tip_header_text"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/tip_close"/> app:layout_constraintTop_toBottomOf="@id/tip_header_text"
tools:text="Tip description" />
<TextView <TextView
android:id="@+id/tip_learn_more" android:id="@+id/tip_learn_more"
@ -63,19 +64,20 @@
app:layout_constraintEnd_toEndOf="@id/tip_description_text" app:layout_constraintEnd_toEndOf="@id/tip_description_text"
app:layout_constraintStart_toStartOf="@id/tip_description_text" app:layout_constraintStart_toStartOf="@id/tip_description_text"
app:layout_constraintTop_toBottomOf="@id/tip_description_text" app:layout_constraintTop_toBottomOf="@id/tip_description_text"
tools:textColor="@color/accent_high_contrast_private_theme"/> tools:textColor="@color/accent_high_contrast_private_theme" />
<Button <Button
style="@style/NeutralButton"
android:id="@+id/tip_button" android:id="@+id/tip_button"
android:layout_marginTop="16dp" style="@style/NeutralButton"
tools:text="Call to action"
android:layout_height="36dp" android:layout_height="36dp"
android:layout_marginHorizontal="16dp" android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
app:layout_constraintTop_toBottomOf="@id/tip_learn_more" app:backgroundTint="@color/foundation_light_theme"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tip_learn_more"
tools:text="Call to action" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -3,18 +3,28 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this - License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" <!--LinearLayout is used here because we are forced by the view pager
to keep layout_width="match_parent"-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/top_sites_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center_horizontal" android:gravity="center_horizontal">
android:layout_marginBottom="8dp"
android:clipChildren="false" <androidx.recyclerview.widget.RecyclerView
android:clipToPadding="false" android:id="@+id/top_sites_list"
android:overScrollMode="never" android:layout_width="wrap_content"
android:nestedScrollingEnabled="false" android:minWidth="448dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" android:layout_height="match_parent"
app:spanCount="4" android:layout_gravity="center_horizontal"
tools:listitem="@layout/top_site_item" /> android:layout_marginBottom="8dp"
android:clipChildren="false"
android:clipToPadding="false"
android:overScrollMode="never"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
tools:listitem="@layout/top_site_item" />
</LinearLayout>

@ -52,7 +52,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?primaryText" android:textColor="?primaryText"
android:textSize="16sp" android:textSize="16sp"
android:text="@string/add_to_homescreen_description" android:text="@string/add_to_homescreen_description_2"
app:layout_constraintStart_toEndOf="@id/home_icon" app:layout_constraintStart_toEndOf="@id/home_icon"
app:layout_constraintTop_toTopOf="@id/home_icon" app:layout_constraintTop_toTopOf="@id/home_icon"
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<mozilla.components.feature.prompts.widget.LoginPanelTextInputLayout
android:id="@+id/password_text_input_layout"
style="@style/MozTextInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="24dp"
android:paddingEnd="24dp"
app:errorEnabled="true"
app:errorIconDrawable="@null"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:passwordToggleDrawable="@drawable/mozac_ic_password_reveal_two_state"
app:passwordToggleEnabled="true"
app:passwordToggleTint="?primaryText">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_field"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/mozac_feature_prompt_password_hint"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="?primaryText"
android:textSize="16sp" />
</mozilla.components.feature.prompts.widget.LoginPanelTextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/migration_continue"
style="@style/PositiveButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="24dp"
android:text="@string/mp_dialog_positive_transfer_saved_logins"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/password_text_input_layout" />
<com.google.android.material.button.MaterialButton
android:id="@+id/migration_cancel"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:letterSpacing="0"
android:padding="10dp"
android:text="@string/mp_dialog_negative_transfer_saved_logins"
android:textAllCaps="false"
android:textColor="?primaryText"
android:textStyle="bold"
app:fontFamily="@font/metropolis_semibold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_continue" />
<View
android:layout_width="match_parent"
android:layout_height="24dp"
app:layout_constraintTop_toBottomOf="@id/migration_cancel" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.button.MaterialButton
android:id="@+id/positive_button"
style="@style/PositiveButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:text="@string/mp_dialog_positive_transfer_success"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/negative_button"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:letterSpacing="0"
android:padding="10dp"
android:text="@string/mp_dialog_close_transfer"
android:textAllCaps="false"
android:textColor="?primaryText"
android:textStyle="bold"
app:fontFamily="@font/metropolis_semibold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/positive_button" />
<View
android:layout_width="match_parent"
android:layout_height="24dp"
app:layout_constraintTop_toBottomOf="@id/negative_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -19,7 +19,7 @@
android:drawablePadding="12dp" android:drawablePadding="12dp"
android:textAppearance="@style/Header16TextStyle" android:textAppearance="@style/Header16TextStyle"
android:textColor="@color/onboarding_card_primary_text_dark" android:textColor="@color/onboarding_card_primary_text_dark"
tools:text="@string/onboarding_firefox_account_auto_signin_header_2" /> tools:text="@string/onboarding_firefox_account_auto_signin_header_3" />
<Button <Button
android:id="@+id/fxa_sign_in_button" android:id="@+id/fxa_sign_in_button"

@ -6,4 +6,5 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/site_list_item" android:id="@+id/site_list_item"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
android:minHeight="@dimen/mozac_widget_site_item_height" />

@ -48,7 +48,7 @@
app:layout_constraintCircleRadius="28dp" app:layout_constraintCircleRadius="28dp"
app:layout_constraintEnd_toEndOf="@id/favicon_image" app:layout_constraintEnd_toEndOf="@id/favicon_image"
app:layout_constraintTop_toTopOf="@id/favicon_image" app:layout_constraintTop_toTopOf="@id/favicon_image"
app:srcCompat="@drawable/pause_with_background" /> app:srcCompat="@drawable/media_state_pause" />
<TextView <TextView
android:id="@+id/hostname" android:id="@+id/hostname"

@ -24,7 +24,7 @@
android:visibility="gone" android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/play_with_background" /> app:srcCompat="@drawable/media_state_play" />
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/mozac_browser_tabstray_card" android:id="@+id/mozac_browser_tabstray_card"

@ -5,25 +5,27 @@
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/top_site_item" android:id="@+id/top_site_item"
android:layout_width="64dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/top_sites_item_size"
android:padding="8dp" android:layout_marginBottom="@dimen/top_sites_item_margin_top"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/favicon_image" android:id="@+id/favicon_image"
style="@style/Mozac.Widgets.Favicon" style="@style/TopSite.Favicon"
android:layout_gravity="center" android:layout_gravity="center"
android:importantForAccessibility="no" /> android:importantForAccessibility="no" />
<TextView <TextView
android:id="@+id/top_site_title" android:id="@+id/top_site_title"
android:layout_width="match_parent" android:layout_width="64dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:layout_gravity="center_horizontal"
android:textColor="@color/top_site_title_text" android:textColor="@color/top_site_title_text"
android:textSize="10sp" android:textSize="10sp"
android:layout_marginTop="8dp" /> android:layout_marginTop="@dimen/top_sites_text_margin_top" />
</LinearLayout> </LinearLayout>

@ -68,7 +68,8 @@
android:id="@+id/action_global_historyFragment" android:id="@+id/action_global_historyFragment"
app:destination="@id/historyFragment" /> app:destination="@id/historyFragment" />
<action android:id="@+id/action_global_downloadsFragment" <action
android:id="@+id/action_global_downloadsFragment"
app:destination="@id/downloadsFragment" /> app:destination="@id/downloadsFragment" />
<action <action
android:id="@+id/action_global_accountProblemFragment" android:id="@+id/action_global_accountProblemFragment"
@ -109,6 +110,9 @@
<action <action
android:id="@+id/action_global_tabHistoryDialogFragment" android:id="@+id/action_global_tabHistoryDialogFragment"
app:destination="@id/tabHistoryDialogFragment" /> app:destination="@id/tabHistoryDialogFragment" />
<action
android:id="@+id/action_global_closeTabSettingsFragment"
app:destination="@id/closeTabsSettingsFragment" />
<dialog <dialog
android:id="@+id/tabTrayDialogFragment" android:id="@+id/tabTrayDialogFragment"
@ -526,7 +530,18 @@
app:exitAnim="@anim/slide_out_left" app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left" app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" /> app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_closeTabsSettingsFragment"
app:destination="@id/closeTabsSettingsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
</fragment> </fragment>
<fragment
android:id="@+id/closeTabsSettingsFragment"
android:name="org.mozilla.fenix.settings.CloseTabsSettingsFragment"
android:label="@string/preferences_close_tabs" />
<fragment <fragment
android:id="@+id/dataChoicesFragment" android:id="@+id/dataChoicesFragment"
android:name="org.mozilla.fenix.settings.DataChoicesFragment" android:name="org.mozilla.fenix.settings.DataChoicesFragment"
@ -808,7 +823,8 @@
android:name="org.mozilla.fenix.tabhistory.TabHistoryDialogFragment" android:name="org.mozilla.fenix.tabhistory.TabHistoryDialogFragment"
tools:layout="@layout/fragment_tab_history_dialog" /> tools:layout="@layout/fragment_tab_history_dialog" />
<navigation android:id="@+id/site_permissions_exceptions_graph" <navigation
android:id="@+id/site_permissions_exceptions_graph"
app:startDestination="@id/sitePermissionsExceptionsFragment"> app:startDestination="@id/sitePermissionsExceptionsFragment">
<fragment <fragment
@ -847,7 +863,8 @@
</fragment> </fragment>
</navigation> </navigation>
<navigation android:id="@+id/addons_management_graph" <navigation
android:id="@+id/addons_management_graph"
app:startDestination="@id/addonsManagementFragment"> app:startDestination="@id/addonsManagementFragment">
<fragment <fragment
android:id="@+id/addonsManagementFragment" android:id="@+id/addonsManagementFragment"
@ -914,7 +931,8 @@
</fragment> </fragment>
</navigation> </navigation>
<navigation android:id="@+id/search_engine_graph" <navigation
android:id="@+id/search_engine_graph"
app:startDestination="@id/searchEngineFragment"> app:startDestination="@id/searchEngineFragment">
<fragment <fragment
android:id="@+id/searchEngineFragment" android:id="@+id/searchEngineFragment"

@ -465,6 +465,8 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Zarrar</string> <string name="content_description_close_button">Zarrar</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Llingüetes zarraes apocayá</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history. <!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. --> %d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d llingüetes</string> <string name="recently_closed_tabs">%d llingüetes</string>
@ -472,6 +474,12 @@
%d is a placeholder for the number of tabs selected. --> %d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d llingüeta</string> <string name="recently_closed_tab">%d llingüeta</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Equí nun hai llingüetes zarraes apocayá</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Zarru de llingüetes</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">A mano</string> <string name="close_tabs_manually">A mano</string>
<!-- Option for auto closing tabs that will auto close tabs after one day --> <!-- Option for auto closing tabs that will auto close tabs after one day -->

@ -74,6 +74,28 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ket bremañ</string> <string name="search_widget_cfr_neg_button_text">Ket bremañ</string>
<!-- Open in App "contextual feature recommendation" (CFR) -->
<!-- Text for the info message. 'Firefox' intentionally hardcoded here.-->
<string name="open_in_app_cfr_info_message">Gallout a rit lakaat Firefox da zigeriñ an ereoù ent emgefreek en arloadoù all.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Mont en arventennoù</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Argas</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Ezhomm a zo haeziñ ar chamera. Kit e Arventennoù Android, stokit war an aotreoù ha stokit war aotren.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Mont en arventennoù</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Argas</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Lakaat an ivinelloù digor da serriñ ent emgefreek pa neo ket bet sellet outo e-pad un devezh, ur sizhun pe ur miz.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Dibarzhioù gwel</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
<string name="tab_tray_close_tabs_banner_negative_button_text">Argas</string>
<!-- Home screen icons - Long press shortcuts --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Ivinell nevez</string> <string name="home_screen_shortcut_open_new_tab_2">Ivinell nevez</string>
@ -256,6 +278,8 @@
<string name="preferences_toolbar">Barrenn ostilhoù</string> <string name="preferences_toolbar">Barrenn ostilhoù</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Neuz</string> <string name="preferences_theme">Neuz</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Degemer</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Personelaat</string> <string name="preferences_customize">Personelaat</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -460,6 +484,31 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Serriñ</string> <string name="content_description_close_button">Serriñ</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Ivinelloù serret nevez zo</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Diskouez ar roll istor a-bezh</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d ivinell</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d ivinell</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Neus ivinell nevez serret ebet amañ</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Serriñ an ivinelloù</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Gant an dorn</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Goude un devezh</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Goude ur sizhunvezh</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Goude ur mizvezh</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Ivinelloù digor</string> <string name="tab_header_label">Ivinelloù digor</string>
@ -479,6 +528,10 @@
<string name="tab_tray_menu_item_save">Enrollañ en dastumad</string> <string name="tab_tray_menu_item_save">Enrollañ en dastumad</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Rannañ an holl ivinelloù</string> <string name="tab_tray_menu_item_share">Rannañ an holl ivinelloù</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Ivinelloù serret nevez zo</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Arventennoù an ivinelloù</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Serriñ an holl ivinelloù</string> <string name="tab_tray_menu_item_close">Serriñ an holl ivinelloù</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -524,6 +577,8 @@
<string name="collection_open_tabs">Digeriñ an ivinelloù</string> <string name="collection_open_tabs">Digeriñ an ivinelloù</string>
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Dilemel</string> <string name="remove_top_site">Dilemel</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">Dilemel eus ar roll istor</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name --> <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (Mod prevez)</string> <string name="pwa_site_controls_title_private">%1$s (Mod prevez)</string>
@ -729,10 +784,8 @@
<string name="collections_header">Dastumadoù</string> <string name="collections_header">Dastumadoù</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Lañser an dastumadoù</string> <string name="collection_menu_button_content_description">Lañser an dastumadoù</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Dastumit ar pezh a zo pouezus evidoch</string>
<!-- Label to describe what collections are to a new user without any collections --> <!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Strollit ar cʼhlaskoù, al lecʼhiennoù hag an ivinelloù heñvel evit mont daveto buanocʼh.</string> <string name="no_collections_description2">Dastumit an traoù a gont evidoch.\nStrollit ar chlaskoù, al lechiennoù hag an ivinelloù liammet evit mont do sellet diwezhatoch.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Diuzañ ivinelloù</string> <string name="create_collection_select_tabs">Diuzañ ivinelloù</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -979,8 +1032,8 @@
<string name="onboarding_whats_new_description">Goulennoù hoch eus a-zivout ar %s nevez? Fellout a ra deoch gouzout pezh a zo bet cheñchet?</string> <string name="onboarding_whats_new_description">Goulennoù hoch eus a-zivout ar %s nevez? Fellout a ra deoch gouzout pezh a zo bet cheñchet?</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Amañ emañ ar respontoù</string> <string name="onboarding_whats_new_description_linktext">Amañ emañ ar respontoù</string>
<!-- text for the firefox account onboarding card header --> <!-- text for the Firefox account onboarding sign in card header -->
<string name="onboarding_firefox_account_header">Tennit gounid eus %s.</string> <string name="onboarding_account_sign_in_header">Krogit da choubredañ ho sinedoù, ho kerioù-tremen, ha muioch choazh gant ho kont FIrefox.</string>
<!-- Text for the button to learn more about signing in to your Firefox account --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Gouzout hiroch</string> <string name="onboarding_manual_sign_in_learn_more">Gouzout hiroch</string>
<!-- text for the firefox account onboarding card header when we detect you're already signed in to <!-- text for the firefox account onboarding card header when we detect you're already signed in to
@ -1477,4 +1530,18 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Mat, komprenet am eus</string> <string name="top_sites_max_limit_confirmation_button">Mat, komprenet am eus</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Diskouez al lechiennoù gweladennet ar muiañ</string>
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Dilemel</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Tennit gounid eus %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Dastumit ar pezh a zo pouezus evidoch</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Strollit ar cʼhlaskoù, al lecʼhiennoù hag an ivinelloù heñvel evit mont daveto buanocʼh.</string>
</resources> </resources>

@ -75,6 +75,28 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ne sada</string> <string name="search_widget_cfr_neg_button_text">Ne sada</string>
<!-- Open in App "contextual feature recommendation" (CFR) -->
<!-- Text for the info message. 'Firefox' intentionally hardcoded here.-->
<string name="open_in_app_cfr_info_message">Možete podesiti Firefox da automatski otvara linkove u aplikacijama.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Idi na postavke</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Odbaci</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Potreban pristup kameri. Idite na Android postavke, dodirnite dozvole i dodirnite dozvoli.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Idi na postavke</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Odbaci</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Podesite da se otvoreni tabovi automatski zatvaraju ako nisu posjećeni protekli dan, sedmicu ili mjesec.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Prikaži opcije</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
<string name="tab_tray_close_tabs_banner_negative_button_text">Odbaci</string>
<!-- Home screen icons - Long press shortcuts --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Novi tab</string> <string name="home_screen_shortcut_open_new_tab_2">Novi tab</string>
@ -258,6 +280,8 @@
<string name="preferences_toolbar">Alatna traka</string> <string name="preferences_toolbar">Alatna traka</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Tema</string> <string name="preferences_theme">Tema</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Početna</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Prilagodi</string> <string name="preferences_customize">Prilagodi</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -301,6 +325,9 @@
<!-- Preference for add_ons --> <!-- Preference for add_ons -->
<string name="preferences_addons">Add-oni</string> <string name="preferences_addons">Add-oni</string>
<!-- Preference for notifications -->
<string name="preferences_notifications">Obavijesti</string>
<!-- Account Preferences --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sinhr. odmah</string> <string name="preferences_sync_now">Sinhr. odmah</string>
@ -460,6 +487,31 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Zatvori</string> <string name="content_description_close_button">Zatvori</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Nedavno zatvoreni tabovi</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Prikaz cijele historije</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d tabova</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d tab</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Nema nedavno zatvorenih tabova</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Zatvori tabove</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Ručno</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Nakon jednog dana</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Nakon jedne sedmice</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Nakon mjesec dana</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Otvoreni tabovi</string> <string name="tab_header_label">Otvoreni tabovi</string>
@ -479,6 +531,10 @@
<string name="tab_tray_menu_item_save">Spasi u kolekciju</string> <string name="tab_tray_menu_item_save">Spasi u kolekciju</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Podijeli sve tabove</string> <string name="tab_tray_menu_item_share">Podijeli sve tabove</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Nedavno zatvoreni tabovi</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Postavke taba</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Zatvori sve tabove</string> <string name="tab_tray_menu_item_close">Zatvori sve tabove</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -523,6 +579,8 @@
<string name="collection_open_tabs">Otvori tabove</string> <string name="collection_open_tabs">Otvori tabove</string>
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Ukloni</string> <string name="remove_top_site">Ukloni</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">Izbriši iz historije</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name --> <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (Privatni režim)</string> <string name="pwa_site_controls_title_private">%1$s (Privatni režim)</string>
@ -567,6 +625,13 @@
<!-- Text shown when no history exists --> <!-- Text shown when no history exists -->
<string name="history_empty_message">Nema historije</string> <string name="history_empty_message">Nema historije</string>
<!-- Downloads -->
<!-- Text shown when no download exists -->
<string name="download_empty_message">Nema preuzimanja</string>
<!-- History multi select title in app bar
The first parameter is the number of downloads selected -->
<string name="download_multi_select_title">%1$d označeno</string>
<!-- Crashes --> <!-- Crashes -->
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) --> <!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
<string name="tab_crash_title_2">Oprostite. %1$s ne može učitati stranicu.</string> <string name="tab_crash_title_2">Oprostite. %1$s ne može učitati stranicu.</string>
@ -721,10 +786,8 @@
<string name="collections_header">Kolekcije</string> <string name="collections_header">Kolekcije</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Izbornik kolekcija</string> <string name="collection_menu_button_content_description">Izbornik kolekcija</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Sakupite stvari koje su vam važne</string>
<!-- Label to describe what collections are to a new user without any collections --> <!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Grupišite slične pretrage, stranice i tabove za brži pristup kasnije.</string> <string name="no_collections_description2">Prikupite stvari koje su vam važne.\nGrupišite slična pretraživanja, stranice i tabove za brzi pristup kasnije.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Izaberite tabove</string> <string name="create_collection_select_tabs">Izaberite tabove</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -970,9 +1033,10 @@
<string name="onboarding_whats_new_description">Imate pitanja o redizajniranom %su? Želite znati šta se promijenilo?</string> <string name="onboarding_whats_new_description">Imate pitanja o redizajniranom %su? Želite znati šta se promijenilo?</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Dobijte odgovore ovdje</string> <string name="onboarding_whats_new_description_linktext">Dobijte odgovore ovdje</string>
<!-- text for the firefox account onboarding card header <!-- text for the Firefox account onboarding sign in card header -->
The first parameter is the name of the app (e.g. Firefox Preview) --> <string name="onboarding_account_sign_in_header">Počnite sinhronizirati zabilješke, lozinke i još mnogo toga sa svojim Firefox računom.</string>
<string name="onboarding_firefox_account_header">Izvucite maksimum iz %s.</string> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Saznajte više</string>
<!-- text for the firefox account onboarding card header when we detect you're already signed in to <!-- text for the firefox account onboarding card header when we detect you're already signed in to
another Firefox browser. (The word `Firefox` should not be translated) another Firefox browser. (The word `Firefox` should not be translated)
The first parameter is the email of the detected user's account --> The first parameter is the email of the detected user's account -->
@ -1459,6 +1523,9 @@
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync --> <!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">Prijavite se za sinhr.</string> <string name="synced_tabs_sign_in_button">Prijavite se za sinhr.</string>
<!-- The text displayed when a synced device has no tabs to show in the list of Synced Tabs. -->
<string name="synced_tabs_no_open_tabs">Nema otvorenih tabova</string>
<!-- Top Sites --> <!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. --> <!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Dosegli ste limit za Top stranice</string> <string name="top_sites_max_limit_title">Dosegli ste limit za Top stranice</string>
@ -1467,4 +1534,18 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">OK, razumijem</string> <string name="top_sites_max_limit_confirmation_button">OK, razumijem</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Prikaži najposjećenije stranice</string>
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Ukloni</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Izvucite maksimum iz %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Sakupite stvari koje su vam važne</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Grupišite slične pretrage, stranice i tabove za brži pristup kasnije.</string>
</resources> </resources>

@ -289,6 +289,8 @@
<string name="preferences_toolbar">Barra dattrezzi</string> <string name="preferences_toolbar">Barra dattrezzi</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Tema</string> <string name="preferences_theme">Tema</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Accolta</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Persunalizà</string> <string name="preferences_customize">Persunalizà</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -496,6 +498,32 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Chjode</string> <string name="content_description_close_button">Chjode</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Unghjette chjose pocu fà</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Affissà a crunulogia sana</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d unghjette</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d unghjetta</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Alcuna unghjetta chjosa pocu fà</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Chjode lunghjette</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Manualmente</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Dopu un ghjornu</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Dopu una settimana</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Dopu un mese</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Unghjette aperte</string> <string name="tab_header_label">Unghjette aperte</string>
@ -515,6 +543,10 @@
<string name="tab_tray_menu_item_save">Arregistrà in una cullezzione</string> <string name="tab_tray_menu_item_save">Arregistrà in una cullezzione</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Sparte tutte lunghjette</string> <string name="tab_tray_menu_item_share">Sparte tutte lunghjette</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Unghjette chjose pocu fà</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Preferenze di lunghjette</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Chjode tutte lunghjette</string> <string name="tab_tray_menu_item_close">Chjode tutte lunghjette</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -1531,6 +1563,9 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Iè, aghju capitu</string> <string name="top_sites_max_limit_confirmation_button">Iè, aghju capitu</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Affissà i siti visitati aspessu</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Caccià</string> <string name="remove_home_collection_placeholder_content_description">Caccià</string>

@ -290,6 +290,9 @@
<!-- Preference for add_ons --> <!-- Preference for add_ons -->
<string name="preferences_addons">Πρόσθετα</string> <string name="preferences_addons">Πρόσθετα</string>
<!-- Preference for notifications -->
<string name="preferences_notifications">Ειδοποιήσεις</string>
<!-- Account Preferences --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Συγχρονισμός τώρα</string> <string name="preferences_sync_now">Συγχρονισμός τώρα</string>
@ -439,6 +442,26 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Κλείσιμο</string> <string name="content_description_close_button">Κλείσιμο</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d καρτέλες</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d καρτέλα</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Κλείσιμο καρτελών</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Χειροκίνητα</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Μετά από μια μέρα</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Μετά από μια εβδομάδα</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Μετά από ένα μήνα</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Ανοικτές καρτέλες</string> <string name="tab_header_label">Ανοικτές καρτέλες</string>
@ -458,6 +481,8 @@
<string name="tab_tray_menu_item_save">Αποθήκευση στη συλλογή</string> <string name="tab_tray_menu_item_save">Αποθήκευση στη συλλογή</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Κοινή χρήση όλων των καρτελών</string> <string name="tab_tray_menu_item_share">Κοινή χρήση όλων των καρτελών</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Πρόσφατα κλεισμένες καρτέλες</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Κλείσιμο όλων των καρτελών</string> <string name="tab_tray_menu_item_close">Κλείσιμο όλων των καρτελών</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -503,6 +528,8 @@
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Αφαίρεση</string> <string name="remove_top_site">Αφαίρεση</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">Διαγραφή από ιστορικό</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name --> <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (Ιδιωτική λειτουργία)</string> <string name="pwa_site_controls_title_private">%1$s (Ιδιωτική λειτουργία)</string>
@ -548,6 +575,10 @@
<!-- Text shown when no history exists --> <!-- Text shown when no history exists -->
<string name="history_empty_message">Δεν υπάρχει ιστορικό</string> <string name="history_empty_message">Δεν υπάρχει ιστορικό</string>
<!-- Downloads -->
<!-- Text shown when no download exists -->
<string name="download_empty_message">Καμία λήψη</string>
<!-- Crashes --> <!-- Crashes -->
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) --> <!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
<string name="tab_crash_title_2">Συγγνώμη. Το %1$s δεν μπορεί να φορτώσει αυτή τη σελίδα.</string> <string name="tab_crash_title_2">Συγγνώμη. Το %1$s δεν μπορεί να φορτώσει αυτή τη σελίδα.</string>
@ -700,10 +731,6 @@
<string name="collections_header">Συλλογές</string> <string name="collections_header">Συλλογές</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Μενού συλλογής</string> <string name="collection_menu_button_content_description">Μενού συλλογής</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Συλλέξτε όλα όσα έχουν σημασία για εσάς</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Ομαδοποιήστε παρόμοιες αναζητήσεις, σελίδες και καρτέλες για γρήγορη πρόσβαση αργότερα.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Επιλέξτε καρτέλες</string> <string name="create_collection_select_tabs">Επιλέξτε καρτέλες</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -946,9 +973,8 @@
<string name="onboarding_whats_new_description">Έχετε ερωτήσεις σχετικά με το επανασχεδιασμένο %s; Θέλετε να μάθετε τι έχει αλλάξει;</string> <string name="onboarding_whats_new_description">Έχετε ερωτήσεις σχετικά με το επανασχεδιασμένο %s; Θέλετε να μάθετε τι έχει αλλάξει;</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Λάβετε απαντήσεις εδώ</string> <string name="onboarding_whats_new_description_linktext">Λάβετε απαντήσεις εδώ</string>
<!-- text for the firefox account onboarding card header <!-- Text for the button to learn more about signing in to your Firefox account -->
The first parameter is the name of the app (e.g. Firefox Preview) --> <string name="onboarding_manual_sign_in_learn_more">Μάθετε περισσότερα</string>
<string name="onboarding_firefox_account_header">Αξιοποιήστε στο έπακρο το %s.</string>
<!-- text for the button to confirm automatic sign-in --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Ναι, σύνδεση</string> <string name="onboarding_firefox_account_auto_signin_confirm">Ναι, σύνδεση</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
@ -1389,10 +1415,24 @@
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync --> <!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">Σύνδεση στο Sync</string> <string name="synced_tabs_sign_in_button">Σύνδεση στο Sync</string>
<!-- The text displayed when a synced device has no tabs to show in the list of Synced Tabs. -->
<string name="synced_tabs_no_open_tabs">Καμία ανοικτή καρτέλα</string>
<!-- Top Sites --> <!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. --> <!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Έχετε φτάσει το ανώτατο όριο κορυφαίων ιστοσελίδων</string> <string name="top_sites_max_limit_title">Έχετε φτάσει το ανώτατο όριο κορυφαίων ιστοσελίδων</string>
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">OK, το κατάλαβα</string> <string name="top_sites_max_limit_confirmation_button">OK, το κατάλαβα</string>
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Αφαίρεση</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Αξιοποιήστε στο έπακρο το %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Συλλέξτε όλα όσα έχουν σημασία για εσάς</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Ομαδοποιήστε παρόμοιες αναζητήσεις, σελίδες και καρτέλες για γρήγορη πρόσβαση αργότερα.</string>
</resources> </resources>

@ -284,6 +284,8 @@
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Tema</string> <string name="preferences_theme">Tema</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Inicio</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Personalizar</string> <string name="preferences_customize">Personalizar</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -490,6 +492,31 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Cerrar</string> <string name="content_description_close_button">Cerrar</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Pestañas cerradas recientemente</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Mostrar historial completo</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d pestañas</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d pestaña</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">No hay pestañas cerradas recientemente aquí</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Cerrar pestañas</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Manualmente</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Después de un día</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Después de una semana</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Después de un mes</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Pestañas abiertas</string> <string name="tab_header_label">Pestañas abiertas</string>
@ -509,6 +536,10 @@
<string name="tab_tray_menu_item_save">Guardar en la colección</string> <string name="tab_tray_menu_item_save">Guardar en la colección</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Compartir todas las pestañas</string> <string name="tab_tray_menu_item_share">Compartir todas las pestañas</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Pestañas cerradas recientemente</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Ajustes de pestañas</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Cerrar todas las pestañas</string> <string name="tab_tray_menu_item_close">Cerrar todas las pestañas</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -1515,6 +1546,9 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Ok, ¡ya caché!</string> <string name="top_sites_max_limit_confirmation_button">Ok, ¡ya caché!</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Mostrar los sitios más visitados</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Eliminar</string> <string name="remove_home_collection_placeholder_content_description">Eliminar</string>

@ -289,6 +289,8 @@
<string name="preferences_toolbar">Barre doutils</string> <string name="preferences_toolbar">Barre doutils</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Thème</string> <string name="preferences_theme">Thème</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Accueil</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Personnaliser</string> <string name="preferences_customize">Personnaliser</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -500,6 +502,31 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Fermer</string> <string name="content_description_close_button">Fermer</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Onglets récemment fermés</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Afficher lhistorique complet</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d onglets</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d onglet</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Aucun onglet récemment fermé ici</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Fermer les onglets</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Manuellement</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Après un jour</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Après une semaine</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Après un mois</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Onglets ouverts</string> <string name="tab_header_label">Onglets ouverts</string>
@ -519,6 +546,10 @@
<string name="tab_tray_menu_item_save">Enregistrer dans une collection</string> <string name="tab_tray_menu_item_save">Enregistrer dans une collection</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Partager tous les onglets</string> <string name="tab_tray_menu_item_share">Partager tous les onglets</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Onglets récemment fermés</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Paramètres des onglets</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Fermer tous les onglets</string> <string name="tab_tray_menu_item_close">Fermer tous les onglets</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -1550,6 +1581,9 @@ Cependant, il peut être moins stable. Téléchargez la version bêta de notre n
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Jai compris</string> <string name="top_sites_max_limit_confirmation_button">Jai compris</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Afficher les sites les plus visités</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Supprimer</string> <string name="remove_home_collection_placeholder_content_description">Supprimer</string>

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<!-- App name for private browsing mode, only the "Private" portion should be localized. --> <!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="app_name_private_2">Ro-shealladh Firefox prìobhaideach</string> <string name="app_name_private_5">%s prìobhaideach</string>
<!-- App name for private browsing mode, only the "Private" portion should be localized. --> <!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="app_name_private_3">Ro-shealladh Firefox (Prìobhaideach)</string> <string name="app_name_private_4">%s (Prìobhaideach)</string>
<!-- Home Fragment --> <!-- Home Fragment -->
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. --> <!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
<string name="content_description_menu">Barrachd roghainnean</string> <string name="content_description_menu">Barrachd roghainnean</string>
@ -13,23 +13,53 @@
<string name="content_description_disable_private_browsing_button">Cuir am brabhsadh prìobhaideach à comas</string> <string name="content_description_disable_private_browsing_button">Cuir am brabhsadh prìobhaideach à comas</string>
<!-- Placeholder text shown in the search bar before a user enters text --> <!-- Placeholder text shown in the search bar before a user enters text -->
<string name="search_hint">Lorg no cuir seòladh ann</string> <string name="search_hint">Lorg no cuir seòladh ann</string>
<!-- No Open Tabs Message Header -->
<string name="no_open_tabs_header_2">Chan eil taba fosgailte</string>
<!-- No Open Tabs Message Description --> <!-- No Open Tabs Message Description -->
<string name="no_open_tabs_description">Nochdaidh na tabaichean fosgailte agad an-seo.</string> <string name="no_open_tabs_description">Nochdaidh na tabaichean fosgailte agad an-seo.</string>
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">Nochdaidh na tabaichean prìobhaideach agad an-seo.</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">Tha taba fosgailte. Thoir gnogag airson leum a ghearradh gu taba eile.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">Tha tabaichean (%1$s) fosgailte. Thoir gnogag airson leum a ghearradh gu taba eile.</string>
<!-- Tab tray multi select title in app bar. The first parameter is the number of tabs selected -->
<string name="tab_tray_multi_select_title">%1$d air an taghadh</string>
<!-- Label of button in create collection dialog for creating a new collection -->
<string name="tab_tray_add_new_collection">Cuir cruinneachadh ùr ris</string>
<!-- Label of editable text in create collection dialog for naming a new collection -->
<string name="tab_tray_add_new_collection_name">Ainm</string>
<!-- Label of button in save to collection dialog for selecting a current collection -->
<string name="tab_tray_select_collection">Tagh cruinneachadh</string>
<!-- Content description for close button while in multiselect mode in tab tray -->
<string name="tab_tray_close_multiselect_content_description">Fàg am modh ioma-thaghaidh</string>
<!-- Content description for save to collection button while in multiselect mode in tab tray -->
<string name="tab_tray_collection_button_multiselect_content_description">Sàbhail na tabaichean a thagh thu sa chruinneachadh</string>
<!-- Content description for checkmark while tab is selected while in multiselect mode in tab tray. The first parameter is the title of the tab selected -->
<string name="tab_tray_item_selected_multiselect_content_description">Chaidh %1$s a thaghadh</string>
<!-- Content description when tab is unselected while in multiselect mode in tab tray. The first parameter is the title of the tab unselected -->
<string name="tab_tray_item_unselected_multiselect_content_description">Chaidh %1$s a dhì-thaghadh</string>
<!-- Content description announcement when exiting multiselect mode in tab tray -->
<string name="tab_tray_exit_multiselect_content_description">Dhfhàg thu am modh ioma-thaghaidh</string>
<!-- Content description announcement when entering multiselect mode in tab tray -->
<string name="tab_tray_enter_multiselect_content_description">Thòisich thu am modh ioma-thaghaidh, tagh tabaichean airson an sàbhaladh ann an cruinneachadh</string>
<!-- Content description on checkmark while tab is selected in multiselect mode in tab tray -->
<string name="tab_tray_multiselect_selected_content_description">Air an taghadh</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">Chaidh %1$s a dhèanamh le Mozilla.</string>
<!-- Private Browsing --> <!-- Private Browsing -->
<!-- Title for private session option --> <!-- Title for private session option -->
<string name="private_browsing_title">Tha thu ann an seisean prìobhaideach</string> <string name="private_browsing_title">Tha thu ann an seisean prìobhaideach</string>
<!-- Explanation for private browsing displayed to users on home view when they first enable private mode <!-- Explanation for private browsing displayed to users on home view when they first enable private mode
The first parameter is the name of the app defined in app_name (for example: Fenix) --> The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="private_browsing_placeholder_description">Falamhaichidh %1$s eachdraidh nan lorg is a bhrabhsaidh agad nuair a dhfhàgas tu an aplacaid no nuair a dhùineas tu gach taba prìobhaideach. Fhad s nach cuir seo am falach cò thusa mu choinneamh làraichean-lìn no solaraiche nan seirbheisean-lìn agad, <string name="private_browsing_placeholder_description_2">
cumaidh e na nì thu air loidhne am falach o dhaoine eile a chleachdas an t-uidheam seo.</string> Falamhaichidh %1$s eachdraidh nan lorg is a bhrabhsaidh aig tabaichean prìobhaideachd nuair a dhùineas tu iad no nuair a dhfhàgas tu an aplacaid. Fhad s nach cuir seo am falach cò thusa mu choinneamh làraichean-lìn no solaraiche nan seirbheisean-lìn agad, cumaidh e na nì thu air loidhne am falach o dhaoine eile a chleachdas an t-uidheam seo.</string>
<string name="private_browsing_common_myths">Faoin-sgeulan cumanta mun bhrabhsadh phrìobhaideach</string> <string name="private_browsing_common_myths">Faoin-sgeulan cumanta mun bhrabhsadh phrìobhaideach</string>
<!-- Delete session button to erase your history in a private session --> <!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Sguab an seisean às</string> <string name="private_browsing_delete_session">Sguab an seisean às</string>
<!-- Private mode shortcut "contextual feature recommender" (CFR) --> <!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
<!-- Text for the main message --> <!-- Text for the main message -->
<string name="cfr_message">Cuir ath-ghoirid ris airson tabaichean prìobhaideach fhosgladh on sgrìn mhòr agad.</string> <string name="cfr_message">Cuir ath-ghoirid ris airson tabaichean prìobhaideach fhosgladh on sgrìn mhòr agad.</string>
<!-- Text for the positive button --> <!-- Text for the positive button -->
@ -38,12 +68,45 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="cfr_neg_button_text">Cha chuir, mòran taing</string> <string name="cfr_neg_button_text">Cha chuir, mòran taing</string>
<!-- Search widget "contextual feature recommendation" (CFR) -->
<!-- Text for the main message. 'Firefox' intentionally hardcoded here.-->
<string name="search_widget_cfr_message">Faigh greim air Firefox nas luaithe, cuir widget ris an sgrìn-dhachaigh agad.</string>
<!-- Text for the positive button -->
<string name="search_widget_cfr_pos_button_text">Cuir widget ris</string>
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Chan ann an-dràsta</string>
<!-- Open in App "contextual feature recommendation" (CFR) -->
<!-- Text for the info message. 'Firefox' intentionally hardcoded here.-->
<string name="open_in_app_cfr_info_message">S urrainn dhut iarraidh air Firefox ceanglaichean fhosgladh ann an aplacaidean gu fèin-obrachail.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Tadhail air na roghainnean</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Leig seachad</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Tha feum air inntrigeadh dhan chamara. Tadhail air roghainnean Android, thoir gnogag air na ceadan is an uairsin air “Ceadaich”.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Tadhail air na roghainnean</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Leig seachad</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">S urrainn dhut suidheachadh gun tèid tabaichean a dhùnadh gu fèin-obrachail mur an deach coimhead orra an-dè, an t-seachdain seo chaidh no am mìos seo chaidh.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Seall na roghainnean</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
<string name="tab_tray_close_tabs_banner_negative_button_text">Leig seachad</string>
<!-- Home screen icons - Long press shortcuts --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Taba ùr</string> <string name="home_screen_shortcut_open_new_tab_2">Taba ùr</string>
<!-- Shortcut action to open new private tab --> <!-- Shortcut action to open new private tab -->
<string name="home_screen_shortcut_open_new_private_tab_2">Taba prìobhaideach ùr</string> <string name="home_screen_shortcut_open_new_private_tab_2">Taba prìobhaideach ùr</string>
<!-- Heading for the Top Sites block -->
<string name="home_screen_top_sites_heading">Brod nan làrach</string>
<!-- Browser Fragment --> <!-- Browser Fragment -->
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs --> <!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
<string name="browser_tabs_button">Tabaichean fosgailte</string> <string name="browser_tabs_button">Tabaichean fosgailte</string>
@ -60,7 +123,7 @@
<!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page --> <!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page -->
<string name="browser_menu_edit_bookmark">Deasaich an comharra-lìn</string> <string name="browser_menu_edit_bookmark">Deasaich an comharra-lìn</string>
<!-- Browser menu button that opens the addon manager --> <!-- Browser menu button that opens the addon manager -->
<string name="browser_menu_addon_manager">Manaidsear nan tuilleadan</string> <string name="browser_menu_add_ons">Tuilleadain</string>
<!-- Text displayed when there are no add-ons to be shown --> <!-- Text displayed when there are no add-ons to be shown -->
<string name="no_add_ons">Chan eil tuilleadan sam bith an-seo</string> <string name="no_add_ons">Chan eil tuilleadan sam bith an-seo</string>
<!-- Browser menu button that sends a user to help articles --> <!-- Browser menu button that sends a user to help articles -->
@ -70,13 +133,15 @@
<!-- Browser menu button that opens the settings menu --> <!-- Browser menu button that opens the settings menu -->
<string name="browser_menu_settings">Roghainnean</string> <string name="browser_menu_settings">Roghainnean</string>
<!-- Browser menu button that opens a user's library --> <!-- Browser menu button that opens a user's library -->
<string name="browser_menu_your_library">An leabhar-lann agad</string> <string name="browser_menu_library">An leabhar-lann</string>
<!-- Browser menu toggle that requests a desktop site --> <!-- Browser menu toggle that requests a desktop site -->
<string name="browser_menu_desktop_site">An tionndadh desktop</string> <string name="browser_menu_desktop_site">An tionndadh desktop</string>
<!-- Browser menu toggle that adds a shortcut to the site on the device home screen. --> <!-- Browser menu toggle that adds a shortcut to the site on the device home screen. -->
<string name="browser_menu_add_to_homescreen">Cuir ris an sgrìn mhòr</string> <string name="browser_menu_add_to_homescreen">Cuir ris an sgrìn mhòr</string>
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. --> <!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">Stàlaich</string> <string name="browser_menu_install_on_homescreen">Stàlaich</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Tabaichean sioncronaichte</string>
<!-- Browser menu button that opens the find in page menu --> <!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Lorg air an duilleag</string> <string name="browser_menu_find_in_page">Lorg air an duilleag</string>
<!-- Browser menu button that creates a private tab --> <!-- Browser menu button that creates a private tab -->
@ -84,9 +149,7 @@
<!-- Browser menu button that creates a new tab --> <!-- Browser menu button that creates a new tab -->
<string name="browser_menu_new_tab">Taba ùr</string> <string name="browser_menu_new_tab">Taba ùr</string>
<!-- Browser menu button that saves the current tab to a collection --> <!-- Browser menu button that saves the current tab to a collection -->
<string name="browser_menu_save_to_collection">Sàbhail ann an cruinneachadh</string> <string name="browser_menu_save_to_collection_2">Sàbhail ann an cruinneachadh</string>
<!-- Browser menu button that opens a dialog to report issues with the current site -->
<string name="browser_menu_report_issue">Dèan aithris air duilgheadas leis an làrach</string>
<!-- Browser menu button that open a share menu to share the current site --> <!-- Browser menu button that open a share menu to share the current site -->
<string name="browser_menu_share">Co-roinn</string> <string name="browser_menu_share">Co-roinn</string>
<!-- Share menu title, displayed when a user is sharing their current site --> <!-- Share menu title, displayed when a user is sharing their current site -->
@ -100,13 +163,19 @@
<!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab <!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab
The first parameter is the name of the app defined in app_name (for example: Fenix) --> The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_powered_by2">Le cumhachd %1$s</string> <string name="browser_menu_powered_by2">Le cumhachd %1$s</string>
<!-- Browser menu button to put the the current page in reader mode --> <!-- Browser menu button to put the current page in reader mode -->
<string name="browser_menu_read">An sealladh leughaidh</string> <string name="browser_menu_read">An sealladh leughaidh</string>
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
<string name="browser_menu_read_close">Dùin sealladh an leughadair</string>
<!-- Browser menu button to open the current page in an external app --> <!-- Browser menu button to open the current page in an external app -->
<string name="browser_menu_open_app_link">Fosgail ann an aplacaid</string> <string name="browser_menu_open_app_link">Fosgail ann an aplacaid</string>
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size --> <!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
<string name="browser_menu_read_appearance">Coltas</string> <string name="browser_menu_read_appearance">Coltas</string>
<!-- Error message to show when the user tries to access a scheme not
handled by the app (Ex: blob, tel etc) -->
<string name="unknown_scheme_error_message">Cha ghabh ceangal a dhèanamh. Chan aithnich sinn sgeama an URL.</string>
<!-- Locale Settings Fragment --> <!-- Locale Settings Fragment -->
<!-- Content description for tick mark on selected language --> <!-- Content description for tick mark on selected language -->
<string name="a11y_selected_locale_content_description">An cànan a thagh thu</string> <string name="a11y_selected_locale_content_description">An cànan a thagh thu</string>
@ -120,14 +189,12 @@
<!-- Search Fragment --> <!-- Search Fragment -->
<!-- Button in the search view that lets a user search by scanning a QR code --> <!-- Button in the search view that lets a user search by scanning a QR code -->
<string name="search_scan_button">Sganaich</string> <string name="search_scan_button">Sganaich</string>
<!-- Button in the search view that lets a user search by using a shortcut --> <!-- Button in the search view that lets a user change their search engine -->
<string name="search_shortcuts_button">Ath-ghoiridean</string> <string name="search_engine_button">Einnseanan-luirg</string>
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings --> <!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
<string name="search_shortcuts_engine_settings">Roghainnean an einnsein-luirg</string> <string name="search_shortcuts_engine_settings">Roghainnean an einnsein-luirg</string>
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
<string name="search_shortcuts_search_with">Lorg le</string>
<!-- Header displayed when selecting a shortcut search engine --> <!-- Header displayed when selecting a shortcut search engine -->
<string name="search_shortcuts_search_with_2">Dèan lorg leis na leanas an turas seo:</string> <string name="search_engines_search_with">Dèan lorg leis na leanas an turas seo:</string>
<!-- Button in the search view that lets a user navigate to the site in their clipboard --> <!-- Button in the search view that lets a user navigate to the site in their clipboard -->
<string name="awesomebar_clipboard_title">Cuir a-steach an ceangal on stòr-bhòrd</string> <string name="awesomebar_clipboard_title">Cuir a-steach an ceangal on stòr-bhòrd</string>
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions --> <!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
@ -147,6 +214,9 @@
<!-- Text preview for larger sized widgets --> <!-- Text preview for larger sized widgets -->
<string name="search_widget_text_long">Lorg air an lìon</string> <string name="search_widget_text_long">Lorg air an lìon</string>
<!-- Content description (not visible, for screen readers etc.): Voice search -->
<string name="search_widget_voice">Lorg-gutha</string>
<!-- Preferences --> <!-- Preferences -->
<!-- Title for the settings page--> <!-- Title for the settings page-->
<string name="settings">Roghainnean</string> <string name="settings">Roghainnean</string>
@ -192,10 +262,18 @@
<!-- Preference for opening links in a private tab--> <!-- Preference for opening links in a private tab-->
<string name="preferences_open_links_in_a_private_tab">Fosgail na ceanglaichean ann an taba prìobhaideach</string> <string name="preferences_open_links_in_a_private_tab">Fosgail na ceanglaichean ann an taba prìobhaideach</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Ceadaich glacaidhean-sgrìn sa bhrabhsadh phrìobhaideach</string>
<!-- Preference for adding private browsing shortcut --> <!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Cuir ath-ghoirid brabhsaidh prìobhaideach ris</string> <string name="preferences_add_private_browsing_shortcut">Cuir ath-ghoirid brabhsaidh prìobhaideach ris</string>
<!-- Preference for accessibility --> <!-- Preference for accessibility -->
<string name="preferences_accessibility">So-ruigsinneachd</string> <string name="preferences_accessibility">So-ruigsinneachd</string>
<!-- Preference to override the Firefox Account server -->
<string name="preferences_override_fxa_server">Frithealaiche chunntasan Firefox gnàthaichte</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">Frithealaiche sioncronachaidh gnàthaichte</string>
<!-- Toast shown after updating the FxA/Sync server override preferences -->
<string name="toast_override_fxa_sync_server_done">Chaidh frithealaichte nan cunntasan Firefox no an t-sioncronachaidh atharrachadh. Fàg an aplacaid gus na h-atharraichean a chur an gnìomh…</string>
<!-- Preference category for account information --> <!-- Preference category for account information -->
<string name="preferences_category_account">Cunntas</string> <string name="preferences_category_account">Cunntas</string>
<!-- Preference shown on banner to sign into account --> <!-- Preference shown on banner to sign into account -->
@ -204,6 +282,8 @@
<string name="preferences_toolbar">Bàr-inneal</string> <string name="preferences_toolbar">Bàr-inneal</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">An t-ùrlar</string> <string name="preferences_theme">An t-ùrlar</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Dhachaigh</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Gnàthaich</string> <string name="preferences_customize">Gnàthaich</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -224,10 +304,12 @@
<string name="developer_tools_category">Innealan an luchd-leasachaidh</string> <string name="developer_tools_category">Innealan an luchd-leasachaidh</string>
<!-- Preference for developers --> <!-- Preference for developers -->
<string name="preferences_remote_debugging">Dì-bhugachadh cèin slighe USB</string> <string name="preferences_remote_debugging">Dì-bhugachadh cèin slighe USB</string>
<!-- Preference title for switch preference to show search shortcuts --> <!-- Preference title for switch preference to show search engines -->
<string name="preferences_show_search_shortcuts">Seall na h-ath-ghoiridean luirg</string> <string name="preferences_show_search_engines">Seall na h-einnseanan-luirg</string>
<!-- Preference title for switch preference to show search suggestions --> <!-- Preference title for switch preference to show search suggestions -->
<string name="preferences_show_search_suggestions">Seall molaidhean luirg</string> <string name="preferences_show_search_suggestions">Seall molaidhean luirg</string>
<!-- Preference title for switch preference to show voice search button -->
<string name="preferences_show_voice_search">Seall an lorg-gutha</string>
<!-- Preference title for switch preference to show search suggestions also in private mode --> <!-- Preference title for switch preference to show search suggestions also in private mode -->
<string name="preferences_show_search_suggestions_in_private">Seall ann an seiseanan prìobhaideach</string> <string name="preferences_show_search_suggestions_in_private">Seall ann an seiseanan prìobhaideach</string>
<!-- Preference title for switch preference to show a clipboard suggestion when searching --> <!-- Preference title for switch preference to show a clipboard suggestion when searching -->
@ -240,9 +322,14 @@
<string name="preferences_account_settings">Roghainnean a chunntais</string> <string name="preferences_account_settings">Roghainnean a chunntais</string>
<!-- Preference for open links in third party apps --> <!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Fosgail ceanglaichean ann an aplacaidean</string> <string name="preferences_open_links_in_apps">Fosgail ceanglaichean ann an aplacaidean</string>
<!-- Preference for open download with an external download manager app -->
<string name="preferences_external_download_manager">Manaidsear nan luchdadh a-nuas on taobh a-muigh</string>
<!-- Preference for add_ons --> <!-- Preference for add_ons -->
<string name="preferences_addons">Tuilleadain</string> <string name="preferences_addons">Tuilleadain</string>
<!-- Preference for notifications -->
<string name="preferences_notifications">Brathan</string>
<!-- Account Preferences --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sioncronaich an-dràsta</string> <string name="preferences_sync_now">Sioncronaich an-dràsta</string>
@ -254,6 +341,8 @@
<string name="preferences_sync_bookmarks">Comharran-lìn</string> <string name="preferences_sync_bookmarks">Comharran-lìn</string>
<!-- Preference for syncing logins --> <!-- Preference for syncing logins -->
<string name="preferences_sync_logins">Clàraidhean a-steach</string> <string name="preferences_sync_logins">Clàraidhean a-steach</string>
<!-- Preference for syncing tabs -->
<string name="preferences_sync_tabs_2">Tabaichean fosgailte</string>
<!-- Preference for signing out --> <!-- Preference for signing out -->
<string name="preferences_sign_out">Clàraich a-mach</string> <string name="preferences_sign_out">Clàraich a-mach</string>
<!-- Preference displays and allows changing current FxA device name --> <!-- Preference displays and allows changing current FxA device name -->
@ -270,10 +359,11 @@
<string name="sync_last_synced_summary">An sioncronachadh mu dheireadh: %s</string> <string name="sync_last_synced_summary">An sioncronachadh mu dheireadh: %s</string>
<!-- Label summary showing never synced --> <!-- Label summary showing never synced -->
<string name="sync_never_synced_summary">Cha deach a shioncronachadh a-riamh</string> <string name="sync_never_synced_summary">Cha deach a shioncronachadh a-riamh</string>
<!-- Text for displaying the default device name. <!-- Text for displaying the default device name.
The first parameter is the application name, the second is the device manufacturer name The first parameter is the application name, the second is the device manufacturer name
and the third is the device model. --> and the third is the device model. -->
<string name="default_device_name">%s %s %s</string> <string name="default_device_name_2">%1$s air %2$s %3$s</string>
<!-- Send Tab --> <!-- Send Tab -->
<!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app --> <!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
@ -343,7 +433,7 @@
<!-- Pairing Feature strings --> <!-- Pairing Feature strings -->
<!-- Instructions on how to access pairing --> <!-- Instructions on how to access pairing -->
<string name="pair_instructions"><![CDATA[Tadhail air <b>firefox.com/pair</b> ann am Firefox air a choimpiutair agad a dhfhaighinn a chòd QR.]]></string> <string name="pair_instructions_2"><![CDATA[Sganaich an còd QR a chì thu aig <b>firefox.com/pair</b>]]></string>
<!-- Button to open camera for pairing --> <!-- Button to open camera for pairing -->
<string name="pair_open_camera">Fosgail an camara</string> <string name="pair_open_camera">Fosgail an camara</string>
<!-- Button to cancel pairing --> <!-- Button to cancel pairing -->
@ -384,12 +474,12 @@
<string name="library_desktop_bookmarks_unfiled">Comharran-lìn eile</string> <string name="library_desktop_bookmarks_unfiled">Comharran-lìn eile</string>
<!-- Option in Library to open History page --> <!-- Option in Library to open History page -->
<string name="library_history">An eachdraidh</string> <string name="library_history">An eachdraidh</string>
<!-- Option in Library to open Synced Tabs page -->
<string name="library_synced_tabs">Tabaichean sioncronaichte</string>
<!-- Option in Library to open Reading List --> <!-- Option in Library to open Reading List -->
<string name="library_reading_list">An liosta-leughaidh</string> <string name="library_reading_list">An liosta-leughaidh</string>
<!-- Menu Item Label for Search in Library --> <!-- Menu Item Label for Search in Library -->
<string name="library_search">Lorg</string> <string name="library_search">Lorg</string>
<!-- Library Page Title -->
<string name="library_title">Leabhar-lann</string>
<!-- Settings Page Title --> <!-- Settings Page Title -->
<string name="settings_title">Roghainnean</string> <string name="settings_title">Roghainnean</string>
<!-- Content description (not visible, for screen readers etc.): "Menu icon for items on a history item" --> <!-- Content description (not visible, for screen readers etc.): "Menu icon for items on a history item" -->
@ -397,6 +487,31 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Dùin</string> <string name="content_description_close_button">Dùin</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Tabaichean a dhùin thu o chionn ghoirid</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Seall an eachdraidh gu lèir</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">Tabaichean (%d)</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d taba</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Chan eil taba sam bith an-seo a dhùin thu o chionn goirid</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Dùin na tabaichean</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">De làimh</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">An dèidh latha</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">An dèidh seachdaine</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">An dèidh mìos</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Tabaichean fosgailte</string> <string name="tab_header_label">Tabaichean fosgailte</string>
@ -406,6 +521,30 @@
<string name="tabs_header_private_tabs_title">Tabaichean prìobhaideach</string> <string name="tabs_header_private_tabs_title">Tabaichean prìobhaideach</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed --> <!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_tab">Cuir taba ris</string> <string name="add_tab">Cuir taba ris</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_private_tab">Cuir taba prìobhaideach ris</string>
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
<string name="tab_drawer_fab_content">Prìobhaideach</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">Tabaichean fosgailte</string>
<!-- Text shown in the menu for saving tabs to a collection -->
<string name="tab_tray_menu_item_save">Sàbhail ann an cruinneachadh</string>
<!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Co-roinn a h-uile taga</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Tabaichean a dhùin thu o chionn ghoirid</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Roghainnean nan tabaichean</string>
<!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Dùin a h-uile taba</string>
<!-- Shortcut action to open new tab -->
<string name="tab_tray_menu_open_new_tab">Taba ùr</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">Dhachaigh</string>
<!-- Shortcut action to toggle private mode -->
<string name="tab_tray_menu_toggle">Toglaich modh nan taba</string>
<!-- Content description (not visible, for screen readers etc.): Removes tab from collection button. Removes the selected tab from collection when pressed -->
<string name="remove_tab_from_collection">Thoir an taba air falbh on chruinneachadh</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed --> <!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
<string name="close_tab">Dùin an taba</string> <string name="close_tab">Dùin an taba</string>
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title --> <!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
@ -419,7 +558,7 @@
<string name="tabs_menu_share_tabs">Co-roinn na tabaichean</string> <string name="tabs_menu_share_tabs">Co-roinn na tabaichean</string>
<!-- Open tabs menu item to save tabs to collection --> <!-- Open tabs menu item to save tabs to collection -->
<string name="tabs_menu_save_to_collection">Sàbhail ann an cruinneachadh</string> <string name="tabs_menu_save_to_collection1">Sàbhail na tabaichean ann an cruinneachadh</string>
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
<string name="tab_menu">Clàr-taice an taba</string> <string name="tab_menu">Clàr-taice an taba</string>
<!-- Tab menu item to share the tab --> <!-- Tab menu item to share the tab -->
@ -443,13 +582,32 @@
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Thoir air falbh</string> <string name="remove_top_site">Thoir air falbh</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">Sguab às an eachdraidh</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (Am modh prìobhaideach)</string>
<!-- Button in the current tab tray header in multiselect mode. Saved the selected tabs to a collection when pressed. -->
<string name="tab_tray_save_to_collection">Sàbhail</string>
<!-- History --> <!-- History -->
<!-- Text for the button to clear all history --> <!-- Text for the button to clear all history -->
<string name="history_delete_all">Sguab an eachdraidh às</string> <string name="history_delete_all">Sguab an eachdraidh às</string>
<!-- Text for the dialog to confirm clearing all history --> <!-- Text for the dialog to confirm clearing all history -->
<string name="history_delete_all_dialog">A bheil thu cinnteach gu bheil thu airson an eachdraidh agad fhalamhadh?</string> <string name="history_delete_all_dialog">A bheil thu cinnteach gu bheil thu airson an eachdraidh agad fhalamhadh?</string>
<!-- Text for the snackbar to confirm that multiple browsing history items has been deleted -->
<string name="history_delete_multiple_items_snackbar">Chaidh an eachdraidh a sguabadh às</string>
<!-- Text for the snackbar to confirm that a single browsing history item has been deleted. The first parameter is the shortened URL of the deleted history item. -->
<string name="history_delete_single_item_snackbar">Chaidh %1$s a sguabadh às</string>
<!-- Text for positive action to delete history in deleting history dialog --> <!-- Text for positive action to delete history in deleting history dialog -->
<string name="history_clear_dialog">Falamhaich</string> <string name="history_clear_dialog">Falamhaich</string>
<!-- History overflow menu copy button -->
<string name="history_menu_copy_button">Dèan lethbhreac</string>
<!-- History overflow menu share button -->
<string name="history_menu_share_button">Co-roinn</string>
<!-- History overflow menu open in new tab button -->
<string name="history_menu_open_in_new_tab_button">Fosgail ann an taba ùr</string>
<!-- History overflow menu open in private tab button -->
<string name="history_menu_open_in_private_tab_button">Fosgail ann an taba prìobhaideach</string>
<!-- Text for the button to delete a single history item --> <!-- Text for the button to delete a single history item -->
<string name="history_delete_item">Sguab às</string> <string name="history_delete_item">Sguab às</string>
<!-- History multi select title in app bar <!-- History multi select title in app bar
@ -469,6 +627,13 @@
<!-- Text shown when no history exists --> <!-- Text shown when no history exists -->
<string name="history_empty_message">Chan eil eachdraidh an-seo</string> <string name="history_empty_message">Chan eil eachdraidh an-seo</string>
<!-- Downloads -->
<!-- Text shown when no download exists -->
<string name="download_empty_message">Cha deach dad a luchdadh a-nuas an-seo</string>
<!-- History multi select title in app bar
The first parameter is the number of downloads selected -->
<string name="download_multi_select_title">%1$d air an taghadh</string>
<!-- Crashes --> <!-- Crashes -->
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) --> <!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
<string name="tab_crash_title_2">Tha sinn duilich ach chan urrainn dha %1$s an duilleag a luchdadh.</string> <string name="tab_crash_title_2">Tha sinn duilich ach chan urrainn dha %1$s an duilleag a luchdadh.</string>
@ -494,6 +659,12 @@
<string name="bookmark_edit">Deasaich an comharra-lìn</string> <string name="bookmark_edit">Deasaich an comharra-lìn</string>
<!-- Screen title for selecting a bookmarks folder --> <!-- Screen title for selecting a bookmarks folder -->
<string name="bookmark_select_folder">Tagh pasgan</string> <string name="bookmark_select_folder">Tagh pasgan</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
<string name="bookmark_delete_folder_confirmation_dialog">A bheil thu cinnteach gu bheil thu airson am pasgan seo a sguabadh às?</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete multiple items including folders. Parameter will be replaced by app name. -->
<string name="bookmark_delete_multiple_folders_confirmation_dialog">Sguabaidh %s na nithean a thagh thu às.</string>
<!-- Snackbar title shown after a folder has been deleted. This first parameter is the name of the deleted folder -->
<string name="bookmark_delete_folder_snackbar">Chaidh %1$s a sguabadh às</string>
<!-- Screen title for adding a bookmarks folder --> <!-- Screen title for adding a bookmarks folder -->
<string name="bookmark_add_folder">Cuir pasgan ris</string> <string name="bookmark_add_folder">Cuir pasgan ris</string>
<!-- deprecated: Snackbar title shown after a bookmark has been created. --> <!-- deprecated: Snackbar title shown after a bookmark has been created. -->
@ -546,8 +717,10 @@
<!-- Bookmark snackbar message on deletion <!-- Bookmark snackbar message on deletion
The first parameter is the host part of the URL of the bookmark deleted, if any --> The first parameter is the host part of the URL of the bookmark deleted, if any -->
<string name="bookmark_deletion_snackbar_message">Chaidh %1$s a sguabadh às</string> <string name="bookmark_deletion_snackbar_message">Chaidh %1$s a sguabadh às</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks --> <!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
<string name="bookmark_deletion_multiple_snackbar_message">A sguabadh às nan comharran-lìn a thagh thu</string> <string name="bookmark_deletion_multiple_snackbar_message_2">Chaidh na comharran-lìn a sguabadh às</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_3">A sguabadh às nam pasganan a thagh thu</string>
<!-- Bookmark undo button for deletion snackbar action --> <!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">NEO-DHÈAN</string> <string name="bookmark_undo_deletion">NEO-DHÈAN</string>
@ -594,34 +767,28 @@
<string name="tracking_protection_on">Air</string> <string name="tracking_protection_on">Air</string>
<!-- Summary of tracking protection preference if tracking protection is set to off --> <!-- Summary of tracking protection preference if tracking protection is set to off -->
<string name="tracking_protection_off">Dheth</string> <string name="tracking_protection_off">Dheth</string>
<!-- DEPRECATED: Label that indicates video and audio autoplay is blocked -->
<string name="preference_option_autoplay_blocked">Tha video is fuaim bacte</string>
<!-- DEPRECATED: Label that indicates video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed">Tha video is fuaim ceadaichte</string>
<!-- Label that indicates that all video and audio autoplay is allowed --> <!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Ceadaich fuaim is video</string> <string name="preference_option_autoplay_allowed2">Ceadaich fuaim is video</string>
<!-- Label that indicates that video and audio autoplay is only allowed over WIFI --> <!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only">Ceadaich fuaim is video air WiFi a-mhàin</string> <string name="preference_option_autoplay_allowed_wifi_only2">Bac an fhuaim agus video air ceangal dàta mobile a-mhàin</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">Gabhaidh fuaim agus video a chluich air WiFi</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked --> <!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio">Bac fuaim</string> <string name="preference_option_autoplay_block_audio2">Na bac ach an fhuaim</string>
<!-- Label that indicates that all video and audio autoplay is blocked --> <!-- Label that indicates that all video and audio autoplay is blocked -->
<string name="preference_option_autoplay_blocked2">Bac video s fuaim</string> <string name="preference_option_autoplay_blocked3">Bach an fhuaim agus a video</string>
<!-- Summary of delete browsing data on quit preference if it is set to on --> <!-- Summary of delete browsing data on quit preference if it is set to on -->
<string name="delete_browsing_data_quit_on">Air</string> <string name="delete_browsing_data_quit_on">Air</string>
<!-- Summary of delete browsing data on quit preference if it is set to off --> <!-- Summary of delete browsing data on quit preference if it is set to off -->
<string name="delete_browsing_data_quit_off">Dheth</string> <string name="delete_browsing_data_quit_off">Dheth</string>
<!-- Collections --> <!-- Collections -->
<!-- Label to describe what collections are to a new user without any collections -->
<string name="collections_description">Cruinnich na rudan a tha cudromach dhut. Sàbhail na tabaichean ann an cruinneachadh ùr airson toiseach-tòiseachaidh.</string>
<!-- Collections header on home fragment --> <!-- Collections header on home fragment -->
<string name="collections_header">Na cruinneachaidhean</string> <string name="collections_header">Na cruinneachaidhean</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Clàr-taice nan cruinneachadh</string> <string name="collection_menu_button_content_description">Clàr-taice nan cruinneachadh</string>
<!-- No Open Tabs Message Header --> <!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_header">Chan eil cruinneachadh ann</string> <string name="no_collections_description2">Cruinnich na rudan a tha cudromach dhut.\nBuidhnich luirg, làraichean is tabaichean a tha coltach ri chèile airson greim fhaighinn orra a-rithist gu luath.</string>
<!-- No Open Tabs Message Description -->
<string name="no_collections_description">Nochdaidh na cruinneachaidhean agad an-seo.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Tagh tabaichean</string> <string name="create_collection_select_tabs">Tagh tabaichean</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -644,6 +811,8 @@
<string name="create_collection_save_to_collection_tab_selected">%d taba air a thaghadh</string> <string name="create_collection_save_to_collection_tab_selected">%d taba air a thaghadh</string>
<!-- Text shown in snackbar when multiple tabs have been saved in a collection --> <!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
<string name="create_collection_tabs_saved">Chaidh na tabaichean a shàbhaladh!</string> <string name="create_collection_tabs_saved">Chaidh na tabaichean a shàbhaladh!</string>
<!-- Text shown in snackbar when one or multiple tabs have been saved in a new collection -->
<string name="create_collection_tabs_saved_new_collection">Chaidh an cruinneachadh a shàbhaladh!</string>
<!-- Text shown in snackbar when one tab has been saved in a collection --> <!-- Text shown in snackbar when one tab has been saved in a collection -->
<string name="create_collection_tab_saved">Chaidh an taba a shàbhaladh!</string> <string name="create_collection_tab_saved">Chaidh an taba a shàbhaladh!</string>
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator --> <!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
@ -651,6 +820,9 @@
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator--> <!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
<string name="create_collection_save">Sàbhail</string> <string name="create_collection_save">Sàbhail</string>
<!-- Snackbar action to view the collection the user just created or updated -->
<string name="create_collection_view">Sealladh</string>
<!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections--> <!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections-->
<string name="create_collection_default_name">Cruinneachadh %d</string> <string name="create_collection_default_name">Cruinneachadh %d</string>
@ -746,6 +918,10 @@
<string name="qr_scanner_dialog_negative">DIÙLT</string> <string name="qr_scanner_dialog_negative">DIÙLT</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name --> <!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">A bheil thu cinnteach gu bheil thu airson %1$s a sguabadh às?</string> <string name="tab_collection_dialog_message">A bheil thu cinnteach gu bheil thu airson %1$s a sguabadh às?</string>
<!-- Collection and tab deletion prompt dialog message. This will show when the last tab from a collection is deleted -->
<string name="delete_tab_and_collection_dialog_message">Ma sguabas tu an taba seo às, thèid an cruinneachadh air fad a sguabadh às. S urrainn dhut cruinneachadh ùr a chruthachadh uair sam bith.</string>
<!-- Collection and tab deletion prompt dialog title. Placeholder will be replaced with the collection name. This will show when the last tab from a collection is deleted -->
<string name="delete_tab_and_collection_dialog_title">A bheil thu airson %1$s a sguabadh às?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection --> <!-- Tab collection deletion prompt dialog option to delete the collection -->
<string name="tab_collection_dialog_positive">Sguab às</string> <string name="tab_collection_dialog_positive">Sguab às</string>
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection --> <!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
@ -762,14 +938,14 @@
<string name="preference_accessibility_font_size_title">Meud a chrutha-chlò</string> <string name="preference_accessibility_font_size_title">Meud a chrutha-chlò</string>
<!-- Title for Accessibility Text Automatic Size Scaling Preference --> <!-- Title for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size">Ath-mheudachadh fèin-obrachail a chrutha-chlò</string> <string name="preference_accessibility_auto_size_2">Ath-mheudachadh fèin-obrachail a chrutha-chlò</string>
<!-- Summary for Accessibility Text Automatic Size Scaling Preference --> <!-- Summary for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_summary">Thèid meud a chrutha-chlò atharrachadh a-rèir nan roghainnean Android agad. Cuir à comas e airson a mheud a shuidheachadh an-seo.</string> <string name="preference_accessibility_auto_size_summary">Thèid meud a chrutha-chlò atharrachadh a-rèir nan roghainnean Android agad. Cuir à comas e airson a mheud a shuidheachadh an-seo.</string>
<!-- Title for the Delete browsing data preference --> <!-- Title for the Delete browsing data preference -->
<string name="preferences_delete_browsing_data">Sguab an dàta brabhsaidh às</string> <string name="preferences_delete_browsing_data">Sguab an dàta brabhsaidh às</string>
<!-- Title for the tabs item in Delete browsing data --> <!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title">Tabaichean fosgailte</string> <string name="preferences_delete_browsing_data_tabs_title_2">Tabaichean fosgailte</string>
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs --> <!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
<string name="preferences_delete_browsing_data_tabs_subtitle">Tabaichean (%d)</string> <string name="preferences_delete_browsing_data_tabs_subtitle">Tabaichean (%d)</string>
<!-- Title for the data and history items in Delete browsing data --> <!-- Title for the data and history items in Delete browsing data -->
@ -801,8 +977,6 @@
<string name="preference_summary_delete_browsing_data_on_quit">Sguabaidh seo an dàta brabhsaidh às gu fèin-obrachail nuair a thaghas tu “Fàg an-seo” on phrìomh chlàr-taice.</string> <string name="preference_summary_delete_browsing_data_on_quit">Sguabaidh seo an dàta brabhsaidh às gu fèin-obrachail nuair a thaghas tu “Fàg an-seo” on phrìomh chlàr-taice.</string>
<!-- Summary for the Delete browsing data on quit preference. "Quit" translation should match delete_browsing_data_on_quit_action translation. --> <!-- Summary for the Delete browsing data on quit preference. "Quit" translation should match delete_browsing_data_on_quit_action translation. -->
<string name="preference_summary_delete_browsing_data_on_quit_2">Sguabaidh seo an dàta brabhsaidh às gu fèin-obrachail nuair a thaghas tu “Fàg an-seo” on phrìomh chlàr-taice.</string> <string name="preference_summary_delete_browsing_data_on_quit_2">Sguabaidh seo an dàta brabhsaidh às gu fèin-obrachail nuair a thaghas tu “Fàg an-seo” on phrìomh chlàr-taice.</string>
<!-- Category for history items to delete on quit in delete browsing data on quit -->
<string name="preferences_delete_browsing_data_on_quit_browsing_history">An eachdraidh brabhsaidh</string>
<!-- Action item in menu for the Delete browsing data on quit feature --> <!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Fàg an-seo</string> <string name="delete_browsing_data_on_quit_action">Fàg an-seo</string>
@ -819,6 +993,34 @@
<!-- Text for the snackbar to show the user that the deletion of browsing data is in progress --> <!-- Text for the snackbar to show the user that the deletion of browsing data is in progress -->
<string name="deleting_browsing_data_in_progress">A sguabadh an dàta bhrabhsaidh às…</string> <string name="deleting_browsing_data_in_progress">A sguabadh an dàta bhrabhsaidh às…</string>
<!-- Tips -->
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header">S e Firefox Nightly a tha air Firefox Preview a-nis</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description">
Thèid Firefox Nightly ùrachadh gach oidhche agus tha gleusan deuchainneil na bhroinn.
Ge-tà, dhfhaoidte nach bi e buileach cho seasmhach. Luchdaich a-nuas am brabhsair beta againn airson brabhsair nas seasmhaiche.</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">Faigh Firefox airson Android Beta</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_installed">Rinn Firefox Nightly gluasad</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_installed">
Chan fhaigh an aplacaid seo ùrachaidhean tèarainteachd tuilleadh. Na cleachd an aplacaid seo tuilleadh is faigh greim air an tionndadh ùr Nightly na àite.
\n\nAirson na comharran-lìn, clàraidhean a-steach is an eachdraidh agad a ghluasad gu aplacaid eile, cruthaich cunntas Firefox.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_installed">Cleachd an tionndadh ùr Nightly na àite</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_not_installed">Rinn Firefox Nightly gluasad</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_not_installed">
Chan fhaigh an aplacaid seo ùrachaidhean tèarainteachd tuilleadh. Na cleachd an aplacaid seo tuilleadh is faigh greim air an tionndadh ùr Nightly na àite.
\n\nAirson na comharran-lìn, clàraidhean a-steach is an eachdraidh agad a ghluasad gu aplacaid eile, cruthaich cunntas Firefox.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_not_installed">Faigh an tionndadh ùr Nightly</string>
<!-- Onboarding --> <!-- Onboarding -->
<!-- Text for onboarding welcome message <!-- Text for onboarding welcome message
The first parameter is the name of the app (e.g. Firefox Preview) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -835,9 +1037,10 @@
<string name="onboarding_whats_new_description">A bheil ceist agad mun dealbhadh ur aig %s? Airson fiosrachadh na tha air atharrachadh?</string> <string name="onboarding_whats_new_description">A bheil ceist agad mun dealbhadh ur aig %s? Airson fiosrachadh na tha air atharrachadh?</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Faigh freagairtean an-seo</string> <string name="onboarding_whats_new_description_linktext">Faigh freagairtean an-seo</string>
<!-- text for the firefox account onboarding card header <!-- text for the Firefox account onboarding sign in card header -->
The first parameter is the name of the app (e.g. Firefox Preview) --> <string name="onboarding_account_sign_in_header">Tòisich air sioncronachadh nan comharran-lìn, faclan-faire is mòran a bharrachd leis a chunntas Firefox agad.</string>
<string name="onboarding_firefox_account_header">Cuir %s gu làn-fheum.</string> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Barrachd fiosrachaidh</string>
<!-- text for the firefox account onboarding card header when we detect you're already signed in to <!-- text for the firefox account onboarding card header when we detect you're already signed in to
another Firefox browser. (The word `Firefox` should not be translated) another Firefox browser. (The word `Firefox` should not be translated)
The first parameter is the email of the detected user's account --> The first parameter is the email of the detected user's account -->
@ -855,19 +1058,21 @@
<!-- text to display in the snackbar if automatic sign-in fails. user may try again --> <!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">Dhfhàillig an logadh a-steach</string> <string name="onboarding_firefox_account_automatic_signin_failed">Dhfhàillig an logadh a-steach</string>
<!-- text for the tracking protection onboarding card header --> <!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header">Dìon thu fhèin</string> <string name="onboarding_tracking_protection_header_2">Prìobhaideachd fhèin-obrachail</string>
<!-- text for the tracking protection card description <!-- text for the tracking protection card description
The first parameter is the name of the app (e.g. Firefox Preview) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_tracking_protection_description1">Cuiridh %s bacadh air làraichean-lìn o bhith gad thracadh air loidhne.</string> <string name="onboarding_tracking_protection_description_2">Bacaidh na roghainnean prìobhaideachd is tèarainteachd tracaichean, bathar-bog droch-rùnach is companaidhean a leanas mun cuairt thu.</string>
<!-- text for tracking protection radio button option for standard level of blocking --> <!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button">Stannardach</string> <string name="onboarding_tracking_protection_standard_button_2">Stannardach (bun-roghainn)</string>
<!-- text for standard blocking option button description --> <!-- text for standard blocking option button description -->
<string name="onboarding_tracking_protection_standard_button_description">Bacaidh seo nas lugha de thracaichean ach thèid làraichean a luchdadh mar bu chòir</string> <string name="onboarding_tracking_protection_standard_button_description_2">Bacaidh seo nas lughe de thracaichean. Thèid duilleagan a luchdadh mar bu chòir.</string>
<!-- text for tracking protection radio button option for strict level of blocking --> <!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">Teann (mholamaid seo)</string> <string name="onboarding_tracking_protection_strict_button">Teann (mholamaid seo)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">Teann</string>
<!-- text for strict blocking option button description --> <!-- text for strict blocking option button description -->
<string name="onboarding_tracking_protection_strict_button_description">Bacaidh seo barrachd thracaichean airson dìon agus dèanadas nas fheàrr ach dhfhaoidte gum bi làraichean ann nach obraich mar bu chòir</string> <string name="onboarding_tracking_protection_strict_button_description_2">Bacaidh seo barrachd thracaichean, sanasachd is priob-uinneagan. Thèid duilleagan a luchdadh nas luaithe ach dhfhaoidte nach obraich gach rud mar bu chòir.</string>
<!-- text for the toolbar position card header <!-- text for the toolbar position card header
In English this is an idiom for "choose a side as in an argument or fight" In English this is an idiom for "choose a side as in an argument or fight"
but it is ok to make this more literally about "choosing a position in a physical space --> but it is ok to make this more literally about "choosing a position in a physical space -->
@ -892,6 +1097,9 @@
<!-- Text for the button to read the privacy notice --> <!-- Text for the button to read the privacy notice -->
<string name="onboarding_privacy_notice_read_button">Leugh sanas na prìobhaideachd againn</string> <string name="onboarding_privacy_notice_read_button">Leugh sanas na prìobhaideachd againn</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
<string name="onboarding_close">Dùin</string>
<!-- text for the button to finish onboarding --> <!-- text for the button to finish onboarding -->
<string name="onboarding_finish">Tòisich air brabhsadh</string> <string name="onboarding_finish">Tòisich air brabhsadh</string>
@ -929,6 +1137,8 @@
<string name="sign_in_with_email">Cleachd post-d na àite</string> <string name="sign_in_with_email">Cleachd post-d na àite</string>
<!-- Text shown in confirmation dialog to sign out of account --> <!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Sguiridh Firefox de shioncronachadh a chunntais agad ach cha sguab e às gin dhen dàta brabhsaidh agad air an uidheam seo.</string> <string name="sign_out_confirmation_message">Sguiridh Firefox de shioncronachadh a chunntais agad ach cha sguab e às gin dhen dàta brabhsaidh agad air an uidheam seo.</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="sign_out_confirmation_message_2">Sguiridh %s de shioncronachadh a chunntais agad ach cha sguab e às gin dhen dàta brabhsaidh agad air an uidheam seo.</string>
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account --> <!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">Dì-cheangail</string> <string name="sign_out_disconnect">Dì-cheangail</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account --> <!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
@ -949,31 +1159,21 @@
<!-- Text displayed that links to website about enhanced tracking protection --> <!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Barrachd fiosrachaidh</string> <string name="preference_enhanced_tracking_protection_explanation_learn_more">Barrachd fiosrachaidh</string>
<!-- Preference for enhanced tracking protection for the standard protection settings --> <!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_option">Stannardach</string> <string name="preference_enhanced_tracking_protection_standard_default_1">Stannardach (bun-roghainn)</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard">Stannardach (mholamaid seo)</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings --> <!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description">Cothromachadh eadar dìon is dèanadas.</string> <string name="preference_enhanced_tracking_protection_standard_description_3">Bacaidh seo nas lughe de thracaichean. Thèid duilleagan a luchdadh mar bu chòir.</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description_2">Thèid duilleagan a luchdadh mar bu chòir ach bacaidh e nas lugha de thracaichean.</string>
<!-- Accessibility text for the Standard protection information icon --> <!-- Accessibility text for the Standard protection information icon -->
<string name="preference_enhanced_tracking_protection_standard_info_button">Na thèid a bhacadh leis an dìon stannardach on tracadh</string> <string name="preference_enhanced_tracking_protection_standard_info_button">Na thèid a bhacadh leis an dìon stannardach on tracadh</string>
<!-- Preference for enhanced tracking protection for the strict protection settings --> <!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">Teann</string> <string name="preference_enhanced_tracking_protection_strict">Teann</string>
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
<string name="preference_enhanced_tracking_protection_strict_default">Teann (Bun-roghainn)</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_default_description">Dìon o thracadh agus dèanadas nas fheàrr ach bidh làraichean ann nach obraich buileach mar bu chòir.</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_strict_recommended">Teann (mholamaid seo)</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings --> <!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_description">Dìon nas làidire ach dhfhaoidte gum bris seo cuid a làraichean no susbaint.</string> <string name="preference_enhanced_tracking_protection_strict_description_2">Bacaidh seo barrachd thracaichean, sanasachd is priob-uinneagan. Thèid duilleagan a luchdadh nas luaithe ach dhfhaoidte nach obraich gach rud mar bu chòir.</string>
<!-- Accessibility text for the Strict protection information icon --> <!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_strict_info_button">Na thèid a bhacadh leis an dìon teann on tracadh</string> <string name="preference_enhanced_tracking_protection_strict_info_button">Na thèid a bhacadh leis an dìon teann on tracadh</string>
<!-- Preference for enhanced tracking protection for the custom protection settings --> <!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">Gnàthaichte</string> <string name="preference_enhanced_tracking_protection_custom">Gnàthaichte</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings --> <!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description">Tagh na tracaichean is sgriobtaichean a thèid a bhacadh</string> <string name="preference_enhanced_tracking_protection_custom_description_2">Tagh na tracaichean is sgriobtaichean a thèid a bhacadh.</string>
<!-- Accessibility text for the Strict protection information icon --> <!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_custom_info_button">Na thèid a bhacadh leis an dìon ghnàthaichte on tracadh</string> <string name="preference_enhanced_tracking_protection_custom_info_button">Na thèid a bhacadh leis an dìon ghnàthaichte on tracadh</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings --> <!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
@ -1023,13 +1223,16 @@
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection --> <!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_description">Cuiridh seo stad air luchdadh de shanasachd, videothan is susbaint eile on taobh a-muigh anns a bheil còd tracaidh. Dhfhaoidte gum bi droch-bhuaidh aige seo air obrachadh de chuid a làraichean-lìn.</string> <string name="etp_tracking_content_description">Cuiridh seo stad air luchdadh de shanasachd, videothan is susbaint eile on taobh a-muigh anns a bheil còd tracaidh. Dhfhaoidte gum bi droch-bhuaidh aige seo air obrachadh de chuid a làraichean-lìn.</string>
<!-- Enhanced Tracking Protection Onboarding Message shown in a dialog above the toolbar. The first parameter is the name of the application (For example: Fenix) --> <!-- Enhanced Tracking Protection Onboarding Message shown in a dialog above the toolbar. The first parameter is the name of the application (For example: Fenix) -->
<string name="etp_onboarding_message_2">Tha %s a bacadh tracaichean air an làrach seo nuair a bhios an sgiath purpaidh. Thoir gnogag air is chì thu na tha ga bhacadh.</string> <string name="etp_onboarding_cfr_message">Gach turas a bhios an sgiath purpaidh, bhac %s tracaichean air làrach. Thoir gnogag airson barrachd fiosrachaidh.</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site --> <!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Tha an dìon AIR air an làrach seo</string> <string name="etp_panel_on">Tha an dìon AIR air an làrach seo</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site --> <!-- Enhanced Tracking Protection message that protection is currently off for this site -->
<string name="etp_panel_off">Tha an dìon DHETH air an làrach seo</string> <string name="etp_panel_off">Tha an dìon DHETH air an làrach seo</string>
<!-- Header for exceptions list for which sites enhanced tracking protection is always off --> <!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
<string name="enhanced_tracking_protection_exceptions">Tha an dìon adhartach o thracadh dheth air na làraichean seo</string> <string name="enhanced_tracking_protection_exceptions">Tha an dìon adhartach o thracadh dheth air na làraichean seo</string>
<!-- Content description (not visible, for screen readers etc.): Navigate
back from ETP details (Ex: Tracking content) -->
<string name="etp_back_button_content_description">Air ais</string>
<!-- About page Your rights link text --> <!-- About page Your rights link text -->
<string name="about_your_rights">Do chòraichean</string> <string name="about_your_rights">Do chòraichean</string>
@ -1043,6 +1246,8 @@
<!-- About page link text to open support link --> <!-- About page link text to open support link -->
<string name="about_support">Taic</string> <string name="about_support">Taic</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
<string name="about_crashes">Tuislidhean</string>
<!-- About page link text to open privacy notice link --> <!-- About page link text to open privacy notice link -->
<string name="about_privacy_notice">Aithris na prìobhaideachd</string> <string name="about_privacy_notice">Aithris na prìobhaideachd</string>
<!-- About page link text to open know your rights link --> <!-- About page link text to open know your rights link -->
@ -1052,6 +1257,11 @@
<!-- About page link text to open a screen with libraries that are used --> <!-- About page link text to open a screen with libraries that are used -->
<string name="about_other_open_source_libraries">Leabhar-lannan a chleachdas sinn</string> <string name="about_other_open_source_libraries">Leabhar-lannan a chleachdas sinn</string>
<!-- Toast shown to the user when they are activating the secret dev menu
The first parameter is number of long clicks left to enable the menu -->
<string name="about_debug_menu_toast_progress">Clàr-taice dì-bhugachaidh: %1$d briogaidhean air fhàgail gus a chur an comas</string>
<string name="about_debug_menu_toast_done">Tha an clàr-taice dì-bhugachaidh an comas a-nis</string>
<!-- Content description of the tab counter toolbar button when one tab is open --> <!-- Content description of the tab counter toolbar button when one tab is open -->
<string name="tab_counter_content_description_one_tab">1 taba</string> <string name="tab_counter_content_description_one_tab">1 taba</string>
<!-- Content description of the tab counter toolbar button when multiple tabs are open. First parameter will be replaced with the number of tabs (always more than one) --> <!-- Content description of the tab counter toolbar button when multiple tabs are open. First parameter will be replaced with the number of tabs (always more than one) -->
@ -1073,9 +1283,14 @@
<string name="add_to_homescreen_cancel">Sguir dheth</string> <string name="add_to_homescreen_cancel">Sguir dheth</string>
<!-- Add button text for the Add to Homescreen dialog --> <!-- Add button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_add">Cuir ris</string> <string name="add_to_homescreen_add">Cuir ris</string>
<!-- Continue to website button text for the first-time Add to Homescreen dialog -->
<string name="add_to_homescreen_continue">Lean air adhart gun làrach-lìn</string>
<!-- Placeholder text for the TextView in the Add to Homescreen dialog --> <!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Ainm na h-ath-ghoirid</string> <string name="add_to_homescreen_text_placeholder">Ainm na h-ath-ghoirid</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">Tha e furasta an duilleag seo a chur ri duilleag-dhachaigh an fhòn agad airson greim fhaighinn air gu luath.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Clàraidhean a-steach is faclan-faire</string> <string name="preferences_passwords_logins_and_passwords">Clàraidhean a-steach is faclan-faire</string>
<!-- Preference for managing the saving of logins and passwords in Fenix --> <!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1108,6 +1323,8 @@
<string name="preferences_passwords_exceptions_description_empty">Nochdaidh clàraidhean a-steach is faclan-faire nach eil gan sàbhaladh an-seo.</string> <string name="preferences_passwords_exceptions_description_empty">Nochdaidh clàraidhean a-steach is faclan-faire nach eil gan sàbhaladh an-seo.</string>
<!-- Description of list of login exceptions that we never save logins for --> <!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">Cha dèid clàraidhean a-steach agus faclan-faire a shàbhaladh airson nan làraichean seo.</string> <string name="preferences_passwords_exceptions_description">Cha dèid clàraidhean a-steach agus faclan-faire a shàbhaladh airson nan làraichean seo.</string>
<!-- Text on button to remove all saved login exceptions -->
<string name="preferences_passwords_exceptions_remove_all">Sguab gach eisgeachd às</string>
<!-- Hint for search box in logins list --> <!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Lorg sna clàraidhean a-steach</string> <string name="preferences_passwords_saved_logins_search">Lorg sna clàraidhean a-steach</string>
<!-- Option to sort logins list A-Z, alphabetically --> <!-- Option to sort logins list A-Z, alphabetically -->
@ -1147,6 +1364,8 @@
<string name="saved_login_copy_username">Dèan lethbhreac dhen ainm-chleachdaiche</string> <string name="saved_login_copy_username">Dèan lethbhreac dhen ainm-chleachdaiche</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins --> <!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Dèan lethbhreac dhen làrach</string> <string name="saved_login_copy_site">Dèan lethbhreac dhen làrach</string>
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins -->
<string name="saved_login_open_site">Fosgail an làrach sa bhrabhsair</string>
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins --> <!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
<string name="saved_login_reveal_password">Seall am facal-faire</string> <string name="saved_login_reveal_password">Seall am facal-faire</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins --> <!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
@ -1169,6 +1388,13 @@
<!-- Summary for Accessibility Force Enable Zoom Preference --> <!-- Summary for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom_summary">Cuir greimeachadh is sùmadh an comas, fiù air làraichean-lìn a bhacas an gluasad seo.</string> <string name="preference_accessibility_force_enable_zoom_summary">Cuir greimeachadh is sùmadh an comas, fiù air làraichean-lìn a bhacas an gluasad seo.</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">Ainm (A-Z)</string>
<!-- Saved logins sorting strategy menu item -by last used- (if selected, it will sort saved logins by last used) -->
<string name="saved_logins_sort_strategy_last_used">Cleachdadh mu dheireadh</string>
<!-- Content description (not visible, for screen readers etc.): Sort saved logins dropdown menu chevron icon -->
<string name="saved_logins_menu_dropdown_chevron_icon_content_description">Seòrsaich clàr-taice nan clàradh a-steach</string>
<!-- Title of the Add search engine screen --> <!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">Cuir einnsean-luirg ris</string> <string name="search_engine_add_custom_search_engine_title">Cuir einnsean-luirg ris</string>
<!-- Title of the Edit search engine screen --> <!-- Title of the Edit search engine screen -->
@ -1260,8 +1486,72 @@
<string name="certificate_info_verified_by">Air a dhearbhadh le: %1$s</string> <string name="certificate_info_verified_by">Air a dhearbhadh le: %1$s</string>
<!-- Login overflow menu delete button --> <!-- Login overflow menu delete button -->
<string name="login_menu_delete_button">Sguab às</string> <string name="login_menu_delete_button">Sguab às</string>
<!-- Login overflow menu edit button -->
<string name="login_menu_edit_button">Deasaich</string>
<!-- Message in delete confirmation dialog for logins --> <!-- Message in delete confirmation dialog for logins -->
<string name="login_deletion_confirmation">A bheil thu cinnteach gu bheil thu airson an clàradh a-steach seo a sguabadh às?</string> <string name="login_deletion_confirmation">A bheil thu cinnteach gu bheil thu airson an clàradh a-steach seo a sguabadh às?</string>
<!-- Positive action of a dialog asking to delete --> <!-- Positive action of a dialog asking to delete -->
<string name="dialog_delete_positive">Sguab às</string> <string name="dialog_delete_positive">Sguab às</string>
<!-- The saved login options menu description. -->
<string name="login_options_menu">Roghainnean clàraidh a-steach</string>
<!-- The editable text field for a login's web address. -->
<string name="saved_login_hostname_description">An raon teacsa so-dheasaichte airson seòladh-lìn a chlàraidh a-steach.</string>
<!-- The editable text field for a login's username. -->
<string name="saved_login_username_description">An raon teacsa so-dheasaichte airson ainm-cleachdaiche a chlàraidh a-steach.</string>
<!-- The editable text field for a login's password. -->
<string name="saved_login_password_description">An raon teacsa so-dheasaichte airson facal-faire a chlàraidh a-steach.</string>
<!-- The button description to save changes to an edited login. -->
<string name="save_changes_to_login">Sàbhail na h-atharraichean a rinneadh air a chlàradh a-steach.</string>
<!-- The button description to discard changes to an edited login. -->
<string name="discard_changes">Tilg air falbh na h-atharraichean</string>
<!-- The page title for editing a saved login. -->
<string name="edit">Deasaich</string>
<!-- The error message in edit login view when password field is blank. -->
<string name="saved_login_password_required">Tha feum air facal-faire</string>
<!-- Voice search button content description -->
<string name="voice_search_content_description">Lorg-gutha</string>
<!-- Voice search prompt description displayed after the user presses the voice search button -->
<string name="voice_search_explainer">Bruidhinn an-dràsta</string>
<!-- The error message in edit login view when a duplicate username exists. -->
<string name="saved_login_duplicate">Tha clàradh a-steach ann mu thràth aig a bheil an t-ainm-cleachdaiche seo</string>
<!-- Synced Tabs -->
<!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">Ceangail uidheam eile ris.</string>
<!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Dèan dearbhadh às ùr.</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">Cuir an comas sioncronachadh nan tabaichean.</string>
<!-- Text displayed when user has no tabs that have been synced -->
<string name="synced_tabs_no_tabs">Chan eil taba sam bith fosgailte agad ann am Firefox air uidheaman eile.</string>
<!-- Text displayed in the synced tabs screen when a user is not signed in to Firefox Sync describing Synced Tabs -->
<string name="synced_tabs_sign_in_message">Seall liosta nan tabaichean a tha agad air uidheaman eile.</string>
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">Clàraich a-steach a shioncronachadh</string>
<!-- The text displayed when a synced device has no tabs to show in the list of Synced Tabs. -->
<string name="synced_tabs_no_open_tabs">Chan eil taba fosgailte</string>
<!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Ràinig thu crìoch brod nan làrach</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">Airson brod làraich ùr a chur ris, thoir fear air falbh an toiseach. Dèan brùthadh fada air an làrach is tagh “Thoir air falbh”.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Ceart, tha mi agaibh</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Seall na làraichean air a do thadhail thu as trice</string>
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Thoir air falbh</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Cuir %s gu làn-fheum.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Cruinnich na rudan a tha cudromach dhut</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Buidhnich luirg, làraichean is tabaichean a tha coltach ri chèile airson greim fhaighinn orra a-rithist gu luath.</string>
</resources> </resources>

@ -90,11 +90,15 @@
<!-- Text for the negative action button --> <!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Mboyke</string> <string name="open_in_app_cfr_negative_button_text">Mboyke</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Eikotevẽ eike taãngamýime. Eho Android ñembohekópe, eukutu ñemoneĩ ha moneĩ.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. --> <!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Eho ñembohekópe</string> <string name="camera_permissions_needed_positive_button_text">Eho ñembohekópe</string>
<!-- Text for the negative action button to dismiss the dialog. --> <!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Mboyke</string> <string name="camera_permissions_needed_negative_button_text">Mboyke</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Emboheko tendayke ijurujáva oñemboty hag̃ua ijehegui ojehechaỹva pe ára, arapokõindy térã jasýpe.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. --> <!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Ehecha jeporavorã</string> <string name="tab_tray_close_tabs_banner_positive_button_text">Ehecha jeporavorã</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. --> <!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
@ -286,6 +290,8 @@
<string name="preferences_toolbar">Tembiporu renda</string> <string name="preferences_toolbar">Tembiporu renda</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Téma</string> <string name="preferences_theme">Téma</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Ñepyrũ</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Ñemombaete</string> <string name="preferences_customize">Ñemombaete</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -493,6 +499,31 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Mboty</string> <string name="content_description_close_button">Mboty</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Tendayke oñemboty ramóva</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Tembiasakue jehechaukapa</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d tendaykekuéra</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d tendayke</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Ndaipóri tendayke oñemboty ramóva</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Emboty tendayke</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Popegua</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Peteĩ ára rire</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Peteĩ arapokõindy rire</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Peteĩ jasy rire</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Tendayke ijurujáva</string> <string name="tab_header_label">Tendayke ijurujáva</string>
@ -513,6 +544,10 @@
<string name="tab_tray_menu_item_save">Eñongatu atyhápe</string> <string name="tab_tray_menu_item_save">Eñongatu atyhápe</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Emoherakuã opaite tendayke</string> <string name="tab_tray_menu_item_share">Emoherakuã opaite tendayke</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Tendayke oñemboty ramóva</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Tendayke ñemboheko</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Emboty opaite tendayke</string> <string name="tab_tray_menu_item_close">Emboty opaite tendayke</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -1540,6 +1575,9 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Oĩma, aikumby</string> <string name="top_sites_max_limit_confirmation_button">Oĩma, aikumby</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Ehechauka tenda ojeikeveha</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Mboguete</string> <string name="remove_home_collection_placeholder_content_description">Mboguete</string>
@ -1547,4 +1585,8 @@
The first parameter is the name of the app (e.g. Firefox Preview) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Eguenohẽ %s-gui eikotevẽva.</string> <string name="onboarding_firefox_account_header">Eguenohẽ %s-gui eikotevẽva.</string>
</resources> <!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Embyaty umi mbaekuéra ehayhu añetéva</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Emboaty hekaha, tenda ha tendayke ojueheguáva eike pyaeve hag̃ua ag̃ave.</string>
</resources>

@ -79,6 +79,28 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Non adesso</string> <string name="search_widget_cfr_neg_button_text">Non adesso</string>
<!-- Open in App "contextual feature recommendation" (CFR) -->
<!-- Text for the info message. 'Firefox' intentionally hardcoded here.-->
<string name="open_in_app_cfr_info_message">È possibile impostare Firefox come browser predefinito per aprire i link nelle app.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Vai alle impostazioni</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Ignora</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">È richiesto laccesso alla fotocamera. Puoi acconsentire allaccesso dalla scheda dei permessi nelle impostazioni di Android.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Vai alle impostazioni</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Chiudi</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Imposta la chiusura automatica delle schede aperte che non sono state visualizzate nellultimo giorno, settimana o mese.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Visualizza opzioni</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
<string name="tab_tray_close_tabs_banner_negative_button_text">Chiudi</string>
<!-- Home screen icons - Long press shortcuts --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Nuova scheda</string> <string name="home_screen_shortcut_open_new_tab_2">Nuova scheda</string>
@ -268,6 +290,8 @@
<string name="preferences_toolbar">Barra degli strumenti</string> <string name="preferences_toolbar">Barra degli strumenti</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Tema</string> <string name="preferences_theme">Tema</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Pagina iniziale</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Personalizza</string> <string name="preferences_customize">Personalizza</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -481,6 +505,32 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Chiudi</string> <string name="content_description_close_button">Chiudi</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Schede chiuse di recente</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Visualizza cronologia completa</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d schede</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d scheda</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Nessuna scheda chiusa di recente</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Chiudi schede</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Manualmente</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Dopo un giorno</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Dopo una settimana</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Dopo un mese</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Schede aperte</string> <string name="tab_header_label">Schede aperte</string>
@ -500,6 +550,10 @@
<string name="tab_tray_menu_item_save">Salva in una raccolta</string> <string name="tab_tray_menu_item_save">Salva in una raccolta</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Condividi tutte le schede</string> <string name="tab_tray_menu_item_share">Condividi tutte le schede</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Schede chiuse di recente</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Impostazioni schede</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Chiudi tutte le schede</string> <string name="tab_tray_menu_item_close">Chiudi tutte le schede</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -547,6 +601,8 @@
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Rimuovi</string> <string name="remove_top_site">Rimuovi</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">Elimina dalla cronologia</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name --> <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (modalità Navigazione anonima)</string> <string name="pwa_site_controls_title_private">%1$s (modalità Navigazione anonima)</string>
@ -1528,6 +1584,18 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">OK, tutto chiaro</string> <string name="top_sites_max_limit_confirmation_button">OK, tutto chiaro</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Mostra i siti più visitati</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Elimina</string> <string name="remove_home_collection_placeholder_content_description">Elimina</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Ottieni il massimo da %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Raggruppa i tuoi interessi</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Raggruppa ricerche, siti e schede simili tra loro per ritrovarle più rapidamente.</string>
</resources> </resources>

@ -284,6 +284,8 @@
<string name="preferences_toolbar">ხელსაწყოთა ზოლი</string> <string name="preferences_toolbar">ხელსაწყოთა ზოლი</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">თემა</string> <string name="preferences_theme">თემა</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">მთავარი</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">მორგება</string> <string name="preferences_customize">მორგება</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -490,6 +492,32 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">დახურვა</string> <string name="content_description_close_button">დახურვა</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">ბოლოს დახურული ჩანართები</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">სრული ისტორიის ჩვენება</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d ჩანართი</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d ჩანართი</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">ბოლოს დახურული ჩანართები არაა</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">ჩანართების დახურვა</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">ხელით</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">ერთი დღის შემდეგ</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">ერთი კვირის შემდეგ</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">ერთი თვის შემდეგ</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">გახსნილი ჩანართები</string> <string name="tab_header_label">გახსნილი ჩანართები</string>
@ -509,6 +537,10 @@
<string name="tab_tray_menu_item_save">კრებულში შენახვა</string> <string name="tab_tray_menu_item_save">კრებულში შენახვა</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">ყველა ჩანართის გაზიარება</string> <string name="tab_tray_menu_item_share">ყველა ჩანართის გაზიარება</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">ბოლოს დახურული ჩანართები</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">ჩანართის პარამეტრები</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">ყველა ჩანართის დახურვა</string> <string name="tab_tray_menu_item_close">ყველა ჩანართის დახურვა</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -1519,6 +1551,9 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">კარგი, გასაგებია</string> <string name="top_sites_max_limit_confirmation_button">კარგი, გასაგებია</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">ხშირად მონახულებულების ჩვენება</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">მოცილება</string> <string name="remove_home_collection_placeholder_content_description">მოცილება</string>

@ -82,14 +82,23 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ikkje no</string> <string name="search_widget_cfr_neg_button_text">Ikkje no</string>
<!-- Open in App "contextual feature recommendation" (CFR) -->
<!-- Text for the info message. 'Firefox' intentionally hardcoded here.-->
<string name="open_in_app_cfr_info_message">Du kan stille inn Firefox til å automatisk opne lenker i appar.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Gå til Innstillingar</string>
<!-- Text for the negative action button --> <!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Ignorer</string> <string name="open_in_app_cfr_negative_button_text">Ignorer</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Kameratilgang er nødvendig. Gå til Android-innstillingar, trykk på løyve, og trykk på tillat.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. --> <!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Gå til Innstillingar</string> <string name="camera_permissions_needed_positive_button_text">Gå til Innstillingar</string>
<!-- Text for the negative action button to dismiss the dialog. --> <!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Ignorer</string> <string name="camera_permissions_needed_negative_button_text">Ignorer</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Still inn at opne faner som ikkje har blitt viste den siste dagen, veka eller månaden skal latast att automatisk.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. --> <!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Vis alternativ</string> <string name="tab_tray_close_tabs_banner_positive_button_text">Vis alternativ</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. --> <!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
@ -795,6 +804,8 @@
<string name="collections_header">Samlingar</string> <string name="collections_header">Samlingar</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Samlingsmeny</string> <string name="collection_menu_button_content_description">Samlingsmeny</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description2">Samle tinga som betyr noko for deg.\nGrupper liknande søk, nettstadar og faner for rask tilgang seinare.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Vel faner</string> <string name="create_collection_select_tabs">Vel faner</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -1045,6 +1056,8 @@
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Få svar her</string> <string name="onboarding_whats_new_description_linktext">Få svar her</string>
<!-- text for the Firefox account onboarding sign in card header -->
<string name="onboarding_account_sign_in_header">Begynn å synkronisere bokmerke, passord og meir med Firefox-kontoen din.</string>
<!-- Text for the button to learn more about signing in to your Firefox account --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Les meir</string> <string name="onboarding_manual_sign_in_learn_more">Les meir</string>
<!-- text for the firefox account onboarding card header when we detect you're already signed in to <!-- text for the firefox account onboarding card header when we detect you're already signed in to
@ -1551,7 +1564,18 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">OK, eg forstår det</string> <string name="top_sites_max_limit_confirmation_button">OK, eg forstår det</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Vis mest besøkte nettstadar</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Fjern</string> <string name="remove_home_collection_placeholder_content_description">Fjern</string>
</resources> <!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Få mest muleg ut av %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Samle dei tinga som betyr noko for deg</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Grupper saman liknande søk, nettstadar og faner for rask tilgang seinare.</string>
</resources>

@ -77,6 +77,23 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Pas ara</string> <string name="search_widget_cfr_neg_button_text">Pas ara</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Anar als paramètres</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Ignorar</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Accès a la camèra necessari. Anatz als paramètres Android, tocatz Autorizacions puèi Autorizar.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Anar als paramètres</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Ignorar</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Veire las opcions</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
<string name="tab_tray_close_tabs_banner_negative_button_text">Ignorar</string>
<!-- Home screen icons - Long press shortcuts --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Onglet novèl</string> <string name="home_screen_shortcut_open_new_tab_2">Onglet novèl</string>
@ -263,6 +280,8 @@
<string name="preferences_toolbar">Barra daisinas</string> <string name="preferences_toolbar">Barra daisinas</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Tèma</string> <string name="preferences_theme">Tèma</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Acuèlh</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Personalizacion</string> <string name="preferences_customize">Personalizacion</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -471,6 +490,32 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Tampar</string> <string name="content_description_close_button">Tampar</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Onglets tampats recentament</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Afichar listoric complèt</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d onglets</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d onglet</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Cap donglets pas tampats recentament</string>
<!-- Tab Management -->
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Tampar los onglets</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
<string name="close_tabs_manually">Manualament</string>
<!-- Option for auto closing tabs that will auto close tabs after one day -->
<string name="close_tabs_after_one_day">Aprèp un jorn</string>
<!-- Option for auto closing tabs that will auto close tabs after one week -->
<string name="close_tabs_after_one_week">Aprèp una setmana</string>
<!-- Option for auto closing tabs that will auto close tabs after one month -->
<string name="close_tabs_after_one_month">Aprèp un mes</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">Onglets dobèrts</string> <string name="tab_header_label">Onglets dobèrts</string>
@ -490,6 +535,10 @@
<string name="tab_tray_menu_item_save">Salvar a la colleccion</string> <string name="tab_tray_menu_item_save">Salvar a la colleccion</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Partejar totes los onglets</string> <string name="tab_tray_menu_item_share">Partejar totes los onglets</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Onglets tampats recentament</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Paramètres dels onglets</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Tampar totes los onglets</string> <string name="tab_tray_menu_item_close">Tampar totes los onglets</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -536,6 +585,8 @@
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Suprimir</string> <string name="remove_top_site">Suprimir</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">Suprimir de listoric</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name --> <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (mòde privat)</string> <string name="pwa_site_controls_title_private">%1$s (mòde privat)</string>
@ -748,10 +799,6 @@
<string name="collections_header">Colleccions</string> <string name="collections_header">Colleccions</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Menú de colleccion</string> <string name="collection_menu_button_content_description">Menú de colleccion</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Amassatz çò que compta per vos</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Agropatz de recèrcas, de sites e donglets similaris per i accedir rapidament mai tard.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Seleccionar donglets</string> <string name="create_collection_select_tabs">Seleccionar donglets</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -982,8 +1029,6 @@
<string name="onboarding_whats_new_header1">Descobrissètz las novetats</string> <string name="onboarding_whats_new_header1">Descobrissètz las novetats</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Trobatz de responsas aquí</string> <string name="onboarding_whats_new_description_linktext">Trobatz de responsas aquí</string>
<!-- text for the firefox account onboarding card header -->
<string name="onboarding_firefox_account_header">Ne fasètz mai amb %s.</string>
<!-- Text for the button to learn more about signing in to your Firefox account --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Ne saber mai</string> <string name="onboarding_manual_sign_in_learn_more">Ne saber mai</string>
<!-- text for the button to confirm automatic sign-in --> <!-- text for the button to confirm automatic sign-in -->
@ -1438,4 +1483,18 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Òc, plan comprés</string> <string name="top_sites_max_limit_confirmation_button">Òc, plan comprés</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Mostrar los sites mai visitats</string>
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Suprimir</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Ne fasètz mai amb %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Amassatz çò que compta per vos</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Agropatz de recèrcas, de sites e donglets similaris per i accedir rapidament mai tard.</string>
</resources> </resources>

@ -70,6 +70,28 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ne zdaj</string> <string name="search_widget_cfr_neg_button_text">Ne zdaj</string>
<!-- Open in App "contextual feature recommendation" (CFR) -->
<!-- Text for the info message. 'Firefox' intentionally hardcoded here.-->
<string name="open_in_app_cfr_info_message">Firefox lahko nastavite tako, da samodejno odpira povezave v aplikacijah.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Pojdi v nastavitve</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Zapri</string>
<!-- Text for the info dialog when camera permissions have been denied but user tries to access a camera feature. -->
<string name="camera_permissions_needed_message">Potreben je dostop do kamere. Odprite nastavitve sistema Android in v dovoljenjih tapnite Dovoli.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Pojdi v nastavitve</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Zapri</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Nastavite, naj se zavihki, ki jih niste odprli v preteklem dnevu, tednu ali mesecu, samodejno zaprejo.</string>
<!-- Text for the positive action button to go to Settings for auto close tabs. -->
<string name="tab_tray_close_tabs_banner_positive_button_text">Prikaži možnosti</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
<string name="tab_tray_close_tabs_banner_negative_button_text">Zapri</string>
<!-- Home screen icons - Long press shortcuts --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Nov zavihek</string> <string name="home_screen_shortcut_open_new_tab_2">Nov zavihek</string>
@ -254,6 +276,8 @@
<string name="preferences_toolbar">Orodna vrstica</string> <string name="preferences_toolbar">Orodna vrstica</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Tema</string> <string name="preferences_theme">Tema</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Domača stran</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Prilagodi</string> <string name="preferences_customize">Prilagodi</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -465,6 +489,16 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Zapri</string> <string name="content_description_close_button">Zapri</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Nedavno zaprti zavihki</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Prikaži vso zgodovino</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">Zavihkov: %d</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d zavihek</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs --> <!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Ni nedavno zaprtih zavihkov</string> <string name="recently_closed_empty_message">Ni nedavno zaprtih zavihkov</string>
@ -597,6 +631,13 @@
<!-- Text shown when no history exists --> <!-- Text shown when no history exists -->
<string name="history_empty_message">Ni zgodovine</string> <string name="history_empty_message">Ni zgodovine</string>
<!-- Downloads -->
<!-- Text shown when no download exists -->
<string name="download_empty_message">Ni prenosov</string>
<!-- History multi select title in app bar
The first parameter is the number of downloads selected -->
<string name="download_multi_select_title">%1$d izbranih</string>
<!-- Crashes --> <!-- Crashes -->
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) --> <!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
<string name="tab_crash_title_2">Oprostite. %1$s ne more naložiti te strani.</string> <string name="tab_crash_title_2">Oprostite. %1$s ne more naložiti te strani.</string>
@ -753,6 +794,8 @@
<string name="collections_header">Zbirke</string> <string name="collections_header">Zbirke</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Meni zbirk</string> <string name="collection_menu_button_content_description">Meni zbirk</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description2">Zbirajte stvari, ki vam kaj pomenijo.\nZdružite podobna iskanja, spletne strani in zavihke za hitrejši dostop.</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Izberi zavihke</string> <string name="create_collection_select_tabs">Izberi zavihke</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -1001,6 +1044,8 @@
<string name="onboarding_whats_new_description">Imate vprašanja o preoblikovanem %su? Želite izvedeti, kaj se je spremenilo?</string> <string name="onboarding_whats_new_description">Imate vprašanja o preoblikovanem %su? Želite izvedeti, kaj se je spremenilo?</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">Tukaj poiščite odgovore</string> <string name="onboarding_whats_new_description_linktext">Tukaj poiščite odgovore</string>
<!-- text for the Firefox account onboarding sign in card header -->
<string name="onboarding_account_sign_in_header">Začnite sinhronizirati zaznamke, gesla in ostalo s Firefox Računom.</string>
<!-- Text for the button to learn more about signing in to your Firefox account --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Več o tem</string> <string name="onboarding_manual_sign_in_learn_more">Več o tem</string>
<!-- text for the firefox account onboarding card header when we detect you're already signed in to <!-- text for the firefox account onboarding card header when we detect you're already signed in to
@ -1510,9 +1555,18 @@
<!-- Confirmation dialog button text when top sites limit is reached. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">V redu, razumem</string> <string name="top_sites_max_limit_confirmation_button">V redu, razumem</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Prikaži najbolj obiskana spletna mesta</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Odstrani</string> <string name="remove_home_collection_placeholder_content_description">Odstrani</string>
<!-- depcrecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Kar najbolje izkoristite %s.</string>
<!-- Deprecated: No Open Tabs Message Header -->
<string name="no_collections_header1">Zbirajte stvari, ki vam kaj pomenijo</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections --> <!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Združite podobna iskanja, spletne strani in zavihke za hitrejši dostop.</string> <string name="no_collections_description1">Združite podobna iskanja, spletne strani in zavihke za hitrejši dostop.</string>
</resources> </resources>

@ -261,6 +261,8 @@
<string name="preferences_toolbar">పనిముట్ల పట్టీ</string> <string name="preferences_toolbar">పనిముట్ల పట్టీ</string>
<!-- Preference for changing default theme to dark or light mode --> <!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">అలంకారం</string> <string name="preferences_theme">అలంకారం</string>
<!-- Preference for customizing the home screen -->
<string name="preferences_home">ముంగిలి</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">అభిమతీకరణ</string> <string name="preferences_customize">అభిమతీకరణ</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -472,6 +474,17 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">మూసివేయి</string> <string name="content_description_close_button">మూసివేయి</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">ఇటీవల మూసిన ట్యాబులు</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">పూర్తి చరిత్రను చూపించు</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d ట్యాబులు</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d ట్యాబు</string>
<!-- Sessions --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">తెరిచివున్న ట్యాబులు</string> <string name="tab_header_label">తెరిచివున్న ట్యాబులు</string>
@ -1516,4 +1529,5 @@
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">తొలగించు</string> <string name="remove_home_collection_placeholder_content_description">తొలగించు</string>
</resources>
</resources>

@ -169,6 +169,13 @@
<dimen name="saved_logins_item_margin_start">16dp</dimen> <dimen name="saved_logins_item_margin_start">16dp</dimen>
<dimen name="saved_logins_item_margin_end">48dp</dimen> <dimen name="saved_logins_item_margin_end">48dp</dimen>
<!-- Top sites -->
<dimen name="top_sites_favicon_size">40dp</dimen>
<dimen name="top_sites_favicon_padding">4dp</dimen>
<dimen name="top_sites_item_size">64dp</dimen>
<dimen name="top_sites_item_margin_top">12dp</dimen>
<dimen name="top_sites_text_margin_top">8dp</dimen>
<!-- a11y --> <!-- a11y -->
<dimen name="accessibility_min_height">48dp</dimen> <dimen name="accessibility_min_height">48dp</dimen>

@ -186,6 +186,7 @@
<string name="pref_key_migrating_from_fenix_nightly_tip" translatable="false">pref_key_migrating_from_fenix_nightly_tip</string> <string name="pref_key_migrating_from_fenix_nightly_tip" translatable="false">pref_key_migrating_from_fenix_nightly_tip</string>
<string name="pref_key_migrating_from_firefox_nightly_tip" translatable="false">pref_key_migrating_from_firefox_nightly_tip</string> <string name="pref_key_migrating_from_firefox_nightly_tip" translatable="false">pref_key_migrating_from_firefox_nightly_tip</string>
<string name="pref_key_migrating_from_fenix_tip" translatable="false">pref_key_migrating_from_fenix_tip</string> <string name="pref_key_migrating_from_fenix_tip" translatable="false">pref_key_migrating_from_fenix_tip</string>
<string name="pref_key_master_password_tip" translatable="false">pref_key_master_password_tip</string>
<string name="pref_key_wait_first_paint" translatable="false">pref_key_wait_first_paint</string> <string name="pref_key_wait_first_paint" translatable="false">pref_key_wait_first_paint</string>
@ -207,4 +208,10 @@
<string name="pref_key_login_exceptions" translatable="false">pref_key_login_exceptions</string> <string name="pref_key_login_exceptions" translatable="false">pref_key_login_exceptions</string>
<string name="pref_key_show_collections_placeholder_home" translatable="false">pref_key_show_collections_home</string> <string name="pref_key_show_collections_placeholder_home" translatable="false">pref_key_show_collections_home</string>
<string name="pref_key_close_tabs" translatable="false">pref_key_close_tabs</string>
<string name="pref_key_close_tabs_manually" translatable="false">pref_key_close_tabs_manually</string>
<string name="pref_key_close_tabs_after_one_day" translatable="false">pref_key_close_tabs_after_one_day</string>
<string name="pref_key_close_tabs_after_one_week" translatable="false">pref_key_close_tabs_after_one_week</string>
<string name="pref_key_close_tabs_after_one_month" translatable="false">pref_key_close_tabs_after_one_month</string>
</resources> </resources>

@ -44,4 +44,20 @@
<!-- Name of the application for about page --> <!-- Name of the application for about page -->
<string name="daylight_app_name" translatable="false">Iceweasle</string> <string name="daylight_app_name" translatable="false">Iceweasle</string>
<!-- MP Migration -->
<string name="mp_homescreen_tip_title">Looking for your logins?</string>
<string name="mp_homescreen_tip_message">If you had a master password before Iceweasle updated, youll need to enter it to transfer your saved logins.</string>
<string name="mp_homescreen_button">Enter master password</string>
<string name="mp_dialog_title_recovery_transfer_saved_logins">Transfer saved logins</string>
<string name="mp_dialog_message_recovery_transfer_saved_logins">Enter your previous master password.</string>
<string name="mp_dialog_positive_transfer_saved_logins">Continue and transfer</string>
<string name="mp_dialog_negative_transfer_saved_logins">Cancel</string>
<string name="mp_dialog_error_transfer_saved_logins">Invalid password</string>
<string name="mp_dialog_title_transfer_success">Transfer successful</string>
<string name="mp_dialog_message_transfer_success">Your saved logins have been transferred to Iceweasle.</string>
<string name="mp_dialog_positive_transfer_success">View saved logins</string>
<string name="mp_dialog_close_transfer">Close</string>
<string name="mp_dialog_title_transfer_failure">Transfer failed</string>
<string name="mp_dialog_message_transfer_failure">An unknown error occurred and logins could not be transferred.</string>
</resources> </resources>

@ -1034,7 +1034,7 @@
<!-- text for the firefox account onboarding card header when we detect you're already signed in to <!-- text for the firefox account onboarding card header when we detect you're already signed in to
another Firefox browser. (The word `Firefox` should not be translated) another Firefox browser. (The word `Firefox` should not be translated)
The first parameter is the email of the detected user's account --> The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_2">You are signed in as %s on another Firefox browser on this phone. Would you like to sign in with this account?</string> <string name="onboarding_firefox_account_auto_signin_header_3">You are signed in as %s on another Firefox browser on this device. Would you like to sign in with this account?</string>
<!-- text for the button to confirm automatic sign-in --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Yes, sign me in</string> <string name="onboarding_firefox_account_auto_signin_confirm">Yes, sign me in</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
@ -1274,7 +1274,7 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog --> <!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Shortcut name</string> <string name="add_to_homescreen_text_placeholder">Shortcut name</string>
<!-- Describes the add to homescreen functionality --> <!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">You can easily add this website to your phones Home screen to have instant access and browse faster with an app-like experience.</string> <string name="add_to_homescreen_description_2">You can easily add this website to your devices Home screen to have instant access and browse faster with an app-like experience.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Logins and passwords</string> <string name="preferences_passwords_logins_and_passwords">Logins and passwords</string>
@ -1501,7 +1501,7 @@
<string name="saved_login_duplicate">A login with that username already exists</string> <string name="saved_login_duplicate">A login with that username already exists</string>
<!-- Synced Tabs --> <!-- Synced Tabs -->
<!-- Text displayed to ask user to connect another device as no devices found with account --> <!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">Connect another device.</string> <string name="synced_tabs_connect_another_device">Connect another device.</string>
<!-- Text displayed asking user to re-authenticate --> <!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Please re-authenticate.</string> <string name="synced_tabs_reauth">Please re-authenticate.</string>
@ -1537,4 +1537,8 @@
<string name="no_collections_header1">Collect the things that matter to you</string> <string name="no_collections_header1">Collect the things that matter to you</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections --> <!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Group together similar searches, sites, and tabs for quick access later.</string> <string name="no_collections_description1">Group together similar searches, sites, and tabs for quick access later.</string>
<!-- Deprecated: text for the firefox account onboarding card header when we detect you're already signed in to -->
<string name="onboarding_firefox_account_auto_signin_header_2">You are signed in as %s on another Firefox browser on this phone. Would you like to sign in with this account?</string>
<!-- Deprecated: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">You can easily add this website to your phones Home screen to have instant access and browse faster with an app-like experience.</string>
</resources> </resources>

@ -622,6 +622,14 @@
<item name="behavior_halfExpandedRatio">0.4</item> <item name="behavior_halfExpandedRatio">0.4</item>
</style> </style>
<style name="TopSite.Favicon" parent="Mozac.Widgets.Favicon">
<item name="android:layout_width">@dimen/top_sites_favicon_size</item>
<item name="android:layout_height">@dimen/top_sites_favicon_size</item>
<item name="android:scaleType">fitCenter</item>
<item name="android:padding">@dimen/top_sites_favicon_padding</item>
<item name="android:background">@drawable/mozac_widget_favicon_background</item>
</style>
<style name="TabTrayFab" parent="Widget.MaterialComponents.ExtendedFloatingActionButton"> <style name="TabTrayFab" parent="Widget.MaterialComponents.ExtendedFloatingActionButton">
<item name="elevation">90dp</item> <item name="elevation">90dp</item>
<item name="android:stateListAnimator">@null</item> <item name="android:stateListAnimator">@null</item>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<org.mozilla.fenix.settings.RadioButtonPreference
android:defaultValue="true"
android:key="@string/pref_key_close_tabs_manually"
android:title="@string/close_tabs_manually" />
<org.mozilla.fenix.settings.RadioButtonPreference
android:defaultValue="false"
android:key="@string/pref_key_close_tabs_after_one_day"
android:title="@string/close_tabs_after_one_day" />
<org.mozilla.fenix.settings.RadioButtonPreference
android:defaultValue="false"
android:key="@string/pref_key_close_tabs_after_one_week"
android:title="@string/close_tabs_after_one_week" />
<org.mozilla.fenix.settings.RadioButtonPreference
android:defaultValue="false"
android:key="@string/pref_key_close_tabs_after_one_month"
android:title="@string/close_tabs_after_one_month" />
</androidx.preference.PreferenceScreen>

@ -77,6 +77,11 @@
android:icon="@drawable/ic_internet" android:icon="@drawable/ic_internet"
android:key="@string/pref_key_make_default_browser" android:key="@string/pref_key_make_default_browser"
android:title="@string/preferences_set_as_default_browser" /> android:title="@string/preferences_set_as_default_browser" />
<androidx.preference.Preference
android:icon="@drawable/ic_multiple_tabs"
android:key="@string/pref_key_close_tabs"
android:title="@string/preferences_close_tabs" />
</androidx.preference.PreferenceCategory> </androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory <androidx.preference.PreferenceCategory

@ -62,7 +62,7 @@ class OnboardingAutomaticSignInViewHolderTest {
every { email } returns "email@example.com" every { email } returns "email@example.com"
}) })
assertEquals( assertEquals(
"You are signed in as email@example.com on another Firefox browser on this phone. Would you like to sign in with this account?", "You are signed in as email@example.com on another Firefox browser on this device. Would you like to sign in with this account?",
view.header_text.text view.header_text.text
) )
assertTrue(view.fxa_sign_in_button.isEnabled) assertTrue(view.fxa_sign_in_button.isEnabled)

@ -100,6 +100,17 @@ class DefaultTabTrayControllerTest {
) )
} }
@Test
fun handleTabSettingsClicked() {
controller.handleTabSettingsClicked()
verify {
navController.navigate(
TabTrayDialogFragmentDirections.actionGlobalCloseTabSettingsFragment()
)
}
}
@Test @Test
fun onNewTabTapped() { fun onNewTabTapped() {
controller.onNewTabTapped(private = false) controller.onNewTabTapped(private = false)

@ -22,6 +22,15 @@ class TabTrayFragmentInteractorTest {
verify { controller.onNewTabTapped(false) } verify { controller.onNewTabTapped(false) }
} }
@Test
fun onTabSettingsClicked() {
interactor.onTabSettingsClicked()
verify {
controller.handleTabSettingsClicked()
}
}
@Test @Test
fun onTabTrayDismissed() { fun onTabTrayDismissed() {
interactor.onTabTrayDismissed() interactor.onTabTrayDismissed()

@ -189,6 +189,47 @@ class SettingsTest {
assertTrue(settings.shouldUseLightTheme) assertTrue(settings.shouldUseLightTheme)
} }
@Test
fun shouldManuallyCloseTabs() {
// When just created
// Then
assertTrue(settings.manuallyCloseTabs)
// When
settings.manuallyCloseTabs = false
// Then
assertFalse(settings.shouldUseLightTheme)
}
@Test
fun getTabTimeout() {
// When just created
// Then
assertTrue(settings.manuallyCloseTabs)
// When
settings.manuallyCloseTabs = false
settings.closeTabsAfterOneDay = true
// Then
assertEquals(settings.getTabTimeout(), Settings.ONE_DAY_MS)
// When
settings.closeTabsAfterOneDay = false
settings.closeTabsAfterOneWeek = true
// Then
assertEquals(settings.getTabTimeout(), Settings.ONE_WEEK_MS)
// When
settings.closeTabsAfterOneWeek = false
settings.closeTabsAfterOneMonth = true
// Then
assertEquals(settings.getTabTimeout(), Settings.ONE_MONTH_MS)
}
@Test @Test
fun shouldUseAutoSize() { fun shouldUseAutoSize() {
// When just created // When just created

@ -129,7 +129,7 @@ allprojects {
} }
} }
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions.jvmTarget = "1.8" kotlinOptions.jvmTarget = "1.8"
kotlinOptions.allWarningsAsErrors = true kotlinOptions.allWarningsAsErrors = true
kotlinOptions.freeCompilerArgs += [ kotlinOptions.freeCompilerArgs += [
@ -138,7 +138,7 @@ allprojects {
} }
} }
task clean(type: Delete) { tasks.register('clean', Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }
@ -169,14 +169,15 @@ dependencies {
detekt "io.gitlab.arturbosch.detekt:detekt-cli:${Versions.detekt}" detekt "io.gitlab.arturbosch.detekt:detekt-cli:${Versions.detekt}"
} }
task ktlint(type: JavaExec, group: "verification") { tasks.register('ktlint', JavaExec) {
group = "verification"
description = "Check Kotlin code style." description = "Check Kotlin code style."
classpath = configurations.ktlint classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main" main = "com.pinterest.ktlint.Main"
args "app/src/**/*.kt" args "app/src/**/*.kt"
} }
tasks.withType(io.gitlab.arturbosch.detekt.Detekt.class) { tasks.withType(io.gitlab.arturbosch.detekt.Detekt.class).configureEach {
exclude("**/resources/**") exclude("**/resources/**")
exclude("**/test/**") exclude("**/test/**")
exclude("**/tmp/**") exclude("**/tmp/**")
@ -186,7 +187,7 @@ tasks.register("listRepositories") {
doLast { doLast {
println "Repositories:" println "Repositories:"
project.repositories.each { println "Name: " + it.name + "; url: " + it.url } project.repositories.each { println "Name: " + it.name + "; url: " + it.url }
} }
} }
tasks.register("githubTestDetails", GithubDetailsTask) { tasks.register("githubTestDetails", GithubDetailsTask) {

@ -3,5 +3,5 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
object AndroidComponents { object AndroidComponents {
const val VERSION = "57.0.20200831010556" const val VERSION = "58.0.20200901190136"
} }

@ -52,7 +52,7 @@ The following metrics are added to the ping:
| about_page.support_tapped |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user tapped on "Support" item from About page |[1](https://github.com/mozilla-mobile/fenix/pull/8047), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)||2021-04-01 |2 | | about_page.support_tapped |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user tapped on "Support" item from About page |[1](https://github.com/mozilla-mobile/fenix/pull/8047), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)||2021-04-01 |2 |
| addons.open_addon_in_toolbar_menu |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user interacted with an installed add-on in the toolbar menu |[1](https://github.com/mozilla-mobile/fenix/pull/8318), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)|<ul><li>addon_id: The id of the add-on that was interacted with in the toolbar menu </li></ul>|2021-04-01 |2 | | addons.open_addon_in_toolbar_menu |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user interacted with an installed add-on in the toolbar menu |[1](https://github.com/mozilla-mobile/fenix/pull/8318), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)|<ul><li>addon_id: The id of the add-on that was interacted with in the toolbar menu </li></ul>|2021-04-01 |2 |
| addons.open_addons_in_settings |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user accessed "Add-ons" from the Settings |[1](https://github.com/mozilla-mobile/fenix/pull/8318), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)||2021-04-01 |2 | | addons.open_addons_in_settings |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user accessed "Add-ons" from the Settings |[1](https://github.com/mozilla-mobile/fenix/pull/8318), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)||2021-04-01 |2 |
| app_theme.dark_theme_selected |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user selected Dark Theme |[1](https://github.com/mozilla-mobile/fenix/pull/7968), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)|<ul><li>source: The source from where dark theme was selected. The source can be 'SETTINGS' or 'ONBOARDING' </li></ul>|2020-04-01 |2 | | app_theme.dark_theme_selected |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user selected Dark Theme |[1](https://github.com/mozilla-mobile/fenix/pull/7968), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)|<ul><li>source: The source from where dark theme was selected. The source can be 'SETTINGS' or 'ONBOARDING' </li></ul>|2021-04-01 |2 |
| autoplay.setting_changed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user changed their autoplay setting to either block_cellular, block_audio, or block_all. |[1](https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411)|<ul><li>autoplay_setting: The new setting for autoplay: block_cellular, block_audio, or block_all. </li></ul>|2021-02-01 |2 | | autoplay.setting_changed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user changed their autoplay setting to either block_cellular, block_audio, or block_all. |[1](https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411)|<ul><li>autoplay_setting: The new setting for autoplay: block_cellular, block_audio, or block_all. </li></ul>|2021-02-01 |2 |
| autoplay.visited_setting |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user visited the autoplay settings screen |[1](https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411)||2021-02-01 |2 | | autoplay.visited_setting |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user visited the autoplay settings screen |[1](https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411)||2021-02-01 |2 |
| bookmarks_management.copied |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user copied a bookmark. |[1](https://github.com/mozilla-mobile/fenix/pull/1708), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)||2021-04-01 |2 | | bookmarks_management.copied |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user copied a bookmark. |[1](https://github.com/mozilla-mobile/fenix/pull/1708), [2](https://github.com/mozilla-mobile/fenix/pull/13958#issuecomment-676857877)||2021-04-01 |2 |
@ -129,6 +129,8 @@ The following metrics are added to the ping:
| logins.save_edited_login |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user saves changes made to an individual login |[1](https://github.com/mozilla-mobile/fenix/issues/11208)||2020-11-15 |2 | | logins.save_edited_login |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user saves changes made to an individual login |[1](https://github.com/mozilla-mobile/fenix/issues/11208)||2020-11-15 |2 |
| logins.save_logins_setting_changed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user changed their setting for asking to save logins |[1](https://github.com/mozilla-mobile/fenix/pull/7767)|<ul><li>setting: The new setting for saving logins the user selected. Either `ask_to_save` or `never_save` </li></ul>|2020-11-15 |2 | | logins.save_logins_setting_changed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user changed their setting for asking to save logins |[1](https://github.com/mozilla-mobile/fenix/pull/7767)|<ul><li>setting: The new setting for saving logins the user selected. Either `ask_to_save` or `never_save` </li></ul>|2020-11-15 |2 |
| logins.view_password_login |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user viewed a password in an individual saved login |[1](https://github.com/mozilla-mobile/fenix/pull/6352)||2020-11-15 |2 | | logins.view_password_login |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user viewed a password in an individual saved login |[1](https://github.com/mozilla-mobile/fenix/pull/6352)||2020-11-15 |2 |
| master_password.displayed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |The master password migration dialog was displayed |[1](https://github.com/mozilla-mobile/fenix/pull/14468#issuecomment-684114534)||2021-03-01 |2 |
| master_password.migration |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |Logins were successfully migrated using a master password. |[1](https://github.com/mozilla-mobile/fenix/pull/14468#issuecomment-684114534)||2021-03-01 |2 |
| media_notification.pause |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the pause icon on the media notification |[1](https://github.com/mozilla-mobile/fenix/pull/5520)||2020-11-15 |2 | | media_notification.pause |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the pause icon on the media notification |[1](https://github.com/mozilla-mobile/fenix/pull/5520)||2020-11-15 |2 |
| media_notification.play |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the play icon on the media notification |[1](https://github.com/mozilla-mobile/fenix/pull/5520)||2020-11-15 |2 | | media_notification.play |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the play icon on the media notification |[1](https://github.com/mozilla-mobile/fenix/pull/5520)||2020-11-15 |2 |
| media_state.pause |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |Media playback was paused. |[1](https://github.com/mozilla-mobile/fenix/pull/6463)||2020-11-15 |2 | | media_state.pause |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |Media playback was paused. |[1](https://github.com/mozilla-mobile/fenix/pull/6463)||2020-11-15 |2 |

Loading…
Cancel
Save