Merge remote-tracking branch 'mozilla/master' into mozilla_main

pull/216/head
Abhijit Valluri 4 years ago
commit e547c93311

@ -48,6 +48,7 @@
# Possible startup regressions
*Application.kt @mozilla-mobile/Performance
*StrictMode*kt @mozilla-mobile/Performance
# We want to be aware of new features behind flags as well as features
# about to be enabled.

@ -375,6 +375,7 @@ dependencies {
implementation Deps.sentry
implementation Deps.mozilla_concept_base
implementation Deps.mozilla_concept_engine
implementation Deps.mozilla_concept_menu
implementation Deps.mozilla_concept_push

File diff suppressed because it is too large Load Diff

@ -9,6 +9,8 @@ import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import androidx.test.uiautomator.UiDevice
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.onboarding.FenixOnboarding
import org.mozilla.fenix.ui.robots.appContext
/**
* A [org.junit.Rule] to handle shared test set up for tests on [HomeActivity].
@ -17,11 +19,16 @@ import org.mozilla.fenix.HomeActivity
* @param launchActivity See [ActivityTestRule]
*/
class HomeActivityTestRule(initialTouchMode: Boolean = false, launchActivity: Boolean = true) :
class HomeActivityTestRule(
initialTouchMode: Boolean = false,
launchActivity: Boolean = true,
private val skipOnboarding: Boolean = false
) :
ActivityTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
setLongTapTimeout()
if (skipOnboarding) { skipOnboardingBeforeLaunch() }
}
}
@ -35,12 +42,14 @@ class HomeActivityTestRule(initialTouchMode: Boolean = false, launchActivity: Bo
class HomeActivityIntentTestRule(
initialTouchMode: Boolean = false,
launchActivity: Boolean = true
launchActivity: Boolean = true,
private val skipOnboarding: Boolean = false
) :
IntentsTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
setLongTapTimeout()
if (skipOnboarding) { skipOnboardingBeforeLaunch() }
}
}
@ -49,3 +58,9 @@ fun setLongTapTimeout() {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
mDevice.executeShellCommand("settings put secure long_press_timeout 3000")
}
private fun skipOnboardingBeforeLaunch() {
// The production code isn't aware that we're using
// this API so it can be fragile.
FenixOnboarding(appContext).finish()
}

@ -340,14 +340,4 @@ class HistoryTest {
verifyShareTabUrl()
}
}
@Test
fun verifyCloseMenu() {
homeScreen {
}.openThreeDotMenu {
}.openHistory {
}.closeMenu {
verifyHomeScreen()
}
}
}

@ -8,6 +8,7 @@ import androidx.test.uiautomator.UiSelector
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
@ -53,6 +54,7 @@ class MediaNotificationTest {
}
@Test
@Ignore("https://github.com/mozilla-mobile/fenix/issues/15754")
fun videoPlaybackSystemNotificationTest() {
val videoTestPage = TestAssetHelper.getVideoPageAsset(mockWebServer)
@ -86,6 +88,7 @@ class MediaNotificationTest {
}
@Test
@Ignore("https://github.com/mozilla-mobile/fenix/issues/15754")
fun audioPlaybackSystemNotificationTest() {
val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer)
@ -119,6 +122,7 @@ class MediaNotificationTest {
}
@Test
@Ignore("https://github.com/mozilla-mobile/fenix/issues/15754")
fun tabMediaControlButtonTest() {
val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer)
@ -137,6 +141,7 @@ class MediaNotificationTest {
}
@Test
@Ignore("https://github.com/mozilla-mobile/fenix/issues/15754")
fun mediaSystemNotificationInPrivateModeTest() {
val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer)

@ -69,7 +69,7 @@ class SettingsBasicsTest {
verifyBasicsHeading()
verifySearchEngineButton()
verifyDefaultBrowserItem()
verifyCloseTabsItem()
verifyTabsItem()
// drill down to submenu
}.openSearchSubMenu {
verifyDefaultSearchEngineHeader()
@ -85,7 +85,7 @@ class SettingsBasicsTest {
verifyThemes()
}.goBack {
}.openAccessibilitySubMenu {
verifyAutomaticFontSizingMenuItems()
verifyMenuItems()
}.goBack {
// drill down to submenu
}
@ -175,13 +175,13 @@ class SettingsBasicsTest {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openCloseTabsSubMenu {
}.openTabsSubMenu {
verifyOptions()
}
}
@Test
fun changeAccessibiltySettings() {
fun changeAccessibilitySettings() {
// Goes through the settings and changes the default text on a webpage, then verifies if the text has changed.
val fenixApp = activityIntentTestRule.activity.applicationContext as FenixApplication
val webpage = getLoremIpsumAsset(mockWebServer).url
@ -193,8 +193,7 @@ class SettingsBasicsTest {
}.openThreeDotMenu {
}.openSettings {
}.openAccessibilitySubMenu {
clickFontSizingSwitch()
verifyNewMenuItems()
verifyMenuItems()
changeTextSizeSlider(textSizePercentage)
verifyTextSizePercentage(textSizePercentage)
}.goBack {
@ -202,14 +201,6 @@ class SettingsBasicsTest {
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(webpage) {
checkTextSizeOnWebsite(textSizePercentage, fenixApp.components)
}.openTabDrawer {
}.openNewTab {
}.dismiss {
}.openThreeDotMenu {
}.openSettings {
}.openAccessibilitySubMenu {
clickFontSizingSwitch()
verifyNewMenuItemsAreGone()
}
}

@ -119,6 +119,12 @@ class SettingsPrivacyTest {
verifySitePermissionsNotificationSubMenuItems()
}.goBack {
// SITE PERMISSIONS PERSISTENT STORAGE
}.openPersistentStorage {
verifyNavigationToolBarHeader("Persistent Storage")
verifySitePermissionsPersistentStorageSubMenuItems()
}.goBack {
// SITE PERMISSIONS EXCEPTIONS
}.openExceptions {
verifyNavigationToolBarHeader()

@ -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/. */
package org.mozilla.fenix.ui
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
import org.junit.Assert.assertEquals
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.helpers.HomeActivityTestRule
// PLEASE CONSULT WITH PERF TEAM BEFORE CHANGING THIS VALUE.
private const val EXPECTED_SUPPRESSION_COUNT = 11
private const val FAILURE_MSG = """StrictMode startup suppression count does not match expected count.
If this PR removed code that suppressed StrictMode, great! Please decrement the suppression count.
Did this PR add or call code that suppresses a StrictMode violation?
Did you know that suppressing a StrictMode violation can introduce performance regressions?
If so, please do your best to implement a solution without suppressing StrictMode.
Please consult the perf team if you have questions or believe suppressing StrictMode
is the optimal solution.
"""
/**
* A performance test to limit the number of StrictMode suppressions on startup.
* This test was written by the perf team.
*
* StrictMode detects main thread IO, which is often indicative of a performance issue.
* It's easy to suppress StrictMode so we wrote a test to ensure we have a discussion
* if the StrictMode count changes. The perf team is code owners for this file so they
* should be notified when the count is modified.
*
* IF YOU UPDATE THE TEST NAME, UPDATE CODE OWNERS.
*/
class StrictModeStartupSuppressionCountTest {
@get:Rule
val activityTestRule = HomeActivityTestRule(skipOnboarding = true)
private val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
@Test
fun verifyStrictModeSuppressionCount() {
uiDevice.waitForIdle() // wait for async UI to load.
// This might cause intermittents: at an arbitrary point after start up (such as the visual
// completeness queue), we might run code on the main thread that suppresses StrictMode,
// causing this number to fluctuate depending on device speed. We'll deal with it if it occurs.
val actual = activityTestRule.activity.components.strictMode.suppressionCount.toInt()
assertEquals(FAILURE_MSG, EXPECTED_SUPPRESSION_COUNT, actual)
}
}

@ -84,16 +84,7 @@ class HistoryRobot {
fun verifyDeleteSnackbarText(text: String) = assertSnackBarText(text)
class Transition {
fun closeMenu(interact: HistoryRobot.() -> Unit): Transition {
closeButton().click()
HistoryRobot().interact()
return Transition()
}
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
closeButton().click()
BrowserRobot().interact()
return BrowserRobot.Transition()
}
@ -114,8 +105,6 @@ fun historyMenu(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
return HistoryRobot.Transition()
}
private fun closeButton() = onView(withId(R.id.close_history))
private fun testPageTitle() = onView(allOf(withId(R.id.title), withText("Test_Page_1")))
private fun pageUrl() = onView(withId(R.id.url))

@ -51,7 +51,7 @@ class SettingsRobot {
fun verifyAccessibilityButton() = assertAccessibilityButton()
fun verifySetAsDefaultBrowserButton() = assertSetAsDefaultBrowserButton()
fun verifyDefaultBrowserItem() = assertDefaultBrowserItem()
fun verifyCloseTabsItem() = assertCloseTabsItem()
fun verifyTabsItem() = assertTabsItem()
fun verifyDefaultBrowserIsDisaled() = assertDefaultBrowserIsDisabled()
fun clickDefaultBrowserSwitch() = toggleDefaultBrowserSwitch()
fun verifyAndroidDefaultAppsMenuAppears() = assertAndroidDefaultAppsMenuAppears()
@ -135,10 +135,10 @@ class SettingsRobot {
return SettingsSubMenuThemeRobot.Transition()
}
fun openCloseTabsSubMenu(interact: SettingsSubMenuTabsRobot.() -> Unit): SettingsSubMenuTabsRobot.Transition {
fun openTabsSubMenu(interact: SettingsSubMenuTabsRobot.() -> Unit): SettingsSubMenuTabsRobot.Transition {
fun closeTabsButton() = onView(withText("Close tabs"))
closeTabsButton().click()
fun tabsButton() = onView(withText("Tabs"))
tabsButton().click()
SettingsSubMenuTabsRobot().interact()
return SettingsSubMenuTabsRobot.Transition()
@ -297,9 +297,9 @@ private fun assertDefaultBrowserItem() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
private fun assertCloseTabsItem() {
mDevice.wait(Until.findObject(By.text("Close tabs")), waitingTime)
onView(withText("Close tabs"))
private fun assertTabsItem() {
mDevice.wait(Until.findObject(By.text("Tabs")), waitingTime)
onView(withText("Tabs"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}

@ -21,7 +21,6 @@ import android.widget.TextView
import androidx.test.espresso.UiController
import androidx.test.espresso.ViewAction
import androidx.test.espresso.ViewAssertion
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
import org.hamcrest.CoreMatchers.allOf
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.espresso.matcher.ViewMatchers.withId
@ -49,13 +48,7 @@ class SettingsSubMenuAccessibilityRobot {
const val TEXT_SIZE = 16f
}
fun verifyAutomaticFontSizingMenuItems() = assertAutomaticFontSizingMenuItems()
fun clickFontSizingSwitch() = toggleFontSizingSwitch()
fun verifyNewMenuItems() = assertNewMenuItems()
fun verifyNewMenuItemsAreGone() = assertNewMenuItemsAreGone()
fun verifyMenuItems() = assertMenuItems()
fun changeTextSizeSlider(seekBarPercentage: Int) = adjustTextSizeSlider(seekBarPercentage)
@ -76,22 +69,7 @@ class SettingsSubMenuAccessibilityRobot {
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
private fun assertAutomaticFontSizingMenuItems() {
onView(withText("Automatic font sizing"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
val strFont = "Font size will match your Android settings. Disable to manage font size here."
onView(withText(strFont))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
private fun toggleFontSizingSwitch() {
// Toggle font size to off
onView(withText("Automatic font sizing"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
.perform(click())
}
private fun assertNewMenuItems() {
private fun assertMenuItems() {
assertFontSize()
assertSliderBar()
}
@ -125,22 +103,6 @@ private fun assertTextSizePercentage(textSize: Int) {
.check(textSizePercentageEquals(textSize))
}
private fun assertNewMenuItemsAreGone() {
onView(withText("Font Size")).check(doesNotExist())
val strFont = "Make text on websites larger or smaller"
onView(withText(strFont))
.check(doesNotExist())
onView(withId(org.mozilla.fenix.R.id.sampleText))
.check(doesNotExist())
onView(withId(org.mozilla.fenix.R.id.seekbar_value))
.check(doesNotExist())
onView(withId(org.mozilla.fenix.R.id.seekbar))
.check(doesNotExist())
}
private fun goBackButton() =
onView(allOf(withContentDescription("Navigate up")))

@ -75,6 +75,12 @@ class SettingsSubMenuSitePermissionsCommonRobot {
verifyCheckCommonRadioButtonDefault()
}
fun verifySitePermissionsPersistentStorageSubMenuItems() {
verifyassertAskToAllowRecommended()
verifyassertBlocked()
verifyCheckCommonRadioButtonDefault()
}
class Transition {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())!!

@ -118,6 +118,22 @@ class SettingsSubMenuSitePermissionsRobot {
return SettingsSubMenuSitePermissionsCommonRobot.Transition()
}
fun openPersistentStorage(
interact: SettingsSubMenuSitePermissionsCommonRobot.() -> Unit
): SettingsSubMenuSitePermissionsCommonRobot.Transition {
onView(withId(R.id.recycler_view)).perform(
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
hasDescendant(withText("Persistent Storage"))
)
)
openPersistentStorage().click()
SettingsSubMenuSitePermissionsCommonRobot().interact()
return SettingsSubMenuSitePermissionsCommonRobot.Transition()
}
fun openExceptions(
interact: SettingsSubMenuSitePermissionsExceptionsRobot.() -> Unit
): SettingsSubMenuSitePermissionsExceptionsRobot.Transition {
@ -176,8 +192,27 @@ class SettingsSubMenuSitePermissionsRobot {
val notificationText =
"Ask to allow"
onView(withText(notificationText))
onView(withId(R.id.recycler_view)).perform(
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
allOf(hasDescendant(withText("Notification")), hasDescendant(withText(notificationText)))
)
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
onView(withText("Persistent Storage"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
val persistentStorageText =
"Ask to allow"
onView(withId(R.id.recycler_view)).perform(
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
allOf(
hasDescendant(withText("Persistent Storage")),
hasDescendant(withText(persistentStorageText))
)
)
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
}
@ -199,5 +234,8 @@ private fun openMicrophone() =
private fun openNotification() =
onView(allOf(withText("Notification")))
private fun openPersistentStorage() =
onView(allOf(withText("Persistent Storage")))
private fun openExceptions() =
onView(allOf(withText("Exceptions")))

@ -47,7 +47,7 @@ object GeckoProvider {
.build()
val settings = context.components.settings
if (!settings.shouldUseAutoSize) {
if (!settings.shouldUseAutoSize()) {
runtimeSettings.automaticFontSizeAdjustment = false
val fontSize = settings.fontSizeFactor
runtimeSettings.fontSizeFactor = fontSize

@ -47,7 +47,7 @@ object GeckoProvider {
.build()
val settings = context.components.settings
if (!settings.shouldUseAutoSize) {
if (!settings.shouldUseAutoSize()) {
runtimeSettings.automaticFontSizeAdjustment = false
val fontSize = settings.fontSizeFactor
runtimeSettings.fontSizeFactor = fontSize

@ -57,7 +57,7 @@ object GeckoProvider {
.build()
val settings = context.components.settings
if (!settings.shouldUseAutoSize) {
if (!settings.shouldUseAutoSize()) {
runtimeSettings.automaticFontSizeAdjustment = false
val fontSize = settings.fontSizeFactor
runtimeSettings.fontSizeFactor = fontSize

@ -26,6 +26,11 @@ object FeatureFlags {
*/
const val topFrecentSite = true
/**
* Shows the grid view settings for the tabs tray.
*/
val showGridViewInTabsSettings = Config.channel.isNightlyOrDebug
/**
* Enables wait til first contentful paint
*/

@ -10,6 +10,7 @@ import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
import android.os.StrictMode
import android.os.SystemClock
import android.text.format.DateUtils
import android.util.AttributeSet
import android.view.KeyEvent
@ -112,6 +113,11 @@ import java.lang.ref.WeakReference
@OptIn(ExperimentalCoroutinesApi::class)
@SuppressWarnings("TooManyFunctions", "LargeClass")
open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
// DO NOT MOVE ANYTHING ABOVE THIS, GETTING INIT TIME IS CRITICAL
// we need to store startup timestamp for warm startup. we cant directly store
// inside AppStartupTelemetry since that class lives inside components and
// components requires context to access.
protected val homeActivityInitTimeStampNanoSeconds = SystemClock.elapsedRealtimeNanos()
private var webExtScope: CoroutineScope? = null
lateinit var themeManager: ThemeManager
@ -235,13 +241,22 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
}
protected open fun startupTelemetryOnCreateCalled(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) {
components.appStartupTelemetry.onHomeActivityOnCreate(safeIntent, hasSavedInstanceState)
components.appStartupTelemetry.onHomeActivityOnCreate(
safeIntent,
hasSavedInstanceState,
homeActivityInitTimeStampNanoSeconds, rootContainer
)
}
override fun onRestart() {
// DO NOT MOVE ANYTHING ABOVE THIS..
// we are measuring startup time for hot startup type
startupTelemetryOnRestartCalled()
super.onRestart()
}
components.appStartupTelemetry.onHomeActivityOnRestart()
private fun startupTelemetryOnRestartCalled() {
components.appStartupTelemetry.onHomeActivityOnRestart(rootContainer)
}
@CallSuper
@ -254,8 +269,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
message = "onResume()"
)
components.appStartupTelemetry.onHomeActivityOnResume()
components.backgroundServices.accountManagerAvailableQueue.runIfReadyOrQueue {
lifecycleScope.launch {
// Make sure accountManager is initialized.
@ -304,6 +317,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
"finishing" to isFinishing.toString()
)
)
components.appStartupTelemetry.onStop()
}
final override fun onPause() {
@ -740,7 +755,11 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
if (components.core.engine.profiler?.isProfilerActive() == true) {
// Wrapping the `addMarker` method with `isProfilerActive` even though it's no-op when
// profiler is not active. That way, `text` argument will not create a string builder all the time.
components.core.engine.profiler?.addMarker("HomeActivity.load", startTime, "newTab: $newTab")
components.core.engine.profiler?.addMarker(
"HomeActivity.load",
startTime,
"newTab: $newTab"
)
}
}

@ -2,24 +2,56 @@
* 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/. */
// This class implements the alternative ways to suppress StrictMode with performance
// monitoring by wrapping the raw methods. This lint check tells us not to use the raw
// methods so we suppress the check.
@file:Suppress("MozillaStrictModeSuppression")
package org.mozilla.fenix
import android.os.Build
import android.os.Looper
import android.os.StrictMode
import androidx.annotation.VisibleForTesting
import androidx.annotation.VisibleForTesting.PRIVATE
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import mozilla.components.support.ktx.android.os.resetAfter
import org.mozilla.fenix.components.Components
import org.mozilla.fenix.perf.Performance
import org.mozilla.fenix.utils.Mockable
private const val MANUFACTURE_HUAWEI: String = "HUAWEI"
private const val MANUFACTURE_ONE_PLUS: String = "OnePlus"
private val logger = Performance.logger
private val mainLooper = Looper.getMainLooper()
/**
* Manages strict mode settings for the application.
*/
class StrictModeManager(config: Config) {
@Mockable
class StrictModeManager(
config: Config,
// Ideally, we'd pass in a more specific value but there is a circular dependency: StrictMode
// is passed into Core but we'd need to pass in Core here. Instead, we take components and later
// fetch the value we need from it.
private val components: Components
) {
// This is public so it can be used by inline functions.
val isEnabledByBuildConfig = config.channel.isDebug
private val isEnabledByBuildConfig = config.channel.isDebug
/**
* The number of times StrictMode has been suppressed. StrictMode can be used to prevent main
* thread IO but it's easy to suppress. We use this value, in combination with:
* - a test: that fails if the suppression count increases
* - a lint check: to ensure this value gets used instead of functions that work around it
* - code owners: to prevent modifications to these above items without perf knowing
* to make suppressions a more deliberate act.
*/
@VisibleForTesting(otherwise = PRIVATE)
var suppressionCount: Long = 0
/***
* Enables strict mode for debug purposes. meant to be run only in the main process.
@ -70,19 +102,33 @@ class StrictModeManager(config: Config) {
/**
* Runs the given [functionBlock] and sets the given [StrictMode.ThreadPolicy] after its
* completion when in a build configuration that has StrictMode enabled. If StrictMode is
* not enabled, simply runs the [functionBlock].
*
* This function is written in the style of [AutoCloseable.use].
* not enabled, simply runs the [functionBlock]. This function is written in the style of
* [AutoCloseable.use].
*
* This is significantly less convenient to run than when it was written as an extension function
* on [StrictMode.ThreadPolicy] but I think this is okay: it shouldn't be easy to ignore StrictMode.
* This function contains perf improvements so it should be
* called instead of [mozilla.components.support.ktx.android.os.resetAfter] (using the wrong
* method should be prevented by a lint check). This is significantly less convenient to run than
* when it was written as an extension function on [StrictMode.ThreadPolicy] but I think this is
* okay: it shouldn't be easy to ignore StrictMode.
*
* @return the value returned by [functionBlock].
*/
inline fun <R> resetAfter(policy: StrictMode.ThreadPolicy, functionBlock: () -> R): R {
fun <R> resetAfter(policy: StrictMode.ThreadPolicy, functionBlock: () -> R): R {
// Calling resetAfter takes 1-2ms (unknown device) so we only execute it if StrictMode can
// actually be enabled. https://github.com/mozilla-mobile/fenix/issues/11617
return if (isEnabledByBuildConfig) {
// This can overflow and crash. However, it's unlikely we'll suppress StrictMode 9
// quintillion times in a build config where StrictMode is enabled so we don't handle it
// because it'd increase complexity.
suppressionCount += 1
// We log so that devs are more likely to notice that we're suppressing StrictMode violations.
// We add profiler markers so that the perf team can easily identify IO locations in profiles.
logger.warn("StrictMode violation suppressed: #$suppressionCount")
if (Thread.currentThread() == mainLooper.thread) { // markers only supported on main thread.
components.core.engine.profiler?.addMarker("StrictMode.suppression", "Count: $suppressionCount")
}
policy.resetAfter(functionBlock)
} else {
functionBlock()

@ -16,7 +16,7 @@ import androidx.core.view.updateLayoutParams
import kotlinx.android.synthetic.main.mozac_ui_tabcounter_layout.view.*
import kotlinx.android.synthetic.main.tab_preview.view.*
import mozilla.components.browser.thumbnails.loader.ThumbnailLoader
import mozilla.components.support.images.ImageLoadRequest
import mozilla.components.concept.base.images.ImageLoadRequest
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings

@ -127,7 +127,7 @@ class Components(private val context: Context) {
val performance by lazy { PerformanceComponent() }
val push by lazy { Push(context, analytics.crashReporter) }
val wifiConnectionMonitor by lazy { WifiConnectionMonitor(context as Application) }
val strictMode by lazy { StrictModeManager(Config) }
val strictMode by lazy { StrictModeManager(Config, this) }
val settings by lazy { Settings(context) }

@ -95,8 +95,8 @@ class Core(
trackingProtectionPolicy = trackingProtectionPolicyFactory.createTrackingProtectionPolicy(),
historyTrackingDelegate = HistoryDelegate(lazyHistoryStorage),
preferredColorScheme = getPreferredColorScheme(),
automaticFontSizeAdjustment = context.settings().shouldUseAutoSize,
fontInflationEnabled = context.settings().shouldUseAutoSize,
automaticFontSizeAdjustment = context.settings().shouldUseAutoSize(),
fontInflationEnabled = context.settings().shouldUseAutoSize(),
suspendMediaWhenInactive = false,
forceUserScalableContent = context.settings().forceEnableZoom,
loginAutofillEnabled = context.settings().shouldAutofillLogins

@ -0,0 +1,80 @@
/* 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.metrics
import android.os.Process
import android.os.SystemClock
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.ERROR
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.WARM
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.HOT
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.COLD
import org.mozilla.fenix.perf.Stat
/**
* Handles the logic of figuring out launch time for cold, warm and hot startup.
*/
class AppLaunchTimeMeasurement(private val stats: Stat = Stat()) {
private var isOnPreDrawCalled = false
private var applicationOnCreateTimeStampNanoSeconds: Long? = null
private var homeActivityInitTimeStampNanoSeconds: Long? = null
private var homeActivityOnRestartTimeStampNanoSeconds: Long? = null
// we are considering screen to be visible after the first pre draw call.
private var homeActivityOnPreDrawTimeStampNanoSeconds: Long? = null
fun onHomeActivityOnCreate(activityInitNanos: Long) {
this.homeActivityInitTimeStampNanoSeconds = activityInitNanos
}
fun onHomeActivityOnRestart(activityOnRestartNanos: Long = SystemClock.elapsedRealtimeNanos()) {
homeActivityOnRestartTimeStampNanoSeconds = activityOnRestartNanos
}
fun onFirstFramePreDraw(activityOnPreDrawNanos: Long = SystemClock.elapsedRealtimeNanos()) {
isOnPreDrawCalled = true
homeActivityOnPreDrawTimeStampNanoSeconds = activityOnPreDrawNanos
}
/**
* if we have both start and finish time for launch, return the difference otherwise return null.
*/
suspend fun getApplicationLaunchTime(startupType: Type): Long? = withContext(Dispatchers.IO) {
when {
// one use case is user launching the app and quicky pressing back button. in that case
// there will be no onPredraw call but activity will call onStop().
!isOnPreDrawCalled -> {
null
}
else -> {
when (startupType) {
COLD -> {
applicationOnCreateTimeStampNanoSeconds =
stats.getProcessStartTimeStampNano(Process.myPid())
homeActivityOnPreDrawTimeStampNanoSeconds!!.minus(
applicationOnCreateTimeStampNanoSeconds!!
)
}
WARM -> {
homeActivityOnPreDrawTimeStampNanoSeconds!!.minus(
homeActivityInitTimeStampNanoSeconds!!
)
}
HOT -> {
homeActivityOnPreDrawTimeStampNanoSeconds!!.minus(
homeActivityOnRestartTimeStampNanoSeconds!!
)
}
ERROR -> {
null
}
}
}
}
}
}

@ -5,11 +5,14 @@
package org.mozilla.fenix.components.metrics
import android.content.Intent
import android.view.View
import androidx.annotation.VisibleForTesting
import androidx.core.view.doOnPreDraw
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import kotlinx.coroutines.runBlocking
import mozilla.components.support.utils.SafeIntent
import org.mozilla.fenix.components.metrics.Event.AppAllStartup
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Source
@ -22,15 +25,21 @@ import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.ERROR
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.HOT
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.COLD
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.WARM
import java.lang.reflect.Modifier.PRIVATE
/**
* Tracks application startup source, type, and whether or not activity has savedInstance to restore
* the activity from. Sample metric = [source = COLD, type = APP_ICON, hasSavedInstance = false]
* Tracks application startup source, type, launch time, and whether or not activity has
* savedInstance to restore the activity from.
* Sample = [source = COLD, type = APP_ICON, hasSavedInstanceState = false,launchTimeNanoSeconds = 1824000000]
* The basic idea is to collect these metrics from different phases of startup through
* [AppAllStartup] and finally report them on Activity's onResume() function.
*/
@Suppress("TooManyFunctions")
class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObserver {
class AppStartupTelemetry(
private val metrics: MetricController,
@VisibleForTesting(otherwise = PRIVATE)
var appLaunchTimeMeasurement: AppLaunchTimeMeasurement = AppLaunchTimeMeasurement()
) : LifecycleObserver {
init {
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
@ -47,18 +56,42 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
wasAppCreateCalledBeforeActivityCreate = true
}
fun onHomeActivityOnCreate(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) {
setOnCreateData(safeIntent, hasSavedInstanceState, false)
fun onHomeActivityOnCreate(
safeIntent: SafeIntent,
hasSavedInstanceState: Boolean,
homeActivityInitTimeStampNanoSeconds: Long,
rootContainer: View
) {
setOnCreateData(safeIntent, hasSavedInstanceState, homeActivityInitTimeStampNanoSeconds, false)
rootContainer.doOnPreDraw {
onPreDraw()
}
}
fun onExternalAppBrowserOnCreate(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) {
setOnCreateData(safeIntent, hasSavedInstanceState, true)
fun onExternalAppBrowserOnCreate(
safeIntent: SafeIntent,
hasSavedInstanceState: Boolean,
homeActivityInitTimeStampNanoSeconds: Long,
rootContainer: View
) {
setOnCreateData(safeIntent, hasSavedInstanceState, homeActivityInitTimeStampNanoSeconds, true)
rootContainer.doOnPreDraw {
onPreDraw()
}
}
fun onHomeActivityOnRestart() {
fun onHomeActivityOnRestart(rootContainer: View) {
// DO NOT MOVE ANYTHING ABOVE THIS..
// we are measuring startup time for hot startup type
appLaunchTimeMeasurement.onHomeActivityOnRestart()
// we are not setting [Source] in this method since source is derived from an intent.
// therefore source gets set in onNewIntent().
onRestartData = Pair(HOT, null)
rootContainer.doOnPreDraw {
onPreDraw()
}
}
fun onHomeActivityOnNewIntent(safeIntent: SafeIntent) {
@ -70,6 +103,7 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
private fun setOnCreateData(
safeIntent: SafeIntent,
hasSavedInstanceState: Boolean,
homeActivityInitTimeStampNanoSeconds: Long,
isExternalAppBrowserActivity: Boolean
) {
onCreateData = AppAllStartup(
@ -77,6 +111,7 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
getAppStartupType(),
hasSavedInstanceState
)
appLaunchTimeMeasurement.onHomeActivityOnCreate(homeActivityInitTimeStampNanoSeconds)
wasAppCreateCalledBeforeActivityCreate = false
}
@ -101,23 +136,14 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
}
}
/**
* The reason we record metric on resume is because we need to wait for onNewIntent(), and
* we are not guaranteed that onNewIntent() will be called before or after onStart() / onRestart().
* However we are guaranteed onResume() will be called after onNewIntent() and onStart(). Source:
* https://developer.android.com/reference/android/app/Activity#onNewIntent(android.content.Intent)
*/
fun onHomeActivityOnResume() {
recordMetric()
}
private fun recordMetric() {
private suspend fun recordMetric() {
if (!isMetricRecordedSinceAppWasForegrounded) {
val appAllStartup: AppAllStartup = if (onCreateData != null) {
onCreateData!!
} else {
mergeOnRestartAndOnNewIntentIntoStartup()
}
appAllStartup.launchTime = appLaunchTimeMeasurement.getApplicationLaunchTime(appAllStartup.type)
metrics.track(appAllStartup)
isMetricRecordedSinceAppWasForegrounded = true
}
@ -125,6 +151,7 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
onCreateData = null
onNewIntentData = null
onRestartData = null
appLaunchTimeMeasurement = AppLaunchTimeMeasurement()
}
private fun mergeOnRestartAndOnNewIntentIntoStartup(): AppAllStartup {
@ -143,4 +170,24 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
// Therefore we set the isMetricRecorded flag to false.
isMetricRecordedSinceAppWasForegrounded = false
}
/**
*record the timestamp for the first frame drawn
*/
@VisibleForTesting(otherwise = PRIVATE)
fun onPreDraw() {
// DO NOT MOVE ANYTHING ABOVE THIS..
// we are measuring startup time here.
appLaunchTimeMeasurement.onFirstFramePreDraw()
}
/**
* record the metrics, blocking the main thread to make sure we get our metrics recorded before
* the application potentially closes.
*/
fun onStop() {
runBlocking {
recordMetric()
}
}
}

@ -337,7 +337,8 @@ sealed class Event {
data class AppAllStartup(
val source: Source,
val type: Type,
val hasSavedInstanceState: Boolean? = null
val hasSavedInstanceState: Boolean? = null,
var launchTime: Long? = null
) : Event() {
enum class Source { APP_ICON, LINK, CUSTOM_TAB, UNKNOWN }
enum class Type { COLD, WARM, HOT, ERROR }
@ -354,6 +355,10 @@ sealed class Event {
extrasMap[Events.appOpenedAllStartupKeys.hasSavedInstanceState] =
hasSavedInstanceState.toString()
}
if (launchTime != null) {
extrasMap[Events.appOpenedAllStartupKeys.firstFramePreDrawNanos] =
launchTime.toString()
}
return extrasMap
}
}

@ -92,7 +92,7 @@ open class FenixSearchEngineProvider(
CustomSearchEngineProvider().loadSearchEngines(context)
}
private var loadedSearchEngines = refreshAsync()
private var loadedSearchEngines = refreshAsync(baseSearchEngines)
// https://github.com/mozilla-mobile/fenix/issues/9935
// Create new getter that will return the fallback SearchEngineList if
@ -102,7 +102,7 @@ open class FenixSearchEngineProvider(
if (isRegionCachedByLocationService || shouldMockMLS) {
loadedSearchEngines
} else {
fallbackEngines
refreshAsync(fallbackEngines)
}
fun getDefaultEngine(context: Context): SearchEngine {
@ -176,7 +176,7 @@ open class FenixSearchEngineProvider(
fun reload() {
launch {
customSearchEngines = async { CustomSearchEngineProvider().loadSearchEngines(context) }
loadedSearchEngines = refreshAsync()
loadedSearchEngines = refreshAsync(baseSearchEngines)
}
}
@ -188,8 +188,8 @@ open class FenixSearchEngineProvider(
}
}
private fun refreshAsync() = async {
val engineList = baseSearchEngines.await()
private fun refreshAsync(baseList: Deferred<SearchEngineList>) = async {
val engineList = baseList.await()
val bundledList = bundledSearchEngines.await().list
val customList = customSearchEngines.await().list

@ -6,6 +6,7 @@ package org.mozilla.fenix.customtabs
import androidx.navigation.NavDestination
import androidx.navigation.NavDirections
import kotlinx.android.synthetic.main.activity_home.*
import mozilla.components.browser.session.runWithSession
import mozilla.components.concept.engine.manifest.WebAppManifestParser
import mozilla.components.feature.intent.ext.getSessionId
@ -36,7 +37,13 @@ open class ExternalAppBrowserActivity : HomeActivity() {
final override fun getIntentSessionId(intent: SafeIntent) = intent.getSessionId()
override fun startupTelemetryOnCreateCalled(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) {
components.appStartupTelemetry.onExternalAppBrowserOnCreate(safeIntent, hasSavedInstanceState)
components.appStartupTelemetry.onExternalAppBrowserOnCreate(
safeIntent,
hasSavedInstanceState,
// HomeActivity is init before ExternalAppBrowserActivity so we use that time.
homeActivityInitTimeStampNanoSeconds,
rootContainer
)
}
override fun getNavDirections(

@ -14,6 +14,7 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.feature.top.sites.TopSite
import mozilla.components.ui.widgets.WidgetSiteItemView
import org.mozilla.fenix.components.Components
import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.home.OnboardingState
@ -164,9 +165,8 @@ class SessionControlAdapter(
CollectionHeaderViewHolder.LAYOUT_ID -> CollectionHeaderViewHolder(view)
CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, interactor)
TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(
view,
interactor,
differentLastItem = true
view as WidgetSiteItemView,
interactor
)
OnboardingHeaderViewHolder.LAYOUT_ID -> OnboardingHeaderViewHolder(view)
OnboardingSectionHeaderViewHolder.LAYOUT_ID -> OnboardingSectionHeaderViewHolder(view)

@ -4,16 +4,17 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders
import android.graphics.Outline
import android.view.View
import android.view.ViewOutlineProvider
import android.os.Build
import android.os.Build.VERSION.SDK_INT
import androidx.appcompat.content.res.AppCompatResources
import kotlinx.android.synthetic.main.list_element.*
import mozilla.components.browser.icons.BrowserIcons
import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.ui.widgets.WidgetSiteItemView
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.increaseTapArea
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.ext.toShortUrl
import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor
@ -21,9 +22,10 @@ import org.mozilla.fenix.utils.view.ViewHolder
import mozilla.components.feature.tab.collections.Tab as ComponentTab
class TabInCollectionViewHolder(
view: View,
private val view: WidgetSiteItemView,
val interactor: CollectionInteractor,
private val differentLastItem: Boolean = false
private val icons: BrowserIcons = view.context.components.core.icons,
private val publicSuffixList: PublicSuffixList = view.context.components.publicSuffixList
) : ViewHolder(view) {
lateinit var collection: TabCollection
@ -31,27 +33,24 @@ class TabInCollectionViewHolder(
lateinit var tab: ComponentTab
private set
var isLastItem = false
private set
init {
list_item_favicon.clipToOutline = true
list_item_favicon.outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, outline: Outline?) {
outline?.setRoundRect(
0,
0,
view.width,
view.height,
view.resources.getDimension(R.dimen.tab_tray_favicon_border_radius)
)
}
if (SDK_INT >= Build.VERSION_CODES.M) {
view.foreground = AppCompatResources.getDrawable(
view.context,
view.context.theme.resolveAttribute(R.attr.selectableItemBackground)
)
}
itemView.setOnClickListener {
view.setOnClickListener {
interactor.onCollectionOpenTabClicked(tab)
}
list_item_action_button.increaseTapArea(buttonIncreaseDps)
list_item_action_button.setOnClickListener {
view.setSecondaryButton(
icon = R.drawable.ic_close,
contentDescription = R.string.remove_tab_from_collection
) {
interactor.onCollectionRemoveTab(collection, tab, wasSwiped = false)
}
}
@ -64,23 +63,23 @@ class TabInCollectionViewHolder(
}
private fun updateTabUI() {
val context = itemView.context
list_item_url.text = tab.url.toShortUrl(context.components.publicSuffixList)
view.setText(
label = tab.title,
caption = tab.url.toShortUrl(publicSuffixList)
)
list_element_title.text = tab.title
list_item_favicon.context.components.core.icons.loadIntoView(list_item_favicon, tab.url)
icons.loadIntoView(view.iconView, tab.url)
// If last item and we want to change UI for it
if (isLastItem && differentLastItem) {
itemView.background = AppCompatResources.getDrawable(context, R.drawable.rounded_bottom_corners)
val context = view.context
if (isLastItem) {
view.background = AppCompatResources.getDrawable(context, R.drawable.rounded_bottom_corners)
} else {
itemView.setBackgroundColor(context.getColorFromAttr(R.attr.above))
view.setBackgroundColor(context.getColorFromAttr(R.attr.above))
}
}
companion object {
const val buttonIncreaseDps = 12
const val LAYOUT_ID = R.layout.list_element
const val FAV_ICON_BORDER_RADIUS_IN_DP = 4
const val LAYOUT_ID = R.layout.site_list_item
}
}

@ -4,7 +4,6 @@
package org.mozilla.fenix.library.bookmarks.viewholders
import android.view.View
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
@ -12,10 +11,11 @@ import mozilla.components.concept.storage.BookmarkNode
import mozilla.components.concept.storage.BookmarkNodeType
import mozilla.components.support.ktx.android.content.getDrawableWithTint
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.removeAndDisable
import org.mozilla.fenix.ext.hideAndDisable
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.ext.showAndEnable
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.library.LibrarySiteItemView
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentState
import org.mozilla.fenix.library.bookmarks.BookmarkItemMenu
@ -64,7 +64,7 @@ class BookmarkNodeViewHolder(
// Hide menu button if this item is a root folder or is selected
if (item.type == BookmarkNodeType.FOLDER && item.inRoots()) {
containerView.overflowView.visibility = View.GONE
containerView.overflowView.removeAndDisable()
} else if (payload.modeChanged) {
if (mode is BookmarkFragmentState.Mode.Selecting) {
containerView.overflowView.hideAndDisable()

@ -161,27 +161,17 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
val menuRes = when (historyStore.state.mode) {
HistoryFragmentState.Mode.Normal -> R.menu.library_menu
is HistoryFragmentState.Mode.Syncing -> R.menu.library_menu
is HistoryFragmentState.Mode.Editing -> R.menu.history_select_multi
if (historyStore.state.mode is HistoryFragmentState.Mode.Editing) {
inflater.inflate(R.menu.history_select_multi, menu)
menu.findItem(R.id.share_history_multi_select)?.isVisible = true
menu.findItem(R.id.delete_history_multi_select)?.title =
SpannableString(getString(R.string.bookmark_menu_delete_button)).apply {
setTextColor(requireContext(), R.attr.destructive)
}
}
inflater.inflate(menuRes, menu)
menu.findItem(R.id.share_history_multi_select)?.isVisible = true
menu.findItem(R.id.delete_history_multi_select)?.title =
SpannableString(getString(R.string.bookmark_menu_delete_button)).apply {
setTextColor(requireContext(), R.attr.destructive)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.close_history -> {
close()
true
}
R.id.share_history_multi_select -> {
val selectedHistory = historyStore.state.mode.selectedItems
val shareTabs = selectedHistory.map { ShareData(url = it.url, title = it.title) }

@ -64,6 +64,10 @@ open class Stat {
return getStatText(pid).split(' ')[FIELD_POS_STARTTIME].toLong()
}
fun getProcessStartTimeStampNano(pid: Int): Long {
return convertTicksToNanos(getProcessStartTimeTicks(pid)).toLong()
}
fun convertTicksToNanos(ticks: Long): Double = ticks * nanosPerClockTick
fun convertNanosToTicks(nanos: Long): Double = nanos / nanosPerClockTick
}

@ -47,33 +47,16 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
// Value is mapped from 0->30 in steps of 1 so let's convert to float in range 0.5->2.0
val newTextScale = ((newTextSize * STEP_SIZE) + MIN_SCALE_VALUE).toFloat() / PERCENT_TO_DECIMAL
// Save new text scale value. We assume auto sizing is off if this change listener was called.
settings.fontSizeFactor = newTextScale
components.core.engine.settings.fontSizeFactor = newTextScale
// Reload the current session to reflect the new text scale
components.useCases.sessionUseCases.reload()
true
}
textSizePreference.isVisible = !requireContext().settings().shouldUseAutoSize
val useAutoSizePreference =
requirePreference<SwitchPreference>(R.string.pref_key_accessibility_auto_size)
useAutoSizePreference.setOnPreferenceChangeListener<Boolean> { preference, useAutoSize ->
val settings = preference.context.settings()
val components = preference.context.components
// Save the new setting value
settings.shouldUseAutoSize = useAutoSize
// If scale is 100%, use the automatic font size adjustment
val useAutoSize = newTextScale == 1F
components.core.engine.settings.automaticFontSizeAdjustment = useAutoSize
components.core.engine.settings.fontInflationEnabled = useAutoSize
// If using manual sizing, update the engine settings with the local saved setting
// If using manual sizing, update the engine settings with the new scale
if (!useAutoSize) {
components.core.engine.settings.fontSizeFactor = settings.fontSizeFactor
settings.fontSizeFactor = newTextScale
components.core.engine.settings.fontSizeFactor = newTextScale
}
// Show the manual sizing controls if automatic sizing is turned off.
textSizePreference.isVisible = !useAutoSize
// Reload the current session to reflect the new text scale
components.useCases.sessionUseCases.reload()

@ -25,6 +25,7 @@ fun SitePermissions.get(field: PhoneFeature) = when (field) {
PhoneFeature.NOTIFICATION -> notification
PhoneFeature.AUTOPLAY_AUDIBLE -> autoplayAudible
PhoneFeature.AUTOPLAY_INAUDIBLE -> autoplayInaudible
PhoneFeature.PERSISTENT_STORAGE -> localStorage
}
fun SitePermissions.update(field: PhoneFeature, value: SitePermissions.Status) = when (field) {
@ -34,6 +35,7 @@ fun SitePermissions.update(field: PhoneFeature, value: SitePermissions.Status) =
PhoneFeature.NOTIFICATION -> copy(notification = value)
PhoneFeature.AUTOPLAY_AUDIBLE -> copy(autoplayAudible = value)
PhoneFeature.AUTOPLAY_INAUDIBLE -> copy(autoplayInaudible = value)
PhoneFeature.PERSISTENT_STORAGE -> copy(localStorage = value)
}
/**

@ -37,6 +37,15 @@ class PairFragment : Fragment(R.layout.fragment_pair), UserInteractionHandler {
requestPermissions(permissions, REQUEST_CODE_CAMERA_PERMISSIONS)
},
onScanResult = { pairingUrl ->
// By the time we get a scan result, we may not be attached to the context anymore.
// See https://github.com/mozilla-mobile/fenix/issues/15812
if (context == null) {
findNavController().popBackStack(
R.id.turnOnSyncFragment,
false
)
return@QrFeature
}
requireComponents.services.accountsAuthFeature.beginPairingAuthentication(
requireContext(),
pairingUrl
@ -53,7 +62,7 @@ class PairFragment : Fragment(R.layout.fragment_pair), UserInteractionHandler {
@Suppress("Deprecation")
vibrator.vibrate(VIBRATE_LENGTH)
}
findNavController(this@PairFragment).popBackStack(
findNavController().popBackStack(
R.id.turnOnSyncFragment,
false
)

@ -30,7 +30,8 @@ enum class PhoneFeature(val androidPermissionsList: Array<String>) : Parcelable
MICROPHONE(arrayOf(RECORD_AUDIO)),
NOTIFICATION(emptyArray()),
AUTOPLAY_AUDIBLE(emptyArray()),
AUTOPLAY_INAUDIBLE(emptyArray());
AUTOPLAY_INAUDIBLE(emptyArray()),
PERSISTENT_STORAGE(emptyArray());
fun isAndroidPermissionGranted(context: Context): Boolean {
return context.isPermissionGranted(androidPermissionsList.asIterable())
@ -78,6 +79,7 @@ enum class PhoneFeature(val androidPermissionsList: Array<String>) : Parcelable
LOCATION -> context.getString(R.string.preference_phone_feature_location)
MICROPHONE -> context.getString(R.string.preference_phone_feature_microphone)
NOTIFICATION -> context.getString(R.string.preference_phone_feature_notification)
PERSISTENT_STORAGE -> context.getString(R.string.preference_phone_feature_persistent_storage)
AUTOPLAY_AUDIBLE, AUTOPLAY_INAUDIBLE -> context.getString(R.string.preference_browser_feature_autoplay)
}
}
@ -95,6 +97,7 @@ enum class PhoneFeature(val androidPermissionsList: Array<String>) : Parcelable
NOTIFICATION -> R.string.pref_key_phone_feature_notification
AUTOPLAY_AUDIBLE -> R.string.pref_key_browser_feature_autoplay_audible
AUTOPLAY_INAUDIBLE -> R.string.pref_key_browser_feature_autoplay_inaudible
PERSISTENT_STORAGE -> R.string.pref_key_browser_feature_persistent_storage
}
}

@ -25,6 +25,12 @@ class SecretSettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.secret_settings_preferences, rootKey)
requirePreference<SwitchPreference>(R.string.pref_key_show_grid_view_tabs_settings).apply {
isVisible = FeatureFlags.showGridViewInTabsSettings
isChecked = context.settings().showGridViewInTabsSettings
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_top_frecent_sites).apply {
isVisible = FeatureFlags.topFrecentSite
isChecked = context.settings().showTopFrecentSites

@ -24,7 +24,6 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.amo_collection_override_dialog.view.*
import kotlinx.android.synthetic.main.fragment_installed_add_on_details.view.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@ -187,7 +186,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
val tabSettingsPreference =
requirePreference<Preference>(R.string.pref_key_close_tabs)
requirePreference<Preference>(R.string.pref_key_tabs)
tabSettingsPreference.summary = context?.settings()?.getTabTimeoutString()
setupPreferences()
@ -212,8 +211,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
resources.getString(R.string.pref_key_sign_in) -> {
SettingsFragmentDirections.actionSettingsFragmentToTurnOnSyncFragment()
}
resources.getString(R.string.pref_key_close_tabs) -> {
SettingsFragmentDirections.actionSettingsFragmentToCloseTabsSettingsFragment()
resources.getString(R.string.pref_key_tabs) -> {
SettingsFragmentDirections.actionSettingsFragmentToTabsSettingsFragment()
}
resources.getString(R.string.pref_key_search_settings) -> {
SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment()

@ -5,27 +5,29 @@
package org.mozilla.fenix.settings
import android.os.Bundle
import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceFragmentCompat
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.utils.view.addToRadioGroup
/**
* Lets the user customize auto closing tabs.
*/
class CloseTabsSettingsFragment : PreferenceFragmentCompat() {
class TabsSettingsFragment : 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)
setPreferencesFromResource(R.xml.tabs_preferences, rootKey)
}
override fun onResume() {
super.onResume()
showToolbar(getString(R.string.preferences_close_tabs))
showToolbar(getString(R.string.preferences_tabs))
setupPreferences()
}
@ -34,6 +36,7 @@ class CloseTabsSettingsFragment : PreferenceFragmentCompat() {
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()
}

@ -13,7 +13,6 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.appcompat.view.menu.ActionMenuItemView
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
@ -57,7 +56,6 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
private var usernameChanged = false
private var passwordChanged = false
private var saveEnabled = false
private var validPassword = true
private var validUsername = true
@ -90,8 +88,9 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
usernameText.text = args.savedLoginItem.username.toEditable()
passwordText.text = args.savedLoginItem.password.toEditable()
clearUsernameTextButton.isEnabled = oldLogin.username.isNotEmpty()
formatEditableValues()
initSaveState()
setUpClickListeners()
setUpTextListeners()
togglePasswordReveal(passwordText, revealPasswordButton)
@ -101,18 +100,6 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
}
}
private fun initSaveState() {
saveEnabled = false // don't enable saving until something has been changed
val saveButton =
activity?.findViewById<ActionMenuItemView>(R.id.save_login_button)
saveButton?.isEnabled = saveEnabled
usernameChanged = false
passwordChanged = false
clearUsernameTextButton.isEnabled = oldLogin.username.isNotEmpty()
}
private fun formatEditableValues() {
hostnameText.isClickable = false
hostnameText.isFocusable = false
@ -263,20 +250,20 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
}
private fun setSaveButtonState() {
val saveButton = activity?.findViewById<ActionMenuItemView>(R.id.save_login_button)
val changesMadeWithNoErrors =
validUsername && validPassword && (usernameChanged || passwordChanged)
changesMadeWithNoErrors.let {
saveButton?.isEnabled = it
saveEnabled = it
}
activity?.invalidateOptionsMenu()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.login_save, menu)
}
override fun onPrepareOptionsMenu(menu: Menu) {
val saveButton = menu.findItem(R.id.save_login_button)
val changesMadeWithNoErrors =
validUsername && validPassword && (usernameChanged || passwordChanged)
saveButton.isEnabled = changesMadeWithNoErrors // don't enable saving until something has been changed
}
override fun onPause() {
redirectToReAuth(
listOf(R.id.loginDetailFragment),
@ -288,14 +275,12 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.save_login_button -> {
view?.hideKeyboard()
if (saveEnabled) {
interactor.onSaveLogin(
args.savedLoginItem.guid,
usernameText.text.toString(),
passwordText.text.toString()
)
requireComponents.analytics.metrics.track(Event.EditLoginSave)
}
interactor.onSaveLogin(
args.savedLoginItem.guid,
usernameText.text.toString(),
passwordText.text.toString()
)
requireComponents.analytics.metrics.track(Event.EditLoginSave)
true
}
else -> false

@ -52,12 +52,24 @@ class WebsitePermissionsView(
val view: View = LayoutInflater.from(context)
.inflate(R.layout.quicksettings_permissions, containerView, true)
private val permissionViews: Map<PhoneFeature, PermissionViewHolder> = EnumMap(mapOf(
PhoneFeature.CAMERA to PermissionViewHolder(view.cameraLabel, view.cameraStatus),
PhoneFeature.LOCATION to PermissionViewHolder(view.locationLabel, view.locationStatus),
PhoneFeature.MICROPHONE to PermissionViewHolder(view.microphoneLabel, view.microphoneStatus),
PhoneFeature.NOTIFICATION to PermissionViewHolder(view.notificationLabel, view.notificationStatus)
))
private val permissionViews: Map<PhoneFeature, PermissionViewHolder> = EnumMap(
mapOf(
PhoneFeature.CAMERA to PermissionViewHolder(view.cameraLabel, view.cameraStatus),
PhoneFeature.LOCATION to PermissionViewHolder(view.locationLabel, view.locationStatus),
PhoneFeature.MICROPHONE to PermissionViewHolder(
view.microphoneLabel,
view.microphoneStatus
),
PhoneFeature.NOTIFICATION to PermissionViewHolder(
view.notificationLabel,
view.notificationStatus
),
PhoneFeature.PERSISTENT_STORAGE to PermissionViewHolder(
view.persistentStorageLabel,
view.persistentStorageStatus
)
)
)
/**
* Allows changing what this View displays.

@ -25,6 +25,7 @@ import org.mozilla.fenix.settings.PhoneFeature.CAMERA
import org.mozilla.fenix.settings.PhoneFeature.LOCATION
import org.mozilla.fenix.settings.PhoneFeature.MICROPHONE
import org.mozilla.fenix.settings.PhoneFeature.NOTIFICATION
import org.mozilla.fenix.settings.PhoneFeature.PERSISTENT_STORAGE
import org.mozilla.fenix.settings.requirePreference
class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
@ -57,6 +58,7 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
initPhoneFeature(LOCATION)
initPhoneFeature(MICROPHONE)
initPhoneFeature(NOTIFICATION)
initPhoneFeature(PERSISTENT_STORAGE)
bindClearPermissionsButton()
}

@ -14,7 +14,7 @@ import mozilla.components.browser.tabstray.TabViewHolder
import mozilla.components.browser.tabstray.TabsAdapter
import mozilla.components.concept.tabstray.Tab
import mozilla.components.concept.tabstray.Tabs
import mozilla.components.support.images.loader.ImageLoader
import mozilla.components.concept.base.images.ImageLoader
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components

@ -92,7 +92,7 @@ class DefaultTabTrayController(
}
override fun handleTabSettingsClicked() {
navController.navigate(TabTrayDialogFragmentDirections.actionGlobalCloseTabSettingsFragment())
navController.navigate(TabTrayDialogFragmentDirections.actionGlobalTabSettingsFragment())
}
override fun onTabTrayDismissed() {
@ -187,7 +187,7 @@ class DefaultTabTrayController(
}
override fun handleSetUpAutoCloseTabsClicked() {
val directions = TabTrayDialogFragmentDirections.actionGlobalCloseTabSettingsFragment()
val directions = TabTrayDialogFragmentDirections.actionGlobalTabSettingsFragment()
navController.navigate(directions)
}
}

@ -142,6 +142,14 @@ class TabTrayView(
private val components = container.context.components
private val checkOpenTabs = {
if (isPrivateModeSelected) {
view.context.components.core.store.state.privateTabs.isNotEmpty()
} else {
view.context.components.core.store.state.normalTabs.isNotEmpty()
}
}
init {
components.analytics.metrics.track(Event.TabsTrayOpened)
@ -240,6 +248,7 @@ class TabTrayView(
}
updateTabsTrayLayout()
view.tabsTray.apply {
adapter = concatAdapter
@ -291,14 +300,9 @@ class TabTrayView(
tabTrayItemMenu =
TabTrayItemMenu(
context = view.context,
shouldShowSaveToCollection = { tabs.isNotEmpty() && view.tab_layout.selectedTabPosition == 0 },
hasOpenTabs = {
if (isPrivateModeSelected) {
view.context.components.core.store.state.privateTabs.isNotEmpty()
} else {
view.context.components.core.store.state.normalTabs.isNotEmpty()
}
}) {
shouldShowSaveToCollection = { checkOpenTabs.invoke() && view.tab_layout.selectedTabPosition == 0 },
hasOpenTabs = checkOpenTabs
) {
when (it) {
is TabTrayItemMenu.Item.ShareAllTabs -> interactor.onShareTabsClicked(
isPrivateModeSelected
@ -351,14 +355,6 @@ class TabTrayView(
}
}
private fun gridViewNumberOfCols(context: Context): Int {
val displayMetrics = context.resources.displayMetrics
val dpWidth = displayMetrics.widthPixels / displayMetrics.density
val columnWidthDp = COLUMN_WIDTH_DP
val columnCount = (dpWidth / columnWidthDp).toInt()
return if (columnCount >= 2) columnCount else 2
}
private fun handleTabClicked(tab: SyncTab) {
interactor.onSyncedTabClicked(tab)
}
@ -401,7 +397,7 @@ class TabTrayView(
private fun setupCompactTabsTrayLayout() {
view.tabsTray.apply {
val gridLayoutManager = GridLayoutManager(container.context, gridViewNumberOfCols(container.context))
val gridLayoutManager = GridLayoutManager(container.context, getNumberOfGridColumns(container.context))
if (useTopTabsTray) {
gridLayoutManager.reverseLayout = true
}
@ -411,7 +407,7 @@ class TabTrayView(
return if (position < numTabs) {
1
} else {
gridViewNumberOfCols(container.context)
getNumberOfGridColumns(container.context)
}
}
}
@ -469,6 +465,8 @@ class TabTrayView(
updateUINormalMode(view.context.components.core.store.state)
scrollToTab(view.context.components.core.store.state.selectedTabId)
view.tabsTray.invalidateItemDecorations()
if (isPrivateModeSelected) {
components.analytics.metrics.track(Event.TabsTrayPrivateModeTapped)
} else {
@ -482,6 +480,16 @@ class TabTrayView(
var mode: Mode = Mode.Normal
private set
/**
* Returns the number of columns that will fit in the grid layout for the current screen.
*/
private fun getNumberOfGridColumns(context: Context): Int {
val displayMetrics = context.resources.displayMetrics
val screenWidthDp = displayMetrics.widthPixels / displayMetrics.density
val columnCount = (screenWidthDp / COLUMN_WIDTH_DP).toInt()
return if (columnCount >= 2) columnCount else 2
}
fun updateState(state: TabTrayDialogFragmentState) {
val oldMode = mode

@ -20,13 +20,13 @@ import mozilla.components.browser.tabstray.TabViewHolder
import mozilla.components.browser.tabstray.TabsTrayStyling
import mozilla.components.browser.tabstray.thumbnail.TabThumbnailView
import mozilla.components.browser.toolbar.MAX_URI_LENGTH
import mozilla.components.concept.base.images.ImageLoadRequest
import mozilla.components.concept.base.images.ImageLoader
import mozilla.components.concept.tabstray.Tab
import mozilla.components.concept.tabstray.TabsTray
import mozilla.components.feature.media.ext.pauseIfPlaying
import mozilla.components.feature.media.ext.playIfPaused
import mozilla.components.support.base.observer.Observable
import mozilla.components.support.images.ImageLoadRequest
import mozilla.components.support.images.loader.ImageLoader
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
@ -76,13 +76,10 @@ class TabTrayViewHolder(
) {
this.tab = tab
// Basic text
updateTitle(tab)
updateUrl(tab)
updateIcon(tab)
updateCloseButtonDescription(tab.title)
// Drawables and theme
updateBackgroundColor(isSelected)
if (tab.thumbnail != null) {

@ -17,6 +17,7 @@ import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.content.getDrawableWithTint
import mozilla.components.support.ktx.android.util.dpToPx
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.home.sessioncontrol.SwipeToDeleteCallback
/**

@ -15,6 +15,7 @@ import android.view.View
import android.widget.ImageView
import androidx.core.view.isVisible
import androidx.core.view.marginTop
import com.google.android.material.appbar.AppBarLayout
import kotlinx.android.synthetic.main.tracking_protection_onboarding_popup.*
import kotlinx.android.synthetic.main.tracking_protection_onboarding_popup.view.*
import mozilla.components.browser.session.Session
@ -44,13 +45,32 @@ class TrackingProtectionOverlay(
private fun shouldShowTrackingProtectionOnboarding(session: Session) =
session.trackerBlockingEnabled &&
session.trackersBlocked.isNotEmpty() &&
settings.shouldShowTrackingProtectionCfr
session.trackersBlocked.isNotEmpty() &&
settings.shouldShowTrackingProtectionCfr
@Suppress("MagicNumber", "InflateParams")
private fun showTrackingProtectionOnboarding() {
if (!getToolbar().hasWindowFocus()) return
val toolbarPosition = settings.toolbarPosition
when (toolbarPosition) {
ToolbarPosition.BOTTOM -> {
if (getToolbar().translationY > 0) {
return
}
}
ToolbarPosition.TOP -> {
val appBarLayout = getToolbar().parent as? AppBarLayout
appBarLayout?.let { appBar ->
if (appBar.y != 0.toFloat()) {
return
}
}
}
}
val trackingOnboardingDialog = object : Dialog(context) {
override fun onTouchEvent(event: MotionEvent): Boolean {
@ -63,7 +83,6 @@ class TrackingProtectionOverlay(
val layout = LayoutInflater.from(context)
.inflate(R.layout.tracking_protection_onboarding_popup, null)
val toolbarPosition = settings.toolbarPosition
layout.drop_down_triangle.isVisible = toolbarPosition == ToolbarPosition.TOP
layout.pop_up_triangle.isVisible = toolbarPosition == ToolbarPosition.BOTTOM

@ -124,6 +124,12 @@ class Settings(private val appContext: Context) : PreferencesHolder {
val canShowCfr: Boolean
get() = (System.currentTimeMillis() - lastCfrShownTimeInMillis) > THREE_DAYS_MS
var showGridViewInTabsSettings by featureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_show_grid_view_tabs_settings),
default = false,
featureFlag = FeatureFlags.showGridViewInTabsSettings
)
var waitToShowPageUntilFirstPaint by featureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_wait_first_paint),
default = false,
@ -305,16 +311,13 @@ class Settings(private val appContext: Context) : PreferencesHolder {
val shouldShowSecurityPinWarning: Boolean
get() = loginsSecureWarningCount.underMaxCount()
fun shouldUseAutoSize() = fontSizeFactor == 1F
var shouldUseLightTheme by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_light_theme),
default = false
)
var shouldUseAutoSize by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_accessibility_auto_size),
default = true
)
var fontSizeFactor by floatPreference(
appContext.getPreferenceKey(R.string.pref_key_accessibility_font_scale),
default = 1f
@ -768,7 +771,8 @@ class Settings(private val appContext: Context) : PreferencesHolder {
location = getSitePermissionsPhoneFeatureAction(PhoneFeature.LOCATION),
camera = getSitePermissionsPhoneFeatureAction(PhoneFeature.CAMERA),
autoplayAudible = getSitePermissionsPhoneFeatureAutoplayAction(PhoneFeature.AUTOPLAY_AUDIBLE),
autoplayInaudible = getSitePermissionsPhoneFeatureAutoplayAction(PhoneFeature.AUTOPLAY_INAUDIBLE)
autoplayInaudible = getSitePermissionsPhoneFeatureAutoplayAction(PhoneFeature.AUTOPLAY_INAUDIBLE),
persistentStorage = getSitePermissionsPhoneFeatureAction(PhoneFeature.PERSISTENT_STORAGE)
)
}

@ -0,0 +1,13 @@
<!-- 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"
android:autoMirrored="true">
<path
android:fillColor="?primaryText"
android:pathData="M2,20h20v-4L2,16v4zM4,17h2v2L4,19v-2zM2,4v4h20L22,4L2,4zM6,7L4,7L4,5h2v2zM2,14h20v-4L2,10v4zM4,11h2v2L4,13v-2z"/>
</vector>

@ -9,8 +9,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="73dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp">
android:layout_marginTop="12dp">
<TextView
android:id="@+id/webAddressHeader"
@ -38,7 +37,7 @@
android:paddingBottom="@dimen/saved_logins_detail_menu_vertical_padding"
android:textColor="?primaryText"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="@id/webAddressHeader"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/webAddressHeader"
app:layout_constraintTop_toBottomOf="@id/webAddressHeader"
app:layout_constraintVertical_chainStyle="packed"
@ -46,8 +45,8 @@
<ImageButton
android:id="@+id/openWebAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/saved_login_open_site"
app:layout_constraintBottom_toBottomOf="@id/webAddressText"
@ -91,8 +90,8 @@
<ImageButton
android:id="@+id/copyUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/saved_login_copy_username"
app:layout_constraintBottom_toBottomOf="@id/usernameText"
@ -138,9 +137,8 @@
<ImageButton
android:id="@+id/revealPasswordButton"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="36dp"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@string/saved_login_reveal_password"
app:layout_constraintBottom_toBottomOf="@id/passwordText"
@ -151,9 +149,9 @@
<ImageButton
android:id="@+id/copyPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/saved_logins_copy_password"
app:layout_constraintBottom_toBottomOf="@id/passwordText"
app:layout_constraintEnd_toEndOf="@id/openWebAddress"

@ -12,6 +12,19 @@
android:layout_height="wrap_content"
android:layout_marginBottom="8dp">
<TextView
android:id="@+id/cameraLabel"
style="@style/QuickSettingsText.Icon"
android:layout_width="0dp"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_camera"
android:text="@string/preference_phone_feature_camera"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/microphoneLabel"
app:layout_constraintEnd_toStartOf="@id/cameraStatus"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
<TextView
android:id="@+id/cameraStatus"
style="@style/QuickSettingsText.PermissionItemEnd"
@ -25,15 +38,15 @@
tools:visibility="visible" />
<TextView
android:id="@+id/cameraLabel"
android:id="@+id/microphoneLabel"
style="@style/QuickSettingsText.Icon"
android:layout_width="0dp"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_camera"
android:text="@string/preference_phone_feature_camera"
app:drawableStartCompat="@drawable/ic_microphone"
android:text="@string/preference_phone_feature_microphone"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/microphoneLabel"
app:layout_constraintEnd_toStartOf="@id/cameraStatus"
app:layout_constraintBottom_toTopOf="@id/notificationLabel"
app:layout_constraintEnd_toStartOf="@id/microphoneStatus"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
@ -50,15 +63,15 @@
tools:visibility="visible" />
<TextView
android:id="@+id/microphoneLabel"
android:id="@+id/notificationLabel"
style="@style/QuickSettingsText.Icon"
android:layout_width="0dp"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_microphone"
android:text="@string/preference_phone_feature_microphone"
app:drawableStartCompat="@drawable/ic_notifications"
android:text="@string/preference_phone_feature_notification"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/notificationLabel"
app:layout_constraintEnd_toStartOf="@id/microphoneStatus"
app:layout_constraintBottom_toTopOf="@id/locationLabel"
app:layout_constraintEnd_toStartOf="@id/notificationStatus"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
@ -75,15 +88,15 @@
tools:visibility="visible" />
<TextView
android:id="@+id/notificationLabel"
android:id="@+id/locationLabel"
style="@style/QuickSettingsText.Icon"
android:layout_width="0dp"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_notifications"
android:text="@string/preference_phone_feature_notification"
app:drawableStartCompat="@drawable/ic_location"
android:text="@string/preference_phone_feature_location"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/locationLabel"
app:layout_constraintEnd_toStartOf="@id/notificationStatus"
app:layout_constraintBottom_toTopOf="@id/persistentStorageLabel"
app:layout_constraintEnd_toStartOf="@id/locationStatus"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
@ -93,22 +106,35 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/persistentStorageStatus"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/locationLabel"
tools:text="@string/preference_option_phone_feature_blocked"
tools:visibility="visible" />
<TextView
android:id="@+id/locationLabel"
android:id="@+id/persistentStorageLabel"
style="@style/QuickSettingsText.Icon"
android:layout_width="0dp"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_location"
android:text="@string/preference_phone_feature_location"
app:drawableStartCompat="@drawable/ic_storage"
android:text="@string/preference_phone_feature_persistent_storage"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/locationStatus"
app:layout_constraintEnd_toStartOf="@id/persistentStorageStatus"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
<TextView
android:id="@+id/persistentStorageStatus"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/persistentStorageLabel"
tools:text="@string/preference_option_phone_feature_blocked"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -111,8 +111,8 @@
android:id="@+id/action_global_tabHistoryDialogFragment"
app:destination="@id/tabHistoryDialogFragment" />
<action
android:id="@+id/action_global_closeTabSettingsFragment"
app:destination="@id/closeTabsSettingsFragment" />
android:id="@+id/action_global_tabSettingsFragment"
app:destination="@id/tabsSettingsFragment" />
<dialog
android:id="@+id/tabTrayDialogFragment"
@ -513,17 +513,17 @@
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_closeTabsSettingsFragment"
app:destination="@id/closeTabsSettingsFragment"
android:id="@+id/action_settingsFragment_to_tabsSettingsFragment"
app:destination="@id/tabsSettingsFragment"
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
android:id="@+id/closeTabsSettingsFragment"
android:name="org.mozilla.fenix.settings.CloseTabsSettingsFragment"
android:label="@string/preferences_close_tabs" />
android:id="@+id/tabsSettingsFragment"
android:name="org.mozilla.fenix.settings.TabsSettingsFragment"
android:label="@string/preferences_tabs" />
<fragment
android:id="@+id/dataChoicesFragment"
android:name="org.mozilla.fenix.settings.DataChoicesFragment"

@ -333,6 +333,8 @@
<string name="preferences_search_synced_tabs">ابحث في الألسنة المُزامنة</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">إعدادات الحساب</string>
<!-- Preference for enabling url autocomplete-->
<string name="preferences_enable_autocomplete_urls">أكمِل العناوين تلقائيا</string>
<!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">افتح الروابط في التطبيقات</string>
<!-- Preference for open download with an external download manager app -->
@ -343,6 +345,17 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">التنبيهات</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">حسنا</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">ألغِ</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">اسم التجميعة</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">مالك التجميعة (معرّف المستخدم)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">تعدّلت تجميعة الإضافات. يُنهي التطبيق لإجراء التغييرات…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">زامِن الآن</string>
@ -430,6 +443,9 @@
<!-- Preference switch for Mozilla location service -->
<string name="preferences_mozilla_location_service">خدمة التموضع من Mozilla</string>
<!-- Preference switch for app health report. The first parameter is the name of the application (For example: Fenix) -->
<string name="preferences_fenix_health_report">تقرير صحة %s</string>
<!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">فعّل «تزامُن»</string>
@ -442,6 +458,9 @@
<!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">أزِل الحساب</string>
<!-- Pairing Feature strings -->
<!-- Instructions on how to access pairing -->
<string name="pair_instructions_2"><![CDATA[امسح رمز QR المعروض على <b>firefox.com/pair</b> ضوئيا]]></string>
<!-- Button to open camera for pairing -->
<string name="pair_open_camera">افتح الكمرة</string>
<!-- Button to cancel pairing -->
@ -502,6 +521,8 @@
<string name="library_search">ابحث</string>
<!-- Settings Page Title -->
<string name="settings_title">الإعدادات</string>
<!-- Content description (not visible, for screen readers etc.): "Menu icon for items on a history item" -->
<string name="content_description_history_menu">عنصر قائمة في التأريخ</string>
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">أغلِق</string>
@ -509,10 +530,24 @@
<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 for tabs management -->
<string name="preferences_tabs">الألسنة</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">منظور الألسنة</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">قائمة</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">شبكة</string>
<!-- 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 -->
@ -553,6 +588,8 @@
<string name="tab_tray_menu_open_new_tab">لسان جديد</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">انتقل إلى الصفحة الرئيسية</string>
<!-- Shortcut action to toggle private mode -->
<string name="tab_tray_menu_toggle">بدّل وضع اللسان</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">أزِل اللسان من المجموعة</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
@ -577,6 +614,8 @@
<string name="current_session_save">احفظ</string>
<!-- Button in the current session menu. Opens the share menu when pressed -->
<string name="current_session_share">شارِك</string>
<!-- Content description (not visible, for screen readers etc.): Title icon for current session menu -->
<string name="current_session_image">صورة الجلسة الحالية</string>
<!-- Button to save the current set of tabs into a collection -->
<string name="save_to_collection">احفظ في التجميعة</string>
<!-- Text for the menu button to delete a collection -->
@ -619,6 +658,13 @@
<!-- History multi select title in app bar
The first parameter is the number of bookmarks selected -->
<string name="history_multi_select_title">حدّدتَ %1$d</string>
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">احذف العناصر (عددها %1$d)</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">اليوم</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">الأمس</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">آخر 24 ساعة</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -759,6 +805,8 @@
<string name="preference_phone_feature_location">المكان</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">التنبيهات</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">التخزين الدائم</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">اطلب السماح</string>
<!-- Label that indicates that a permission must be blocked -->
@ -776,6 +824,10 @@
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">اسمح بالصوت والڤِديو</string>
<!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only2">احجب الصوت والڤديو على بيانات الشبكة في المحمول فقط</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">سيعمل الصوت والڤديو على الشبكة اللاسلكية</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio2">احجب الصوت فقط</string>
<!-- Label that indicates that all video and audio autoplay is blocked -->
@ -806,6 +858,12 @@
<string name="create_collection_deselect_all">ألغِ تحديد الكل</string>
<!-- Text to prompt users to select the tabs to save in the "select tabs" step of the collection creator -->
<string name="create_collection_save_to_collection_empty">حدّد الألسنة لحفظها</string>
<!-- Text to show users how many tabs they have selected in the "select tabs" step of the collection creator.
%d is a placeholder for the number of tabs selected. -->
<string name="create_collection_save_to_collection_tabs_selected">الألسنة المحدّدة: %d</string>
<!-- Text to show users they have one tab selected in the "select tabs" step of the collection creator.
%d is a placeholder for the number of tabs selected. -->
<string name="create_collection_save_to_collection_tab_selected">الألسنة المحدّدة: %d</string>
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
<string name="create_collection_tabs_saved">حُفظت الألسنة!</string>
<!-- Text shown in snackbar when one or multiple tabs have been saved in a new collection -->
@ -873,6 +931,8 @@
<string name="notification_pbm_delete_text_2">أغلِق الألسنة الخاصة</string>
<!-- Notification action to open Fenix and resume the current browsing session. -->
<string name="notification_pbm_action_open">افتح</string>
<!-- Notification action to delete all current private browsing sessions AND switch to Fenix (bring it to the foreground) -->
<string name="notification_pbm_action_delete_and_open">احذف وافتح</string>
<!-- Name of the "Powered by Fenix" notification channel. Displayed in the "App notifications" system settings for the app -->
<string name="notification_powered_by_channel_name">تدعمه</string>
<!-- Text shown in snackbar when user deletes a collection -->
@ -887,6 +947,8 @@
<string name="snackbar_tab_closed">أُغلق اللسان</string>
<!-- Text shown in snackbar when user closes all tabs -->
<string name="snackbar_tabs_closed">أُغلقت الألسنة</string>
<!-- Text shown in snackbar when user adds a site to top sites -->
<string name="snackbar_added_to_top_sites">أُضيف إلى المواقع الشائعة!</string>
<!-- Text shown in snackbar when user closes a private tab -->
<string name="snackbar_private_tab_closed">أُغلق اللسان الخاص</string>
<!-- Text shown in snackbar when user closes all private tabs -->
@ -939,16 +1001,26 @@
<string name="preferences_delete_browsing_data">حذف بيانات التصفح</string>
<!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">الألسنة المفتوحة</string>
<!-- 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">الألسنة: %d</string>
<!-- Title for the data and history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_data_title">تأريخ التصفح وبيانات الموقع</string>
<!-- Subtitle for the data and history items in delete browsing data, parameter will be replaced with the
number of history items the user has -->
<string name="preferences_delete_browsing_data_browsing_data_subtitle">العناوين: %d</string>
<!-- Title for history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_history_title">التأريخ</string>
<!-- Subtitle for the history items in delete browsing data, parameter will be replaced with the
number of history pages the user has -->
<string name="preferences_delete_browsing_data_browsing_history_subtitle">الصفحات: %d</string>
<!-- Title for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies">الكعكات</string>
<!-- Subtitle for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies_subtitle">ستخرج من معظم المواقع</string>
<!-- Title for the cached images and files item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cached_files">الصور والملفات المخبّأة</string>
<!-- Subtitle for the cached images and files item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cached_files_subtitle">يحرّر مساحة التخزين</string>
<!-- Title for the site permissions item in Delete browsing data -->
<string name="preferences_delete_browsing_data_site_permissions">تصاريح المواقع</string>
<!-- Text for the button to delete browsing data -->
@ -1030,26 +1102,49 @@
<string name="onboarding_firefox_account_signing_in">تَلج الآن…</string>
<!-- text for the button to manually sign into Firefox account. The word "Firefox" should not be translated -->
<string name="onboarding_firefox_account_sign_in">لِج إلى Firefox</string>
<!-- text for the button to stay signed out when presented with an option to automatically sign-in. -->
<string name="onboarding_firefox_account_stay_signed_out">لا تلج</string>
<!-- text to display in the snackbar once account is signed-in -->
<string name="onboarding_firefox_account_sync_is_on">التزامن يعمل</string>
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">فشل الولوج</string>
<!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header_2">خصوصية تلقائية</string>
<!-- text for the tracking protection card description
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_tracking_protection_description_2">تحجب إعدادات الخصوصية والأمان المتعقّبات والبرمجيات الخبيثة والشركات التي تحاول تعقّبك.</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">القياسي (المبدئي)</string>
<!-- text for standard blocking option button description -->
<string name="onboarding_tracking_protection_standard_button_description_2">احجب عددًا أقل من المتعقّبات. ستُحمّل الصفحات كما الطبيعي.</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">صارم (مستحسن)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">صارم</string>
<!-- text for strict blocking option button description -->
<string name="onboarding_tracking_protection_strict_button_description_2">احجب متعقّبات وإعلانات ومنبثقات أكثر. ستُحمّل الصفحات بسرعة أكبر، ولكن قد لا تعمل بعض المزايا.</string>
<!-- text for the toolbar position card header
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 -->
<string name="onboarding_toolbar_position_header">اختر جهةً</string>
<!-- text for the toolbar position card description -->
<string name="onboarding_toolbar_position_description">جرّب التصفّح بيد واحدة باستعمال شريط الأدوات بالأسفل، أو انقله إلى أعلى.</string>
<!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">تصفّح بخصوصية</string>
<!-- text for the private browsing onboarding card description
The first parameter is an icon that represents private browsing -->
<string name="onboarding_private_browsing_description1">افتح اللسان الخاص الآن فقط: انقر أيقونة %s.</string>
<!-- text for the private browsing onboarding card description, explaining how to always using private browsing -->
<string name="onboarding_private_browsing_always_description">افتح الألسنة الخاصة في كل مرة: حدّث إعدادات التصفّح الخاص.</string>
<!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">افتح الإعدادات</string>
<!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">خصوصيتك</string>
<!-- text for the privacy notice onboarding card description
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_privacy_notice_description">صمّمنا لك %s لتقدر على التحكّم فيما تُشاركه عبر الشبكة، وما تُشاركه معنا.</string>
<!-- Text for the button to read the privacy notice -->
<string name="onboarding_privacy_notice_read_button">اقرأ تنويه الخصوصية</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
<string name="onboarding_close">أغلِق</string>
@ -1060,8 +1155,12 @@
<!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">اختر السمة</string>
<!-- text for the theme picker onboarding card description -->
<string name="onboarding_theme_picker_description1">وفّر طاقة الطارية واحمِ نظرك بتفعيل الوضع الداكن.</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">آلي</string>
<!-- Summary of automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_summary">يتأقلم حسب إعدادات الجهاز</string>
<!-- Theme setting for dark mode -->
<string name="onboarding_theme_dark_title">سمة داكنة</string>
<!-- Theme setting for light mode -->
@ -1075,6 +1174,8 @@
<string name="sync_sent_tab_error_snackbar">تعذر الإرسال</string>
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar_action">أعِد المحاولة</string>
<!-- Title of QR Pairing Fragment -->
<string name="sync_scan_code">امسح الرز ضوئيًا</string>
<!-- Instructions on how to access pairing -->
<string name="sign_in_instructions"><![CDATA[افتح Firefox على حاسوبك وانتقل إلى <b>https://firefox.com/pair</b>]]></string>
<!-- Text shown for sign in pairing when ready -->
@ -1083,6 +1184,8 @@
<string name="sign_in_with_camera">لِج باستخدام كمرتك</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">استعمل البريد بدل المسح</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[ليس لديك حساب؟ <u>أنشِئ واحدًا</u> لمزامنة Firefox بين الأجهزة.]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">سيتوقف Firefox عن مزامنة حسابك، لكن لن يحذف أيًا من بيانات تصفحك على هذا الجهاز.</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1092,6 +1195,9 @@
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">ألغِ</string>
<!-- Error message snackbar shown after the user tried to select a default folder which cannot be altered -->
<string name="bookmark_cannot_edit_root">لا يمكنك تعديل المجلدات المبدئية</string>
<!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">إعدادات الحماية</string>
@ -1106,12 +1212,22 @@
<string name="preference_enhanced_tracking_protection_explanation_learn_more">اطّلع على المزيد</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">القياسي (المبدئي)</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description_3">احجب عددًا أقل من المتعقّبات. ستُحمّل الصفحات كما الطبيعي.</string>
<!-- Accessibility text for the Standard protection information icon -->
<string name="preference_enhanced_tracking_protection_standard_info_button">ما يحجبه أسلوب الحماية ضد التعقّب المعياري</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">صارم</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_description_2">احجب متعقّبات وإعلانات ومنبثقات أكثر. ستُحمّل الصفحات بسرعة أكبر، ولكن قد لا تعمل بعض المزايا.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_strict_info_button">ما يحجبه أسلوب الحماية ضد التعقّب الصارم</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">مخصّص</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description_2">اختر المتعقّبات والسكربتات التي تريد حجبها.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_custom_info_button">ما يحجبه أسلوب الحماية ضد التعقّب المخصّص</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">الكعكات</string>
@ -1144,8 +1260,12 @@
<string name="etp_social_media_trackers_description">يحدّ من قدرة الشبكات الاجتماعية على تعقب نشاط تصفحك على الإنترنت.</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">كعكات تتعقّبك بين المواقع</string>
<!-- Description of cross-site tracking cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_description">احجب الكعكات التي تستعمله شبكات الإعلانات وشركات التحليل الرقمي لجمع بيانات التصفّح من مختلف المواقع.</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">المُعدّنات المعمّاة</string>
<!-- Description of cryptominers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_description">امنع السكربتات الخبيثة من الوصول إلى جهازك لتعدين العملات رقميًا.</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">مسجّلات البصمات</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
@ -1158,6 +1278,8 @@
<string name="enhanced_tracking_protection_exceptions">عُطّلت الحماية الموسّعة من التعقب لهذه المواقع</string>
<!-- About page Your rights link text -->
<string name="about_your_rights">حقوقك</string>
<!-- About page link text to open open source licenses screen -->
<string name="about_open_source_licenses">المكتبات مفتوحة المصدر التي نستخدم</string>
<!-- About page link text to open what's new link -->
<string name="about_whats_new">ما جديد %s</string>
@ -1172,6 +1294,18 @@
<!-- About page link text to open licensing information link -->
<string name="about_licensing_information">معلومات الترخيص</string>
<!-- About page link text to open a screen with libraries that are used -->
<string name="about_other_open_source_libraries">المكتبات التي نستعمل</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">قائمة التنقيح: بقيت من النقرات %1$d لتفعيلها</string>
<string name="about_debug_menu_toast_done">فُعّلت قائمة التنقيح</string>
<!-- Content description of the tab counter toolbar button when one tab is open -->
<string name="tab_counter_content_description_one_tab">عدد الألسنة: 1</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) -->
<string name="tab_counter_content_description_multi_tab">عدد الألسنة: %d</string>
<!-- Browser long press popup menu -->
<!-- Copy the current url -->
<string name="browser_toolbar_long_press_popup_copy">انسخ</string>
@ -1193,6 +1327,9 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">اسم الاختصار</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description_2">يمكنك إضافة هذا الموقع إلى شاشة البداية في الجهاز لتصل إليه بسرعة وتتصفحه كأي تطبيق آخر.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">جلسات الولوج وكلمات السر</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1216,6 +1353,8 @@
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">جلسات الولوج المحفوظة</string>
<!-- Description of empty list of saved passwords. Placeholder is replaced with app name. -->
<string name="preferences_passwords_saved_logins_description_empty_text">تظهر هنا جلسات الولوج التي تحفظها أو تُزامنها مع %s.</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">اعرف المزيد عن المزامنة.</string>
<!-- Preference to access list of login exceptions that we never save logins for -->
@ -1224,6 +1363,8 @@
<string name="preferences_passwords_exceptions_description_empty">ستظهر جلسات الولوج وكلمات السر غير المحفوظة هنا.</string>
<!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">لن تُحفظ جلسات الولوج وكلمات السر لهذه المواقع.</string>
<!-- Text on button to remove all saved login exceptions -->
<string name="preferences_passwords_exceptions_remove_all">احذف كل الاستثناءات</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">ابحث في جلسات الولوج</string>
<!-- Option to sort logins list A-Z, alphabetically -->
@ -1236,6 +1377,10 @@
<string name="preferences_passwords_saved_logins_username">اسم المستخدم</string>
<!-- The header for the password for a login -->
<string name="preferences_passwords_saved_logins_password">كلمة السر</string>
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin">أعِد إدخال رمز PIN</string>
<!-- Message displayed in security prompt to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin_description">ألغِ القفل لعرض جلسات الولوج المحفوظة</string>
<!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning">هذا الاتصال ليس آمنا. بيانات الولوج المدخلة هنا عرضة للخطر.</string>
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
@ -1254,21 +1399,42 @@
<string name="logins_site_copied">نُسخ الموقع إلى الحافظة</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">انسخ كلمة السر</string>
<!-- Content Description (for screenreaders etc) read for the button to clear a password while editing a login-->
<string name="saved_logins_clear_password">امسح كلمة السر</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">اسنخ اسم المستخدم</string>
<!-- Content Description (for screenreaders etc) read for the button to clear a username while editing a login -->
<string name="saved_login_clear_username">امسح اسم المستخدم</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">انسخ الموقع</string>
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins -->
<string name="saved_login_open_site">افتح الموقع في المتصفح</string>
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
<string name="saved_login_reveal_password">أظهِر كلمة السر</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">أخفِ كلمة السر</string>
<!-- Message displayed in biometric prompt displayed for authentication before allowing users to view their logins -->
<string name="logins_biometric_prompt_message">ألغِ القفل لعرض جلسات الولوج المحفوظة</string>
<!-- Title of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_title">احمِ جلسات الولوج وكلمات السر</string>
<!-- Message of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_message">اضبط نمطًا أو رمزًا أو كلمة سر لقفل الجهاز ذلك لحماية جلسات الولوج وكلمات السر المحفوظة ضد الوصول إليها ضد من يستعمل جهازك.</string>
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">لاحقًا</string>
<!-- Positive button to send users to set up a pin of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_set_up_now">اضبط ذلك الآن</string>
<!-- Title of PIN verification dialog to direct users to re-enter their device credentials to access their logins -->
<string name="logins_biometric_prompt_message_pin">ألغِ قفل جهازك</string>
<!-- Title for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom">استعمل التقريب على كل المواقع</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">الاسم (ا-ي)</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">آخر استخدام</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">افرز قائمة جلسات الولوج</string>
<!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">أضِف محرك بحث</string>
<!-- Title of the Edit search engine screen -->
@ -1286,6 +1452,8 @@
<string name="search_add_custom_engine_label_other">أخرى</string>
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
<string name="search_add_custom_engine_name_hint">الاسم</string>
<!-- Placeholder text shown in the Search String TextField before a user enters text -->
<string name="search_add_custom_engine_search_string_hint">نص البحث المستخدم</string>
<!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">اطّلع على المزيد</string>
@ -1294,9 +1462,13 @@
<!-- Text shown when a user leaves the name field empty -->
<string name="search_add_custom_engine_error_empty_name">أدخِل اسم محرك البحث</string>
<!-- Text shown when a user tries to add a search engine that already exists -->
<string name="search_add_custom_engine_error_existing_name">يوجد بالفعل محرك بالاسم ”%s“.</string>
<!-- Text shown when a user leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">أدخِل نص البحث</string>
<!-- Text shown when a user leaves out the required template string -->
<string name="search_add_custom_engine_error_missing_template">تحقق من أن نص البحث يطابق تنسيق المثال</string>
<!-- Text shown when we aren't able to validate the custom search query. The first parameter is the url of the custom search engine -->
<string name="search_add_custom_engine_error_cannot_reach">عُطل أثناء الاتصال بِ‍ ”%s“</string>
<!-- Text shown when a user creates a new search engine -->
@ -1306,10 +1478,14 @@
<!-- Text shown when a user successfully deletes a custom search engine -->
<string name="search_delete_search_engine_success_message">حُذف %s</string>
<!-- Title text shown for the migration screen to the new browser. Placeholder replaced with app name -->
<string name="migration_title">مرحبًا بك في %s الجديد</string>
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">يحدّث %s…</string>
<!-- Text on the enabled button. Placeholder replaced with app name-->
<string name="migration_update_app_button">ابدأ %s</string>
<!-- Accessibility description text for a completed migration item -->
<string name="migration_icon_description">اكتمل الترحيل</string>
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
<string name="migration_text_passwords">كلمات السر</string>
@ -1320,6 +1496,9 @@
<!-- Second step for the allowing a permission -->
<string name="phone_feature_blocked_step_permissions"><![CDATA[2. انقر <b>الأذونات</b>]]></string>
<!-- Third step for the allowing a permission (Fore example: Camera) -->
<string name="phone_feature_blocked_step_feature"><![CDATA[3. اضبط <b>%1$s</b> على ”مفعّل/مفعّلة“]]></string>
<!-- Label that indicates a site is using a secure connection -->
<string name="quick_settings_sheet_secure_connection">اتصال آمن</string>
<!-- Label that indicates a site is using a insecure connection -->
@ -1332,6 +1511,8 @@
<string name="confirm_clear_permission_site">أمتأكد من مسح التصريح لهذا الموقع؟</string>
<!-- label shown when there are not site exceptions to show in the site exception settings -->
<string name="no_site_exceptions">ما من مواقع مستثناة</string>
<!-- Label for the Pocket default top site -->
<string name="pocket_top_articles">أهم المقالات</string>
<!-- Bookmark deletion confirmation -->
<string name="bookmark_deletion_confirmation">أمتأكد من حذف هذه العلامة؟</string>
<!-- Browser menu button that adds a top site to the home fragment -->
@ -1378,13 +1559,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 -->
<string name="synced_tabs_sign_in_button">لِج إلى «المزامنة»</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 -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">وصلت إلى أقصى حدّ للمواقع الشائعة</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">حسنًا، فهمت</string>
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">أزِل</string>
<!-- Deprecated: 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: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">يمكنك إضافة هذا الموقع إلى شاشة البداية لتصل إليه بسرعة وتتصفحه كأي تطبيق آخر.</string>
</resources>

@ -322,6 +322,8 @@
<string name="preferences_search_synced_tabs">Buscar llingüetes sincronizaes</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">Axustes de la cuenta</string>
<!-- Preference for enabling url autocomplete-->
<string name="preferences_enable_autocomplete_urls">Autocompletar les URLs</string>
<!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Abrir los enllaces nes aplicaciones</string>
<!-- Preference for open download with an external download manager app -->
@ -332,6 +334,9 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Avisos</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Encaboxar</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar agora</string>
@ -478,6 +483,8 @@
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Llingüetes zarraes apocayá</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Amosar l\'historial completu</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 llingüetes</string>
@ -486,9 +493,15 @@
<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>
<string name="recently_closed_empty_message">Equí nun hai llingüetes que se zarraren apocayá</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Llingüetes</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">En llista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">En rexáu</string>
<!-- 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 -->
@ -588,6 +601,10 @@
<!-- History multi select title in app bar
The first parameter is the number of bookmarks selected -->
<string name="history_multi_select_title">Elementos esbillaos: %1$d</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Güei</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ayeri</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Les últimes 24 hores</string>
<!-- Text for the header that groups the history the past 7 days -->

File diff suppressed because it is too large Load Diff

@ -339,6 +339,17 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Абвесткі</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Уласная калекцыя дадаткаў</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Назва калекцыі</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Уладальнік калекцыі (ID карыстальніка)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Калекцыя дадаткаў зменена. Выхад з праграмы, каб прымяніць змены…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Сінхранізаваць</string>
@ -391,6 +402,8 @@
<string name="preferences_tracking_protection_settings">Ахова ад сачэння</string>
<!-- Preference switch for tracking protection -->
<string name="preferences_tracking_protection">Ахова ад сачэння</string>
<!-- Preference switch description for tracking protection -->
<string name="preferences_tracking_protection_description">Блакаваць змест і скрыпты, якія асочваюць вас у інтэрнэце</string>
<!-- Preference for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions">Выключэнні</string>
<!-- Preference description for tracking protection exceptions -->
@ -413,6 +426,8 @@
<string name="preferences_usage_data_description">Дзяліцца звесткамі пра прадукцыйнасць, выкарыстанне, апаратнае забеспячэнне і налады вашага браўзера з Mozilla, каб дапамагчы ўдасканаліць %1$s</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Маркетынгавыя дадзеныя</string>
<!-- Preference description for marketing data collection, parameter is the app name (e.g. Firefox) -->
<string name="preferences_marketing_data_description">Дзяліцца звесткамі пра магчымасці, якімі вы карыстаецеся ў %1$s, з нашым пастаўшчыком мабільнага маркетынгу Leanplum.</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">Доследы</string>
@ -429,6 +444,8 @@
<!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">Уключыць сінхранізацыю</string>
<!-- Preference for pairing -->
<string name="preferences_sync_pair">Скануйце код спалучэння ў Firefox на камп’ютары</string>
<!-- Preference for account login -->
<string name="preferences_sync_sign_in">Увайсці</string>
@ -636,6 +653,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Выдаліць %1$d элементаў</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Сёння</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Учора</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Апошнія 24 гадзіны</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -743,6 +764,8 @@
<string name="bookmark_deletion_snackbar_message">%1$s выдалена</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_2">Закладкі выдалены</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_3">Выдаленне абраных папак</string>
<!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">АДМЯНІЦЬ</string>
@ -793,6 +816,8 @@
<string name="tracking_protection_off">Выключана</string>
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Дазволіць гук і відэа</string>
<!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only2">Блакаваць аўдыё і відэа толькі на мабільных дадзеных</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">Аўдыё і відэа будуць прайгравацца праз Wi-Fi</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
@ -1002,9 +1027,15 @@
<string name="preferences_delete_browsing_data_on_quit">Выдаляць звесткі аглядання пры выхадзе</string>
<!-- 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">Аўтаматычна выдаляе дадзеныя аглядання, калі вы выбіраеце &quot;Выйсці&quot; ў галоўным меню</string>
<!-- 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">Аўтаматычна выдаляе дадзеныя аглядання, калі вы выбіраеце \&quot;Выйсці\&quot; ў галоўным меню</string>
<!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Выйсці</string>
<!-- Dialog message to the user asking to delete browsing data. -->
<string name="delete_browsing_data_prompt_message">Гэта выдаліць усе дадзеныя вашага аглядання.</string>
<!-- Dialog message to the user asking to delete browsing data. Parameter will be replaced by app name. -->
<string name="delete_browsing_data_prompt_message_3">%s выдаліць выбраныя дадзеныя аглядання.</string>
<!-- Text for the cancel button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_cancel">Адмена</string>
<!-- Text for the allow button for the data deletion dialog -->
@ -1013,6 +1044,9 @@
<!-- Text for the snackbar confirmation that the data was deleted -->
<string name="preferences_delete_browsing_data_snackbar">Дадзеныя аглядання выдалены</string>
<!-- Text for the snackbar to show the user that the deletion of browsing data is in progress -->
<string name="deleting_browsing_data_in_progress">Выдаленне дадзеныя аглядання…</string>
<!-- Tips -->
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header">Firefox Preview цяпер Firefox Nightly</string>
@ -1059,6 +1093,10 @@
<string name="onboarding_account_sign_in_header">Пачніце сінхранізаваць закладкі, паролі і шмат іншага праз свой уліковы запіс Firefox.</string>
<!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Падрабязней</string>
<!-- 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)
The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_3">Вы ўвайшлі як %s у іншым браўзеры Firefox на гэтай прыладзе. Ці хочаце аўтарызавацца з дапамогай гэтага ўліковага запісу?</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Так, увайсці</string>
<!-- text for the automatic sign-in button while signing in is in process -->
@ -1159,6 +1197,9 @@
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">Адмена</string>
<!-- Error message snackbar shown after the user tried to select a default folder which cannot be altered -->
<string name="bookmark_cannot_edit_root">Нельга рэдагаваць прадвызначаныя папкі</string>
<!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">Налады аховы</string>
@ -1216,16 +1257,24 @@
<string name="enhanced_tracking_protection_allowed">Дазволены</string>
<!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_title">Трэкеры сацыяльных сетак</string>
<!-- Description of social media trackers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_description">Абмяжоўвае мажлівасць сацыяльных сетак асочваць вашу дзейнасць у сеціве.</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">Міжсайтавыя кукі асочвання</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Майнеры крыптавалют</string>
<!-- Description of cryptominers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_description">Не дазваляе шкодным скрыптам атрымаць доступ да Вашай прылады для здабычы крыптавалюты.</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Збіральнікі лічбавых адбіткаў</string>
<!-- Description of fingerprinters that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_description">Спыняе збор унікальнай ідэнтыфікацыйнай інфармацыі пра вашу прыладу, якая можа быць выкарыстана для сачэння.</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Змест з элементамі сачэння</string>
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_description">Спыняе загрузку вонкавай рэкламы, відэа і іншага змесціва, якое змяшчае код асочвання. Можа адбіцца на некаторых функцыях вэб-сайта.</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) -->
<string name="etp_onboarding_cfr_message">Фіялетавы колер шчыта азначае, што %s перапыніў асочвальнікаў на сайце. Націсніце, каб даведацца больш.</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Ахова ўключана на гэтым сайце</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
@ -1247,6 +1296,12 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Бібліятэкі OSS</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">Трэкеры перанакіравання</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">Ачышчае кукі, усталяваныя шляхам перанакіравання на вядомыя асочвальныя вэб-сайты.</string>
<!-- About page link text to open support link -->
<string name="about_support">Падтрымка</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -356,6 +356,14 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Taq rutzijol</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">ÜTZ</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Tiq\'at</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Rub\'i\' mol</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Tixim wakami</string>
@ -662,6 +670,10 @@
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Keyuj %1$d ch\'akulal</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Wakami</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Iwir</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Ruk\'isib\'äl 24 ramaj</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -345,6 +345,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Hysbysiadau</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Casgliad Ychwanegion Cyfaddas</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">Iawn</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Diddymu</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Enwr casgliad</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Perchennog y casgliad (ID Defnyddiwr)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Maer casgliad Ychwanegion wedii addasu. Yn gadael y rhaglen i osod y newidiadau…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Cydweddu nawr</string>
@ -642,6 +656,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Dileu %1$d eitem</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Heddiw</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ddoe</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 awr ddiwethaf</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -351,6 +351,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Benachrichtigungen</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Benutzerdefinierte Add-on-Sammlung</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Abbrechen</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Name der Sammlung</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Sammlungsbesitzer (Benutzer-ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Add-on-Sammlung geändert. Anwendung wird beendet, um Änderungen zu übernehmen…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Jetzt synchronisieren</string>
@ -538,6 +552,14 @@
<string name="recently_closed_empty_message">Keine kürzlich geschlossenen Tabs vorhanden</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Tabs</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Tab-Ansicht</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Liste</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Raster</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Tabs schließen</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -654,6 +676,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d Elemente löschen</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Heute</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Gestern</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Letzte 24 Stunden</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -797,6 +823,8 @@
<string name="preference_phone_feature_location">Standort</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Benachrichtigung</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Dauerhafter Speicher</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Um Erlaubnis fragen</string>
<!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Powěźeńki</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Swójska dodankowa zběrka</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">W pórěźe</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Pśetergnuś</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Mě zběrki</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Wobsejźaŕ zběrki (wužywaŕski ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Dodankowa zběrka jo se změniła. Nałoženje se kóńcy, aby se změny nałožyli…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Něnto synchronizěrowaś</string>
@ -528,6 +542,14 @@
<string name="recently_closed_empty_message">How njejsu rowno zacynjone rejtarki</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Rejtariki</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Rejtarikowy naglěd</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lisćina</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Kśidno</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Rejtariki zacyniś</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -643,6 +665,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Zapiski za lašowanje: %1$d</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Źinsa</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Cora</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Zachadne 24 góźinow</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -783,6 +809,8 @@
<string name="preference_phone_feature_location">Stojnišćo</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Powěźeńka</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Trajny składowak</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Wó dowólnosć se pšašaś</string>
<!-- Label that indicates that a permission must be blocked -->

@ -343,6 +343,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notifications</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Custom Add-on collection</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancel</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Collection name</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Collection owner (User ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Add-on collection modified. Quitting the application to apply changes…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sync now</string>
@ -524,6 +538,14 @@
<string name="recently_closed_empty_message">No recently closed tabs here</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Tabs</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Tab view</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">List</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Grid</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Close tabs</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -639,6 +661,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Delete %1$d items</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Today</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Yesterday</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Last 24 hours</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -776,6 +802,8 @@
<string name="preference_phone_feature_location">Location</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notification</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Persistent Storage</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Ask to allow</string>
<!-- Label that indicates that a permission must be blocked -->

@ -144,6 +144,8 @@
<string name="browser_menu_install_on_homescreen">Install</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Synchronised tabs</string>
<!-- Content description (not visible, for screen readers etc.) for the Resync tabs button -->
<string name="resync_button_content_description">Resynchronise</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Find in page</string>
<!-- Browser menu button that creates a private tab -->
@ -265,6 +267,8 @@
<string name="preferences_open_links_in_a_private_tab">Open links in a private tab</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Allow screenshots in private browsing</string>
<!-- Will inform the user of the risk of activating Allow screenshots in private browsing option -->
<string name="preferences_screenshots_in_private_mode_disclaimer">If allowed, private tabs will also be visible when multiple apps are open</string>
<!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Add private browsing shortcut</string>
<!-- Preference for accessibility -->
@ -286,6 +290,8 @@
<!-- Preference for customizing the home screen -->
<string name="preferences_home">Home</string>
<!-- Preference for gestures based actions -->
<string name="preferences_gestures">Gestures</string>
<!-- Preference for settings related to visual options -->
<string name="preferences_customize">Customise</string>
<!-- Preference description for banner about signing in -->
@ -320,8 +326,12 @@
<string name="preferences_search_browsing_history">Search browsing history</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Search bookmarks</string>
<!-- Preference title for switch preference to suggest synced tabs when searching -->
<string name="preferences_search_synced_tabs">Search synchronised tabs</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">Account settings</string>
<!-- Preference for enabling url autocomplete-->
<string name="preferences_enable_autocomplete_urls">Autocomplete URLs</string>
<!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Open links in apps</string>
@ -333,6 +343,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notifications</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Custom Add-on collection</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancel</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Collection name</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Collection owner (User ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Add-on collection modified. Quitting the application to apply changes…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synchronise now</string>
@ -458,6 +482,16 @@
<!-- Preference for using following device theme -->
<string name="preference_follow_device_theme">Follow device theme</string>
<!-- Gestures Preferences-->
<!-- Preferences for using pull to refresh in a webpage -->
<string name="preference_gestures_website_pull_to_refresh">Pull to refresh</string>
<!-- Preference for using the dynamic toolbar -->
<string name="preference_gestures_dynamic_toolbar">Scroll to hide toolbar</string>
<!-- Preference for switching tabs by swiping horizontally on the toolbar -->
<string name="preference_gestures_swipe_toolbar_switch_tabs">Swipe toolbar sideways to switch tabs</string>
<!-- Preference for showing the opened tabs by swiping up on the toolbar-->
<string name="preference_gestures_swipe_toolbar_show_tabs">Swipe toolbar up to open tabs</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">Sessions</string>
@ -504,6 +538,14 @@
<string name="recently_closed_empty_message">No recently closed tabs here</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Tabs</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Tab view</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">List</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Grid</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Close tabs</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -620,6 +662,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Delete %1$d items</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Today</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Yesterday</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Last 24 hours</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -757,6 +803,8 @@
<string name="preference_phone_feature_location">Location</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notification</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Persistent Storage</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Ask to allow</string>
<!-- Label that indicates that a permission must be blocked -->
@ -1045,7 +1093,7 @@
<!-- 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)
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 -->
<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 -->
@ -1136,6 +1184,8 @@
<string name="sign_in_with_camera">Sign in with your camera</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Use email instead</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[No account? <u>Create one</u> to synchronise Firefox between devices.]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox will stop synchronising with your account, but wont delete any of your browsing data on this device.</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1243,6 +1293,11 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | OSS Libraries</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">Redirect Trackers</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">Clears cookies set by redirects to known tracking web sites.</string>
<!-- About page link text to open support link -->
<string name="about_support">Support</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
@ -1288,7 +1343,7 @@
<string name="add_to_homescreen_text_placeholder">Shortcut name</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">You can easily add this web site 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 web site 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 -->
<string name="preferences_passwords_logins_and_passwords">Logins and passwords</string>
@ -1359,8 +1414,12 @@
<string name="logins_site_copied">Site copied to clipboard</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">Copy password</string>
<!-- Content Description (for screenreaders etc) read for the button to clear a password while editing a login-->
<string name="saved_logins_clear_password">Clear password</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">Copy username</string>
<!-- Content Description (for screenreaders etc) read for the button to clear a username while editing a login -->
<string name="saved_login_clear_username">Clear username</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Copy site</string>
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins -->
@ -1515,7 +1574,7 @@
<string name="saved_login_duplicate">A login with that username already exists</string>
<!-- 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>
<!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Please re-authenticate.</string>
@ -1535,7 +1594,7 @@
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Top site limit reached</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">To add a new top site, remove one. Long press the site and select remove.</string>
<string name="top_sites_max_limit_content_2">To add a new top site, remove one. Touch and hold the site and select remove.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">OK, Got It</string>
@ -1545,7 +1604,7 @@
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Remove</string>
<!-- depcrecated: text for the firefox account onboarding card header
<!-- Deprecated: 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">Get the most out of %s.</string>
@ -1553,4 +1612,9 @@
<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 -->
<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 web site to your phones Home screen to have instant access and browse faster with an app-like experience.</string>
</resources>

@ -343,6 +343,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notificaciones</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Colección de complementos personalizada</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">Aceptar</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancelar</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Nombre de la colección</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Dueño de la colección (ID de usuario)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Colección de complementos modificada. Cerrando la aplicación para aplicar los cambios…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ahora</string>
@ -642,6 +656,10 @@
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d elementos</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Hoy</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ayer</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -351,6 +351,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notificaciones</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Colección de complementos personalizada</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancelar</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Nombre de la colección</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Dueño de la colección (ID de usuario)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Colección de complementos modificada. Cerrando la aplicación para aplicar los cambios…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ahora</string>
@ -538,6 +552,14 @@
<string name="recently_closed_empty_message">No hay pestañas cerradas recientemente</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Pestañas</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Vista de pestaña</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Cuadrícula</string>
<!-- 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 -->
@ -654,6 +676,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d elementos</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Hoy</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ayer</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -795,6 +821,8 @@
<string name="preference_phone_feature_location">Ubicación</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificación</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Almacenamiento persistente</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Pedir permiso</string>
<!-- Label that indicates that a permission must be blocked -->

@ -27,14 +27,31 @@
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s pestañas abiertas. Tocar para cambiar de pestaña.</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 seleccionado</string>
<!-- Label of button in create collection dialog for creating a new collection -->
<string name="tab_tray_add_new_collection">Añadir nueva colección</string>
<!-- Label of editable text in create collection dialog for naming a new collection -->
<string name="tab_tray_add_new_collection_name">Nombre</string>
<!-- Label of button in save to collection dialog for selecting a current collection -->
<string name="tab_tray_select_collection">Seleccionar colección</string>
<!-- Content description for close button while in multiselect mode in tab tray -->
<string name="tab_tray_close_multiselect_content_description">Salir del modo de selección múltiple</string>
<!-- Content description for save to collection button while in multiselect mode in tab tray -->
<string name="tab_tray_collection_button_multiselect_content_description">Guardar pestañas seleccionadas en la colección</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">%1$s seleccionado</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">%1$s deseleccionada</string>
<!-- Content description announcement when exiting multiselect mode in tab tray -->
<string name="tab_tray_exit_multiselect_content_description">Has salido del modo de selección múltiple</string>
<!-- Content description announcement when entering multiselect mode in tab tray -->
<string name="tab_tray_enter_multiselect_content_description">Has ingresado al modo de selección múltiple, selecciona pestañas para guardar en una colección</string>
<!-- Content description on checkmark while tab is selected in multiselect mode in tab tray -->
<string name="tab_tray_multiselect_selected_content_description">Seleccionado</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s es producido por @fork-maintainers.</string>
@ -67,6 +84,9 @@
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ahora 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">Puedes configurar Firefox para que abra automáticamente enlaces en aplicaciones.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Ir a ajustes</string>
<!-- Text for the negative action button -->
@ -332,6 +352,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notificaciones</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Colección de complementos personalizada</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancelar</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Nombre de la colección</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Dueño de la colección (ID de usuario)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Colección de complementos modificada. Cerrando la aplicación para aplicar los cambios…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ahora</string>
@ -633,6 +667,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d elementos</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Hoy</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ayer</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -810,6 +848,8 @@
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Menú de la colección</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description2">Recolecta las cosas que te importan.\nAgrupa las búsquedas, los sitios y las pestañas similares para acceder a ellas rápidamente.</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Seleccionar pestañas</string>
@ -953,6 +993,8 @@
<string name="qr_scanner_dialog_negative">DENEGAR</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">¿Seguro que quieres eliminar %1$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">Eliminar esta pestaña eliminará toda la colección. Puedes crear nuevas colecciones en cualquier momento.</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">¿Eliminar %1$s?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection -->
@ -1074,6 +1116,10 @@
<string name="onboarding_whats_new_description_linktext">Obtén respuestas aquí</string>
<!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Aprender más</string>
<!-- 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)
The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_3">Te has conectado como %s en otro navegador Firefox en este dispositivo. ¿Quieres conectarte con esta cuenta?</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Sí, iniciar sesión</string>
<!-- text for the automatic sign-in button while signing in is in process -->
@ -1166,6 +1212,8 @@
<string name="sign_in_with_camera">Inicia sesión con tu cámara</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Usar el correo</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[¿No tienes cuenta? <u>Crea una</u> para sincronizar Firefox entre dispositivos.]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox dejará de sincronizar tu cuenta, pero no se eliminarán los datos de navegación en este dispositivo.</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1273,6 +1321,9 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Bibliotecas OSS</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">Rastreadores de redirección</string>
<!-- About page link text to open support link -->
<string name="about_support">Ayuda</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -350,6 +350,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Ilmoitukset</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Mukautettu lisäosakokoelma</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Peruuta</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Kokoelman nimi</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Kokoelman omistaja (käyttäjätunniste)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Lisäosakokoelmaa muokattu. Lopetetaan sovellus, jotta muutokset tulevat voimaan…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkronoi nyt</string>
@ -535,6 +549,14 @@
<string name="recently_closed_empty_message">Ei viimeksi suljettuja välilehtiä</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Välilehdet</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Välilehtinäkymä</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Ruudukko</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Sulje välilehdet</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -653,6 +675,10 @@
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Poista %1$d tietuetta</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Tänään</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Eilen</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Viimeiset 24 tuntia</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -791,6 +817,8 @@
<string name="preference_phone_feature_location">Sijainti</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Ilmoitus</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Pysyvä tallennustila</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Kysy lupaa</string>
<!-- Label that indicates that a permission must be blocked -->

@ -347,6 +347,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notifikaasjes</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Oanpaste add-onkolleksje</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Annulearje</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Namme kolleksje</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Eigener kolleksje (brûkers-ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Add-onkolleksje oanpast. Tapassing wurdt ôfsluten om wizigingen ta te passen…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">No syngronisearje</string>
@ -643,6 +657,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d items fuortsmite</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Hjoed</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Juster</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Lêste 24 oer</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -348,6 +348,21 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Ñemomarandu</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Moĩmbaha aty mombaepyre</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">MONEĨ</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Heja</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Ñembyatyha réra</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Ñembyatyha jára (puruhára ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Moĩmbaha aty moambuepyre. Embotyhína tembipurui emoambuekuaa hag̃ua…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Embojuehe koág̃a</string>
@ -651,6 +666,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Emboguete %1$d mbaepuru</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Koárape</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Kuehe</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 aravo ohasamóva</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -78,6 +78,12 @@
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">अभी नहीं</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">सेटिंग पर जाएं</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">सेटिंग पर जाएं</string>
<!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">नया टैब</string>
@ -309,6 +315,9 @@
<!-- Preference for add_ons -->
<string name="preferences_addons">ऐड-ऑन</string>
<!-- Preference for notifications -->
<string name="preferences_notifications">अधिसूचनाएं</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">अब सिंक करें</string>
@ -470,6 +479,27 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<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>
<!-- 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 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 -->
<!-- Title for the list of tabs -->
<string name="tab_header_label">खुले टैब</string>
@ -489,6 +519,10 @@
<string name="tab_tray_menu_item_save">संग्रहण में सहेजें</string>
<!-- Text shown in the menu for sharing all tabs -->
<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 -->
<string name="tab_tray_menu_item_close">सभी टैब बंद करें</string>
<!-- Shortcut action to open new tab -->
@ -535,6 +569,8 @@
<!-- Text for the menu button to remove a top site -->
<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 -->
<string name="pwa_site_controls_title_private">%1$s (निजी मोड)</string>
@ -736,10 +772,6 @@
<string name="collections_header">संग्रह</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<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 -->
<string name="create_collection_select_tabs">टैब चुने</string>
<!-- Title for the "select collection" step of the collection creator -->
@ -992,13 +1024,8 @@
<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 -->
<string name="onboarding_whats_new_description_linktext">यहां उत्तर पाएं</string>
<!-- 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>
<!-- 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)
The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_2">आप इस फ़ोन पर किसी अन्य Firefox ब्राउज़र पर %s के रूप में साइन इन हैं। क्या आप इस खाते से साइन इन करना चाहेंगे?</string>
<!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">अधिक जानें</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">हां, मुझे साइन इन करें</string>
<!-- text for the automatic sign-in button while signing in is in process -->
@ -1249,9 +1276,6 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">शॉर्टकट नाम</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">आप आसानी से इस वेबसाइट को अपने फ़ोन मुख्य स्क्रीन पर तुरंत ऐक्सेस के लिए जोड़ सकते हैं और ऐप जैसे अनुभव के साथ तेज़ी से ब्राउज़ कर सकते हैं।</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">लॉगिन और पासवर्ड</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1489,7 +1513,7 @@
<string name="saved_login_duplicate">एक लॉगिन इस उपयोगकर्ता नाम के साथ मौजूद है</string>
<!-- 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">अन्य डिवाइस कनेक्ट करें</string>
<!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">कृपया पुनः प्रमाणित करें।</string>
@ -1502,12 +1526,26 @@
<!-- 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">सिंक करने के लिए साइन इन करें</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 -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">शीर्ष साइट सीमा पहुंच गई</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">एक नई शीर्ष साइट जोड़ने के लिए, एक हटा दें। साइट को लंबे समय तक दबाएं और निकालें का चयन करें।</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">ठीक है, समझ गए</string>
<!-- Deprecated: 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>
<!-- 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">आप इस फ़ोन पर किसी अन्य Firefox ब्राउज़र पर %s के रूप में साइन इन हैं। क्या आप इस खाते से साइन इन करना चाहेंगे?</string>
<!-- Deprecated: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">आप आसानी से इस वेबसाइट को अपने फ़ोन मुख्य स्क्रीन पर तुरंत ऐक्सेस के लिए जोड़ सकते हैं और ऐप जैसे अनुभव के साथ तेज़ी से ब्राउज़ कर सकते हैं।</string>
</resources>

@ -344,6 +344,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Obavijesti</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Prilagođena kolekcija dodataka</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">U redu</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Odustani</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Ime kolekcije</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Vlasnik kolekcije (ID korisnika)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Izmijenjena je kolekcija dodataka. Napuštanje aplikacije za primjenu izmjena…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sinkroniziraj sada</string>
@ -530,6 +544,14 @@
<string name="recently_closed_empty_message">Ovdje nema nedavno zatvorenih kartica</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Kartice</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Prikaz kartica</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Popis</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Mreža</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Zatvori kartice</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -647,6 +669,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Izbriši %1$d stavke</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Danas</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Jučer</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Zadnjih 24 sata</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -788,6 +814,8 @@
<string name="preference_phone_feature_location">Lokacija</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Obavijest</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Trajna pohrana</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Zatraži dozvolu</string>
<!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Zdźělenki</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Swójska přidatkowa zběrka</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">W porjadku</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Přetorhnyć</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Mjeno zběrki</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Wobsedźer zběrki (wužiwarski ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Přidatkowa zběrka je so změniła. Nałoženje so kónči, zo bychu so změny nałožili…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Nětko synchronizować</string>
@ -530,6 +544,14 @@
<string name="recently_closed_empty_message">Tu žane runje začinjene rajtarki njejsu</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Rajtarki</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Rajtarkowy napohlad</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lisćina</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Lěsyca</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Rajtarki začinić</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -646,6 +668,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Zapiski za zhašenje: %1$d</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Dźensa</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Wčera</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Zańdźene 24 hodźin</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -784,6 +810,8 @@
<string name="preference_phone_feature_location">Stejnišćo</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Zdźělenka</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Trajny składowak</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Wo dowolnosć so prašeć</string>
<!-- Label that indicates that a permission must be blocked -->

@ -347,6 +347,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Értesítések</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Egyéni kiegészítőgyűjtemény</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Mégse</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Gyűjtemény neve</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Gyűjtemény tulajdonosa (felhasználói azonosító)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">A kiegészítőgyűjtemény módosítva. Kilépés az alkalmazásból a változások érvényesítéséhez…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Szinkronizálás most</string>
@ -532,6 +546,14 @@
<string name="recently_closed_empty_message">Nincs itt nemrég bezárt lap</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Lapok</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Lapnézet</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Rács</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Lapok bezárása</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -648,6 +670,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d elem törlése</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Ma</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Tegnap</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Elmúlt 24 óra</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -786,6 +812,8 @@
<string name="preference_phone_feature_location">Hely</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Értesítés</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Állandó tároló</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Kérdezzen rá</string>
<!-- Label that indicates that a permission must be blocked -->

@ -146,6 +146,8 @@
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Համաժամեցված ներդիրներ</string>
<!-- Content description (not visible, for screen readers etc.) for the Resync tabs button -->
<string name="resync_button_content_description">Կրկնահամաժամեցում</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Գտնել էջում</string>
<!-- Browser menu button that creates a private tab -->
@ -327,6 +329,8 @@
<string name="preferences_search_browsing_history">Որոնել դիտարկումների պատմությունում</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Որոնել էջանիշեր</string>
<!-- Preference title for switch preference to suggest synced tabs when searching -->
<string name="preferences_search_synced_tabs">Որոնել համաժամեցված ներդիրները</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">Հաշվի կարգավորումներ</string>
<!-- Preference for enabling url autocomplete-->
@ -1159,6 +1163,8 @@
<string name="sign_in_with_camera">Մուտք գործեք ձեր տեսախցիկի հետ</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Փոխարենը օգտ. էլ. փոստ</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[Չունե՞ք հաշիվ: <u>Ստեղծեք նորը</u>՝ Firefox-ը տարբեր սարքերի միջև համաժամեցնելու համար:]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox-ը կկանգնեցնի համաժամացումը ձեր հաշվի հետ, բայց չի ջնջվի այս սարքում ձեր դիտարկման որևէ տվյալ։</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1268,6 +1274,11 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | OSS գրադարաններ</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">Վերաուղղորդել հետագծիչները</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">Վերաուղղորդմամբ կայված՝ մաքրում է թխուկները հայտնի հետագծիչ կայքերից:</string>
<!-- About page link text to open support link -->
<string name="about_support">Աջակցում</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -277,6 +277,8 @@
<string name="preferences_override_fxa_server">שרת Firefox Account מותאם אישית</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">שרת Sync מותאם אישית</string>
<!-- Toast shown after updating the FxA/Sync server override preferences -->
<string name="toast_override_fxa_sync_server_done">שרת Firefox Account/Sync השתנה. היישום ייסגר לצורך להחלת השינויים…</string>
<!-- Preference category for account information -->
<string name="preferences_category_account">חשבון</string>
<!-- Preference shown on banner to sign into account -->
@ -341,6 +343,21 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">התרעות</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">אוסף תוספות מותאם אישית</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">אישור</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">ביטול</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">שם האוסף</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">הבעלים של האוסף (מזהה משתמש)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">אוסף התוספות השתנה. היישום ייסגר לצורך להחלת השינויים…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">סנכרון כעת</string>
@ -522,6 +539,14 @@
<string name="recently_closed_empty_message">אין כאן לשוניות שנסגרו לאחרונה</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">לשוניות</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">תצוגת לשוניות</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">רשימה</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">רשת</string>
<!-- 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 -->
@ -635,6 +660,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">מחיקת %1$d פריטים</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">היום</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">אתמול</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 השעות האחרונות</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -1181,6 +1181,8 @@
<string name="sign_in_with_camera">カメラを使ってログイン</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">代わりにメールアドレスを使う</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[アカウントをお持ちでない方は、<u>アカウントを作成</u>して Firefox を端末間で同期しましょう。]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox はアカウントとの同期を停止しますが、この端末上の閲覧データは削除されません。</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1288,6 +1290,11 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | OSS ライブラリー</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">リダイレクトトラッカー</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">既知のトラッキングウェブサイトへのリダイレクトにより設定された Cookie を消去します。</string>
<!-- About page link text to open support link -->
<string name="about_support">サポート</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -339,6 +339,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Хабарламалар</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Таңдауыңызша қосымшалар жинағы</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">ОК</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Бас тарту</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Жинақ атауы</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Жинақ иесі (Пайдаланушы идентификаторы)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Қосымшалар жинағы өзгертілген. Өзгерістерді іске асыру үшін қолданба жұмысын аяқтау…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Қазір синхрондау</string>
@ -635,6 +649,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d элементті өшіру</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Бүгін</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Кеше</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Соңғы 24 сағат</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -356,6 +356,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">알림</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">사용자 지정 부가 기능 모음집</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">확인</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">취소</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">모음집 이름</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">모음집 소유자 (사용자 ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">부가 기능 모음집이 변경되었습니다. 변경 사항을 적용하기 위해 응용 프로그램을 종료하는 중…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">지금 동기화</string>
@ -543,6 +557,14 @@
<string name="recently_closed_empty_message">최근에 닫은 탭 없음</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs"></string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">탭 보기</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">목록</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">그리드</string>
<!-- 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 -->
@ -660,6 +682,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d개 항목 삭제</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">오늘</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">어제</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">지난 24 시간</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -805,6 +831,8 @@
<string name="preference_phone_feature_location">위치</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">알림</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">영구 저장소</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">항상 확인</string>
<!-- Label that indicates that a permission must be blocked -->

@ -347,6 +347,21 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Varslinger</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Tilpasset tilleggssamling</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Avbryt</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Samlingsnavn</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Samlingseier (bruker-ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Tilleggssamling endret. Avslutter applikasjonen for å bruke endringer…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkroniser nå</string>
@ -534,6 +549,14 @@
<string name="recently_closed_empty_message">Ingen nylige lukkede faner her</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Faner</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Fanevisning</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Liste</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Rutenett</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Lukk faner</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -649,6 +672,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Slett %1$d elementer</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">I dag</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">I går</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Siste 24 timer</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -790,6 +817,8 @@
<string name="preference_phone_feature_location">Plassering</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Varsel</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Vedvarende lagring</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Be om å tillate</string>
<!-- Label that indicates that a permission must be blocked -->

@ -352,6 +352,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notificaties</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Aangepaste add-oncollectie</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Annuleren</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Naam collectie</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Eigenaar collectie (gebruikers-ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Add-oncollectie aangepast. Toepassing wordt afgesloten om wijzigingen toe te passen…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Nu synchroniseren</string>
@ -536,6 +550,14 @@
<string name="recently_closed_empty_message">Geen onlangs gesloten tabbladen hier</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Tabbladen</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Tabbladweergave</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lijst</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Raster</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Tabbladen sluiten</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -652,6 +674,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d items verwijderen</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Vandaag</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Gisteren</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Laatste 24 uur</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -789,6 +815,8 @@
<string name="preference_phone_feature_location">Locatie</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificatie</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Vaste opslag</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Vragen om toestemming</string>
<!-- Label that indicates that a permission must be blocked -->

@ -348,6 +348,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Varsel</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Tilpassa tilleggssamling</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Avbryt</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Samlingsnamn</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Samlingseigar (brukar-ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Tilleggssamling endra. Avsluttar applikasjonen for å bruke endringar…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkroniser no</string>
@ -650,6 +664,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Slett %1$d element</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">I dag</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">I går</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Siste 24 timar</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -267,6 +267,8 @@
<string name="preferences_open_links_in_a_private_tab">Dobrir los ligams en navigacion privada</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Permetre las capturas decran en navegacion privada</string>
<!-- Will inform the user of the risk of activating Allow screenshots in private browsing option -->
<string name="preferences_screenshots_in_private_mode_disclaimer">Se permés, los onglets privats seràn tanben visibles quand mantunas aplicacions son dubèrtas</string>
<!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Ajustar un acorchi per la navegacion privada</string>
<!-- Preference for accessibility -->

@ -348,6 +348,21 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Powiadomienia</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Inna kolekcja dodatków</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Anuluj</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Nazwa kolekcji</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Właściciel kolekcji (identyfikator użytkownika)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Zmieniono kolekcję dodatków. Wyłączanie aplikacji, aby zastosować zmiany…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synchronizuj</string>
@ -532,6 +547,14 @@
<string name="recently_closed_empty_message">Nie ma ostatnio zamkniętych kart</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Karty</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Wygląd kart</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Siatka</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Zamykanie kart</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -649,6 +672,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Usuń pozycje (%1$d)</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Dzisiaj</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Wczoraj</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Ostatnie 24 godziny</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -786,6 +813,8 @@
<string name="preference_phone_feature_location">Położenie</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Powiadomienia</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Przechowywanie danych na urządzeniu</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Pytanie o zezwolenie</string>
<!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notificações</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Coleção personalizada de extensões</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancelar</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Nome da coleção</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Proprietário da coleção (ID de usuário)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Coleção de extensões modificada. Saindo do aplicativo para aplicar as alterações…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar agora</string>
@ -528,6 +542,14 @@
<string name="recently_closed_empty_message">Nenhuma aba fechada recentemente aqui</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Abas</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Visão de abas</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Grade</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Fechar abas</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -643,6 +665,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Excluir %1$d itens</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Hoje</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ontem</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -781,6 +807,8 @@
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificações</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Armazenamento persistente</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Perguntar se deve permitir</string>
<!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Notificações</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Coleção personalizada de extras</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Cancelar</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Nome da coleção</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Proprietário da coleção (ID de utilizador)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Coleção de extras modificada. A sair da aplicação para aplicar alterações…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar agora</string>
@ -646,6 +660,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d itens</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Hoje</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Ontem</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -366,6 +366,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Уведомления</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Собственная коллекция дополнений</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Отмена</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Имя коллекции</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Владелец коллекции (ID пользователя)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Коллекция дополнений была изменена. Закрываем приложение, чтобы применить изменения…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Синхронизировать</string>
@ -667,6 +681,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Удалить %1$d элемент(а)</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Сегодня</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Вчера</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Последние 24 часа</string>
<!-- Text for the header that groups the history the past 7 days -->

@ -328,6 +328,8 @@
<string name="preferences_search_browsing_history">Navrhovať z histórie prehliadania</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Navrhovať zo záložiek</string>
<!-- Preference title for switch preference to suggest synced tabs when searching -->
<string name="preferences_search_synced_tabs">Hľadať v synchronizovaných kartách</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">Nastavenia účtu</string>
@ -344,6 +346,13 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Upozornenia</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Zrušiť</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Názov kolekcie</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synchronizovať</string>
@ -517,7 +526,6 @@
<!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Nemáte žiadne nedávno zatvorené karty</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">Zavrieť karty</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->

@ -329,6 +329,8 @@
<string name="preferences_search_browsing_history">Išči po zgodovini iskanja</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Iskanje po zaznamkih</string>
<!-- Preference title for switch preference to suggest synced tabs when searching -->
<string name="preferences_search_synced_tabs">Iskanje po sinhroniziranih zavihkih</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">Nastavitve računa</string>
@ -344,6 +346,13 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Obvestila</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">V redu</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Prekliči</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Ime zbirke</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sinhroniziraj zdaj</string>
@ -479,6 +488,9 @@
<!-- Preferences for using pull to refresh in a webpage -->
<string name="preference_gestures_website_pull_to_refresh">Povlecite za osvežitev</string>
<!-- Preference for switching tabs by swiping horizontally on the toolbar -->
<string name="preference_gestures_swipe_toolbar_switch_tabs">Podrsaj orodno vrstico vstran za preklop med zavihki</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">Seje</string>
@ -1163,6 +1175,8 @@
<string name="sign_in_with_camera">Prijavite se s kamero</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Namesto tega uporabite e-pošto</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[Nimate računa? <u>Ustvarite ga</u> za sinhronizacijo Firefoxa med napravami.]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox se bo prenehal sinhronizirati z vašim računom, vendar ne bo izbrisal podatkov o brskanju na tej napravi.</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1272,6 +1286,11 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Knjižnice OSS</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">Preusmeritve sledilcev</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">Počisti piškotke, ki jih nastavijo preusmeritve na znana sledilna spletna mesta.</string>
<!-- About page link text to open support link -->
<string name="about_support">Podpora</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -266,6 +266,8 @@
<string name="preferences_open_links_in_a_private_tab">Buka tutumbu di tab nyamuni</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Ngidinan layar dina langlangan nyamuni</string>
<!-- Will inform the user of the risk of activating Allow screenshots in private browsing option -->
<string name="preferences_screenshots_in_private_mode_disclaimer">Lamun diidinan, tab pribadi bakal katémbong nalika sababaraha aplikasi muka</string>
<!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Tambahan tarabas nyungsi nyamuni</string>
<!-- Preference for accessibility -->
@ -325,6 +327,8 @@
<!-- Preference for account settings -->
<string name="preferences_account_settings">Setélan akun</string>
<!-- Preference for enabling url autocomplete-->
<string name="preferences_enable_autocomplete_urls">Otokumplit URLs</string>
<!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Buka tutumbu dina aplikasi</string>
<!-- Preference for open download with an external download manager app -->
@ -463,6 +467,10 @@
<!-- Preference for using following device theme -->
<string name="preference_follow_device_theme">Turutan téma paranti</string>
<!-- Gestures Preferences-->
<!-- Preferences for using pull to refresh in a webpage -->
<string name="preference_gestures_website_pull_to_refresh">Betot pikeun nyegerkeun</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">Sesi</string>
@ -1056,10 +1064,6 @@
<string name="onboarding_account_sign_in_header">Mimitian nyingkronkeun markah, kecap konci, jeung nu lianna maké akun Firefox anjeun.</string>
<!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Lenyepan</string>
<!-- 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)
The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_2">Anjeun asup salaku %s dina séjén panyungsi Firefox di ieu telepon. Anjeun rék asup maké ieu akun?</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Enya, asupkeun</string>
<!-- text for the automatic sign-in button while signing in is in process -->
@ -1261,6 +1265,9 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Pabukon OSS</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">Meresihan réréméh anu diatur ku alihan ka raramatloka palacak anu dipikawanoh.</string>
<!-- About page link text to open support link -->
<string name="about_support">Pangrojong</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
@ -1306,8 +1313,6 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Ngaran takulan</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">Anjeun bisa kalawan gampang nambahkeun ieu raramatloka kana layar Tepas ponsél pikeun aksés instan sarta maluruh leuwih gancang kawas muka aplikasi.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Login jeung kecap sandi</string>
@ -1378,8 +1383,12 @@
<string name="logins_site_copied">Loka ditiron kana papan klip</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">Niron sandi</string>
<!-- Content Description (for screenreaders etc) read for the button to clear a password while editing a login-->
<string name="saved_logins_clear_password">Beresihan sandi</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">Niron sandiasma</string>
<!-- Content Description (for screenreaders etc) read for the button to clear a username while editing a login -->
<string name="saved_login_clear_username">Beresihan sandiasma</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Niron loka</string>
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins -->
@ -1537,7 +1546,7 @@
<string name="saved_login_duplicate">Login maké éta sandiasma geus aya</string>
<!-- 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">Sambungkeun séjén paranti.</string>
<!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Mangga oténtikasi ulang.</string>
@ -1556,8 +1565,6 @@
<!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Wates loka top geus kahontal</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">Pikeun nambah loka top anyar, piceun hiji. Pencét lila lokana sarta pilih piceun.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Okéh, Ngarti</string>
@ -1567,7 +1574,7 @@
<!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Piceun</string>
<!-- depcrecated: text for the firefox account onboarding card header
<!-- Deprecated: 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">Maksimalkeun %s.</string>
@ -1575,4 +1582,9 @@
<string name="no_collections_header1">Kumpulkeun hal anu penting pikeun anjeun</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Ngagabungkeun pamaluruhan, loka sareng tab anu sami pikeun aksés gancang engké.</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">Anjeun asup salaku %s dina séjén panyungsi Firefox di ieu telepon. Anjeun rék asup maké ieu akun?</string>
<!-- Deprecated: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">Anjeun bisa kalawan gampang nambahkeun ieu raramatloka kana layar Tepas ponsél pikeun aksés instan sarta maluruh leuwih gancang kawas muka aplikasi.</string>
</resources>

@ -350,6 +350,21 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Aviseringar</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Anpassad tilläggssamling</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Avbryt</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Samlingsnamn</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Samlingsägare (användar-ID)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Tilläggssamling ändrad. Avslutar applikationen för att tillämpa ändringar…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkronisera nu</string>
@ -537,6 +552,14 @@
<string name="recently_closed_empty_message">Inga nyligen stängda flikar här</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Flikar</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Flikvy</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Lista</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Rutnät</string>
<!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Stäng flikar</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -653,6 +676,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Ta bort %1$d poster</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Idag</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Igår</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Senaste 24 timmarna</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -791,6 +818,8 @@
<string name="preference_phone_feature_location">Plats</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Meddelanden</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Beständig lagring</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Fråga för att tillåta</string>
<!-- Label that indicates that a permission must be blocked -->

@ -53,6 +53,13 @@
<!-- Private Browsing -->
<!-- Title for private session option -->
<string name="private_browsing_title">Шумо дар реҷаи махфӣ қарор доред</string>
<!-- 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) -->
<string name="private_browsing_placeholder_description_2">
%1$s таърихи тамошокунӣ ва ҷустуҷӯи шуморо аз варақаҳои махфие, ки шумо мепӯшед ё вақте ки шумо барномаро хомӯш мекунед, пок мекунад. Ин амал шуморо аз сомонаҳо ё провайдери хизматрасонии интернет пинҳон намекунад, аммо аз корбарони дигаре, ки ин дастгоҳро истифода мебаранд, фаъолияти онлайни шуморо ба осонӣ махфӣ карда, нигоҳ медорад.</string>
<string name="private_browsing_common_myths">
Асотири маълум дар бораи тамошокунии махфӣ
</string>
<!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Нест кардани ҷаласа</string>
@ -64,22 +71,32 @@
<!-- Text for the negative button -->
<string name="cfr_neg_button_text">Не, ташаккур</string>
<!-- Search widget "contextual feature recommendation" (CFR) -->
<!-- Text for the main message. 'Firefox' intentionally hardcoded here.-->
<string name="search_widget_cfr_message">Firefox-ро зудтар кушоед. Ба экрани асосии худ виҷетеро илова намоед.</string>
<!-- Text for the positive button -->
<string name="search_widget_cfr_pos_button_text">Илова кардани виҷет</string>
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ҳоло не</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-ро танзим кунед, ки он дар барномаҳо пайвандҳоро ба таври худкор кушояд.</string>
<!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Гузариш ба танзимот</string>
<!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Нодида гузарондан</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">Дастрасии камера лозим аст. Ба «Танзимоти Android» гузаред, ба «Иҷозатҳо» зарба занед, пас ба «Иҷозат додан» зарба занед.</string>
<!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Гузариш ба танзимот</string>
<!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Нодида гузарондан</string>
<!-- Text for the banner message to tell users about our auto close feature. -->
<string name="tab_tray_close_tabs_banner_message">Танзим кунед, ки варақаҳои кушодашудае, ки дар як рӯз, ҳафта ё моҳи охир дида нашудаанд, ба таври худкор пӯшида шаванд.</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">Имконоти намоиш</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
@ -190,6 +207,10 @@
<string name="search_suggestions_onboarding_allow_button">Иҷозат додан</string>
<!-- Button in the search suggestions onboarding that does not allow search suggestions in private sessions -->
<string name="search_suggestions_onboarding_do_not_allow_button">Иҷозат дода нашавад</string>
<!-- Search suggestion onboarding hint title text -->
<string name="search_suggestions_onboarding_title">Ба пешниҳодҳои ҷустуҷӯ дар ҷаласаҳои махфӣ иҷозат диҳед?</string>
<!-- Search suggestion onboarding hint description text, first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="search_suggestions_onboarding_text">%s ба низоми ҷустуҷӯии пешфарз ҳамаи он чизеро, ки шумо ба навори нишонӣ ворид мекунед, мефиристонад.</string>
<!-- Search suggestion onboarding hint Learn more link text -->
<string name="search_suggestions_onboarding_learn_more_link">Маълумоти бештар</string>
@ -246,6 +267,10 @@
<string name="preferences_private_browsing_options">Баррасии махфӣ</string>
<!-- Preference for opening links in a private tab-->
<string name="preferences_open_links_in_a_private_tab">Кушодани пайвандҳо дар варақаи махфӣ</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Иҷозат додани аксҳои экран ҳангоми тамошокунии махфӣ</string>
<!-- Will inform the user of the risk of activating Allow screenshots in private browsing option -->
<string name="preferences_screenshots_in_private_mode_disclaimer">Агар иҷозат дода шавад, варақаҳои махфӣ низ ҳангоми кушода будани якчанд барнома намоён мешаванд</string>
<!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Илова кардани миёнбури тамошои махфӣ</string>
<!-- Preference for accessibility -->
@ -254,6 +279,8 @@
<string name="preferences_override_fxa_server">Сервери ҳисоби фармоишии Firefox</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">Сервери ҳамоҳангсозии фармоишӣ</string>
<!-- Toast shown after updating the FxA/Sync server override preferences -->
<string name="toast_override_fxa_sync_server_done">Сервери ҳисоб/ҳамоҳангсозии Firefox тағйир ёфт. Барои татбиқ кардани тағйирот барнома бояд хомӯш карда шавад…</string>
<!-- Preference category for account information -->
<string name="preferences_category_account">Ҳисоб</string>
<!-- Preference shown on banner to sign into account -->
@ -268,6 +295,8 @@
<string name="preferences_gestures">Ишораҳо</string>
<!-- Preference for settings related to visual options -->
<string name="preferences_customize">Фармоишдиҳӣ</string>
<!-- Preference description for banner about signing in -->
<string name="preferences_sign_in_description">Ба воситаи ҳисоби Firefox-и худ хатбаракҳо, таърих ва чизҳои дигарро ҳамоҳанг кунед.</string>
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
<string name="preferences_account_default_name">Ҳисоби Firefox</string>
<!-- Preference text for account title when there was an error syncing FxA -->
@ -313,6 +342,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Огоҳиномаҳо</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Маҷмӯаи ҷузъҳои иловагии фармоишӣ</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">ХУБ</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Бекор кардан</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Номи маҷмӯа</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Соҳиби маҷмӯа (ID-и корбар)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Маҷмӯаи ҷузъҳои иловагӣ тағйир ёфт. Барои татбиқ кардани тағйирот барнома бояд хомӯш карда шавад…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Ҳозир ҳамоҳанг кунед</string>
@ -336,6 +379,14 @@
<!-- Label indicating that sync is in progress -->
<string name="sync_syncing_in_progress">Ҳамоҳангсозӣ…</string>
<!-- Label summary indicating that sync failed. The first parameter is the date stamp showing last time it succeeded -->
<string name="sync_failed_summary">Ҳамоҳангсозӣ иҷро нашуд. Иҷрои охирин: %s</string>
<!-- Label summary showing never synced -->
<string name="sync_failed_never_synced_summary">Ҳамоҳангсозӣ иҷро нашуд. Ҳамоҳангсозии охирин: ҳеҷ гоҳ</string>
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
<string name="sync_last_synced_summary">Ҳамоҳангсозии охирин: %s</string>
<!-- Label summary showing never synced -->
<string name="sync_never_synced_summary">Ҳамоҳангсозии охирин: ҳеҷ гоҳ</string>
<!-- Text for displaying the default device name.
The first parameter is the application name, the second is the device manufacturer name
and the third is the device model. -->
@ -378,10 +429,18 @@
<string name="preferences_telemetry">Телеметрия</string>
<!-- Preference switch for usage and technical data collection -->
<string name="preference_usage_data">Истифодабарӣ ва маълумоти техникӣ</string>
<!-- Preference description for usage and technical data collection -->
<string name="preferences_usage_data_description">Барои беҳтар кардани %1$s маълумоти самаранокӣ, истифодабарӣ, сахтафзор ва танзимоти фармоишӣ дар бораи браузери шумо бо Mozilla мубодила карда шавад</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Маълумоти маркетингӣ</string>
<!-- Preference description for marketing data collection, parameter is the app name (e.g. Firefox) -->
<string name="preferences_marketing_data_description">Маълумот дар бораи хусусиятҳое, ки шумо дар %1$s истифода мебаред бо Leanplum, яъне фурӯшандаи маркетинги мобилии мо, мубодила карда шавад</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">Таҷрибаҳо</string>
<!-- Summary for experiments preferences -->
<string name="preference_experiments_summary">Ба Mozilla имкон медиҳад, ки барои хусусиятҳои таҷрибавӣ маълумотро насб ва ҷамъ кунад</string>
<!-- Preference switch for crash reporter -->
<string name="preferences_crash_reporter">Гузориш дар бораи садама</string>
<!-- Preference switch for Mozilla location service -->
<string name="preferences_mozilla_location_service">Хадамоти ҷойгиршавии Mozilla</string>
<!-- Preference switch for app health report. The first parameter is the name of the application (For example: Fenix) -->
@ -390,6 +449,8 @@
<!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">Фаъол кардани ҳамоҳангсозӣ</string>
<!-- Preference for pairing -->
<string name="preferences_sync_pair">Рамзи ҷуфтро дар версияи Firefox-и мизи корӣ скан кунед</string>
<!-- Preference for account login -->
<string name="preferences_sync_sign_in">Ворид шудан</string>
<!-- Preference for reconnecting to FxA sync -->
@ -397,6 +458,9 @@
<!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">Барҳам додани ҳисоб</string>
<!-- Pairing Feature strings -->
<!-- Instructions on how to access pairing -->
<string name="pair_instructions_2"><![CDATA[Рамзи QR-ро, ки дар <b>firefox.com/pair</b> нишон дода шудааст, скан кунед]]></string>
<!-- Button to open camera for pairing -->
<string name="pair_open_camera">Кушодани камера</string>
<!-- Button to cancel pairing -->
@ -424,6 +488,11 @@
<!-- Preference for using the dynamic toolbar -->
<string name="preference_gestures_dynamic_toolbar">Барои пинҳон кардани навори абзорҳо ҳаракат кунед</string>
<!-- Preference for switching tabs by swiping horizontally on the toolbar -->
<string name="preference_gestures_swipe_toolbar_switch_tabs">Барои иваз кардани варақаҳо аз болои навори абзорҳо ба тарафи лозимӣ бо ангуш молед</string>
<!-- Preference for showing the opened tabs by swiping up on the toolbar-->
<string name="preference_gestures_swipe_toolbar_show_tabs">Барои кушодани варақаҳо аз болои навори абзорҳо ба боло бо ангуш молед</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">Ҷаласаҳо</string>
@ -456,6 +525,8 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<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.
@ -465,7 +536,18 @@
%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 for tabs management -->
<string name="preferences_tabs">Варақаҳо</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Намоиши варақаҳо</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Рӯйхат</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Тӯр</string>
<!-- 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 -->
@ -497,6 +579,8 @@
<string name="tab_tray_menu_item_save">Нигоҳ доштан дар маҷмӯа</string>
<!-- Text shown in the menu for sharing all tabs -->
<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 -->
@ -505,6 +589,10 @@
<string name="tab_tray_menu_open_new_tab">Варақаи нав</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">Гузариш ба саҳифаи асосӣ</string>
<!-- Shortcut action to toggle private mode -->
<string name="tab_tray_menu_toggle">Гузариш ба реҷаи варақзанӣ</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">Тоза кардани варақаҳо аз маҷмӯа</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
<string name="close_tab">Пӯшидани варақа</string>
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
@ -573,6 +661,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Нест кардани %1$d ҷузъ</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Имрӯз</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Дирӯз</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 соати охир</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -678,11 +770,21 @@
<!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_2">Хатбаракҳо нест карда шуданд</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_3">Несткунии ҷузвадонҳои интихобшуда</string>
<!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">БОТИЛ КАРДАН</string>
<!-- Site Permissions -->
<!-- Site permissions preferences header -->
<string name="permissions_header">Иҷозатҳо</string>
<!-- Button label that take the user to the Android App setting -->
<string name="phone_feature_go_to_settings">Гузариш ба Танзимот</string>
<!-- Content description (not visible, for screen readers etc.): Quick settings sheet
to give users access to site specific information / settings. For example:
Secure settings status and a button to modify site permissions -->
<string name="quick_settings_sheet">Лавҳаи танзимоти зуд</string>
<!-- Label that indicates that this option it the recommended one -->
<string name="phone_feature_recommended">Тавсияшуда</string>
<!-- button that allows editing site permissions settings -->
@ -704,6 +806,8 @@
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Огоҳинома</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Захирагоҳи доимӣ</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Дархости иҷозат</string>
<!-- Label that indicates that a permission must be blocked -->
@ -721,6 +825,14 @@
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Иҷозат додани аудио ва видео</string>
<!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only2">Бастани аудио ва видео танҳо дар шабакаи маълумоти мобилӣ</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">Аудио ва видео дар шабакаи Wi-Fi пахш мешаванд</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio2">Бастани танҳои аудио</string>
<!-- Label that indicates that all video and audio autoplay is blocked -->
<string name="preference_option_autoplay_blocked3">Бастани аудио ва видео</string>
<!-- Summary of delete browsing data on quit preference if it is set to on -->
<string name="delete_browsing_data_quit_on">Фаъол</string>
<!-- Summary of delete browsing data on quit preference if it is set to off -->
@ -731,6 +843,8 @@
<string name="collections_header">Маҷмӯаҳо</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Менюи маҷмӯаҳо</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description2">Чизҳоеро, ки ба шумо муҳиманд, ҷамъ кунед\nҶустуҷӯҳо, сомонаҳо ва варақаҳои монандро барои дастрасии фаврӣ дар оянда якҷоя кунед.</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Варақаҳоро интихоб намоед</string>
<!-- Title for the "select collection" step of the collection creator -->
@ -741,6 +855,8 @@
<string name="create_collection_add_new_collection">Илова кардани маҷмӯаи нав</string>
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_select_all">Ҳамаро интихоб кардан</string>
<!-- Button to deselect all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_deselect_all">Бекор кардани интихоб</string>
<!-- Text to prompt users to select the tabs to save in the "select tabs" step of the collection creator -->
<string name="create_collection_save_to_collection_empty">Варақаҳоро барои нигоҳ доштан интихоб намоед</string>
<!-- Text to show users how many tabs they have selected in the "select tabs" step of the collection creator.
@ -779,6 +895,8 @@
<string name="share_device_subheader">Фиристодан ба дастгоҳ</string>
<!-- Sub-header in the dialog to share a link to an app from the full list -->
<string name="share_link_all_apps_subheader">Ҳамаи амалҳо</string>
<!-- Sub-header in the dialog to share a link to an app from the most-recent sorted list -->
<string name="share_link_recent_apps_subheader">Истифодашудаи охирин</string>
<!-- An option from the share dialog to sign into sync -->
<string name="sync_sign_in">Барои ҳамоҳангсозӣ ворид шавед</string>
<!-- An option from the share dialog to send link to all other sync devices -->
@ -789,14 +907,23 @@
<string name="sync_offline">Офлайн</string>
<!-- An option to connect additional devices -->
<string name="sync_connect_device">Пайваст кардани дастгоҳи дигар</string>
<!-- The dialog text shown when additional devices are not available -->
<string name="sync_connect_device_dialog">Барои фиристодани варақа, ақаллан дар дастгоҳи дигар ба Firefox ворид шавед.</string>
<!-- Confirmation dialog button -->
<string name="sync_confirmation_button">Фаҳмо</string>
<!-- Share error message -->
<string name="share_error_snackbar">Ба ин барнома мубодила карда намешавад</string>
<!-- Add new device screen title -->
<string name="sync_add_new_device_title">Фиристодан ба дастгоҳ</string>
<!-- Text for the warning message on the Add new device screen -->
<string name="sync_add_new_device_message">Ягон дастгоҳ пайваст нашуд</string>
<!-- Text for the button to learn about sending tabs -->
<string name="sync_add_new_device_learn_button">Маълумоти бештар дар бораи фиристодани варақаҳо…</string>
<!-- Text for the button to connect another device -->
<string name="sync_add_new_device_connect_button">Пайваст кардани дастгоҳи дигар…</string>
<!-- Notifications -->
<!-- The user visible name of the "notification channel" (Android 8+ feature) for the ongoing notification shown while a browsing session is active. -->
<string name="notification_pbm_channel_name">Ҷаласаи баррасии махфӣ</string>
@ -830,8 +957,12 @@
<string name="snackbar_private_tabs_closed">Варақаҳои махфӣ пӯшида шуданд</string>
<!-- Text shown in snackbar when user deletes all private tabs -->
<string name="snackbar_private_tabs_deleted">Варақаҳои махфӣ нест карда шуданд</string>
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
<string name="snackbar_deleted_undo">БОТИЛ КАРДАН</string>
<!-- Text shown in snackbar when user removes a top site -->
<string name="snackbar_top_site_removed">Сомона хориҷ карда шуд</string>
<!-- Text for action to undo deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_undo">Ботил кардан</string>
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_confirm">Тасдиқ кардан</string>
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it
@ -843,6 +974,8 @@
<string name="qr_scanner_dialog_negative">РАД КАРДАН</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">Шумо мутмаин ҳастед, ки мехоҳед %1$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">Агар шумо ин варақаро нест кунед, тамоми маҷмӯа нест карда мешавад. Шумо метавонед маҷмӯаҳои навро дар вақти дилхоҳ эҷод намоед.</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">%1$s-ро нест мекунед?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection -->
@ -853,18 +986,30 @@
<string name="full_screen_notification">Ба реҷаи экрани пурра ворид шуда истодааст</string>
<!-- Message for copying the URL via long press on the toolbar -->
<string name="url_copied">URL нусха бардошта шуд</string>
<!-- Sample text for accessibility font size -->
<string name="accessibility_text_size_sample_text_1">Ин матни намунавӣ мебошад. Дар ин ҷо матни намунавӣ нишон медиҳад, ки чӣ тавр он ҳангоми калон ва хурд кардани андозаи ҳуруф бо танзими ҷорӣ нишон дода мешавад.</string>
<!-- Summary for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_text_size_summary">Калонтар ё хурдтар кардани матн дар сомонаҳо</string>
<!-- Title for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_font_size_title">Андозаи ҳуруф</string>
<!-- Title for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_2">Андозагирии худкори ҳуруф</string>
<!-- Summary for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_summary">Андозаи ҳарф ба танзимоти Android-и шумо мувофиқат мекунад. Барои идора кардани андозаи ҳарфҳо дар ин ҷо, имкони ҷориро хомӯш кунед.</string>
<!-- Title for the Delete browsing data preference -->
<string name="preferences_delete_browsing_data">Нест кардани маълумоти баррасӣ</string>
<string name="preferences_delete_browsing_data">Нест кардани маълумоти тамошокунӣ</string>
<!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">Варақаҳои кушодашуда</string>
<!-- 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">%d варақа</string>
<!-- Title for the data and history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_data_title">Таърихи тамошокунӣ ва маълумоти сомонаҳо</string>
<!-- Subtitle for the data and history items in delete browsing data, parameter will be replaced with the
number of history items the user has -->
<string name="preferences_delete_browsing_data_browsing_data_subtitle">%d нишонӣ</string>
<!-- Title for history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_history_title">Таърих</string>
<!-- Subtitle for the history items in delete browsing data, parameter will be replaced with the
@ -873,48 +1018,142 @@
<!-- Title for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies">Кукиҳо</string>
<!-- Subtitle for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies_subtitle">Шумо аз аксари сомонаҳо мебароед</string>
<!-- Title for the cached images and files item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cached_files">Тасвирҳо ва файлҳои нигоҳдошташуда</string>
<!-- Subtitle for the cached images and files item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cached_files_subtitle">Фазои захирагоҳро озод намоед</string>
<!-- Title for the site permissions item in Delete browsing data -->
<string name="preferences_delete_browsing_data_site_permissions">Иҷозатҳои сомона</string>
<!-- Text for the button to delete browsing data -->
<string name="preferences_delete_browsing_data_button">Нест кардани маълумоти тамошокунӣ</string>
<!-- Title for the Delete browsing data on quit preference -->
<string name="preferences_delete_browsing_data_on_quit">Нест кардани маълумоти баррасӣ ҳангоми баромад</string>
<string name="preferences_delete_browsing_data_on_quit">Нест кардани маълумоти тамошокунӣ ҳангоми баромад</string>
<!-- 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">Вақте ки шумо аз менюи асосӣ имкони &quot;Хомӯш кардан&quot;-ро интихоб мекунед, маълумоти тамошокунӣ ба таври худкор нест карда мешавад</string>
<!-- 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">Вақте ки шумо аз менюи асосӣ имкони \&quot;Хомӯш кардан\&quot;-ро интихоб мекунед, маълумоти тамошокунӣ ба таври худкор нест карда мешавад</string>
<!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Баромадан</string>
<!-- Dialog message to the user asking to delete browsing data. -->
<string name="delete_browsing_data_prompt_message">Ин амал маълумоти тамошокуниро нест мекунад.</string>
<!-- Dialog message to the user asking to delete browsing data. Parameter will be replaced by app name. -->
<string name="delete_browsing_data_prompt_message_3">%s маълумоти тамошокунии интихобшударо нест мекунад.</string>
<!-- Text for the cancel button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_cancel">Бекор кардан</string>
<!-- Text for the allow button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_allow">Нест кардан</string>
<!-- Text for the snackbar confirmation that the data was deleted -->
<string name="preferences_delete_browsing_data_snackbar">Маълумоти тамошокунӣ нест карда шуд</string>
<!-- Text for the snackbar to show the user that the deletion of browsing data is in progress -->
<string name="deleting_browsing_data_in_progress">Несткунии маълумоти тамошокунӣ…</string>
<!-- Tips -->
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header">Нашри Firefox-и «Пешнамоиш» акнун Firefox-и «Ҳаршабона» шуд</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description">
Firefox-и «Ҳаршабона» ҳар шаб навсозӣ мешавад ва хусусиятҳои нави таҷрибавиро дар бар мегирад.
Аммо, он метавонад ноустувор бошад. Барои ба даст овардани таҷрибаи устувор, браузери «бета»-ро боргирӣ намоед.</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">«Firefox»-ро барои «Android Beta» ба даст оред</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_installed">Нашри Firefox-и «Ҳаршабона» интиқол дода шуд</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_installed">
Ин барнома дигар навсозиҳои амниятиро қабул намекунад. Истифодаи ин барномаро қатъ кунед ва ба нашри нави «Ҳаршабона» гузаред.
\n\nБарои интиқол додани хатбаракҳо, воридшавиҳо ва таърихи худ ба барномаи дигар, ҳисоби Firefox-ро эҷод намоед.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_installed">Ба нашри нави «Ҳаршабона» гузаред</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_not_installed">Нашри Firefox-и «Ҳаршабона» интиқол дода шуд</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_not_installed">
Ин барнома дигар навсозиҳои амниятиро қабул намекунад. Нашри нави «Ҳаршабона»-ро ба даст оред ва истифодаи ин барномаро қатъ кунед.
\n\nБарои интиқол додани хатбаракҳо, воридшавиҳо ва таърихи худ ба барномаи дигар, ҳисоби Firefox-ро эҷод намоед.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_not_installed">Нашри «Ҳаршабона»-и навро ба даст оред</string>
<!-- Onboarding -->
<!-- Text for onboarding welcome message
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_header">Хуш омадед ба %s!</string>
<!-- text for the Firefox Accounts section header -->
<string name="onboarding_fxa_section_header">Аллакай ҳисобе доред?</string>
<!-- text for the Firefox Preview feature section header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_feature_section_header">Бо %s шинос шавед</string>
<!-- text for the "What's New" onboarding card header -->
<string name="onboarding_whats_new_header1">Бинед, ки чӣ нав аст</string>
<!-- text for the "what's new" onboarding card description
The first parameter is the short name of the app (e.g. Firefox) -->
<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 -->
<string name="onboarding_whats_new_description_linktext">Ҷавобҳоро дар ин ҷо гиред</string>
<!-- text for the Firefox account onboarding sign in card header -->
<string name="onboarding_account_sign_in_header">Ба воситаи ҳисоби Firefox-и худ ҳамоҳангсозии хатбаракҳо, ниҳонвожаҳо ва чизҳои дигарро оғоз кунед.</string>
<!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Маълумоти бештар</string>
<!-- 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)
The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_3">Шумо ҳамчун %s тавассути браузери дигари Firefox дар ин дастгоҳ ворид шудаед. Шумо мехоҳед, ки бо ин ҳисоб ворид шавед?</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Ҳа, маро ворид кунед</string>
<!-- text for the automatic sign-in button while signing in is in process -->
<string name="onboarding_firefox_account_signing_in">Ворид шуда истодааст…</string>
<!-- text for the button to manually sign into Firefox account. The word "Firefox" should not be translated -->
<string name="onboarding_firefox_account_sign_in">Ба Firefox ворид шавед</string>
<!-- text for the button to stay signed out when presented with an option to automatically sign-in. -->
<string name="onboarding_firefox_account_stay_signed_out">Вориднашуда истад</string>
<!-- text to display in the snackbar once account is signed-in -->
<string name="onboarding_firefox_account_sync_is_on">Ҳамоҳангсозӣ фаъол аст</string>
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">Воридшавӣ иҷро нашуд</string>
<!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header_2">Махфияти худкор</string>
<!-- text for the tracking protection card description
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_tracking_protection_description_2">Танзимоти махфият ва амният васоити пайгирӣ, барномаҳои зараровар ва ширкатҳоеро, ки шуморо пайгирӣ мекунанд, маҳдуд мекунад.</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">Стандартӣ (пешфарз)</string>
<!-- text for standard blocking option button description -->
<string name="onboarding_tracking_protection_standard_button_description_2">Баъзеи васоити пайгириро маҳдуд мекунад. Саҳифаҳо ба таври муқаррар бор карда мешаванд.</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">Ҷиддӣ (тавсия дода мешавад)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">Ҷиддӣ</string>
<!-- text for strict blocking option button description -->
<string name="onboarding_tracking_protection_strict_button_description_2">Васоити пайгирӣ, реклама ва равзанаҳои зоҳиршавандаи бештарро маҳдуд мекунад. Саҳифаҳо зудтар бор мешаванд, аммо баъзеи функсияҳо метавонанд кор накунанд.</string>
<!-- text for the toolbar position card header
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 -->
<string name="onboarding_toolbar_position_header">Интихоб кунед</string>
<!-- text for the toolbar position card description -->
<string name="onboarding_toolbar_position_description">Тамошокуниро бо як даст тавассути навори абзорҳои поён кӯшиш кунед ё ин ки наворро ба боло гузоред.</string>
<!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">Реҷаи тамошои махфӣ</string>
<!-- text for the private browsing onboarding card description
The first parameter is an icon that represents private browsing -->
<string name="onboarding_private_browsing_description1">Варақаи махфиро як бор кушоед: Ба нишонии %s зарба занед.</string>
<!-- text for the private browsing onboarding card description, explaining how to always using private browsing -->
<string name="onboarding_private_browsing_always_description">Варақаҳои махфиро ҳар вақт кушоед: Танзимоти тамошокунии махфии худро навсозӣ кунед.</string>
<!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">Кушодани танзимот</string>
<!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">Махфияти шумо</string>
<!-- text for the privacy notice onboarding card description
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_privacy_notice_description">Мо %s-ро ҳамин тавр тарҳрезӣ кардаем, ки шумо тавонед он чизҳоеро, ки дар онлайн
ва бо мо мубодила мекунед, идора намоед.
</string>
<!-- Text for the button to read the privacy notice -->
<string name="onboarding_privacy_notice_read_button">Огоҳиномаи махфияти моро хонед</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
@ -926,6 +1165,8 @@
<!-- Onboarding theme -->
<!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">Мавзӯи худро интихоб кунед</string>
<!-- text for the theme picker onboarding card description -->
<string name="onboarding_theme_picker_description1">Бо фаъол кардани реҷаи торик барқи батареяро сарфа кунед ва биноии худро ҳифз намоед.</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">Худкор</string>
<!-- Summary of automatic theme setting (will follow device setting) -->
@ -943,8 +1184,22 @@
<string name="sync_sent_tab_error_snackbar">Ирсол ғайриимкон аст</string>
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar_action">АЗ НАВ КӮШИШ КАРДАН</string>
<!-- Title of QR Pairing Fragment -->
<string name="sync_scan_code">Рамзро скан кунед</string>
<!-- Instructions on how to access pairing -->
<string name="sign_in_instructions"><![CDATA[Дар компютери худ Firefox-ро кушоед ва ба <b>https://firefox.com/pair</b> гузаред]]></string>
<!-- Text shown for sign in pairing when ready -->
<string name="sign_in_ready_for_scan">Барои сканкунӣ омода аст</string>
<!-- Text shown for settings option for sign with pairing -->
<string name="sign_in_with_camera">Ворид шудан ба воситаи камера</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Ба ҷояш почтаи электрониро истифода баред</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[Ҳисоб надоред? <u> Барои танзими ҳамоҳангсозӣ байни дастгоҳҳо <u>ҳисоберо эҷод намоед</u>]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox ҳамоҳангсозиро бо ҳисоби шумо қатъ мекунад, аммо ягон маълумоти тамошокунии шуморо дар ин дастгоҳ нест намекунад.</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">%s ҳамоҳангсозиро бо ҳисоби шумо қатъ мекунад, аммо ягон маълумоти тамошокунии шуморо дар ин дастгоҳ нест намекунад.</string>
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">Қатъ кардани пайваст</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
@ -957,15 +1212,41 @@
<string name="etp_settings">Танзимоти муҳофизат</string>
<!-- Preference title for enhanced tracking protection settings -->
<string name="preference_enhanced_tracking_protection">Муҳофизати такмилёфта аз пайгирӣ</string>
<!-- Title for the description of enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_title">Тамошокунӣ бе пайгирӣ</string>
<!-- Description of enhanced tracking protection. The first parameter is the name of the application (For example: Fenix) -->
<string name="preference_enhanced_tracking_protection_explanation">Маълумоти худро бо худ нигоҳ доред. %s шуморо аз бисёр васоити пайгирие, ки фаъолияти шуморо дар онлайн пайгирӣ мекунанд, муҳофизат менамояд.</string>
<!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Маълумоти бештар</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">Стандартӣ (пешфарз)</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description_3">Баъзеи васоити пайгириро маҳдуд мекунад. Саҳифаҳо ба таври муқаррар бор карда мешаванд.</string>
<!-- Accessibility text for the Standard protection information icon -->
<string name="preference_enhanced_tracking_protection_standard_info_button">Ба воситаи муҳофизати стандартӣ аз пайгирӣ чӣ баста шудааст</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">Ҷиддӣ</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_description_2">Васоити пайгирӣ, реклама ва равзанаҳои зоҳиршавандаи бештарро маҳдуд мекунад. Саҳифаҳо зудтар бор мешаванд, аммо баъзеи функсияҳо метавонанд кор накунанд.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_strict_info_button">Ба воситаи муҳофизати ҷиддӣ аз пайгирӣ чӣ баста шудааст</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">Фармоишӣ</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description_2">Интихоб кунед, ки кадом васоити пайгирӣ ва скриптҳо бояд баста шаванд.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_custom_info_button">Ба воситаи муҳофизати фармоишӣ аз пайгирӣ чӣ баста шудааст</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">Кукиҳо</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_1">Васоити пайгирии шабакаҳои иҷтимоӣ ва байни сомонаҳо</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_2">Кукиҳо аз сомонаҳои боқимонда</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_3">Ҳамаи кукиҳои тарафҳои сеюм (метавонанд фаъолияти сомонаҳоро вайрон кунанд)</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_4">Ҳамаи кукиҳо (метавонанд фаъолияти сомонаҳоро вайрон кунанд)</string>
<!-- Preference for enhanced tracking protection for the custom protection settings for tracking content -->
<string name="preference_enhanced_tracking_protection_custom_tracking_content">Муҳтавои пайгирикунанда</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
@ -981,16 +1262,37 @@
<string name="enhanced_tracking_protection_blocked">Манъ карда мешавад</string>
<!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings -->
<string name="enhanced_tracking_protection_allowed">Иҷозат дода мешавад</string>
<!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_title">Васоити пайгирии шабакаҳои иҷтимоӣ</string>
<!-- Description of social media trackers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_description">Имконияти шабакаҳои иҷтимоиро барои пайгирии фаъолияти тамошокунии шумо дар Интернет маҳдуд мекунад.</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">Кукиҳои васоити пайгирӣ байни сомонаҳо</string>
<!-- Description of cross-site tracking cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_description">Кукиҳоеро, ки шабакаҳои рекламавӣ ва ширкатҳои таҳлилӣ барои ҷамъоварии маълумоти тамошокунии шумо дар бисёр сомонаҳо истифода мебаранд, манъ мекунад.</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Криптомайнерҳо</string>
<!-- Description of cryptominers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_description">Скриптҳои зараровареро, ки дастгоҳи шуморо барои истеҳсоли пули рақамӣ дастрас мекунанд, пешгирӣ менамояд.</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Хонандаи изи ангушт</string>
<!-- Description of fingerprinters that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_description">Ҷамъкунии маълумоти нодири муайяншавандаеро дар бораи дастгоҳи шумо, ки метавонад бо мақсадҳои пайгирӣ истифода шавад, манъ мекунад.</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Муҳтавои пайгирикунанда</string>
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_description">Боркунии рекламаҳои хориҷӣ, видеоҳо ва маводҳои дигареро, ки метавонанд рамзи пайгириро дар бар гиранд, манъ мекунад. Метавонад ба кори баъзеи сомонаҳо таъсир расонад.</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) -->
<string name="etp_onboarding_cfr_message">Сипар бо ранги лоҷувард маънои онро дорад, ки %s дар сомона васоити пайгириро манъ кард. Барои маълумоти бештар, зер кунед.</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Муҳофизат барои ин сомона фаъол аст</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
<string name="etp_panel_off">Муҳофизат барои ин сомона ғайрифаъол аст</string>
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
<string name="enhanced_tracking_protection_exceptions">Муҳофизати такмилёфта аз пайгирӣ барои сомонаҳои зерин ғайрифаъол аст</string>
<!-- Content description (not visible, for screen readers etc.): Navigate
back from ETP details (Ex: Tracking content) -->
<string name="etp_back_button_content_description">Ба қафо гузаштан</string>
<!-- About page Your rights link text -->
<string name="about_your_rights">Ҳуқуқҳои шумо</string>
<!-- About page link text to open open source licenses screen -->
@ -1001,6 +1303,12 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Китобхонаҳои OSS</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">Васоити пайгирии интиқолдиҳӣ</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">Кукиҳоеро, ки тавассути восоити интиқолдиҳӣ ба сомонаҳои пайгирикунандаи маъруф насб шудаанд, тоза мекунад.</string>
<!-- About page link text to open support link -->
<string name="about_support">Дастгирӣ</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
@ -1014,6 +1322,11 @@
<!-- About page link text to open a screen with libraries that are used -->
<string name="about_other_open_source_libraries">Китобхонаҳое, ки мо истифода мебарем</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">Менюи ислоҳкунии хатоҳо: барои фаъолсозӣ %1$d зеркунӣ боқӣ монд</string>
<string name="about_debug_menu_toast_done">Менюи ислоҳкунии хатоҳо фаъол аст</string>
<!-- Content description of the tab counter toolbar button when one tab is open -->
<string name="tab_counter_content_description_one_tab">1 варақа</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) -->
@ -1040,10 +1353,15 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Номи миёнбур</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description_2">Шумо метавонед ин сомонаро ба экрани асосии дастгоҳи худ ба осонӣ илова кунед, то ки ба он дастрасии фаврӣ дошта бошед ва бо таҷрибаи ба барнома монанд зудтар паймоиш кунед.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Воридшавиҳо ва ниҳонвожаҳо</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
<string name="preferences_passwords_save_logins">Нигоҳ доштани воридшавиҳо ва ниҳонвожаҳо</string>
<!-- Preference option for asking to save passwords in Fenix -->
<string name="preferences_passwords_save_logins_ask_to_save">Бо пешниҳоди нигоҳдорӣ</string>
<!-- Preference option for never saving passwords in Fenix -->
<string name="preferences_passwords_save_logins_never_save">Ҳеҷ гоҳ нигоҳ дошта нашавад</string>
<!-- Preference for autofilling saved logins in Fenix -->
@ -1060,16 +1378,24 @@
<string name="preferences_passwords_sync_logins_sign_in">Барои ҳамоҳангсозӣ ворид шавед</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">Воридшавиҳои нигоҳдошташуда</string>
<!-- Description of empty list of saved passwords. Placeholder is replaced with app name. -->
<string name="preferences_passwords_saved_logins_description_empty_text">Воридшавиҳое, ки шумо дар %s нигоҳ медоред ё ҳамоҳанг мекунед, дар ин ҷо нишон дода мешаванд.</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Маълумоти бештар дар бораи ҳамоҳангсозӣ</string>
<!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Истисноҳо</string>
<!-- Empty description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description_empty">Воридшавиҳо ва ниҳонвожаҳое, ки нигоҳ дошта нашудаанд, дар ин ҷо нишон дошта мешаванд.</string>
<!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">Воридшавиҳо ва ниҳонвожаҳо барои сомонаҳои зерин нигоҳ дошта намешаванд.</string>
<!-- Text on button to remove all saved login exceptions -->
<string name="preferences_passwords_exceptions_remove_all">Нест кардани ҳамаи истисноҳо</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Ҷустуҷӯи воридшавиҳо</string>
<!-- Option to sort logins list A-Z, alphabetically -->
<string name="preferences_passwords_saved_logins_alphabetically">Аз рӯи алифбо</string>
<!-- Option to sort logins list by most recently used -->
<string name="preferences_passwords_saved_logins_recently_used">Истифодашудаи охирин</string>
<!-- The header for the site that a login is for -->
<string name="preferences_passwords_saved_logins_site">Сомона</string>
<!-- The header for the username for a login -->
@ -1078,6 +1404,10 @@
<string name="preferences_passwords_saved_logins_password">Ниҳонвожа</string>
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin">PIN-и худро такроран ворид намоед</string>
<!-- Message displayed in security prompt to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin_description">Барои дидани воридшавиҳои нигоҳдошташуда, қулфро кушоед</string>
<!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning">Ин пайвастшавӣ бехатар нест. Воридшавиҳое, ки дар ин ҷо ворид карда мешаванд, метавонанд ошкор шаванд.</string>
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning_learn_more">Маълумоти бештар</string>
<!-- Prompt message displayed when Fenix detects a user has entered a password and user decides if Fenix should save it. The first parameter is the name of the application (For example: Fenix) -->
@ -1108,6 +1438,12 @@
<string name="saved_login_reveal_password">Нишон додани ниҳонвожа</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">Пинҳон кардани ниҳонвожа</string>
<!-- Message displayed in biometric prompt displayed for authentication before allowing users to view their logins -->
<string name="logins_biometric_prompt_message">Барои дидани воридшавиҳои нигоҳдошташуда, қулфро кушоед</string>
<!-- Title of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_title">Воридшавиҳо ва ниҳонвожаҳои худро муҳофизат намоед</string>
<!-- Message of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_message">Барои муҳофизат кардани воридшавиҳо ва ниҳонвожаҳои худ аз дастрасии озод, агар касе дигар аз дастгоҳи шумо истифода барад, шаклвораи қулфи экран, рамзи PIN ё ниҳонвожаеро барои дастгоҳи худ танзим намоед.</string>
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">Дертар</string>
<!-- Positive button to send users to set up a pin of warning dialog if users have no device authentication set up -->
@ -1116,12 +1452,17 @@
<string name="logins_biometric_prompt_message_pin">Қулфи дастгоҳи худро кушоед</string>
<!-- Title for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom">Тағйири андоза дар ҳамаи сомонаҳо</string>
<!-- Summary for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom_summary">Фаъол кардани имкони хурдкунӣ ва калонкунии намоиш, ҳатто дар сомонаҳое, ки ин ишораро манъ мекунанд.</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">Ном (А-Я)</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">Истифодашудаи охирин</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">Мураттаб кардани менюи воридшавиҳо</string>
<!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">Илова кардани низоми ҷустуҷӯӣ</string>
<!-- Title of the Edit search engine screen -->
@ -1139,13 +1480,27 @@
<string name="search_add_custom_engine_label_other">Дигар</string>
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
<string name="search_add_custom_engine_name_hint">Ном</string>
<!-- Placeholder text shown in the Search String TextField before a user enters text -->
<string name="search_add_custom_engine_search_string_hint">Сатри ҷустуҷӯ барои истифода</string>
<!-- Description text for the Search String TextField. The %s is part of the string -->
<string name="search_add_custom_engine_search_string_example">Сатри дархостро бо “%s” иваз намоед. Масалан:\nhttps://www.google.com/search?q=%s</string>
<!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">Маълумоти бештар</string>
<!-- Accessibility description for the form in which details about the custom search engine are entered -->
<string name="search_add_custom_engine_form_description">Тафсилот дар бораи низоми ҷустуҷӯии фармоишӣ</string>
<!-- Accessibility description for the 'Learn more' link -->
<string name="search_add_custom_engine_learn_more_description">Пайванди «Маълумоти бештар»</string>
<!-- Text shown when a user leaves the name field empty -->
<string name="search_add_custom_engine_error_empty_name">Номи низоми ҷустуҷӯиро ворид намоед</string>
<!-- Text shown when a user tries to add a search engine that already exists -->
<string name="search_add_custom_engine_error_existing_name">Низоми ҷустуҷӯӣ бо номи “%s” аллакай вуҷуд дорад.</string>
<!-- Text shown when a user leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">Сатри ҷустуҷӯро ворид кунед</string>
<!-- Text shown when a user leaves out the required template string -->
<string name="search_add_custom_engine_error_missing_template">Тафтиш кунед, ки сатри ҷустуҷӯ ба шакли намунавӣ мувофиқат мекунад</string>
<!-- Text shown when we aren't able to validate the custom search query. The first parameter is the url of the custom search engine -->
<string name="search_add_custom_engine_error_cannot_reach">Хатои пайвастшавӣ ба “%s”</string>
<!-- Text shown when a user creates a new search engine -->
<string name="search_add_custom_engine_success_message">%s эҷод карда шуд</string>
<!-- Text shown when a user successfully edits a custom search engine -->
@ -1153,6 +1508,8 @@
<!-- Text shown when a user successfully deletes a custom search engine -->
<string name="search_delete_search_engine_success_message">%s нест карда шуд</string>
<!-- Title text shown for the migration screen to the new browser. Placeholder replaced with app name -->
<string name="migration_title">Хуш омадед ба барномаи комилан нави %s</string>
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">%s нав шуда истодааст...</string>
<!-- Text on the enabled button. Placeholder replaced with app name-->
@ -1181,6 +1538,8 @@
<string name="confirm_clear_permissions_site">Шумо мутмаин ҳастед, ки мехоҳед ҳамаи иҷозатҳоро барои сомонаи ҷорӣ тоза намоед?</string>
<!-- Confirmation message for a dialog confirming if the user wants to set default value a permission for a site-->
<string name="confirm_clear_permission_site">Шумо мутмаин ҳастед, ки мехоҳед ин иҷозатҳоро барои сомонаи ҷорӣ тоза намоед?</string>
<!-- label shown when there are not site exceptions to show in the site exception settings -->
<string name="no_site_exceptions">Ягон истиснои сомона нест</string>
<!-- Label for the Pocket default top site -->
<string name="pocket_top_articles">Мақолаҳои беҳтарин</string>
<!-- Bookmark deletion confirmation -->
@ -1200,6 +1559,12 @@
<string name="dialog_delete_positive">Нест кардан</string>
<!-- The saved login options menu description. -->
<string name="login_options_menu">Имконоти воридшавӣ</string>
<!-- The editable text field for a login's web address. -->
<string name="saved_login_hostname_description">Майдони матни таҳриршаванда барои нишонии сомонаи воридшавӣ.</string>
<!-- The editable text field for a login's username. -->
<string name="saved_login_username_description">Майдони матни таҳриршаванда барои номи корбарии воридшавӣ.</string>
<!-- The editable text field for a login's password. -->
<string name="saved_login_password_description">Майдони матни таҳриршаванда барои ниҳонвожаи воридшавӣ.</string>
<!-- The button description to save changes to an edited login. -->
<string name="save_changes_to_login">Нигоҳ доштани тағйирот барои воридшавӣ</string>
<!-- The button description to discard changes to an edited login. -->
@ -1225,15 +1590,39 @@
<string name="synced_tabs_reauth">Лутфан, санҷиши ҳаққониятро аз нав такрор кунед</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">Лутфан ҳамоҳангсозии варақаҳоро фаъол кунед.</string>
<!-- Text displayed when user has no tabs that have been synced -->
<string name="synced_tabs_no_tabs">Шумо дар дастгоҳҳои дигари худ дар Firefox ягон варақаи кушодашуда надоред.</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">Дидани рӯйхати варақаҳо аз дастгоҳҳои дигар.</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">Барои ҳамоҳангсозӣ ворид шавед</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 -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Ба ҳудуди шумораи сомонаҳои беҳтарин расид</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content_2">Барои илова кардани сомонаи роиҷи нав, сомонаи дигареро тоза намоед. Сомонаро ламс карда, доред ва &quot;Тоза кардан&quot;-ро интихоб намоед.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<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. -->
<string name="remove_home_collection_placeholder_content_description">Тоза кардан</string>
</resources>
<!-- Deprecated: 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>
<!-- 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">Шумо ҳамчун %s тавассути браузери дигари Firefox дар ин телефон ворид шудаед. Шумо мехоҳед, ки бо ин ҳисоб ворид шавед?</string>
<!-- Deprecated: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">Шумо метавонед ин сомонаро ба экрани асосии телефони худ ба осонӣ илова кунед, то ки ба он дастрасии фаврӣ дошта бошед ва бо таҷрибаи ба барнома монанд зудтар паймоиш кунед.</string>
</resources>

@ -1160,6 +1160,8 @@
<string name="sign_in_with_camera">ลงชื่อเข้าด้วยกล้องของคุณ</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">ใช้อีเมลแทน</string>
<!-- Text shown for settings option for create new account text.'Firefox' intentionally hardcoded here.-->
<string name="sign_in_create_account_text"><![CDATA[ไม่มีบัญชีใช่หรือไม่? <u>สร้างบัญชี</u>เพื่อซิงค์ Firefox ระหว่างอุปกรณ์]]></string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox จะหยุดการซิงค์กับบัญชีของคุณ แต่จะไม่ลบข้อมูลการเรียกดูใด ๆ ของคุณบนอุปกรณ์นี้</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
@ -1268,6 +1270,11 @@
The first parameter is the app name -->
<string name="open_source_licenses_title">%s | ไลบรารี OSS</string>
<!-- Category of trackers (redirect trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_title">ตัวติดตามการเปลี่ยนเส้นทาง</string>
<!-- Description of redirect tracker cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_redirect_trackers_description">ล้างคุกกี้ที่ตั้งโดยการเปลี่ยนเส้นทางไปยังเว็บไซต์ติดตามที่รู้จัก</string>
<!-- About page link text to open support link -->
<string name="about_support">การสนับสนุน</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -722,7 +722,7 @@
The first parameter is the number of bookmarks selected -->
<string name="bookmarks_multi_select_title">%1$d yer imi seçildi</string>
<!-- Bookmark editing screen title -->
<string name="edit_bookmark_fragment_title">Yer imini düzenle</string>
<string name="edit_bookmark_fragment_title">Yer imi düzenle</string>
<!-- Bookmark folder editing screen title -->
<string name="edit_bookmark_folder_fragment_title">Klasörü düzenle</string>
<!-- Bookmark sign in button message -->

@ -350,6 +350,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">Сповіщення</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">Власна збірка додатків</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">OK</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">Скасувати</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">Назва збірки</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">Власник збірки (ID користувача)</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">Збірку додатків змінено. Вихід з програми для застосування змін…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Синхронізувати</string>
@ -535,6 +549,14 @@
<string name="recently_closed_empty_message">Немає нещодавно закритих вкладок</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">Вкладки</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">Подання вкладки</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">Перелік</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">Сітка</string>
<!-- 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 -->
@ -651,6 +673,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Видалити %1$d елементів</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">Сьогодні</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">Вчора</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Останні 24 години</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -789,6 +815,8 @@
<string name="preference_phone_feature_location">Розташування</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Сповіщення</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">Постійне сховище</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Запитувати дозвіл</string>
<!-- Label that indicates that a permission must be blocked -->

@ -202,7 +202,7 @@
<!-- Header displayed when selecting a shortcut search engine -->
<string name="search_engines_search_with">Lần này, tìm kiếm với:</string>
<!-- Button in the search view that lets a user navigate to the site in their clipboard -->
<string name="awesomebar_clipboard_title">Điền liên kết từ bộ nhớ tạm</string>
<string name="awesomebar_clipboard_title">Điền liên kết từ khay nhớ tạm</string>
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
<string name="search_suggestions_onboarding_allow_button">Cho phép</string>
<!-- Button in the search suggestions onboarding that does not allow search suggestions in private sessions -->
@ -316,13 +316,13 @@
<!-- Preference title for switch preference to show search engines -->
<string name="preferences_show_search_engines">Hiển thị công cụ tìm kiếm</string>
<!-- Preference title for switch preference to show search suggestions -->
<string name="preferences_show_search_suggestions">Hiển thị gợi ý tìm kiếm</string>
<string name="preferences_show_search_suggestions">Hiển thị đề xuất tìm kiếm</string>
<!-- Preference title for switch preference to show voice search button -->
<string name="preferences_show_voice_search">Hiển thị tìm kiếm bằng giọng nói</string>
<!-- Preference title for switch preference to show search suggestions also in private mode -->
<string name="preferences_show_search_suggestions_in_private">Hiển thị trong phiên riêng tư</string>
<!-- Preference title for switch preference to show a clipboard suggestion when searching -->
<string name="preferences_show_clipboard_suggestions">Hiển thị đề xuất bộ nhớ tạm</string>
<string name="preferences_show_clipboard_suggestions">Hiển thị đề xuất khay nhớ tạm</string>
<!-- Preference title for switch preference to suggest browsing history when searching -->
<string name="preferences_search_browsing_history">Tìm kiếm lịch sử duyệt web</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
@ -1320,7 +1320,7 @@
<string name="add_to_homescreen_description_2">Bạn có thể dễ dàng thêm trang web vào màn hình chính thiết bị của bạn để có thể truy cập và duyệt web nhanh hơn với trải nghiệm giống như trên ứng dụng.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Đăng nhập và mật khẩu</string>
<string name="preferences_passwords_logins_and_passwords">Thông tin đăng nhập và mật khẩu</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
<string name="preferences_passwords_save_logins">Lưu thông tin đăng nhập và mật khẩu</string>
<!-- Preference option for asking to save passwords in Fenix -->
@ -1330,7 +1330,7 @@
<!-- Preference for autofilling saved logins in Fenix -->
<string name="preferences_passwords_autofill">Tự động điền</string>
<!-- Preference for syncing saved logins in Fenix -->
<string name="preferences_passwords_sync_logins">Đồng bộ hóa đăng nhập</string>
<string name="preferences_passwords_sync_logins">Đồng bộ hóa thông tin đăng nhập</string>
<!-- Syncing saved logins in Fenix is on -->
<string name="preferences_passwords_sync_logins_on">Bật</string>
<!-- Syncing saved logins in Fenix is off -->
@ -1340,7 +1340,7 @@
<!-- Syncing saved logins in Fenix needs login -->
<string name="preferences_passwords_sync_logins_sign_in">Đăng nhập vào đồng bộ hóa</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">Đăng nhập đã lưu</string>
<string name="preferences_passwords_saved_logins">Thông tin đăng nhập đã lưu</string>
<!-- Description of empty list of saved passwords. Placeholder is replaced with app name. -->
<string name="preferences_passwords_saved_logins_description_empty_text">Thông tin đăng nhập bạn lưu hoặc đồng bộ hóa với %s sẽ hiển thị tại đây.</string>
<!-- Preference to access list of saved logins -->
@ -1348,9 +1348,9 @@
<!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Ngoại trừ</string>
<!-- Empty description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description_empty">Đăng nhập và mật khẩu không được lưu sẽ được hiển thị ở đây.</string>
<string name="preferences_passwords_exceptions_description_empty">Thông tin đăng nhập và mật khẩu không được lưu sẽ được hiển thị ở đây.</string>
<!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">Đăng nhập và mật khẩu sẽ không được lưu cho các trang web này.</string>
<string name="preferences_passwords_exceptions_description">Thông tin đăng nhập và mật khẩu sẽ không được lưu cho các trang web này.</string>
<!-- Text on button to remove all saved login exceptions -->
<string name="preferences_passwords_exceptions_remove_all">Xóa tất cả các ngoại lệ</string>
<!-- Hint for search box in logins list -->

@ -355,6 +355,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">通知</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">自定义附加组件收藏集</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">确定</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">取消</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">收藏集名称</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">收藏集所有者(用户 ID</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">已更改附加组件收藏集设置。退出应用程序以应用更改…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">立即同步</string>
@ -544,6 +558,14 @@
<string name="recently_closed_empty_message">暂无最近关闭的标签页</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">标签页</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">标签页视图</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">列表</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">网格</string>
<!-- 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 -->
@ -660,6 +682,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">删除 %1$d 个项目</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">本日</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">昨日</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">过去 24 小时</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -803,6 +829,8 @@
<string name="preference_phone_feature_location">位置</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">通知</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">持久存储</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">始终询问</string>
<!-- Label that indicates that a permission must be blocked -->

@ -351,6 +351,20 @@
<!-- Preference for notifications -->
<string name="preferences_notifications">通知</string>
<!-- Add-on Preferences -->
<!-- Preference to customize the configured AMO (addons.mozilla.org) collection -->
<string name="preferences_customize_amo_collection">自訂附加元件收藏集</string>
<!-- Button caption to confirm the add-on collection configuration -->
<string name="customize_addon_collection_ok">確定</string>
<!-- Button caption to abort the add-on collection configuration -->
<string name="customize_addon_collection_cancel">取消</string>
<!-- Hint displayed on input field for custom collection name -->
<string name="customize_addon_collection_hint">收藏集名稱</string>
<!-- Hint displayed on input field for custom collection user ID-->
<string name="customize_addon_collection_user_hint">收藏集擁有者(使用者 ID</string>
<!-- Toast shown after confirming the custom add-on collection configuration -->
<string name="toast_customize_addon_collection_done">已更改收藏集內容。將結束應用程式讓變更生效…</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">立即同步</string>
@ -537,6 +551,14 @@
<string name="recently_closed_empty_message">目前還沒有最近關閉的分頁</string>
<!-- Tab Management -->
<!-- Title of preference for tabs management -->
<string name="preferences_tabs">分頁</string>
<!-- Title of preference that allows a user to specify the tab view -->
<string name="preferences_tab_view">分頁檢視</string>
<!-- Option for a list tab view -->
<string name="tab_view_list">清單</string>
<!-- Option for a grid tab view -->
<string name="tab_view_grid">格線</string>
<!-- 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 -->
@ -653,6 +675,10 @@
<!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected -->
<string name="history_delete_some">刪除 %1$d 個項目</string>
<!-- Text for the header that groups the history for today -->
<string name="history_today">今天</string>
<!-- Text for the header that groups the history for yesterday -->
<string name="history_yesterday">昨天</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 小時以內</string>
<!-- Text for the header that groups the history the past 7 days -->
@ -794,6 +820,8 @@
<string name="preference_phone_feature_location">位置</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">通知</string>
<!-- Preference for altering the persistent storage access for all websites -->
<string name="preference_phone_feature_persistent_storage">持續性儲存空間</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">總是詢問</string>
<!-- Label that indicates that a permission must be blocked -->

@ -11,7 +11,6 @@
<string name="pref_key_site_permissions" translatable="false">pref_key_site_permissions</string>
<string name="pref_key_add_private_browsing_shortcut" translatable="false">pref_key_add_private_browsing_shortcut</string>
<string name="pref_key_accessibility" translatable="false">pref_key_accessibility</string>
<string name="pref_key_accessibility_auto_size" translatable="false">pref_key_accessibility_auto_size</string>
<string name="pref_key_accessibility_font_scale" translatable="false">pref_key_accessibility_font_scale</string>
<string name="pref_key_accessibility_force_enable_zoom" translatable="false">pref_key_accessibility_force_enable_zoom</string>
<string name="pref_key_advanced" translatable="false">pref_key_advanced</string>
@ -110,6 +109,7 @@
<string name="pref_key_custom_settings" translatable="false">pref_key_custom_settings</string>
<string name="pref_key_browser_feature_autoplay_audible" translatable="false">pref_key_browser_feature_autoplay</string>
<string name="pref_key_browser_feature_autoplay_inaudible" translatable="false">pref_key_browser_feature_autoplay_inaudible</string>
<string name="pref_key_browser_feature_persistent_storage" translatable="false">pref_key_browser_feature_persistent_storage</string>
<string name="pref_key_phone_feature_camera" translatable="false">pref_key_phone_feature_camera</string>
<string name="pref_key_phone_feature_location" translatable="false">pref_key_phone_feature_location</string>
<string name="pref_key_phone_feature_microphone" translatable="false">pref_key_phone_feature_microphone</string>
@ -130,8 +130,6 @@
<!-- Customization Settings -->
<string name="pref_home_category" translatable="false">pref_home_category</string>
<!-- Customization Settings -->
<string name="pref_key_website_pull_to_refresh" translatable="false">pref_key_website_pull_to_refresh</string>
<string name="pref_key_dynamic_toolbar" translatable="false">pref_key_dynamic_toolbar</string>
<string name="pref_key_swipe_toolbar_switch_tabs" translatable="false">pref_key_swipe_toolbar_switch_tabs</string>
@ -248,11 +246,16 @@
<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>
<!-- Tabs Settings -->
<string name="pref_key_tab_view_category" translatable="false">pref_key_tab_view_category</string>
<string name="pref_key_tab_view_list" translatable="false">pref_key_tab_view_list</string>
<string name="pref_key_tab_view_grid" translatable="false">pref_key_tab_view_grid</string>
<string name="pref_key_tabs" translatable="false">pref_key_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>
<string name="pref_key_show_grid_view_tabs_settings" translatable="false">pref_key_show_grid_view_tabs_settings</string>
<string name="pref_key_camera_permissions_needed" translatable="false">pref_key_camera_permissions_needed</string>
</resources>

@ -32,6 +32,8 @@
<!-- Label for the secret settings preference -->
<string name="preferences_debug_settings">Secret Settings</string>
<!-- Label for the show grid view in tabs setting preference -->
<string name="preferences_debug_settings_show_grid_view_tabs_settings">Show Grid View in Tabs Settings</string>
<!-- Label for the show top frequently visited sites preference -->
<string name="preferences_debug_settings_enable_top_frecent_sites">Show Top Frequently Visited Sites</string>
<!-- Label for the wait until first paint preference -->

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save