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 # Possible startup regressions
*Application.kt @mozilla-mobile/Performance *Application.kt @mozilla-mobile/Performance
*StrictMode*kt @mozilla-mobile/Performance
# We want to be aware of new features behind flags as well as features # We want to be aware of new features behind flags as well as features
# about to be enabled. # about to be enabled.

@ -375,6 +375,7 @@ dependencies {
implementation Deps.sentry implementation Deps.sentry
implementation Deps.mozilla_concept_base
implementation Deps.mozilla_concept_engine implementation Deps.mozilla_concept_engine
implementation Deps.mozilla_concept_menu implementation Deps.mozilla_concept_menu
implementation Deps.mozilla_concept_push 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.rule.ActivityTestRule
import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiDevice
import org.mozilla.fenix.HomeActivity 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]. * 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] * @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) { ActivityTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
override fun beforeActivityLaunched() { override fun beforeActivityLaunched() {
super.beforeActivityLaunched() super.beforeActivityLaunched()
setLongTapTimeout() setLongTapTimeout()
if (skipOnboarding) { skipOnboardingBeforeLaunch() }
} }
} }
@ -35,12 +42,14 @@ class HomeActivityTestRule(initialTouchMode: Boolean = false, launchActivity: Bo
class HomeActivityIntentTestRule( class HomeActivityIntentTestRule(
initialTouchMode: Boolean = false, initialTouchMode: Boolean = false,
launchActivity: Boolean = true launchActivity: Boolean = true,
private val skipOnboarding: Boolean = false
) : ) :
IntentsTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) { IntentsTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
override fun beforeActivityLaunched() { override fun beforeActivityLaunched() {
super.beforeActivityLaunched() super.beforeActivityLaunched()
setLongTapTimeout() setLongTapTimeout()
if (skipOnboarding) { skipOnboardingBeforeLaunch() }
} }
} }
@ -49,3 +58,9 @@ fun setLongTapTimeout() {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
mDevice.executeShellCommand("settings put secure long_press_timeout 3000") 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() verifyShareTabUrl()
} }
} }
@Test
fun verifyCloseMenu() {
homeScreen {
}.openThreeDotMenu {
}.openHistory {
}.closeMenu {
verifyHomeScreen()
}
}
} }

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

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

@ -119,6 +119,12 @@ class SettingsPrivacyTest {
verifySitePermissionsNotificationSubMenuItems() verifySitePermissionsNotificationSubMenuItems()
}.goBack { }.goBack {
// SITE PERMISSIONS PERSISTENT STORAGE
}.openPersistentStorage {
verifyNavigationToolBarHeader("Persistent Storage")
verifySitePermissionsPersistentStorageSubMenuItems()
}.goBack {
// SITE PERMISSIONS EXCEPTIONS // SITE PERMISSIONS EXCEPTIONS
}.openExceptions { }.openExceptions {
verifyNavigationToolBarHeader() 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) fun verifyDeleteSnackbarText(text: String) = assertSnackBarText(text)
class Transition { class Transition {
fun closeMenu(interact: HistoryRobot.() -> Unit): Transition {
closeButton().click()
HistoryRobot().interact()
return Transition()
}
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
closeButton().click()
BrowserRobot().interact() BrowserRobot().interact()
return BrowserRobot.Transition() return BrowserRobot.Transition()
} }
@ -114,8 +105,6 @@ fun historyMenu(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
return 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 testPageTitle() = onView(allOf(withId(R.id.title), withText("Test_Page_1")))
private fun pageUrl() = onView(withId(R.id.url)) private fun pageUrl() = onView(withId(R.id.url))

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

@ -21,7 +21,6 @@ import android.widget.TextView
import androidx.test.espresso.UiController import androidx.test.espresso.UiController
import androidx.test.espresso.ViewAction import androidx.test.espresso.ViewAction
import androidx.test.espresso.ViewAssertion import androidx.test.espresso.ViewAssertion
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
import org.hamcrest.CoreMatchers.allOf import org.hamcrest.CoreMatchers.allOf
import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withId
@ -49,13 +48,7 @@ class SettingsSubMenuAccessibilityRobot {
const val TEXT_SIZE = 16f const val TEXT_SIZE = 16f
} }
fun verifyAutomaticFontSizingMenuItems() = assertAutomaticFontSizingMenuItems() fun verifyMenuItems() = assertMenuItems()
fun clickFontSizingSwitch() = toggleFontSizingSwitch()
fun verifyNewMenuItems() = assertNewMenuItems()
fun verifyNewMenuItemsAreGone() = assertNewMenuItemsAreGone()
fun changeTextSizeSlider(seekBarPercentage: Int) = adjustTextSizeSlider(seekBarPercentage) fun changeTextSizeSlider(seekBarPercentage: Int) = adjustTextSizeSlider(seekBarPercentage)
@ -76,22 +69,7 @@ class SettingsSubMenuAccessibilityRobot {
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
private fun assertAutomaticFontSizingMenuItems() { private fun assertMenuItems() {
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() {
assertFontSize() assertFontSize()
assertSliderBar() assertSliderBar()
} }
@ -125,22 +103,6 @@ private fun assertTextSizePercentage(textSize: Int) {
.check(textSizePercentageEquals(textSize)) .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() = private fun goBackButton() =
onView(allOf(withContentDescription("Navigate up"))) onView(allOf(withContentDescription("Navigate up")))

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

@ -118,6 +118,22 @@ class SettingsSubMenuSitePermissionsRobot {
return SettingsSubMenuSitePermissionsCommonRobot.Transition() 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( fun openExceptions(
interact: SettingsSubMenuSitePermissionsExceptionsRobot.() -> Unit interact: SettingsSubMenuSitePermissionsExceptionsRobot.() -> Unit
): SettingsSubMenuSitePermissionsExceptionsRobot.Transition { ): SettingsSubMenuSitePermissionsExceptionsRobot.Transition {
@ -176,8 +192,27 @@ class SettingsSubMenuSitePermissionsRobot {
val notificationText = val notificationText =
"Ask to allow" "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))) .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() = private fun openNotification() =
onView(allOf(withText("Notification"))) onView(allOf(withText("Notification")))
private fun openPersistentStorage() =
onView(allOf(withText("Persistent Storage")))
private fun openExceptions() = private fun openExceptions() =
onView(allOf(withText("Exceptions"))) onView(allOf(withText("Exceptions")))

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

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

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

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

@ -10,6 +10,7 @@ import android.content.res.Configuration
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.StrictMode import android.os.StrictMode
import android.os.SystemClock
import android.text.format.DateUtils import android.text.format.DateUtils
import android.util.AttributeSet import android.util.AttributeSet
import android.view.KeyEvent import android.view.KeyEvent
@ -112,6 +113,11 @@ import java.lang.ref.WeakReference
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SuppressWarnings("TooManyFunctions", "LargeClass") @SuppressWarnings("TooManyFunctions", "LargeClass")
open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { 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 private var webExtScope: CoroutineScope? = null
lateinit var themeManager: ThemeManager lateinit var themeManager: ThemeManager
@ -235,13 +241,22 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
} }
protected open fun startupTelemetryOnCreateCalled(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) { protected open fun startupTelemetryOnCreateCalled(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) {
components.appStartupTelemetry.onHomeActivityOnCreate(safeIntent, hasSavedInstanceState) components.appStartupTelemetry.onHomeActivityOnCreate(
safeIntent,
hasSavedInstanceState,
homeActivityInitTimeStampNanoSeconds, rootContainer
)
} }
override fun onRestart() { override fun onRestart() {
// DO NOT MOVE ANYTHING ABOVE THIS..
// we are measuring startup time for hot startup type
startupTelemetryOnRestartCalled()
super.onRestart() super.onRestart()
}
components.appStartupTelemetry.onHomeActivityOnRestart() private fun startupTelemetryOnRestartCalled() {
components.appStartupTelemetry.onHomeActivityOnRestart(rootContainer)
} }
@CallSuper @CallSuper
@ -254,8 +269,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
message = "onResume()" message = "onResume()"
) )
components.appStartupTelemetry.onHomeActivityOnResume()
components.backgroundServices.accountManagerAvailableQueue.runIfReadyOrQueue { components.backgroundServices.accountManagerAvailableQueue.runIfReadyOrQueue {
lifecycleScope.launch { lifecycleScope.launch {
// Make sure accountManager is initialized. // Make sure accountManager is initialized.
@ -304,6 +317,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
"finishing" to isFinishing.toString() "finishing" to isFinishing.toString()
) )
) )
components.appStartupTelemetry.onStop()
} }
final override fun onPause() { final override fun onPause() {
@ -740,7 +755,11 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
if (components.core.engine.profiler?.isProfilerActive() == true) { if (components.core.engine.profiler?.isProfilerActive() == true) {
// Wrapping the `addMarker` method with `isProfilerActive` even though it's no-op when // 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. // 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 * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// 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 package org.mozilla.fenix
import android.os.Build import android.os.Build
import android.os.Looper
import android.os.StrictMode import android.os.StrictMode
import androidx.annotation.VisibleForTesting
import androidx.annotation.VisibleForTesting.PRIVATE
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import mozilla.components.support.ktx.android.os.resetAfter 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_HUAWEI: String = "HUAWEI"
private const val MANUFACTURE_ONE_PLUS: String = "OnePlus" 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. * 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. private val isEnabledByBuildConfig = config.channel.isDebug
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. * 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 * 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 * completion when in a build configuration that has StrictMode enabled. If StrictMode is
* not enabled, simply runs the [functionBlock]. * not enabled, simply runs the [functionBlock]. This function is written in the style of
* * [AutoCloseable.use].
* 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 * This function contains perf improvements so it should be
* on [StrictMode.ThreadPolicy] but I think this is okay: it shouldn't be easy to ignore StrictMode. * 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]. * @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 // 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 // actually be enabled. https://github.com/mozilla-mobile/fenix/issues/11617
return if (isEnabledByBuildConfig) { 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) policy.resetAfter(functionBlock)
} else { } else {
functionBlock() 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.mozac_ui_tabcounter_layout.view.*
import kotlinx.android.synthetic.main.tab_preview.view.* import kotlinx.android.synthetic.main.tab_preview.view.*
import mozilla.components.browser.thumbnails.loader.ThumbnailLoader 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.R
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings

@ -127,7 +127,7 @@ class Components(private val context: Context) {
val performance by lazy { PerformanceComponent() } val performance by lazy { PerformanceComponent() }
val push by lazy { Push(context, analytics.crashReporter) } val push by lazy { Push(context, analytics.crashReporter) }
val wifiConnectionMonitor by lazy { WifiConnectionMonitor(context as Application) } 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) } val settings by lazy { Settings(context) }

@ -95,8 +95,8 @@ class Core(
trackingProtectionPolicy = trackingProtectionPolicyFactory.createTrackingProtectionPolicy(), trackingProtectionPolicy = trackingProtectionPolicyFactory.createTrackingProtectionPolicy(),
historyTrackingDelegate = HistoryDelegate(lazyHistoryStorage), historyTrackingDelegate = HistoryDelegate(lazyHistoryStorage),
preferredColorScheme = getPreferredColorScheme(), preferredColorScheme = getPreferredColorScheme(),
automaticFontSizeAdjustment = context.settings().shouldUseAutoSize, automaticFontSizeAdjustment = context.settings().shouldUseAutoSize(),
fontInflationEnabled = context.settings().shouldUseAutoSize, fontInflationEnabled = context.settings().shouldUseAutoSize(),
suspendMediaWhenInactive = false, suspendMediaWhenInactive = false,
forceUserScalableContent = context.settings().forceEnableZoom, forceUserScalableContent = context.settings().forceEnableZoom,
loginAutofillEnabled = context.settings().shouldAutofillLogins 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 package org.mozilla.fenix.components.metrics
import android.content.Intent import android.content.Intent
import android.view.View
import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting
import androidx.core.view.doOnPreDraw
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner
import kotlinx.coroutines.runBlocking
import mozilla.components.support.utils.SafeIntent import mozilla.components.support.utils.SafeIntent
import org.mozilla.fenix.components.metrics.Event.AppAllStartup import org.mozilla.fenix.components.metrics.Event.AppAllStartup
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Source 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.HOT
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.COLD import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.COLD
import org.mozilla.fenix.components.metrics.Event.AppAllStartup.Type.WARM 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 * Tracks application startup source, type, launch time, and whether or not activity has
* the activity from. Sample metric = [source = COLD, type = APP_ICON, hasSavedInstance = false] * 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 * The basic idea is to collect these metrics from different phases of startup through
* [AppAllStartup] and finally report them on Activity's onResume() function. * [AppAllStartup] and finally report them on Activity's onResume() function.
*/ */
@Suppress("TooManyFunctions") @Suppress("TooManyFunctions")
class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObserver { class AppStartupTelemetry(
private val metrics: MetricController,
@VisibleForTesting(otherwise = PRIVATE)
var appLaunchTimeMeasurement: AppLaunchTimeMeasurement = AppLaunchTimeMeasurement()
) : LifecycleObserver {
init { init {
ProcessLifecycleOwner.get().lifecycle.addObserver(this) ProcessLifecycleOwner.get().lifecycle.addObserver(this)
@ -47,18 +56,42 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
wasAppCreateCalledBeforeActivityCreate = true wasAppCreateCalledBeforeActivityCreate = true
} }
fun onHomeActivityOnCreate(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) { fun onHomeActivityOnCreate(
setOnCreateData(safeIntent, hasSavedInstanceState, false) safeIntent: SafeIntent,
hasSavedInstanceState: Boolean,
homeActivityInitTimeStampNanoSeconds: Long,
rootContainer: View
) {
setOnCreateData(safeIntent, hasSavedInstanceState, homeActivityInitTimeStampNanoSeconds, false)
rootContainer.doOnPreDraw {
onPreDraw()
}
} }
fun onExternalAppBrowserOnCreate(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) { fun onExternalAppBrowserOnCreate(
setOnCreateData(safeIntent, hasSavedInstanceState, true) 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. // we are not setting [Source] in this method since source is derived from an intent.
// therefore source gets set in onNewIntent(). // therefore source gets set in onNewIntent().
onRestartData = Pair(HOT, null) onRestartData = Pair(HOT, null)
rootContainer.doOnPreDraw {
onPreDraw()
}
} }
fun onHomeActivityOnNewIntent(safeIntent: SafeIntent) { fun onHomeActivityOnNewIntent(safeIntent: SafeIntent) {
@ -70,6 +103,7 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
private fun setOnCreateData( private fun setOnCreateData(
safeIntent: SafeIntent, safeIntent: SafeIntent,
hasSavedInstanceState: Boolean, hasSavedInstanceState: Boolean,
homeActivityInitTimeStampNanoSeconds: Long,
isExternalAppBrowserActivity: Boolean isExternalAppBrowserActivity: Boolean
) { ) {
onCreateData = AppAllStartup( onCreateData = AppAllStartup(
@ -77,6 +111,7 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
getAppStartupType(), getAppStartupType(),
hasSavedInstanceState hasSavedInstanceState
) )
appLaunchTimeMeasurement.onHomeActivityOnCreate(homeActivityInitTimeStampNanoSeconds)
wasAppCreateCalledBeforeActivityCreate = false wasAppCreateCalledBeforeActivityCreate = false
} }
@ -101,23 +136,14 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
} }
} }
/** private suspend fun recordMetric() {
* 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() {
if (!isMetricRecordedSinceAppWasForegrounded) { if (!isMetricRecordedSinceAppWasForegrounded) {
val appAllStartup: AppAllStartup = if (onCreateData != null) { val appAllStartup: AppAllStartup = if (onCreateData != null) {
onCreateData!! onCreateData!!
} else { } else {
mergeOnRestartAndOnNewIntentIntoStartup() mergeOnRestartAndOnNewIntentIntoStartup()
} }
appAllStartup.launchTime = appLaunchTimeMeasurement.getApplicationLaunchTime(appAllStartup.type)
metrics.track(appAllStartup) metrics.track(appAllStartup)
isMetricRecordedSinceAppWasForegrounded = true isMetricRecordedSinceAppWasForegrounded = true
} }
@ -125,6 +151,7 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
onCreateData = null onCreateData = null
onNewIntentData = null onNewIntentData = null
onRestartData = null onRestartData = null
appLaunchTimeMeasurement = AppLaunchTimeMeasurement()
} }
private fun mergeOnRestartAndOnNewIntentIntoStartup(): AppAllStartup { private fun mergeOnRestartAndOnNewIntentIntoStartup(): AppAllStartup {
@ -143,4 +170,24 @@ class AppStartupTelemetry(private val metrics: MetricController) : LifecycleObse
// Therefore we set the isMetricRecorded flag to false. // Therefore we set the isMetricRecorded flag to false.
isMetricRecordedSinceAppWasForegrounded = 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( data class AppAllStartup(
val source: Source, val source: Source,
val type: Type, val type: Type,
val hasSavedInstanceState: Boolean? = null val hasSavedInstanceState: Boolean? = null,
var launchTime: Long? = null
) : Event() { ) : Event() {
enum class Source { APP_ICON, LINK, CUSTOM_TAB, UNKNOWN } enum class Source { APP_ICON, LINK, CUSTOM_TAB, UNKNOWN }
enum class Type { COLD, WARM, HOT, ERROR } enum class Type { COLD, WARM, HOT, ERROR }
@ -354,6 +355,10 @@ sealed class Event {
extrasMap[Events.appOpenedAllStartupKeys.hasSavedInstanceState] = extrasMap[Events.appOpenedAllStartupKeys.hasSavedInstanceState] =
hasSavedInstanceState.toString() hasSavedInstanceState.toString()
} }
if (launchTime != null) {
extrasMap[Events.appOpenedAllStartupKeys.firstFramePreDrawNanos] =
launchTime.toString()
}
return extrasMap return extrasMap
} }
} }

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

@ -6,6 +6,7 @@ package org.mozilla.fenix.customtabs
import androidx.navigation.NavDestination import androidx.navigation.NavDestination
import androidx.navigation.NavDirections import androidx.navigation.NavDirections
import kotlinx.android.synthetic.main.activity_home.*
import mozilla.components.browser.session.runWithSession import mozilla.components.browser.session.runWithSession
import mozilla.components.concept.engine.manifest.WebAppManifestParser import mozilla.components.concept.engine.manifest.WebAppManifestParser
import mozilla.components.feature.intent.ext.getSessionId import mozilla.components.feature.intent.ext.getSessionId
@ -36,7 +37,13 @@ open class ExternalAppBrowserActivity : HomeActivity() {
final override fun getIntentSessionId(intent: SafeIntent) = intent.getSessionId() final override fun getIntentSessionId(intent: SafeIntent) = intent.getSessionId()
override fun startupTelemetryOnCreateCalled(safeIntent: SafeIntent, hasSavedInstanceState: Boolean) { 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( override fun getNavDirections(

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

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

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

@ -161,27 +161,17 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
val menuRes = when (historyStore.state.mode) { if (historyStore.state.mode is HistoryFragmentState.Mode.Editing) {
HistoryFragmentState.Mode.Normal -> R.menu.library_menu inflater.inflate(R.menu.history_select_multi, menu)
is HistoryFragmentState.Mode.Syncing -> R.menu.library_menu menu.findItem(R.id.share_history_multi_select)?.isVisible = true
is HistoryFragmentState.Mode.Editing -> R.menu.history_select_multi 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) { override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.close_history -> {
close()
true
}
R.id.share_history_multi_select -> { R.id.share_history_multi_select -> {
val selectedHistory = historyStore.state.mode.selectedItems val selectedHistory = historyStore.state.mode.selectedItems
val shareTabs = selectedHistory.map { ShareData(url = it.url, title = it.title) } 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() 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 convertTicksToNanos(ticks: Long): Double = ticks * nanosPerClockTick
fun convertNanosToTicks(nanos: Long): Double = nanos / 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 // 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 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. // If scale is 100%, use the automatic font size adjustment
settings.fontSizeFactor = newTextScale val useAutoSize = newTextScale == 1F
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
components.core.engine.settings.automaticFontSizeAdjustment = useAutoSize components.core.engine.settings.automaticFontSizeAdjustment = useAutoSize
components.core.engine.settings.fontInflationEnabled = 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) { 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 // Reload the current session to reflect the new text scale
components.useCases.sessionUseCases.reload() components.useCases.sessionUseCases.reload()

@ -25,6 +25,7 @@ fun SitePermissions.get(field: PhoneFeature) = when (field) {
PhoneFeature.NOTIFICATION -> notification PhoneFeature.NOTIFICATION -> notification
PhoneFeature.AUTOPLAY_AUDIBLE -> autoplayAudible PhoneFeature.AUTOPLAY_AUDIBLE -> autoplayAudible
PhoneFeature.AUTOPLAY_INAUDIBLE -> autoplayInaudible PhoneFeature.AUTOPLAY_INAUDIBLE -> autoplayInaudible
PhoneFeature.PERSISTENT_STORAGE -> localStorage
} }
fun SitePermissions.update(field: PhoneFeature, value: SitePermissions.Status) = when (field) { 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.NOTIFICATION -> copy(notification = value)
PhoneFeature.AUTOPLAY_AUDIBLE -> copy(autoplayAudible = value) PhoneFeature.AUTOPLAY_AUDIBLE -> copy(autoplayAudible = value)
PhoneFeature.AUTOPLAY_INAUDIBLE -> copy(autoplayInaudible = 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) requestPermissions(permissions, REQUEST_CODE_CAMERA_PERMISSIONS)
}, },
onScanResult = { pairingUrl -> 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( requireComponents.services.accountsAuthFeature.beginPairingAuthentication(
requireContext(), requireContext(),
pairingUrl pairingUrl
@ -53,7 +62,7 @@ class PairFragment : Fragment(R.layout.fragment_pair), UserInteractionHandler {
@Suppress("Deprecation") @Suppress("Deprecation")
vibrator.vibrate(VIBRATE_LENGTH) vibrator.vibrate(VIBRATE_LENGTH)
} }
findNavController(this@PairFragment).popBackStack( findNavController().popBackStack(
R.id.turnOnSyncFragment, R.id.turnOnSyncFragment,
false false
) )

@ -30,7 +30,8 @@ enum class PhoneFeature(val androidPermissionsList: Array<String>) : Parcelable
MICROPHONE(arrayOf(RECORD_AUDIO)), MICROPHONE(arrayOf(RECORD_AUDIO)),
NOTIFICATION(emptyArray()), NOTIFICATION(emptyArray()),
AUTOPLAY_AUDIBLE(emptyArray()), AUTOPLAY_AUDIBLE(emptyArray()),
AUTOPLAY_INAUDIBLE(emptyArray()); AUTOPLAY_INAUDIBLE(emptyArray()),
PERSISTENT_STORAGE(emptyArray());
fun isAndroidPermissionGranted(context: Context): Boolean { fun isAndroidPermissionGranted(context: Context): Boolean {
return context.isPermissionGranted(androidPermissionsList.asIterable()) 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) LOCATION -> context.getString(R.string.preference_phone_feature_location)
MICROPHONE -> context.getString(R.string.preference_phone_feature_microphone) MICROPHONE -> context.getString(R.string.preference_phone_feature_microphone)
NOTIFICATION -> context.getString(R.string.preference_phone_feature_notification) 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) 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 NOTIFICATION -> R.string.pref_key_phone_feature_notification
AUTOPLAY_AUDIBLE -> R.string.pref_key_browser_feature_autoplay_audible AUTOPLAY_AUDIBLE -> R.string.pref_key_browser_feature_autoplay_audible
AUTOPLAY_INAUDIBLE -> R.string.pref_key_browser_feature_autoplay_inaudible 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?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.secret_settings_preferences, rootKey) 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 { requirePreference<SwitchPreference>(R.string.pref_key_enable_top_frecent_sites).apply {
isVisible = FeatureFlags.topFrecentSite isVisible = FeatureFlags.topFrecentSite
isChecked = context.settings().showTopFrecentSites isChecked = context.settings().showTopFrecentSites

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

@ -5,27 +5,29 @@
package org.mozilla.fenix.settings package org.mozilla.fenix.settings
import android.os.Bundle import android.os.Bundle
import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.utils.view.addToRadioGroup import org.mozilla.fenix.utils.view.addToRadioGroup
/** /**
* Lets the user customize auto closing tabs. * Lets the user customize auto closing tabs.
*/ */
class CloseTabsSettingsFragment : PreferenceFragmentCompat() { class TabsSettingsFragment : PreferenceFragmentCompat() {
private lateinit var radioManual: RadioButtonPreference private lateinit var radioManual: RadioButtonPreference
private lateinit var radioOneDay: RadioButtonPreference private lateinit var radioOneDay: RadioButtonPreference
private lateinit var radioOneWeek: RadioButtonPreference private lateinit var radioOneWeek: RadioButtonPreference
private lateinit var radioOneMonth: RadioButtonPreference private lateinit var radioOneMonth: RadioButtonPreference
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.close_tabs_preferences, rootKey) setPreferencesFromResource(R.xml.tabs_preferences, rootKey)
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
showToolbar(getString(R.string.preferences_close_tabs)) showToolbar(getString(R.string.preferences_tabs))
setupPreferences() setupPreferences()
} }
@ -34,6 +36,7 @@ class CloseTabsSettingsFragment : PreferenceFragmentCompat() {
radioOneDay = requirePreference(R.string.pref_key_close_tabs_after_one_day) radioOneDay = requirePreference(R.string.pref_key_close_tabs_after_one_day)
radioOneWeek = requirePreference(R.string.pref_key_close_tabs_after_one_week) radioOneWeek = requirePreference(R.string.pref_key_close_tabs_after_one_week)
radioOneMonth = requirePreference(R.string.pref_key_close_tabs_after_one_month) radioOneMonth = requirePreference(R.string.pref_key_close_tabs_after_one_month)
setupRadioGroups() setupRadioGroups()
} }

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

@ -52,12 +52,24 @@ class WebsitePermissionsView(
val view: View = LayoutInflater.from(context) val view: View = LayoutInflater.from(context)
.inflate(R.layout.quicksettings_permissions, containerView, true) .inflate(R.layout.quicksettings_permissions, containerView, true)
private val permissionViews: Map<PhoneFeature, PermissionViewHolder> = EnumMap(mapOf( private val permissionViews: Map<PhoneFeature, PermissionViewHolder> = EnumMap(
PhoneFeature.CAMERA to PermissionViewHolder(view.cameraLabel, view.cameraStatus), mapOf(
PhoneFeature.LOCATION to PermissionViewHolder(view.locationLabel, view.locationStatus), PhoneFeature.CAMERA to PermissionViewHolder(view.cameraLabel, view.cameraStatus),
PhoneFeature.MICROPHONE to PermissionViewHolder(view.microphoneLabel, view.microphoneStatus), PhoneFeature.LOCATION to PermissionViewHolder(view.locationLabel, view.locationStatus),
PhoneFeature.NOTIFICATION to PermissionViewHolder(view.notificationLabel, view.notificationStatus) 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. * 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.LOCATION
import org.mozilla.fenix.settings.PhoneFeature.MICROPHONE import org.mozilla.fenix.settings.PhoneFeature.MICROPHONE
import org.mozilla.fenix.settings.PhoneFeature.NOTIFICATION import org.mozilla.fenix.settings.PhoneFeature.NOTIFICATION
import org.mozilla.fenix.settings.PhoneFeature.PERSISTENT_STORAGE
import org.mozilla.fenix.settings.requirePreference import org.mozilla.fenix.settings.requirePreference
class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() { class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
@ -57,6 +58,7 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
initPhoneFeature(LOCATION) initPhoneFeature(LOCATION)
initPhoneFeature(MICROPHONE) initPhoneFeature(MICROPHONE)
initPhoneFeature(NOTIFICATION) initPhoneFeature(NOTIFICATION)
initPhoneFeature(PERSISTENT_STORAGE)
bindClearPermissionsButton() bindClearPermissionsButton()
} }

@ -14,7 +14,7 @@ import mozilla.components.browser.tabstray.TabViewHolder
import mozilla.components.browser.tabstray.TabsAdapter import mozilla.components.browser.tabstray.TabsAdapter
import mozilla.components.concept.tabstray.Tab import mozilla.components.concept.tabstray.Tab
import mozilla.components.concept.tabstray.Tabs 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.R
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components

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

@ -142,6 +142,14 @@ class TabTrayView(
private val components = container.context.components 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 { init {
components.analytics.metrics.track(Event.TabsTrayOpened) components.analytics.metrics.track(Event.TabsTrayOpened)
@ -240,6 +248,7 @@ class TabTrayView(
} }
updateTabsTrayLayout() updateTabsTrayLayout()
view.tabsTray.apply { view.tabsTray.apply {
adapter = concatAdapter adapter = concatAdapter
@ -291,14 +300,9 @@ class TabTrayView(
tabTrayItemMenu = tabTrayItemMenu =
TabTrayItemMenu( TabTrayItemMenu(
context = view.context, context = view.context,
shouldShowSaveToCollection = { tabs.isNotEmpty() && view.tab_layout.selectedTabPosition == 0 }, shouldShowSaveToCollection = { checkOpenTabs.invoke() && view.tab_layout.selectedTabPosition == 0 },
hasOpenTabs = { hasOpenTabs = checkOpenTabs
if (isPrivateModeSelected) { ) {
view.context.components.core.store.state.privateTabs.isNotEmpty()
} else {
view.context.components.core.store.state.normalTabs.isNotEmpty()
}
}) {
when (it) { when (it) {
is TabTrayItemMenu.Item.ShareAllTabs -> interactor.onShareTabsClicked( is TabTrayItemMenu.Item.ShareAllTabs -> interactor.onShareTabsClicked(
isPrivateModeSelected 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) { private fun handleTabClicked(tab: SyncTab) {
interactor.onSyncedTabClicked(tab) interactor.onSyncedTabClicked(tab)
} }
@ -401,7 +397,7 @@ class TabTrayView(
private fun setupCompactTabsTrayLayout() { private fun setupCompactTabsTrayLayout() {
view.tabsTray.apply { view.tabsTray.apply {
val gridLayoutManager = GridLayoutManager(container.context, gridViewNumberOfCols(container.context)) val gridLayoutManager = GridLayoutManager(container.context, getNumberOfGridColumns(container.context))
if (useTopTabsTray) { if (useTopTabsTray) {
gridLayoutManager.reverseLayout = true gridLayoutManager.reverseLayout = true
} }
@ -411,7 +407,7 @@ class TabTrayView(
return if (position < numTabs) { return if (position < numTabs) {
1 1
} else { } else {
gridViewNumberOfCols(container.context) getNumberOfGridColumns(container.context)
} }
} }
} }
@ -469,6 +465,8 @@ class TabTrayView(
updateUINormalMode(view.context.components.core.store.state) updateUINormalMode(view.context.components.core.store.state)
scrollToTab(view.context.components.core.store.state.selectedTabId) scrollToTab(view.context.components.core.store.state.selectedTabId)
view.tabsTray.invalidateItemDecorations()
if (isPrivateModeSelected) { if (isPrivateModeSelected) {
components.analytics.metrics.track(Event.TabsTrayPrivateModeTapped) components.analytics.metrics.track(Event.TabsTrayPrivateModeTapped)
} else { } else {
@ -482,6 +480,16 @@ class TabTrayView(
var mode: Mode = Mode.Normal var mode: Mode = Mode.Normal
private set 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) { fun updateState(state: TabTrayDialogFragmentState) {
val oldMode = mode val oldMode = mode

@ -20,13 +20,13 @@ import mozilla.components.browser.tabstray.TabViewHolder
import mozilla.components.browser.tabstray.TabsTrayStyling import mozilla.components.browser.tabstray.TabsTrayStyling
import mozilla.components.browser.tabstray.thumbnail.TabThumbnailView import mozilla.components.browser.tabstray.thumbnail.TabThumbnailView
import mozilla.components.browser.toolbar.MAX_URI_LENGTH 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.Tab
import mozilla.components.concept.tabstray.TabsTray import mozilla.components.concept.tabstray.TabsTray
import mozilla.components.feature.media.ext.pauseIfPlaying import mozilla.components.feature.media.ext.pauseIfPlaying
import mozilla.components.feature.media.ext.playIfPaused import mozilla.components.feature.media.ext.playIfPaused
import mozilla.components.support.base.observer.Observable 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.R
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.components.metrics.MetricController
@ -76,13 +76,10 @@ class TabTrayViewHolder(
) { ) {
this.tab = tab this.tab = tab
// Basic text
updateTitle(tab) updateTitle(tab)
updateUrl(tab) updateUrl(tab)
updateIcon(tab) updateIcon(tab)
updateCloseButtonDescription(tab.title) updateCloseButtonDescription(tab.title)
// Drawables and theme
updateBackgroundColor(isSelected) updateBackgroundColor(isSelected)
if (tab.thumbnail != null) { 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.content.getDrawableWithTint
import mozilla.components.support.ktx.android.util.dpToPx import mozilla.components.support.ktx.android.util.dpToPx
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.home.sessioncontrol.SwipeToDeleteCallback import org.mozilla.fenix.home.sessioncontrol.SwipeToDeleteCallback
/** /**

@ -15,6 +15,7 @@ import android.view.View
import android.widget.ImageView import android.widget.ImageView
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.marginTop 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.*
import kotlinx.android.synthetic.main.tracking_protection_onboarding_popup.view.* import kotlinx.android.synthetic.main.tracking_protection_onboarding_popup.view.*
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
@ -44,13 +45,32 @@ class TrackingProtectionOverlay(
private fun shouldShowTrackingProtectionOnboarding(session: Session) = private fun shouldShowTrackingProtectionOnboarding(session: Session) =
session.trackerBlockingEnabled && session.trackerBlockingEnabled &&
session.trackersBlocked.isNotEmpty() && session.trackersBlocked.isNotEmpty() &&
settings.shouldShowTrackingProtectionCfr settings.shouldShowTrackingProtectionCfr
@Suppress("MagicNumber", "InflateParams") @Suppress("MagicNumber", "InflateParams")
private fun showTrackingProtectionOnboarding() { private fun showTrackingProtectionOnboarding() {
if (!getToolbar().hasWindowFocus()) return 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) { val trackingOnboardingDialog = object : Dialog(context) {
override fun onTouchEvent(event: MotionEvent): Boolean { override fun onTouchEvent(event: MotionEvent): Boolean {
@ -63,7 +83,6 @@ class TrackingProtectionOverlay(
val layout = LayoutInflater.from(context) val layout = LayoutInflater.from(context)
.inflate(R.layout.tracking_protection_onboarding_popup, null) .inflate(R.layout.tracking_protection_onboarding_popup, null)
val toolbarPosition = settings.toolbarPosition
layout.drop_down_triangle.isVisible = toolbarPosition == ToolbarPosition.TOP layout.drop_down_triangle.isVisible = toolbarPosition == ToolbarPosition.TOP
layout.pop_up_triangle.isVisible = toolbarPosition == ToolbarPosition.BOTTOM layout.pop_up_triangle.isVisible = toolbarPosition == ToolbarPosition.BOTTOM

@ -124,6 +124,12 @@ class Settings(private val appContext: Context) : PreferencesHolder {
val canShowCfr: Boolean val canShowCfr: Boolean
get() = (System.currentTimeMillis() - lastCfrShownTimeInMillis) > THREE_DAYS_MS 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( var waitToShowPageUntilFirstPaint by featureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_wait_first_paint), appContext.getPreferenceKey(R.string.pref_key_wait_first_paint),
default = false, default = false,
@ -305,16 +311,13 @@ class Settings(private val appContext: Context) : PreferencesHolder {
val shouldShowSecurityPinWarning: Boolean val shouldShowSecurityPinWarning: Boolean
get() = loginsSecureWarningCount.underMaxCount() get() = loginsSecureWarningCount.underMaxCount()
fun shouldUseAutoSize() = fontSizeFactor == 1F
var shouldUseLightTheme by booleanPreference( var shouldUseLightTheme by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_light_theme), appContext.getPreferenceKey(R.string.pref_key_light_theme),
default = false default = false
) )
var shouldUseAutoSize by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_accessibility_auto_size),
default = true
)
var fontSizeFactor by floatPreference( var fontSizeFactor by floatPreference(
appContext.getPreferenceKey(R.string.pref_key_accessibility_font_scale), appContext.getPreferenceKey(R.string.pref_key_accessibility_font_scale),
default = 1f default = 1f
@ -768,7 +771,8 @@ class Settings(private val appContext: Context) : PreferencesHolder {
location = getSitePermissionsPhoneFeatureAction(PhoneFeature.LOCATION), location = getSitePermissionsPhoneFeatureAction(PhoneFeature.LOCATION),
camera = getSitePermissionsPhoneFeatureAction(PhoneFeature.CAMERA), camera = getSitePermissionsPhoneFeatureAction(PhoneFeature.CAMERA),
autoplayAudible = getSitePermissionsPhoneFeatureAutoplayAction(PhoneFeature.AUTOPLAY_AUDIBLE), 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_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="73dp" android:layout_marginStart="73dp"
android:layout_marginTop="12dp" android:layout_marginTop="12dp">
android:layout_marginEnd="12dp">
<TextView <TextView
android:id="@+id/webAddressHeader" android:id="@+id/webAddressHeader"
@ -38,7 +37,7 @@
android:paddingBottom="@dimen/saved_logins_detail_menu_vertical_padding" android:paddingBottom="@dimen/saved_logins_detail_menu_vertical_padding"
android:textColor="?primaryText" android:textColor="?primaryText"
android:textSize="16sp" android:textSize="16sp"
app:layout_constraintEnd_toEndOf="@id/webAddressHeader" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/webAddressHeader" app:layout_constraintStart_toStartOf="@id/webAddressHeader"
app:layout_constraintTop_toBottomOf="@id/webAddressHeader" app:layout_constraintTop_toBottomOf="@id/webAddressHeader"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
@ -46,8 +45,8 @@
<ImageButton <ImageButton
android:id="@+id/openWebAddress" android:id="@+id/openWebAddress"
android:layout_width="wrap_content" android:layout_width="48dp"
android:layout_height="wrap_content" android:layout_height="48dp"
android:background="?android:attr/selectableItemBackgroundBorderless" android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/saved_login_open_site" android:contentDescription="@string/saved_login_open_site"
app:layout_constraintBottom_toBottomOf="@id/webAddressText" app:layout_constraintBottom_toBottomOf="@id/webAddressText"
@ -91,8 +90,8 @@
<ImageButton <ImageButton
android:id="@+id/copyUsername" android:id="@+id/copyUsername"
android:layout_width="wrap_content" android:layout_width="48dp"
android:layout_height="wrap_content" android:layout_height="48dp"
android:background="?android:attr/selectableItemBackgroundBorderless" android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/saved_login_copy_username" android:contentDescription="@string/saved_login_copy_username"
app:layout_constraintBottom_toBottomOf="@id/usernameText" app:layout_constraintBottom_toBottomOf="@id/usernameText"
@ -138,9 +137,8 @@
<ImageButton <ImageButton
android:id="@+id/revealPasswordButton" android:id="@+id/revealPasswordButton"
android:layout_width="20dp" android:layout_width="48dp"
android:layout_height="20dp" android:layout_height="48dp"
android:layout_marginEnd="36dp"
android:background="@null" android:background="@null"
android:contentDescription="@string/saved_login_reveal_password" android:contentDescription="@string/saved_login_reveal_password"
app:layout_constraintBottom_toBottomOf="@id/passwordText" app:layout_constraintBottom_toBottomOf="@id/passwordText"
@ -151,9 +149,9 @@
<ImageButton <ImageButton
android:id="@+id/copyPassword" android:id="@+id/copyPassword"
android:layout_width="wrap_content" android:layout_width="48dp"
android:layout_height="wrap_content" android:layout_height="48dp"
android:background="@null" android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/saved_logins_copy_password" android:contentDescription="@string/saved_logins_copy_password"
app:layout_constraintBottom_toBottomOf="@id/passwordText" app:layout_constraintBottom_toBottomOf="@id/passwordText"
app:layout_constraintEnd_toEndOf="@id/openWebAddress" app:layout_constraintEnd_toEndOf="@id/openWebAddress"

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

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

@ -333,6 +333,8 @@
<string name="preferences_search_synced_tabs">ابحث في الألسنة المُزامنة</string> <string name="preferences_search_synced_tabs">ابحث في الألسنة المُزامنة</string>
<!-- Preference for account settings --> <!-- Preference for account settings -->
<string name="preferences_account_settings">إعدادات الحساب</string> <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 --> <!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">افتح الروابط في التطبيقات</string> <string name="preferences_open_links_in_apps">افتح الروابط في التطبيقات</string>
<!-- Preference for open download with an external download manager app --> <!-- Preference for open download with an external download manager app -->
@ -343,6 +345,17 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">التنبيهات</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">زامِن الآن</string> <string name="preferences_sync_now">زامِن الآن</string>
@ -430,6 +443,9 @@
<!-- Preference switch for Mozilla location service --> <!-- Preference switch for Mozilla location service -->
<string name="preferences_mozilla_location_service">خدمة التموضع من Mozilla</string> <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 --> <!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view --> <!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">فعّل «تزامُن»</string> <string name="preferences_sync">فعّل «تزامُن»</string>
@ -442,6 +458,9 @@
<!-- Preference for removing FxA account --> <!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">أزِل الحساب</string> <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 --> <!-- Button to open camera for pairing -->
<string name="pair_open_camera">افتح الكمرة</string> <string name="pair_open_camera">افتح الكمرة</string>
<!-- Button to cancel pairing --> <!-- Button to cancel pairing -->
@ -502,6 +521,8 @@
<string name="library_search">ابحث</string> <string name="library_search">ابحث</string>
<!-- Settings Page Title --> <!-- Settings Page Title -->
<string name="settings_title">الإعدادات</string> <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" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">أغلِق</string> <string name="content_description_close_button">أغلِق</string>
@ -509,10 +530,24 @@
<string name="library_recently_closed_tabs">الألسنة المُغلقة حديثًا</string> <string name="library_recently_closed_tabs">الألسنة المُغلقة حديثًا</string>
<!-- Option in library to open Recently Closed Tabs page --> <!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">اعرض التأريخ كاملا</string> <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 --> <!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">ما من ألسنة أُغلقت حديثًا</string> <string name="recently_closed_empty_message">ما من ألسنة أُغلقت حديثًا</string>
<!-- Tab Management --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">إغلاق الألسنة</string> <string name="preferences_close_tabs">إغلاق الألسنة</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -553,6 +588,8 @@
<string name="tab_tray_menu_open_new_tab">لسان جديد</string> <string name="tab_tray_menu_open_new_tab">لسان جديد</string>
<!-- Shortcut action to open the home screen --> <!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">انتقل إلى الصفحة الرئيسية</string> <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 --> <!-- 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> <string name="remove_tab_from_collection">أزِل اللسان من المجموعة</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed --> <!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
@ -577,6 +614,8 @@
<string name="current_session_save">احفظ</string> <string name="current_session_save">احفظ</string>
<!-- Button in the current session menu. Opens the share menu when pressed --> <!-- Button in the current session menu. Opens the share menu when pressed -->
<string name="current_session_share">شارِك</string> <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 --> <!-- Button to save the current set of tabs into a collection -->
<string name="save_to_collection">احفظ في التجميعة</string> <string name="save_to_collection">احفظ في التجميعة</string>
<!-- Text for the menu button to delete a collection --> <!-- Text for the menu button to delete a collection -->
@ -619,6 +658,13 @@
<!-- History multi select title in app bar <!-- History multi select title in app bar
The first parameter is the number of bookmarks selected --> The first parameter is the number of bookmarks selected -->
<string name="history_multi_select_title">حدّدتَ %1$d</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">آخر 24 ساعة</string> <string name="history_24_hours">آخر 24 ساعة</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -759,6 +805,8 @@
<string name="preference_phone_feature_location">المكان</string> <string name="preference_phone_feature_location">المكان</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">التنبيهات</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">اطلب السماح</string> <string name="preference_option_phone_feature_ask_to_allow">اطلب السماح</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->
@ -776,6 +824,10 @@
<!-- Label that indicates that all video and audio autoplay is allowed --> <!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">اسمح بالصوت والڤِديو</string> <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 --> <!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio2">احجب الصوت فقط</string> <string name="preference_option_autoplay_block_audio2">احجب الصوت فقط</string>
<!-- Label that indicates that all video and audio autoplay is blocked --> <!-- Label that indicates that all video and audio autoplay is blocked -->
@ -806,6 +858,12 @@
<string name="create_collection_deselect_all">ألغِ تحديد الكل</string> <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 --> <!-- 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> <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 --> <!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
<string name="create_collection_tabs_saved">حُفظت الألسنة!</string> <string name="create_collection_tabs_saved">حُفظت الألسنة!</string>
<!-- Text shown in snackbar when one or multiple tabs have been saved in a new collection --> <!-- 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> <string name="notification_pbm_delete_text_2">أغلِق الألسنة الخاصة</string>
<!-- Notification action to open Fenix and resume the current browsing session. --> <!-- Notification action to open Fenix and resume the current browsing session. -->
<string name="notification_pbm_action_open">افتح</string> <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 --> <!-- 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> <string name="notification_powered_by_channel_name">تدعمه</string>
<!-- Text shown in snackbar when user deletes a collection --> <!-- Text shown in snackbar when user deletes a collection -->
@ -887,6 +947,8 @@
<string name="snackbar_tab_closed">أُغلق اللسان</string> <string name="snackbar_tab_closed">أُغلق اللسان</string>
<!-- Text shown in snackbar when user closes all tabs --> <!-- Text shown in snackbar when user closes all tabs -->
<string name="snackbar_tabs_closed">أُغلقت الألسنة</string> <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 --> <!-- Text shown in snackbar when user closes a private tab -->
<string name="snackbar_private_tab_closed">أُغلق اللسان الخاص</string> <string name="snackbar_private_tab_closed">أُغلق اللسان الخاص</string>
<!-- Text shown in snackbar when user closes all private tabs --> <!-- Text shown in snackbar when user closes all private tabs -->
@ -939,16 +1001,26 @@
<string name="preferences_delete_browsing_data">حذف بيانات التصفح</string> <string name="preferences_delete_browsing_data">حذف بيانات التصفح</string>
<!-- Title for the tabs item in Delete browsing data --> <!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">الألسنة المفتوحة</string> <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 --> <!-- Title for the data and history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_data_title">تأريخ التصفح وبيانات الموقع</string> <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 --> <!-- Title for history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_history_title">التأريخ</string> <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 --> <!-- Title for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies">الكعكات</string> <string name="preferences_delete_browsing_data_cookies">الكعكات</string>
<!-- Subtitle for the cookies item in Delete browsing data --> <!-- Subtitle for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies_subtitle">ستخرج من معظم المواقع</string> <string name="preferences_delete_browsing_data_cookies_subtitle">ستخرج من معظم المواقع</string>
<!-- Title for the cached images and files item in Delete browsing data --> <!-- Title for the cached images and files item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cached_files">الصور والملفات المخبّأة</string> <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 --> <!-- Title for the site permissions item in Delete browsing data -->
<string name="preferences_delete_browsing_data_site_permissions">تصاريح المواقع</string> <string name="preferences_delete_browsing_data_site_permissions">تصاريح المواقع</string>
<!-- Text for the button to delete browsing data --> <!-- Text for the button to delete browsing data -->
@ -1030,26 +1102,49 @@
<string name="onboarding_firefox_account_signing_in">تَلج الآن…</string> <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 --> <!-- 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> <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 --> <!-- text to display in the snackbar once account is signed-in -->
<string name="onboarding_firefox_account_sync_is_on">التزامن يعمل</string> <string name="onboarding_firefox_account_sync_is_on">التزامن يعمل</string>
<!-- text to display in the snackbar if automatic sign-in fails. user may try again --> <!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">فشل الولوج</string> <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 --> <!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">القياسي (المبدئي)</string> <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 --> <!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">صارم (مستحسن)</string> <string name="onboarding_tracking_protection_strict_button">صارم (مستحسن)</string>
<!-- text for tracking protection radio button option for strict level of blocking --> <!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">صارم</string> <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 <!-- text for the toolbar position card header
In English this is an idiom for "choose a side as in an argument or fight" In English this is an idiom for "choose a side as in an argument or fight"
but it is ok to make this more literally about "choosing a position in a physical space --> but it is ok to make this more literally about "choosing a position in a physical space -->
<string name="onboarding_toolbar_position_header">اختر جهةً</string> <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 --> <!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">تصفّح بخصوصية</string> <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 --> <!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">افتح الإعدادات</string> <string name="onboarding_private_browsing_button">افتح الإعدادات</string>
<!-- text for the privacy notice onboarding card header --> <!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">خصوصيتك</string> <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 --> <!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
<string name="onboarding_close">أغلِق</string> <string name="onboarding_close">أغلِق</string>
@ -1060,8 +1155,12 @@
<!-- text for the theme picker onboarding card header --> <!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">اختر السمة</string> <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) --> <!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">آلي</string> <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 --> <!-- Theme setting for dark mode -->
<string name="onboarding_theme_dark_title">سمة داكنة</string> <string name="onboarding_theme_dark_title">سمة داكنة</string>
<!-- Theme setting for light mode --> <!-- Theme setting for light mode -->
@ -1075,6 +1174,8 @@
<string name="sync_sent_tab_error_snackbar">تعذر الإرسال</string> <string name="sync_sent_tab_error_snackbar">تعذر الإرسال</string>
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed --> <!-- 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> <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 --> <!-- Instructions on how to access pairing -->
<string name="sign_in_instructions"><![CDATA[افتح Firefox على حاسوبك وانتقل إلى <b>https://firefox.com/pair</b>]]></string> <string name="sign_in_instructions"><![CDATA[افتح Firefox على حاسوبك وانتقل إلى <b>https://firefox.com/pair</b>]]></string>
<!-- Text shown for sign in pairing when ready --> <!-- Text shown for sign in pairing when ready -->
@ -1083,6 +1184,8 @@
<string name="sign_in_with_camera">لِج باستخدام كمرتك</string> <string name="sign_in_with_camera">لِج باستخدام كمرتك</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">استعمل البريد بدل المسح</string> <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 --> <!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">سيتوقف Firefox عن مزامنة حسابك، لكن لن يحذف أيًا من بيانات تصفحك على هذا الجهاز.</string> <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) --> <!-- 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 --> <!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">ألغِ</string> <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 --> <!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings --> <!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">إعدادات الحماية</string> <string name="etp_settings">إعدادات الحماية</string>
@ -1106,12 +1212,22 @@
<string name="preference_enhanced_tracking_protection_explanation_learn_more">اطّلع على المزيد</string> <string name="preference_enhanced_tracking_protection_explanation_learn_more">اطّلع على المزيد</string>
<!-- Preference for enhanced tracking protection for the standard protection settings --> <!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">القياسي (المبدئي)</string> <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 --> <!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">صارم</string> <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 --> <!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">مخصّص</string> <string name="preference_enhanced_tracking_protection_custom">مخصّص</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings --> <!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description_2">اختر المتعقّبات والسكربتات التي تريد حجبها.</string> <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 --> <!-- 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--> <!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">الكعكات</string> <string name="preference_enhanced_tracking_protection_custom_cookies">الكعكات</string>
@ -1144,8 +1260,12 @@
<string name="etp_social_media_trackers_description">يحدّ من قدرة الشبكات الاجتماعية على تعقب نشاط تصفحك على الإنترنت.</string> <string name="etp_social_media_trackers_description">يحدّ من قدرة الشبكات الاجتماعية على تعقب نشاط تصفحك على الإنترنت.</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection --> <!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">كعكات تتعقّبك بين المواقع</string> <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 --> <!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">المُعدّنات المعمّاة</string> <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 --> <!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">مسجّلات البصمات</string> <string name="etp_fingerprinters_title">مسجّلات البصمات</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection --> <!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
@ -1158,6 +1278,8 @@
<string name="enhanced_tracking_protection_exceptions">عُطّلت الحماية الموسّعة من التعقب لهذه المواقع</string> <string name="enhanced_tracking_protection_exceptions">عُطّلت الحماية الموسّعة من التعقب لهذه المواقع</string>
<!-- About page Your rights link text --> <!-- About page Your rights link text -->
<string name="about_your_rights">حقوقك</string> <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 --> <!-- About page link text to open what's new link -->
<string name="about_whats_new">ما جديد %s</string> <string name="about_whats_new">ما جديد %s</string>
@ -1172,6 +1294,18 @@
<!-- About page link text to open licensing information link --> <!-- About page link text to open licensing information link -->
<string name="about_licensing_information">معلومات الترخيص</string> <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 --> <!-- Browser long press popup menu -->
<!-- Copy the current url --> <!-- Copy the current url -->
<string name="browser_toolbar_long_press_popup_copy">انسخ</string> <string name="browser_toolbar_long_press_popup_copy">انسخ</string>
@ -1193,6 +1327,9 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog --> <!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">اسم الاختصار</string> <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 --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">جلسات الولوج وكلمات السر</string> <string name="preferences_passwords_logins_and_passwords">جلسات الولوج وكلمات السر</string>
<!-- Preference for managing the saving of logins and passwords in Fenix --> <!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1216,6 +1353,8 @@
<!-- Preference to access list of saved logins --> <!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">جلسات الولوج المحفوظة</string> <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 --> <!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">اعرف المزيد عن المزامنة.</string> <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 --> <!-- 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> <string name="preferences_passwords_exceptions_description_empty">ستظهر جلسات الولوج وكلمات السر غير المحفوظة هنا.</string>
<!-- Description of list of login exceptions that we never save logins for --> <!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">لن تُحفظ جلسات الولوج وكلمات السر لهذه المواقع.</string> <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 --> <!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">ابحث في جلسات الولوج</string> <string name="preferences_passwords_saved_logins_search">ابحث في جلسات الولوج</string>
<!-- Option to sort logins list A-Z, alphabetically --> <!-- Option to sort logins list A-Z, alphabetically -->
@ -1236,6 +1377,10 @@
<string name="preferences_passwords_saved_logins_username">اسم المستخدم</string> <string name="preferences_passwords_saved_logins_username">اسم المستخدم</string>
<!-- The header for the password for a login --> <!-- The header for the password for a login -->
<string name="preferences_passwords_saved_logins_password">كلمة السر</string> <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 --> <!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning">هذا الاتصال ليس آمنا. بيانات الولوج المدخلة هنا عرضة للخطر.</string> <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 --> <!-- 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> <string name="logins_site_copied">نُسخ الموقع إلى الحافظة</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins--> <!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">انسخ كلمة السر</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">اسنخ اسم المستخدم</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">انسخ الموقع</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
<string name="saved_login_reveal_password">أظهِر كلمة السر</string> <string name="saved_login_reveal_password">أظهِر كلمة السر</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins --> <!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">أخفِ كلمة السر</string> <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 --> <!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">لاحقًا</string> <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) --> <!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">الاسم (ا-ي)</string> <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) --> <!-- 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> <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 --> <!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">أضِف محرك بحث</string> <string name="search_engine_add_custom_search_engine_title">أضِف محرك بحث</string>
<!-- Title of the Edit search engine screen --> <!-- Title of the Edit search engine screen -->
@ -1286,6 +1452,8 @@
<string name="search_add_custom_engine_label_other">أخرى</string> <string name="search_add_custom_engine_label_other">أخرى</string>
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text --> <!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
<string name="search_add_custom_engine_name_hint">الاسم</string> <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 --> <!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">اطّلع على المزيد</string> <string name="search_add_custom_engine_learn_more_label">اطّلع على المزيد</string>
@ -1294,9 +1462,13 @@
<!-- Text shown when a user leaves the name field empty --> <!-- Text shown when a user leaves the name field empty -->
<string name="search_add_custom_engine_error_empty_name">أدخِل اسم محرك البحث</string> <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 --> <!-- Text shown when a user leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">أدخِل نص البحث</string> <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 --> <!-- 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> <string name="search_add_custom_engine_error_cannot_reach">عُطل أثناء الاتصال بِ‍ ”%s“</string>
<!-- Text shown when a user creates a new search engine --> <!-- 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 --> <!-- Text shown when a user successfully deletes a custom search engine -->
<string name="search_delete_search_engine_success_message">حُذف %s</string> <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 --> <!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">يحدّث %s…</string> <string name="migration_updating_app_button_text">يحدّث %s…</string>
<!-- Text on the enabled button. Placeholder replaced with app name--> <!-- Text on the enabled button. Placeholder replaced with app name-->
<string name="migration_update_app_button">ابدأ %s</string> <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.)--> <!--Text on list of migrated items (e.g. Settings, History, etc.)-->
<string name="migration_text_passwords">كلمات السر</string> <string name="migration_text_passwords">كلمات السر</string>
@ -1320,6 +1496,9 @@
<!-- Second step for the allowing a permission --> <!-- Second step for the allowing a permission -->
<string name="phone_feature_blocked_step_permissions"><![CDATA[2. انقر <b>الأذونات</b>]]></string> <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 --> <!-- Label that indicates a site is using a secure connection -->
<string name="quick_settings_sheet_secure_connection">اتصال آمن</string> <string name="quick_settings_sheet_secure_connection">اتصال آمن</string>
<!-- Label that indicates a site is using a insecure connection --> <!-- Label that indicates a site is using a insecure connection -->
@ -1332,6 +1511,8 @@
<string name="confirm_clear_permission_site">أمتأكد من مسح التصريح لهذا الموقع؟</string> <string name="confirm_clear_permission_site">أمتأكد من مسح التصريح لهذا الموقع؟</string>
<!-- label shown when there are not site exceptions to show in the site exception settings --> <!-- label shown when there are not site exceptions to show in the site exception settings -->
<string name="no_site_exceptions">ما من مواقع مستثناة</string> <string name="no_site_exceptions">ما من مواقع مستثناة</string>
<!-- Label for the Pocket default top site -->
<string name="pocket_top_articles">أهم المقالات</string>
<!-- Bookmark deletion confirmation --> <!-- Bookmark deletion confirmation -->
<string name="bookmark_deletion_confirmation">أمتأكد من حذف هذه العلامة؟</string> <string name="bookmark_deletion_confirmation">أمتأكد من حذف هذه العلامة؟</string>
<!-- Browser menu button that adds a top site to the home fragment --> <!-- 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 --> <!-- 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> <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. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">حسنًا، فهمت</string> <string name="top_sites_max_limit_confirmation_button">حسنًا، فهمت</string>
<!-- 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 <!-- Deprecated: text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">استغلّ %s إلى أقصى حد.</string> <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 --> <!-- Deprecated: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">يمكنك إضافة هذا الموقع إلى شاشة البداية لتصل إليه بسرعة وتتصفحه كأي تطبيق آخر.</string> <string name="add_to_homescreen_description">يمكنك إضافة هذا الموقع إلى شاشة البداية لتصل إليه بسرعة وتتصفحه كأي تطبيق آخر.</string>
</resources> </resources>

@ -322,6 +322,8 @@
<string name="preferences_search_synced_tabs">Buscar llingüetes sincronizaes</string> <string name="preferences_search_synced_tabs">Buscar llingüetes sincronizaes</string>
<!-- Preference for account settings --> <!-- Preference for account settings -->
<string name="preferences_account_settings">Axustes de la cuenta</string> <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 --> <!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Abrir los enllaces nes aplicaciones</string> <string name="preferences_open_links_in_apps">Abrir los enllaces nes aplicaciones</string>
<!-- Preference for open download with an external download manager app --> <!-- Preference for open download with an external download manager app -->
@ -332,6 +334,9 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Avisos</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar agora</string> <string name="preferences_sync_now">Sincronizar agora</string>
@ -478,6 +483,8 @@
<!-- Option in library for Recently Closed Tabs --> <!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Llingüetes zarraes apocayá</string> <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. <!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. --> %d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d llingüetes</string> <string name="recently_closed_tabs">%d llingüetes</string>
@ -486,9 +493,15 @@
<string name="recently_closed_tab">%d llingüeta</string> <string name="recently_closed_tab">%d llingüeta</string>
<!-- Recently closed tabs screen message when there are no recently closed tabs --> <!-- 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 --> <!-- 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 --> <!-- 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> <string name="preferences_close_tabs">Zarru de llingüetes</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -588,6 +601,10 @@
<!-- History multi select title in app bar <!-- History multi select title in app bar
The first parameter is the number of bookmarks selected --> The first parameter is the number of bookmarks selected -->
<string name="history_multi_select_title">Elementos esbillaos: %1$d</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Les últimes 24 hores</string> <string name="history_24_hours">Les últimes 24 hores</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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 --> <!-- Preference for notifications -->
<string name="preferences_notifications">Абвесткі</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Сінхранізаваць</string> <string name="preferences_sync_now">Сінхранізаваць</string>
@ -391,6 +402,8 @@
<string name="preferences_tracking_protection_settings">Ахова ад сачэння</string> <string name="preferences_tracking_protection_settings">Ахова ад сачэння</string>
<!-- Preference switch for tracking protection --> <!-- Preference switch for tracking protection -->
<string name="preferences_tracking_protection">Ахова ад сачэння</string> <string name="preferences_tracking_protection">Ахова ад сачэння</string>
<!-- Preference switch description for tracking protection -->
<string name="preferences_tracking_protection_description">Блакаваць змест і скрыпты, якія асочваюць вас у інтэрнэце</string>
<!-- Preference for tracking protection exceptions --> <!-- Preference for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions">Выключэнні</string> <string name="preferences_tracking_protection_exceptions">Выключэнні</string>
<!-- Preference description for tracking protection exceptions --> <!-- Preference description for tracking protection exceptions -->
@ -413,6 +426,8 @@
<string name="preferences_usage_data_description">Дзяліцца звесткамі пра прадукцыйнасць, выкарыстанне, апаратнае забеспячэнне і налады вашага браўзера з Mozilla, каб дапамагчы ўдасканаліць %1$s</string> <string name="preferences_usage_data_description">Дзяліцца звесткамі пра прадукцыйнасць, выкарыстанне, апаратнае забеспячэнне і налады вашага браўзера з Mozilla, каб дапамагчы ўдасканаліць %1$s</string>
<!-- Preference switch for marketing data collection --> <!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Маркетынгавыя дадзеныя</string> <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 --> <!-- Title for experiments preferences -->
<string name="preference_experiments">Доследы</string> <string name="preference_experiments">Доследы</string>
@ -429,6 +444,8 @@
<!-- Turn On Sync Preferences --> <!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view --> <!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">Уключыць сінхранізацыю</string> <string name="preferences_sync">Уключыць сінхранізацыю</string>
<!-- Preference for pairing -->
<string name="preferences_sync_pair">Скануйце код спалучэння ў Firefox на камп’ютары</string>
<!-- Preference for account login --> <!-- Preference for account login -->
<string name="preferences_sync_sign_in">Увайсці</string> <string name="preferences_sync_sign_in">Увайсці</string>
@ -636,6 +653,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Выдаліць %1$d элементаў</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Апошнія 24 гадзіны</string> <string name="history_24_hours">Апошнія 24 гадзіны</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <string name="bookmark_deletion_snackbar_message">%1$s выдалена</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks not including folders--> <!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_2">Закладкі выдалены</string> <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 --> <!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">АДМЯНІЦЬ</string> <string name="bookmark_undo_deletion">АДМЯНІЦЬ</string>
@ -793,6 +816,8 @@
<string name="tracking_protection_off">Выключана</string> <string name="tracking_protection_off">Выключана</string>
<!-- Label that indicates that all video and audio autoplay is allowed --> <!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Дазволіць гук і відэа</string> <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 --> <!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">Аўдыё і відэа будуць прайгравацца праз Wi-Fi</string> <string name="preference_option_autoplay_allowed_wifi_subtext">Аўдыё і відэа будуць прайгравацца праз Wi-Fi</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked --> <!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
@ -1002,9 +1027,15 @@
<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. --> <!-- 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> <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 --> <!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Выйсці</string> <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 --> <!-- Text for the cancel button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_cancel">Адмена</string> <string name="delete_browsing_data_prompt_cancel">Адмена</string>
<!-- Text for the allow button for the data deletion dialog --> <!-- Text for the allow button for the data deletion dialog -->
@ -1013,6 +1044,9 @@
<!-- Text for the snackbar confirmation that the data was deleted --> <!-- Text for the snackbar confirmation that the data was deleted -->
<string name="preferences_delete_browsing_data_snackbar">Дадзеныя аглядання выдалены</string> <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 --> <!-- Tips -->
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded --> <!-- 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> <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> <string name="onboarding_account_sign_in_header">Пачніце сінхранізаваць закладкі, паролі і шмат іншага праз свой уліковы запіс Firefox.</string>
<!-- Text for the button to learn more about signing in to your Firefox account --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Падрабязней</string> <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 --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Так, увайсці</string> <string name="onboarding_firefox_account_auto_signin_confirm">Так, увайсці</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
@ -1159,6 +1197,9 @@
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account --> <!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">Адмена</string> <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 --> <!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings --> <!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">Налады аховы</string> <string name="etp_settings">Налады аховы</string>
@ -1216,16 +1257,24 @@
<string name="enhanced_tracking_protection_allowed">Дазволены</string> <string name="enhanced_tracking_protection_allowed">Дазволены</string>
<!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection --> <!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_title">Трэкеры сацыяльных сетак</string> <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 --> <!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">Міжсайтавыя кукі асочвання</string> <string name="etp_cookies_title">Міжсайтавыя кукі асочвання</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection --> <!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Майнеры крыптавалют</string> <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 --> <!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Збіральнікі лічбавых адбіткаў</string> <string name="etp_fingerprinters_title">Збіральнікі лічбавых адбіткаў</string>
<!-- Description of fingerprinters that can be blocked by Enhanced Tracking Protection --> <!-- Description of fingerprinters that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_description">Спыняе збор унікальнай ідэнтыфікацыйнай інфармацыі пра вашу прыладу, якая можа быць выкарыстана для сачэння.</string> <string name="etp_fingerprinters_description">Спыняе збор унікальнай ідэнтыфікацыйнай інфармацыі пра вашу прыладу, якая можа быць выкарыстана для сачэння.</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection --> <!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Змест з элементамі сачэння</string> <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 --> <!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Ахова ўключана на гэтым сайце</string> <string name="etp_panel_on">Ахова ўключана на гэтым сайце</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site --> <!-- Enhanced Tracking Protection message that protection is currently off for this site -->
@ -1247,6 +1296,12 @@
The first parameter is the app name --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Бібліятэкі OSS</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Падтрымка</string> <string name="about_support">Падтрымка</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -356,6 +356,14 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Taq rutzijol</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Tixim wakami</string> <string name="preferences_sync_now">Tixim wakami</string>
@ -662,6 +670,10 @@
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Keyuj %1$d ch\'akulal</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Ruk\'isib\'äl 24 ramaj</string> <string name="history_24_hours">Ruk\'isib\'äl 24 ramaj</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -345,6 +345,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Hysbysiadau</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Cydweddu nawr</string> <string name="preferences_sync_now">Cydweddu nawr</string>
@ -642,6 +656,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Dileu %1$d eitem</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 awr ddiwethaf</string> <string name="history_24_hours">24 awr ddiwethaf</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -351,6 +351,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Benachrichtigungen</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Jetzt synchronisieren</string> <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> <string name="recently_closed_empty_message">Keine kürzlich geschlossenen Tabs vorhanden</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d Elemente löschen</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Letzte 24 Stunden</string> <string name="history_24_hours">Letzte 24 Stunden</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -797,6 +823,8 @@
<string name="preference_phone_feature_location">Standort</string> <string name="preference_phone_feature_location">Standort</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Benachrichtigung</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Um Erlaubnis fragen</string> <string name="preference_option_phone_feature_ask_to_allow">Um Erlaubnis fragen</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Powěźeńki</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Něnto synchronizěrowaś</string> <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> <string name="recently_closed_empty_message">How njejsu rowno zacynjone rejtarki</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Zapiski za lašowanje: %1$d</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Zachadne 24 góźinow</string> <string name="history_24_hours">Zachadne 24 góźinow</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <string name="preference_phone_feature_location">Stojnišćo</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Powěźeńka</string> <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 --> <!-- 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> <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 --> <!-- Label that indicates that a permission must be blocked -->

@ -343,6 +343,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notifications</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sync now</string> <string name="preferences_sync_now">Sync now</string>
@ -524,6 +538,14 @@
<string name="recently_closed_empty_message">No recently closed tabs here</string> <string name="recently_closed_empty_message">No recently closed tabs here</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Delete %1$d items</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Last 24 hours</string> <string name="history_24_hours">Last 24 hours</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -776,6 +802,8 @@
<string name="preference_phone_feature_location">Location</string> <string name="preference_phone_feature_location">Location</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notification</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Ask to allow</string> <string name="preference_option_phone_feature_ask_to_allow">Ask to allow</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -144,6 +144,8 @@
<string name="browser_menu_install_on_homescreen">Install</string> <string name="browser_menu_install_on_homescreen">Install</string>
<!-- Menu option on the toolbar that takes you to synced tabs page--> <!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Synchronised tabs</string> <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 --> <!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Find in page</string> <string name="browser_menu_find_in_page">Find in page</string>
<!-- Browser menu button that creates a private tab --> <!-- 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> <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--> <!-- 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> <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 --> <!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Add private browsing shortcut</string> <string name="preferences_add_private_browsing_shortcut">Add private browsing shortcut</string>
<!-- Preference for accessibility --> <!-- Preference for accessibility -->
@ -286,6 +290,8 @@
<!-- Preference for customizing the home screen --> <!-- Preference for customizing the home screen -->
<string name="preferences_home">Home</string> <string name="preferences_home">Home</string>
<!-- Preference for gestures based actions -->
<string name="preferences_gestures">Gestures</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Customise</string> <string name="preferences_customize">Customise</string>
<!-- Preference description for banner about signing in --> <!-- Preference description for banner about signing in -->
@ -320,8 +326,12 @@
<string name="preferences_search_browsing_history">Search browsing history</string> <string name="preferences_search_browsing_history">Search browsing history</string>
<!-- Preference title for switch preference to suggest bookmarks when searching --> <!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Search bookmarks</string> <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 --> <!-- Preference for account settings -->
<string name="preferences_account_settings">Account settings</string> <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 --> <!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Open links in apps</string> <string name="preferences_open_links_in_apps">Open links in apps</string>
@ -333,6 +343,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notifications</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synchronise now</string> <string name="preferences_sync_now">Synchronise now</string>
@ -458,6 +482,16 @@
<!-- Preference for using following device theme --> <!-- Preference for using following device theme -->
<string name="preference_follow_device_theme">Follow device theme</string> <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 --> <!-- Library -->
<!-- Option in Library to open Sessions page --> <!-- Option in Library to open Sessions page -->
<string name="library_sessions">Sessions</string> <string name="library_sessions">Sessions</string>
@ -504,6 +538,14 @@
<string name="recently_closed_empty_message">No recently closed tabs here</string> <string name="recently_closed_empty_message">No recently closed tabs here</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Delete %1$d items</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Last 24 hours</string> <string name="history_24_hours">Last 24 hours</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -757,6 +803,8 @@
<string name="preference_phone_feature_location">Location</string> <string name="preference_phone_feature_location">Location</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notification</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Ask to allow</string> <string name="preference_option_phone_feature_ask_to_allow">Ask to allow</string>
<!-- Label that indicates that a permission must be blocked --> <!-- 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 <!-- text for the firefox account onboarding card header when we detect you're already signed in to
another Firefox browser. (The word `Firefox` should not be translated) another Firefox browser. (The word `Firefox` should not be translated)
The first parameter is the email of the detected user's account --> The first parameter is the email of the detected user's account -->
<string name="onboarding_firefox_account_auto_signin_header_2">You are signed in as %s on another Firefox browser on this phone. Would you like to sign in with this account?</string> <string name="onboarding_firefox_account_auto_signin_header_3">You are signed in as %s on another Firefox browser on this device. Would you like to sign in with this account?</string>
<!-- text for the button to confirm automatic sign-in --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Yes, sign me in</string> <string name="onboarding_firefox_account_auto_signin_confirm">Yes, sign me in</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
@ -1136,6 +1184,8 @@
<string name="sign_in_with_camera">Sign in with your camera</string> <string name="sign_in_with_camera">Sign in with your camera</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Use email instead</string> <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 --> <!-- 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> <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) --> <!-- 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 --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | OSS Libraries</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Support</string> <string name="about_support">Support</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- 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> <string name="add_to_homescreen_text_placeholder">Shortcut name</string>
<!-- Describes the add to homescreen functionality --> <!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">You can easily add this 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 --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Logins and passwords</string> <string name="preferences_passwords_logins_and_passwords">Logins and passwords</string>
@ -1359,8 +1414,12 @@
<string name="logins_site_copied">Site copied to clipboard</string> <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--> <!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">Copy password</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">Copy username</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Copy site</string> <string name="saved_login_copy_site">Copy site</string>
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins --> <!-- 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> <string name="saved_login_duplicate">A login with that username already exists</string>
<!-- Synced Tabs --> <!-- Synced Tabs -->
<!-- Text displayed to ask user to connect another device as no devices found with account --> <!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">Connect another device.</string> <string name="synced_tabs_connect_another_device">Connect another device.</string>
<!-- Text displayed asking user to re-authenticate --> <!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Please re-authenticate.</string> <string name="synced_tabs_reauth">Please re-authenticate.</string>
@ -1535,7 +1594,7 @@
<!-- Title text displayed in the dialog when top sites limit is reached. --> <!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Top site limit reached</string> <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. --> <!-- 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. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">OK, Got It</string> <string name="top_sites_max_limit_confirmation_button">OK, Got It</string>
@ -1545,7 +1604,7 @@
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Remove</string> <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) --> 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> <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> <string name="no_collections_header1">Collect the things that matter to you</string>
<!-- Deprecated: Label to describe what collections are to a new user without any collections --> <!-- Deprecated: Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Group together similar searches, sites, and tabs for quick access later.</string> <string name="no_collections_description1">Group together similar searches, sites, and tabs for quick access later.</string>
<!-- Deprecated: text for the firefox account onboarding card header when we detect you're already signed in to -->
<string name="onboarding_firefox_account_auto_signin_header_2">You are signed in as %s on another Firefox browser on this phone. Would you like to sign in with this account?</string>
<!-- Deprecated: Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">You can easily add this web site to your phones Home screen to have instant access and browse faster with an app-like experience.</string>
</resources> </resources>

@ -343,6 +343,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notificaciones</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ahora</string> <string name="preferences_sync_now">Sincronizar ahora</string>
@ -642,6 +656,10 @@
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d elementos</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string> <string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -351,6 +351,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notificaciones</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ahora</string> <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> <string name="recently_closed_empty_message">No hay pestañas cerradas recientemente</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d elementos</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string> <string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <string name="preference_phone_feature_location">Ubicación</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificación</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Pedir permiso</string> <string name="preference_option_phone_feature_ask_to_allow">Pedir permiso</string>
<!-- Label that indicates that a permission must be blocked --> <!-- 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 --> <!-- 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> <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 --> <!-- 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> <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 --> <!-- 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> <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 --> <!-- 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> <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) --> <!-- 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> <string name="about_content">%1$s es producido por @fork-maintainers.</string>
@ -67,6 +84,9 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ahora no</string> <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 --> <!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Ir a ajustes</string> <string name="open_in_app_cfr_positive_button_text">Ir a ajustes</string>
<!-- Text for the negative action button --> <!-- Text for the negative action button -->
@ -332,6 +352,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notificaciones</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ahora</string> <string name="preferences_sync_now">Sincronizar ahora</string>
@ -633,6 +667,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d elementos</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string> <string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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 --> <!-- 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> <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 --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Seleccionar pestañas</string> <string name="create_collection_select_tabs">Seleccionar pestañas</string>
@ -953,6 +993,8 @@
<string name="qr_scanner_dialog_negative">DENEGAR</string> <string name="qr_scanner_dialog_negative">DENEGAR</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name --> <!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">¿Seguro que quieres eliminar %1$s?</string> <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 --> <!-- 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> <string name="delete_tab_and_collection_dialog_title">¿Eliminar %1$s?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection --> <!-- 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> <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 --> <!-- 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> <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 --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Sí, iniciar sesión</string> <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 --> <!-- 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> <string name="sign_in_with_camera">Inicia sesión con tu cámara</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Usar el correo</string> <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 --> <!-- 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> <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) --> <!-- 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 --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Bibliotecas OSS</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Ayuda</string> <string name="about_support">Ayuda</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -350,6 +350,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Ilmoitukset</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkronoi nyt</string> <string name="preferences_sync_now">Synkronoi nyt</string>
@ -535,6 +549,14 @@
<string name="recently_closed_empty_message">Ei viimeksi suljettuja välilehtiä</string> <string name="recently_closed_empty_message">Ei viimeksi suljettuja välilehtiä</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Poista %1$d tietuetta</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Viimeiset 24 tuntia</string> <string name="history_24_hours">Viimeiset 24 tuntia</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -791,6 +817,8 @@
<string name="preference_phone_feature_location">Sijainti</string> <string name="preference_phone_feature_location">Sijainti</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Ilmoitus</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Kysy lupaa</string> <string name="preference_option_phone_feature_ask_to_allow">Kysy lupaa</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -347,6 +347,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notifikaasjes</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">No syngronisearje</string> <string name="preferences_sync_now">No syngronisearje</string>
@ -643,6 +657,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d items fuortsmite</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Lêste 24 oer</string> <string name="history_24_hours">Lêste 24 oer</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -348,6 +348,21 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Ñemomarandu</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Embojuehe koág̃a</string> <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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Emboguete %1$d mbaepuru</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 aravo ohasamóva</string> <string name="history_24_hours">24 aravo ohasamóva</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -78,6 +78,12 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">अभी नहीं</string> <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 --> <!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">नया टैब</string> <string name="home_screen_shortcut_open_new_tab_2">नया टैब</string>
@ -309,6 +315,9 @@
<!-- Preference for add_ons --> <!-- Preference for add_ons -->
<string name="preferences_addons">ऐड-ऑन</string> <string name="preferences_addons">ऐड-ऑन</string>
<!-- Preference for notifications -->
<string name="preferences_notifications">अधिसूचनाएं</string>
<!-- Account Preferences --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">अब सिंक करें</string> <string name="preferences_sync_now">अब सिंक करें</string>
@ -470,6 +479,27 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">बंद करें</string> <string name="content_description_close_button">बंद करें</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">हाल ही में बंद किए गए टैब</string>
<!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">पूरा इतिहास दिखाएं</string>
<!-- Text to show users they have multiple tabs saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tabs">%d टैब</string>
<!-- Text to show users they have one tab saved in the Recently Closed Tabs section of history.
%d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d टैब</string>
<!-- 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 --> <!-- Sessions -->
<!-- Title for the list of tabs --> <!-- Title for the list of tabs -->
<string name="tab_header_label">खुले टैब</string> <string name="tab_header_label">खुले टैब</string>
@ -489,6 +519,10 @@
<string name="tab_tray_menu_item_save">संग्रहण में सहेजें</string> <string name="tab_tray_menu_item_save">संग्रहण में सहेजें</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">सभी टैब साझा करें</string> <string name="tab_tray_menu_item_share">सभी टैब साझा करें</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">हाल ही में बंद किए गए टैब</string>
<!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">टैब सेटिंग</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">सभी टैब बंद करें</string> <string name="tab_tray_menu_item_close">सभी टैब बंद करें</string>
<!-- Shortcut action to open new tab --> <!-- Shortcut action to open new tab -->
@ -535,6 +569,8 @@
<!-- Text for the menu button to remove a top site --> <!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">हटाएं</string> <string name="remove_top_site">हटाएं</string>
<!-- Text for the menu button to delete a top site from history -->
<string name="delete_from_history">इतिहास से मिटाएं</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name --> <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (निजी मोड)</string> <string name="pwa_site_controls_title_private">%1$s (निजी मोड)</string>
@ -736,10 +772,6 @@
<string name="collections_header">संग्रह</string> <string name="collections_header">संग्रह</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">संग्रह मेन्यू</string> <string name="collection_menu_button_content_description">संग्रह मेन्यू</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">जो चीजें आपके लिए मायने रखती हैं, उन्हें इकट्ठा करें</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">बाद में तुरंत ऐक्सेस लिए एक जैसा खोज, साइट और टैब को एक साथ समूहित करें।</string>
<!-- Title for the "select tabs" step of the collection creator --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">टैब चुने</string> <string name="create_collection_select_tabs">टैब चुने</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -992,13 +1024,8 @@
<string name="onboarding_whats_new_description">%s पुनर्निर्देशित के बारे में प्रश्न हैं? जानना चाहते हैं कि क्या बदला है?</string> <string name="onboarding_whats_new_description">%s पुनर्निर्देशित के बारे में प्रश्न हैं? जानना चाहते हैं कि क्या बदला है?</string>
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ --> <!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
<string name="onboarding_whats_new_description_linktext">यहां उत्तर पाएं</string> <string name="onboarding_whats_new_description_linktext">यहां उत्तर पाएं</string>
<!-- text for the firefox account onboarding card header <!-- Text for the button to learn more about signing in to your Firefox account -->
The first parameter is the name of the app (e.g. Firefox Preview) --> <string name="onboarding_manual_sign_in_learn_more">अधिक जानें</string>
<string name="onboarding_firefox_account_header">%s का अधिकतम लाभ उठाएं।</string>
<!-- text for the 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 confirm automatic sign-in --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">हां, मुझे साइन इन करें</string> <string name="onboarding_firefox_account_auto_signin_confirm">हां, मुझे साइन इन करें</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
@ -1249,9 +1276,6 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog --> <!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">शॉर्टकट नाम</string> <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 --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">लॉगिन और पासवर्ड</string> <string name="preferences_passwords_logins_and_passwords">लॉगिन और पासवर्ड</string>
<!-- Preference for managing the saving of logins and passwords in Fenix --> <!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1489,7 +1513,7 @@
<string name="saved_login_duplicate">एक लॉगिन इस उपयोगकर्ता नाम के साथ मौजूद है</string> <string name="saved_login_duplicate">एक लॉगिन इस उपयोगकर्ता नाम के साथ मौजूद है</string>
<!-- Synced Tabs --> <!-- Synced Tabs -->
<!-- Text displayed to ask user to connect another device as no devices found with account --> <!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">अन्य डिवाइस कनेक्ट करें</string> <string name="synced_tabs_connect_another_device">अन्य डिवाइस कनेक्ट करें</string>
<!-- Text displayed asking user to re-authenticate --> <!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">कृपया पुनः प्रमाणित करें।</string> <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 --> <!-- 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> <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 --> <!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. --> <!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">शीर्ष साइट सीमा पहुंच गई</string> <string name="top_sites_max_limit_title">शीर्ष साइट सीमा पहुंच गई</string>
<!-- 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. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">ठीक है, समझ गए</string> <string name="top_sites_max_limit_confirmation_button">ठीक है, समझ गए</string>
<!-- 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> </resources>

@ -344,6 +344,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Obavijesti</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sinkroniziraj sada</string> <string name="preferences_sync_now">Sinkroniziraj sada</string>
@ -530,6 +544,14 @@
<string name="recently_closed_empty_message">Ovdje nema nedavno zatvorenih kartica</string> <string name="recently_closed_empty_message">Ovdje nema nedavno zatvorenih kartica</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Izbriši %1$d stavke</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Zadnjih 24 sata</string> <string name="history_24_hours">Zadnjih 24 sata</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -788,6 +814,8 @@
<string name="preference_phone_feature_location">Lokacija</string> <string name="preference_phone_feature_location">Lokacija</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Obavijest</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Zatraži dozvolu</string> <string name="preference_option_phone_feature_ask_to_allow">Zatraži dozvolu</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Zdźělenki</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Nětko synchronizować</string> <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> <string name="recently_closed_empty_message">Tu žane runje začinjene rajtarki njejsu</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Zapiski za zhašenje: %1$d</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Zańdźene 24 hodźin</string> <string name="history_24_hours">Zańdźene 24 hodźin</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <string name="preference_phone_feature_location">Stejnišćo</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Zdźělenka</string> <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 --> <!-- 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> <string name="preference_option_phone_feature_ask_to_allow">Wo dowolnosć so prašeć</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -347,6 +347,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Értesítések</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Szinkronizálás most</string> <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> <string name="recently_closed_empty_message">Nincs itt nemrég bezárt lap</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d elem törlése</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Elmúlt 24 óra</string> <string name="history_24_hours">Elmúlt 24 óra</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -786,6 +812,8 @@
<string name="preference_phone_feature_location">Hely</string> <string name="preference_phone_feature_location">Hely</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Értesítés</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Kérdezzen rá</string> <string name="preference_option_phone_feature_ask_to_allow">Kérdezzen rá</string>
<!-- Label that indicates that a permission must be blocked --> <!-- 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--> <!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Համաժամեցված ներդիրներ</string> <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 --> <!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Գտնել էջում</string> <string name="browser_menu_find_in_page">Գտնել էջում</string>
<!-- Browser menu button that creates a private tab --> <!-- Browser menu button that creates a private tab -->
@ -327,6 +329,8 @@
<string name="preferences_search_browsing_history">Որոնել դիտարկումների պատմությունում</string> <string name="preferences_search_browsing_history">Որոնել դիտարկումների պատմությունում</string>
<!-- Preference title for switch preference to suggest bookmarks when searching --> <!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Որոնել էջանիշեր</string> <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 --> <!-- Preference for account settings -->
<string name="preferences_account_settings">Հաշվի կարգավորումներ</string> <string name="preferences_account_settings">Հաշվի կարգավորումներ</string>
<!-- Preference for enabling url autocomplete--> <!-- Preference for enabling url autocomplete-->
@ -1159,6 +1163,8 @@
<string name="sign_in_with_camera">Մուտք գործեք ձեր տեսախցիկի հետ</string> <string name="sign_in_with_camera">Մուտք գործեք ձեր տեսախցիկի հետ</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Փոխարենը օգտ. էլ. փոստ</string> <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 --> <!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox-ը կկանգնեցնի համաժամացումը ձեր հաշվի հետ, բայց չի ջնջվի այս սարքում ձեր դիտարկման որևէ տվյալ։</string> <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) --> <!-- 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 --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | OSS գրադարաններ</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Աջակցում</string> <string name="about_support">Աջակցում</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- 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> <string name="preferences_override_fxa_server">שרת Firefox Account מותאם אישית</string>
<!-- Preference to override the Sync token server --> <!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">שרת Sync מותאם אישית</string> <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 --> <!-- Preference category for account information -->
<string name="preferences_category_account">חשבון</string> <string name="preferences_category_account">חשבון</string>
<!-- Preference shown on banner to sign into account --> <!-- Preference shown on banner to sign into account -->
@ -341,6 +343,21 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">התרעות</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">סנכרון כעת</string> <string name="preferences_sync_now">סנכרון כעת</string>
@ -522,6 +539,14 @@
<string name="recently_closed_empty_message">אין כאן לשוניות שנסגרו לאחרונה</string> <string name="recently_closed_empty_message">אין כאן לשוניות שנסגרו לאחרונה</string>
<!-- Tab Management --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">סגירת לשוניות</string> <string name="preferences_close_tabs">סגירת לשוניות</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -635,6 +660,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">מחיקת %1$d פריטים</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 השעות האחרונות</string> <string name="history_24_hours">24 השעות האחרונות</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -1181,6 +1181,8 @@
<string name="sign_in_with_camera">カメラを使ってログイン</string> <string name="sign_in_with_camera">カメラを使ってログイン</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">代わりにメールアドレスを使う</string> <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 --> <!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox はアカウントとの同期を停止しますが、この端末上の閲覧データは削除されません。</string> <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) --> <!-- 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 --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | OSS ライブラリー</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">サポート</string> <string name="about_support">サポート</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- About page link text to list of past crashes (like about:crashes on desktop) -->

@ -339,6 +339,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Хабарламалар</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Қазір синхрондау</string> <string name="preferences_sync_now">Қазір синхрондау</string>
@ -635,6 +649,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d элементті өшіру</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Соңғы 24 сағат</string> <string name="history_24_hours">Соңғы 24 сағат</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -356,6 +356,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">알림</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">지금 동기화</string> <string name="preferences_sync_now">지금 동기화</string>
@ -543,6 +557,14 @@
<string name="recently_closed_empty_message">최근에 닫은 탭 없음</string> <string name="recently_closed_empty_message">최근에 닫은 탭 없음</string>
<!-- Tab Management --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">탭 닫기</string> <string name="preferences_close_tabs">탭 닫기</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -660,6 +682,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d개 항목 삭제</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">지난 24 시간</string> <string name="history_24_hours">지난 24 시간</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -805,6 +831,8 @@
<string name="preference_phone_feature_location">위치</string> <string name="preference_phone_feature_location">위치</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">알림</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">항상 확인</string> <string name="preference_option_phone_feature_ask_to_allow">항상 확인</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -347,6 +347,21 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Varslinger</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkroniser nå</string> <string name="preferences_sync_now">Synkroniser nå</string>
@ -534,6 +549,14 @@
<string name="recently_closed_empty_message">Ingen nylige lukkede faner her</string> <string name="recently_closed_empty_message">Ingen nylige lukkede faner her</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Slett %1$d elementer</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Siste 24 timer</string> <string name="history_24_hours">Siste 24 timer</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -790,6 +817,8 @@
<string name="preference_phone_feature_location">Plassering</string> <string name="preference_phone_feature_location">Plassering</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Varsel</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Be om å tillate</string> <string name="preference_option_phone_feature_ask_to_allow">Be om å tillate</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -352,6 +352,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notificaties</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Nu synchroniseren</string> <string name="preferences_sync_now">Nu synchroniseren</string>
@ -536,6 +550,14 @@
<string name="recently_closed_empty_message">Geen onlangs gesloten tabbladen hier</string> <string name="recently_closed_empty_message">Geen onlangs gesloten tabbladen hier</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">%1$d items verwijderen</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Laatste 24 uur</string> <string name="history_24_hours">Laatste 24 uur</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -789,6 +815,8 @@
<string name="preference_phone_feature_location">Locatie</string> <string name="preference_phone_feature_location">Locatie</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificatie</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Vragen om toestemming</string> <string name="preference_option_phone_feature_ask_to_allow">Vragen om toestemming</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -348,6 +348,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Varsel</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkroniser no</string> <string name="preferences_sync_now">Synkroniser no</string>
@ -650,6 +664,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Slett %1$d element</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Siste 24 timar</string> <string name="history_24_hours">Siste 24 timar</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <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--> <!-- 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> <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 --> <!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Ajustar un acorchi per la navegacion privada</string> <string name="preferences_add_private_browsing_shortcut">Ajustar un acorchi per la navegacion privada</string>
<!-- Preference for accessibility --> <!-- Preference for accessibility -->

@ -348,6 +348,21 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Powiadomienia</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synchronizuj</string> <string name="preferences_sync_now">Synchronizuj</string>
@ -532,6 +547,14 @@
<string name="recently_closed_empty_message">Nie ma ostatnio zamkniętych kart</string> <string name="recently_closed_empty_message">Nie ma ostatnio zamkniętych kart</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Usuń pozycje (%1$d)</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Ostatnie 24 godziny</string> <string name="history_24_hours">Ostatnie 24 godziny</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <string name="preference_phone_feature_location">Położenie</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Powiadomienia</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Pytanie o zezwolenie</string> <string name="preference_option_phone_feature_ask_to_allow">Pytanie o zezwolenie</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notificações</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar agora</string> <string name="preferences_sync_now">Sincronizar agora</string>
@ -528,6 +542,14 @@
<string name="recently_closed_empty_message">Nenhuma aba fechada recentemente aqui</string> <string name="recently_closed_empty_message">Nenhuma aba fechada recentemente aqui</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Excluir %1$d itens</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string> <string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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 --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificações</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Perguntar se deve permitir</string> <string name="preference_option_phone_feature_ask_to_allow">Perguntar se deve permitir</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -345,6 +345,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Notificações</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar agora</string> <string name="preferences_sync_now">Sincronizar agora</string>
@ -646,6 +660,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Eliminar %1$d itens</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Últimas 24 horas</string> <string name="history_24_hours">Últimas 24 horas</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->

@ -366,6 +366,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Уведомления</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Синхронизировать</string> <string name="preferences_sync_now">Синхронизировать</string>
@ -667,6 +681,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Удалить %1$d элемент(а)</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Последние 24 часа</string> <string name="history_24_hours">Последние 24 часа</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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> <string name="preferences_search_browsing_history">Navrhovať z histórie prehliadania</string>
<!-- Preference title for switch preference to suggest bookmarks when searching --> <!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Navrhovať zo záložiek</string> <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 --> <!-- Preference for account settings -->
<string name="preferences_account_settings">Nastavenia účtu</string> <string name="preferences_account_settings">Nastavenia účtu</string>
@ -344,6 +346,13 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Upozornenia</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synchronizovať</string> <string name="preferences_sync_now">Synchronizovať</string>
@ -517,7 +526,6 @@
<!-- Recently closed tabs screen message when there are no recently closed tabs --> <!-- Recently closed tabs screen message when there are no recently closed tabs -->
<string name="recently_closed_empty_message">Nemáte žiadne nedávno zatvorené karty</string> <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 --> <!-- 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> <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 --> <!-- 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> <string name="preferences_search_browsing_history">Išči po zgodovini iskanja</string>
<!-- Preference title for switch preference to suggest bookmarks when searching --> <!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Iskanje po zaznamkih</string> <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 --> <!-- Preference for account settings -->
<string name="preferences_account_settings">Nastavitve računa</string> <string name="preferences_account_settings">Nastavitve računa</string>
@ -344,6 +346,13 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Obvestila</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sinhroniziraj zdaj</string> <string name="preferences_sync_now">Sinhroniziraj zdaj</string>
@ -479,6 +488,9 @@
<!-- Preferences for using pull to refresh in a webpage --> <!-- Preferences for using pull to refresh in a webpage -->
<string name="preference_gestures_website_pull_to_refresh">Povlecite za osvežitev</string> <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 --> <!-- Library -->
<!-- Option in Library to open Sessions page --> <!-- Option in Library to open Sessions page -->
<string name="library_sessions">Seje</string> <string name="library_sessions">Seje</string>
@ -1163,6 +1175,8 @@
<string name="sign_in_with_camera">Prijavite se s kamero</string> <string name="sign_in_with_camera">Prijavite se s kamero</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Namesto tega uporabite e-pošto</string> <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 --> <!-- 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> <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) --> <!-- 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 --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Knjižnice OSS</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Podpora</string> <string name="about_support">Podpora</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- 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> <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--> <!-- 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> <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 --> <!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Tambahan tarabas nyungsi nyamuni</string> <string name="preferences_add_private_browsing_shortcut">Tambahan tarabas nyungsi nyamuni</string>
<!-- Preference for accessibility --> <!-- Preference for accessibility -->
@ -325,6 +327,8 @@
<!-- Preference for account settings --> <!-- Preference for account settings -->
<string name="preferences_account_settings">Setélan akun</string> <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 --> <!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Buka tutumbu dina aplikasi</string> <string name="preferences_open_links_in_apps">Buka tutumbu dina aplikasi</string>
<!-- Preference for open download with an external download manager app --> <!-- Preference for open download with an external download manager app -->
@ -463,6 +467,10 @@
<!-- Preference for using following device theme --> <!-- Preference for using following device theme -->
<string name="preference_follow_device_theme">Turutan téma paranti</string> <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 --> <!-- Library -->
<!-- Option in Library to open Sessions page --> <!-- Option in Library to open Sessions page -->
<string name="library_sessions">Sesi</string> <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> <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 --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Lenyepan</string> <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 --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Enya, asupkeun</string> <string name="onboarding_firefox_account_auto_signin_confirm">Enya, asupkeun</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
@ -1261,6 +1265,9 @@
The first parameter is the app name --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Pabukon OSS</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Pangrojong</string> <string name="about_support">Pangrojong</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- 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 --> <!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Ngaran takulan</string> <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 --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Login jeung kecap sandi</string> <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> <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--> <!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">Niron sandi</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">Niron sandiasma</string> <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 --> <!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Niron loka</string> <string name="saved_login_copy_site">Niron loka</string>
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins --> <!-- 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> <string name="saved_login_duplicate">Login maké éta sandiasma geus aya</string>
<!-- Synced Tabs --> <!-- Synced Tabs -->
<!-- Text displayed to ask user to connect another device as no devices found with account --> <!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">Sambungkeun séjén paranti.</string> <string name="synced_tabs_connect_another_device">Sambungkeun séjén paranti.</string>
<!-- Text displayed asking user to re-authenticate --> <!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Mangga oténtikasi ulang.</string> <string name="synced_tabs_reauth">Mangga oténtikasi ulang.</string>
@ -1556,8 +1565,6 @@
<!-- Top Sites --> <!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. --> <!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Wates loka top geus kahontal</string> <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. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Okéh, Ngarti</string> <string name="top_sites_max_limit_confirmation_button">Okéh, Ngarti</string>
@ -1567,7 +1574,7 @@
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Piceun</string> <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) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Maksimalkeun %s.</string> <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> <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 --> <!-- 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> <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> </resources>

@ -350,6 +350,21 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Aviseringar</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Synkronisera nu</string> <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> <string name="recently_closed_empty_message">Inga nyligen stängda flikar här</string>
<!-- Tab Management --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Ta bort %1$d poster</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Senaste 24 timmarna</string> <string name="history_24_hours">Senaste 24 timmarna</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -791,6 +818,8 @@
<string name="preference_phone_feature_location">Plats</string> <string name="preference_phone_feature_location">Plats</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Meddelanden</string> <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 --> <!-- 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> <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 --> <!-- Label that indicates that a permission must be blocked -->

@ -53,6 +53,13 @@
<!-- Private Browsing --> <!-- Private Browsing -->
<!-- Title for private session option --> <!-- Title for private session option -->
<string name="private_browsing_title">Шумо дар реҷаи махфӣ қарор доред</string> <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 --> <!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Нест кардани ҷаласа</string> <string name="private_browsing_delete_session">Нест кардани ҷаласа</string>
@ -64,22 +71,32 @@
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="cfr_neg_button_text">Не, ташаккур</string> <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 --> <!-- Text for the positive button -->
<string name="search_widget_cfr_pos_button_text">Илова кардани виҷет</string> <string name="search_widget_cfr_pos_button_text">Илова кардани виҷет</string>
<!-- Text for the negative button --> <!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ҳоло не</string> <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 --> <!-- Text for the positive action button -->
<string name="open_in_app_cfr_positive_button_text">Гузариш ба танзимот</string> <string name="open_in_app_cfr_positive_button_text">Гузариш ба танзимот</string>
<!-- Text for the negative action button --> <!-- Text for the negative action button -->
<string name="open_in_app_cfr_negative_button_text">Нодида гузарондан</string> <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. --> <!-- Text for the positive action button to go to Android Settings to grant permissions. -->
<string name="camera_permissions_needed_positive_button_text">Гузариш ба танзимот</string> <string name="camera_permissions_needed_positive_button_text">Гузариш ба танзимот</string>
<!-- Text for the negative action button to dismiss the dialog. --> <!-- Text for the negative action button to dismiss the dialog. -->
<string name="camera_permissions_needed_negative_button_text">Нодида гузарондан</string> <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. --> <!-- 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> <string name="tab_tray_close_tabs_banner_positive_button_text">Имконоти намоиш</string>
<!-- Text for the negative action button to dismiss the Close Tabs Banner. --> <!-- Text for the negative action button to dismiss the Close Tabs Banner. -->
@ -190,6 +207,10 @@
<string name="search_suggestions_onboarding_allow_button">Иҷозат додан</string> <string name="search_suggestions_onboarding_allow_button">Иҷозат додан</string>
<!-- Button in the search suggestions onboarding that does not allow search suggestions in private sessions --> <!-- 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> <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 --> <!-- Search suggestion onboarding hint Learn more link text -->
<string name="search_suggestions_onboarding_learn_more_link">Маълумоти бештар</string> <string name="search_suggestions_onboarding_learn_more_link">Маълумоти бештар</string>
@ -246,6 +267,10 @@
<string name="preferences_private_browsing_options">Баррасии махфӣ</string> <string name="preferences_private_browsing_options">Баррасии махфӣ</string>
<!-- Preference for opening links in a private tab--> <!-- Preference for opening links in a private tab-->
<string name="preferences_open_links_in_a_private_tab">Кушодани пайвандҳо дар варақаи махфӣ</string> <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 --> <!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Илова кардани миёнбури тамошои махфӣ</string> <string name="preferences_add_private_browsing_shortcut">Илова кардани миёнбури тамошои махфӣ</string>
<!-- Preference for accessibility --> <!-- Preference for accessibility -->
@ -254,6 +279,8 @@
<string name="preferences_override_fxa_server">Сервери ҳисоби фармоишии Firefox</string> <string name="preferences_override_fxa_server">Сервери ҳисоби фармоишии Firefox</string>
<!-- Preference to override the Sync token server --> <!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">Сервери ҳамоҳангсозии фармоишӣ</string> <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 --> <!-- Preference category for account information -->
<string name="preferences_category_account">Ҳисоб</string> <string name="preferences_category_account">Ҳисоб</string>
<!-- Preference shown on banner to sign into account --> <!-- Preference shown on banner to sign into account -->
@ -268,6 +295,8 @@
<string name="preferences_gestures">Ишораҳо</string> <string name="preferences_gestures">Ишораҳо</string>
<!-- Preference for settings related to visual options --> <!-- Preference for settings related to visual options -->
<string name="preferences_customize">Фармоишдиҳӣ</string> <string name="preferences_customize">Фармоишдиҳӣ</string>
<!-- Preference description for banner about signing in -->
<string name="preferences_sign_in_description">Ба воситаи ҳисоби Firefox-и худ хатбаракҳо, таърих ва чизҳои дигарро ҳамоҳанг кунед.</string>
<!-- Preference shown instead of account display name while account profile information isn't available yet. --> <!-- Preference shown instead of account display name while account profile information isn't available yet. -->
<string name="preferences_account_default_name">Ҳисоби Firefox</string> <string name="preferences_account_default_name">Ҳисоби Firefox</string>
<!-- Preference text for account title when there was an error syncing FxA --> <!-- Preference text for account title when there was an error syncing FxA -->
@ -313,6 +342,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Огоҳиномаҳо</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Ҳозир ҳамоҳанг кунед</string> <string name="preferences_sync_now">Ҳозир ҳамоҳанг кунед</string>
@ -336,6 +379,14 @@
<!-- Label indicating that sync is in progress --> <!-- Label indicating that sync is in progress -->
<string name="sync_syncing_in_progress">Ҳамоҳангсозӣ…</string> <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. <!-- Text for displaying the default device name.
The first parameter is the application name, the second is the device manufacturer name The first parameter is the application name, the second is the device manufacturer name
and the third is the device model. --> and the third is the device model. -->
@ -378,10 +429,18 @@
<string name="preferences_telemetry">Телеметрия</string> <string name="preferences_telemetry">Телеметрия</string>
<!-- Preference switch for usage and technical data collection --> <!-- Preference switch for usage and technical data collection -->
<string name="preference_usage_data">Истифодабарӣ ва маълумоти техникӣ</string> <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 --> <!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Маълумоти маркетингӣ</string> <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 --> <!-- Title for experiments preferences -->
<string name="preference_experiments">Таҷрибаҳо</string> <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 --> <!-- Preference switch for Mozilla location service -->
<string name="preferences_mozilla_location_service">Хадамоти ҷойгиршавии Mozilla</string> <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) --> <!-- 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 --> <!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view --> <!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">Фаъол кардани ҳамоҳангсозӣ</string> <string name="preferences_sync">Фаъол кардани ҳамоҳангсозӣ</string>
<!-- Preference for pairing -->
<string name="preferences_sync_pair">Рамзи ҷуфтро дар версияи Firefox-и мизи корӣ скан кунед</string>
<!-- Preference for account login --> <!-- Preference for account login -->
<string name="preferences_sync_sign_in">Ворид шудан</string> <string name="preferences_sync_sign_in">Ворид шудан</string>
<!-- Preference for reconnecting to FxA sync --> <!-- Preference for reconnecting to FxA sync -->
@ -397,6 +458,9 @@
<!-- Preference for removing FxA account --> <!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">Барҳам додани ҳисоб</string> <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 --> <!-- Button to open camera for pairing -->
<string name="pair_open_camera">Кушодани камера</string> <string name="pair_open_camera">Кушодани камера</string>
<!-- Button to cancel pairing --> <!-- Button to cancel pairing -->
@ -424,6 +488,11 @@
<!-- Preference for using the dynamic toolbar --> <!-- Preference for using the dynamic toolbar -->
<string name="preference_gestures_dynamic_toolbar">Барои пинҳон кардани навори абзорҳо ҳаракат кунед</string> <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 --> <!-- Library -->
<!-- Option in Library to open Sessions page --> <!-- Option in Library to open Sessions page -->
<string name="library_sessions">Ҷаласаҳо</string> <string name="library_sessions">Ҷаласаҳо</string>
@ -456,6 +525,8 @@
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" --> <!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Пӯшидан</string> <string name="content_description_close_button">Пӯшидан</string>
<!-- Option in library for Recently Closed Tabs -->
<string name="library_recently_closed_tabs">Варақаҳои ба наздикӣ пӯшидашуда</string>
<!-- Option in library to open Recently Closed Tabs page --> <!-- Option in library to open Recently Closed Tabs page -->
<string name="recently_closed_show_full_history">Намоиш додани таърихи пурра</string> <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. <!-- 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. --> %d is a placeholder for the number of tabs selected. -->
<string name="recently_closed_tab">%d варақа</string> <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 --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Пӯшидани варақаҳо</string> <string name="preferences_close_tabs">Пӯшидани варақаҳо</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -497,6 +579,8 @@
<string name="tab_tray_menu_item_save">Нигоҳ доштан дар маҷмӯа</string> <string name="tab_tray_menu_item_save">Нигоҳ доштан дар маҷмӯа</string>
<!-- Text shown in the menu for sharing all tabs --> <!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Мубодила кардани ҳамаи варақаҳо</string> <string name="tab_tray_menu_item_share">Мубодила кардани ҳамаи варақаҳо</string>
<!-- Text shown in the menu to view recently closed tabs -->
<string name="tab_tray_menu_recently_closed">Варақаҳои ба наздикӣ пӯшидашуда</string>
<!-- Text shown in the menu to view tab settings --> <!-- Text shown in the menu to view tab settings -->
<string name="tab_tray_menu_tab_settings">Танзимоти варақа</string> <string name="tab_tray_menu_tab_settings">Танзимоти варақа</string>
<!-- Text shown in the menu for closing all tabs --> <!-- Text shown in the menu for closing all tabs -->
@ -505,6 +589,10 @@
<string name="tab_tray_menu_open_new_tab">Варақаи нав</string> <string name="tab_tray_menu_open_new_tab">Варақаи нав</string>
<!-- Shortcut action to open the home screen --> <!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">Гузариш ба саҳифаи асосӣ</string> <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 --> <!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
<string name="close_tab">Пӯшидани варақа</string> <string name="close_tab">Пӯшидани варақа</string>
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title --> <!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
@ -573,6 +661,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Нест кардани %1$d ҷузъ</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 соати охир</string> <string name="history_24_hours">24 соати охир</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- 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--> <!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
<string name="bookmark_deletion_multiple_snackbar_message_2">Хатбаракҳо нест карда шуданд</string> <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 -->
<!-- Site permissions preferences header --> <!-- Site permissions preferences header -->
<string name="permissions_header">Иҷозатҳо</string> <string name="permissions_header">Иҷозатҳо</string>
<!-- Button label that take the user to the Android App setting --> <!-- Button label that take the user to the Android App setting -->
<string name="phone_feature_go_to_settings">Гузариш ба Танзимот</string> <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 --> <!-- Label that indicates that this option it the recommended one -->
<string name="phone_feature_recommended">Тавсияшуда</string> <string name="phone_feature_recommended">Тавсияшуда</string>
<!-- button that allows editing site permissions settings --> <!-- button that allows editing site permissions settings -->
@ -704,6 +806,8 @@
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Огоҳинома</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Дархости иҷозат</string> <string name="preference_option_phone_feature_ask_to_allow">Дархости иҷозат</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->
@ -721,6 +825,14 @@
<!-- Label that indicates that all video and audio autoplay is allowed --> <!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Иҷозат додани аудио ва видео</string> <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 --> <!-- Summary of delete browsing data on quit preference if it is set to on -->
<string name="delete_browsing_data_quit_on">Фаъол</string> <string name="delete_browsing_data_quit_on">Фаъол</string>
<!-- Summary of delete browsing data on quit preference if it is set to off --> <!-- Summary of delete browsing data on quit preference if it is set to off -->
@ -731,6 +843,8 @@
<string name="collections_header">Маҷмӯаҳо</string> <string name="collections_header">Маҷмӯаҳо</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed --> <!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Менюи маҷмӯаҳо</string> <string name="collection_menu_button_content_description">Менюи маҷмӯаҳо</string>
<!-- 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 --> <!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Варақаҳоро интихоб намоед</string> <string name="create_collection_select_tabs">Варақаҳоро интихоб намоед</string>
<!-- Title for the "select collection" step of the collection creator --> <!-- Title for the "select collection" step of the collection creator -->
@ -741,6 +855,8 @@
<string name="create_collection_add_new_collection">Илова кардани маҷмӯаи нав</string> <string name="create_collection_add_new_collection">Илова кардани маҷмӯаи нав</string>
<!-- Button to select all tabs in the "select tabs" step of the collection creator --> <!-- Button to select all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_select_all">Ҳамаро интихоб кардан</string> <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 --> <!-- 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> <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. <!-- 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> <string name="share_device_subheader">Фиристодан ба дастгоҳ</string>
<!-- Sub-header in the dialog to share a link to an app from the full list --> <!-- Sub-header in the dialog to share a link to an app from the full list -->
<string name="share_link_all_apps_subheader">Ҳамаи амалҳо</string> <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 --> <!-- An option from the share dialog to sign into sync -->
<string name="sync_sign_in">Барои ҳамоҳангсозӣ ворид шавед</string> <string name="sync_sign_in">Барои ҳамоҳангсозӣ ворид шавед</string>
<!-- An option from the share dialog to send link to all other sync devices --> <!-- An option from the share dialog to send link to all other sync devices -->
@ -789,14 +907,23 @@
<string name="sync_offline">Офлайн</string> <string name="sync_offline">Офлайн</string>
<!-- An option to connect additional devices --> <!-- An option to connect additional devices -->
<string name="sync_connect_device">Пайваст кардани дастгоҳи дигар</string> <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 --> <!-- Confirmation dialog button -->
<string name="sync_confirmation_button">Фаҳмо</string> <string name="sync_confirmation_button">Фаҳмо</string>
<!-- Share error message -->
<string name="share_error_snackbar">Ба ин барнома мубодила карда намешавад</string>
<!-- Add new device screen title --> <!-- Add new device screen title -->
<string name="sync_add_new_device_title">Фиристодан ба дастгоҳ</string> <string name="sync_add_new_device_title">Фиристодан ба дастгоҳ</string>
<!-- Text for the warning message on the Add new device screen --> <!-- Text for the warning message on the Add new device screen -->
<string name="sync_add_new_device_message">Ягон дастгоҳ пайваст нашуд</string> <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 --> <!-- Notifications -->
<!-- The user visible name of the "notification channel" (Android 8+ feature) for the ongoing notification shown while a browsing session is active. --> <!-- 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> <string name="notification_pbm_channel_name">Ҷаласаи баррасии махфӣ</string>
@ -830,8 +957,12 @@
<string name="snackbar_private_tabs_closed">Варақаҳои махфӣ пӯшида шуданд</string> <string name="snackbar_private_tabs_closed">Варақаҳои махфӣ пӯшида шуданд</string>
<!-- Text shown in snackbar when user deletes all private tabs --> <!-- Text shown in snackbar when user deletes all private tabs -->
<string name="snackbar_private_tabs_deleted">Варақаҳои махфӣ нест карда шуданд</string> <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 --> <!-- Text shown in snackbar when user removes a top site -->
<string name="snackbar_top_site_removed">Сомона хориҷ карда шуд</string> <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 --> <!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_confirm">Тасдиқ кардан</string> <string name="a11y_dialog_deleted_confirm">Тасдиқ кардан</string>
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it <!-- 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> <string name="qr_scanner_dialog_negative">РАД КАРДАН</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name --> <!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">Шумо мутмаин ҳастед, ки мехоҳед %1$s-ро нест намоед?</string> <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 --> <!-- 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> <string name="delete_tab_and_collection_dialog_title">%1$s-ро нест мекунед?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection --> <!-- Tab collection deletion prompt dialog option to delete the collection -->
@ -853,18 +986,30 @@
<string name="full_screen_notification">Ба реҷаи экрани пурра ворид шуда истодааст</string> <string name="full_screen_notification">Ба реҷаи экрани пурра ворид шуда истодааст</string>
<!-- Message for copying the URL via long press on the toolbar --> <!-- Message for copying the URL via long press on the toolbar -->
<string name="url_copied">URL нусха бардошта шуд</string> <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 --> <!-- Title for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_font_size_title">Андозаи ҳуруф</string> <string name="preference_accessibility_font_size_title">Андозаи ҳуруф</string>
<!-- Title for Accessibility Text Automatic Size Scaling Preference --> <!-- Title for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_2">Андозагирии худкори ҳуруф</string> <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 --> <!-- 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 --> <!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">Варақаҳои кушодашуда</string> <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 --> <!-- 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> <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 --> <!-- Title for history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_history_title">Таърих</string> <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 <!-- 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 --> <!-- Title for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies">Кукиҳо</string> <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 --> <!-- 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 --> <!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Баромадан</string> <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 --> <!-- Text for the cancel button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_cancel">Бекор кардан</string> <string name="delete_browsing_data_prompt_cancel">Бекор кардан</string>
<!-- Text for the allow button for the data deletion dialog --> <!-- Text for the allow button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_allow">Нест кардан</string> <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 --> <!-- Onboarding -->
<!-- Text for onboarding welcome message <!-- Text for onboarding welcome message
The first parameter is the name of the app (e.g. Firefox Preview) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_header">Хуш омадед ба %s!</string> <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 <!-- text for the Firefox Preview feature section header
The first parameter is the name of the app (e.g. Firefox Preview) --> The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_feature_section_header">Бо %s шинос шавед</string> <string name="onboarding_feature_section_header">Бо %s шинос шавед</string>
<!-- text for the "What's New" onboarding card header --> <!-- text for the "What's New" onboarding card header -->
<string name="onboarding_whats_new_header1">Бинед, ки чӣ нав аст</string> <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 --> <!-- Text for the button to learn more about signing in to your Firefox account -->
<string name="onboarding_manual_sign_in_learn_more">Маълумоти бештар</string> <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 --> <!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Ҳа, маро ворид кунед</string> <string name="onboarding_firefox_account_auto_signin_confirm">Ҳа, маро ворид кунед</string>
<!-- text for the automatic sign-in button while signing in is in process --> <!-- text for the automatic sign-in button while signing in is in process -->
<string name="onboarding_firefox_account_signing_in">Ворид шуда истодааст…</string> <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 --> <!-- 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> <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 --> <!-- text to display in the snackbar once account is signed-in -->
<string name="onboarding_firefox_account_sync_is_on">Ҳамоҳангсозӣ фаъол аст</string> <string name="onboarding_firefox_account_sync_is_on">Ҳамоҳангсозӣ фаъол аст</string>
<!-- text to display in the snackbar if automatic sign-in fails. user may try again --> <!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">Воридшавӣ иҷро нашуд</string> <string name="onboarding_firefox_account_automatic_signin_failed">Воридшавӣ иҷро нашуд</string>
<!-- text for the tracking protection onboarding card header --> <!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header_2">Махфияти худкор</string> <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 --> <!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">Стандартӣ (пешфарз)</string> <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 --> <!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">Реҷаи тамошои махфӣ</string> <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 --> <!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">Кушодани танзимот</string> <string name="onboarding_private_browsing_button">Кушодани танзимот</string>
<!-- text for the privacy notice onboarding card header --> <!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">Махфияти шумо</string> <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 --> <!-- Text for the button to read the privacy notice -->
<string name="onboarding_privacy_notice_read_button">Огоҳиномаи махфияти моро хонед</string> <string name="onboarding_privacy_notice_read_button">Огоҳиномаи махфияти моро хонед</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen --> <!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
@ -926,6 +1165,8 @@
<!-- Onboarding theme --> <!-- Onboarding theme -->
<!-- text for the theme picker onboarding card header --> <!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">Мавзӯи худро интихоб кунед</string> <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) --> <!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">Худкор</string> <string name="onboarding_theme_automatic_title">Худкор</string>
<!-- Summary of automatic theme setting (will follow device setting) --> <!-- Summary of automatic theme setting (will follow device setting) -->
@ -943,8 +1184,22 @@
<string name="sync_sent_tab_error_snackbar">Ирсол ғайриимкон аст</string> <string name="sync_sent_tab_error_snackbar">Ирсол ғайриимкон аст</string>
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed --> <!-- 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> <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 --> <!-- Text shown for settings option for sign with pairing -->
<string name="sign_in_with_camera">Ворид шудан ба воситаи камера</string> <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 --> <!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">Қатъ кардани пайваст</string> <string name="sign_out_disconnect">Қатъ кардани пайваст</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account --> <!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
@ -957,15 +1212,41 @@
<string name="etp_settings">Танзимоти муҳофизат</string> <string name="etp_settings">Танзимоти муҳофизат</string>
<!-- Preference title for enhanced tracking protection settings --> <!-- Preference title for enhanced tracking protection settings -->
<string name="preference_enhanced_tracking_protection">Муҳофизати такмилёфта аз пайгирӣ</string> <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 --> <!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Маълумоти бештар</string> <string name="preference_enhanced_tracking_protection_explanation_learn_more">Маълумоти бештар</string>
<!-- Preference for enhanced tracking protection for the standard protection settings --> <!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">Стандартӣ (пешфарз)</string> <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 --> <!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">Фармоишӣ</string> <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 --> <!-- 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--> <!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">Кукиҳо</string> <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 --> <!-- Preference for enhanced tracking protection for the custom protection settings for tracking content -->
<string name="preference_enhanced_tracking_protection_custom_tracking_content">Муҳтавои пайгирикунанда</string> <string name="preference_enhanced_tracking_protection_custom_tracking_content">Муҳтавои пайгирикунанда</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content--> <!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
@ -981,16 +1262,37 @@
<string name="enhanced_tracking_protection_blocked">Манъ карда мешавад</string> <string name="enhanced_tracking_protection_blocked">Манъ карда мешавад</string>
<!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings --> <!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings -->
<string name="enhanced_tracking_protection_allowed">Иҷозат дода мешавад</string> <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 --> <!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Криптомайнерҳо</string> <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 --> <!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Хонандаи изи ангушт</string> <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 --> <!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Муҳтавои пайгирикунанда</string> <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 --> <!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Муҳофизат барои ин сомона фаъол аст</string> <string name="etp_panel_on">Муҳофизат барои ин сомона фаъол аст</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site --> <!-- Enhanced Tracking Protection message that protection is currently off for this site -->
<string name="etp_panel_off">Муҳофизат барои ин сомона ғайрифаъол аст</string> <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 --> <!-- About page Your rights link text -->
<string name="about_your_rights">Ҳуқуқҳои шумо</string> <string name="about_your_rights">Ҳуқуқҳои шумо</string>
<!-- About page link text to open open source licenses screen --> <!-- About page link text to open open source licenses screen -->
@ -1001,6 +1303,12 @@
The first parameter is the app name --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | Китобхонаҳои OSS</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">Дастгирӣ</string> <string name="about_support">Дастгирӣ</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- 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 --> <!-- About page link text to open a screen with libraries that are used -->
<string name="about_other_open_source_libraries">Китобхонаҳое, ки мо истифода мебарем</string> <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 --> <!-- Content description of the tab counter toolbar button when one tab is open -->
<string name="tab_counter_content_description_one_tab">1 варақа</string> <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) --> <!-- 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 --> <!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Номи миёнбур</string> <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 --> <!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Воридшавиҳо ва ниҳонвожаҳо</string> <string name="preferences_passwords_logins_and_passwords">Воридшавиҳо ва ниҳонвожаҳо</string>
<!-- Preference for managing the saving of logins and passwords in Fenix --> <!-- Preference for managing the saving of logins and passwords in Fenix -->
<string name="preferences_passwords_save_logins">Нигоҳ доштани воридшавиҳо ва ниҳонвожаҳо</string> <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 --> <!-- Preference option for never saving passwords in Fenix -->
<string name="preferences_passwords_save_logins_never_save">Ҳеҷ гоҳ нигоҳ дошта нашавад</string> <string name="preferences_passwords_save_logins_never_save">Ҳеҷ гоҳ нигоҳ дошта нашавад</string>
<!-- Preference for autofilling saved logins in Fenix --> <!-- Preference for autofilling saved logins in Fenix -->
@ -1060,16 +1378,24 @@
<string name="preferences_passwords_sync_logins_sign_in">Барои ҳамоҳангсозӣ ворид шавед</string> <string name="preferences_passwords_sync_logins_sign_in">Барои ҳамоҳангсозӣ ворид шавед</string>
<!-- Preference to access list of saved logins --> <!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">Воридшавиҳои нигоҳдошташуда</string> <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 --> <!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Маълумоти бештар дар бораи ҳамоҳангсозӣ</string> <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 --> <!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Истисноҳо</string> <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 --> <!-- Text on button to remove all saved login exceptions -->
<string name="preferences_passwords_exceptions_remove_all">Нест кардани ҳамаи истисноҳо</string> <string name="preferences_passwords_exceptions_remove_all">Нест кардани ҳамаи истисноҳо</string>
<!-- Hint for search box in logins list --> <!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Ҷустуҷӯи воридшавиҳо</string> <string name="preferences_passwords_saved_logins_search">Ҷустуҷӯи воридшавиҳо</string>
<!-- Option to sort logins list A-Z, alphabetically --> <!-- Option to sort logins list A-Z, alphabetically -->
<string name="preferences_passwords_saved_logins_alphabetically">Аз рӯи алифбо</string> <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 --> <!-- The header for the site that a login is for -->
<string name="preferences_passwords_saved_logins_site">Сомона</string> <string name="preferences_passwords_saved_logins_site">Сомона</string>
<!-- The header for the username for a login --> <!-- The header for the username for a login -->
@ -1078,6 +1404,10 @@
<string name="preferences_passwords_saved_logins_password">Ниҳонвожа</string> <string name="preferences_passwords_saved_logins_password">Ниҳонвожа</string>
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins --> <!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin">PIN-и худро такроран ворид намоед</string> <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 --> <!-- 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> <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) --> <!-- 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> <string name="saved_login_reveal_password">Нишон додани ниҳонвожа</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins --> <!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">Пинҳон кардани ниҳонвожа</string> <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 --> <!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">Дертар</string> <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 --> <!-- 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> <string name="logins_biometric_prompt_message_pin">Қулфи дастгоҳи худро кушоед</string>
<!-- Title for Accessibility Force Enable Zoom Preference --> <!-- Title for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom">Тағйири андоза дар ҳамаи сомонаҳо</string> <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) --> <!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">Ном (А-Я)</string> <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) --> <!-- 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> <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 --> <!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">Илова кардани низоми ҷустуҷӯӣ</string> <string name="search_engine_add_custom_search_engine_title">Илова кардани низоми ҷустуҷӯӣ</string>
<!-- Title of the Edit search engine screen --> <!-- Title of the Edit search engine screen -->
@ -1139,13 +1480,27 @@
<string name="search_add_custom_engine_label_other">Дигар</string> <string name="search_add_custom_engine_label_other">Дигар</string>
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text --> <!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
<string name="search_add_custom_engine_name_hint">Ном</string> <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 --> <!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">Маълумоти бештар</string> <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 --> <!-- Accessibility description for the 'Learn more' link -->
<string name="search_add_custom_engine_learn_more_description">Пайванди «Маълумоти бештар»</string> <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 --> <!-- Text shown when a user leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">Сатри ҷустуҷӯро ворид кунед</string> <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 --> <!-- Text shown when a user creates a new search engine -->
<string name="search_add_custom_engine_success_message">%s эҷод карда шуд</string> <string name="search_add_custom_engine_success_message">%s эҷод карда шуд</string>
<!-- Text shown when a user successfully edits a custom search engine --> <!-- 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 --> <!-- Text shown when a user successfully deletes a custom search engine -->
<string name="search_delete_search_engine_success_message">%s нест карда шуд</string> <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 --> <!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">%s нав шуда истодааст...</string> <string name="migration_updating_app_button_text">%s нав шуда истодааст...</string>
<!-- Text on the enabled button. Placeholder replaced with app name--> <!-- Text on the enabled button. Placeholder replaced with app name-->
@ -1181,6 +1538,8 @@
<string name="confirm_clear_permissions_site">Шумо мутмаин ҳастед, ки мехоҳед ҳамаи иҷозатҳоро барои сомонаи ҷорӣ тоза намоед?</string> <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--> <!-- 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> <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 --> <!-- Label for the Pocket default top site -->
<string name="pocket_top_articles">Мақолаҳои беҳтарин</string> <string name="pocket_top_articles">Мақолаҳои беҳтарин</string>
<!-- Bookmark deletion confirmation --> <!-- Bookmark deletion confirmation -->
@ -1200,6 +1559,12 @@
<string name="dialog_delete_positive">Нест кардан</string> <string name="dialog_delete_positive">Нест кардан</string>
<!-- The saved login options menu description. --> <!-- The saved login options menu description. -->
<string name="login_options_menu">Имконоти воридшавӣ</string> <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. --> <!-- The button description to save changes to an edited login. -->
<string name="save_changes_to_login">Нигоҳ доштани тағйирот барои воридшавӣ</string> <string name="save_changes_to_login">Нигоҳ доштани тағйирот барои воридшавӣ</string>
<!-- The button description to discard changes to an edited login. --> <!-- The button description to discard changes to an edited login. -->
@ -1225,15 +1590,39 @@
<string name="synced_tabs_reauth">Лутфан, санҷиши ҳаққониятро аз нав такрор кунед</string> <string name="synced_tabs_reauth">Лутфан, санҷиши ҳаққониятро аз нав такрор кунед</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account --> <!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">Лутфан ҳамоҳангсозии варақаҳоро фаъол кунед.</string> <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 --> <!-- 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> <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. --> <!-- 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> <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. --> <!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Хуб, фаҳмидам</string> <string name="top_sites_max_limit_confirmation_button">Хуб, фаҳмидам</string>
<!-- Label for the show most visited sites preference -->
<string name="top_sites_toggle_top_frecent_sites">Намоиш додани сомонаҳои роиҷ</string>
<!-- Content description for close button in collection placeholder. --> <!-- Content description for close button in collection placeholder. -->
<string name="remove_home_collection_placeholder_content_description">Тоза кардан</string> <string name="remove_home_collection_placeholder_content_description">Тоза кардан</string>
</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> <string name="sign_in_with_camera">ลงชื่อเข้าด้วยกล้องของคุณ</string>
<!-- Text shown for settings option for sign with email --> <!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">ใช้อีเมลแทน</string> <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 --> <!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox จะหยุดการซิงค์กับบัญชีของคุณ แต่จะไม่ลบข้อมูลการเรียกดูใด ๆ ของคุณบนอุปกรณ์นี้</string> <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) --> <!-- 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 --> The first parameter is the app name -->
<string name="open_source_licenses_title">%s | ไลบรารี OSS</string> <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 --> <!-- About page link text to open support link -->
<string name="about_support">การสนับสนุน</string> <string name="about_support">การสนับสนุน</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) --> <!-- 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 --> The first parameter is the number of bookmarks selected -->
<string name="bookmarks_multi_select_title">%1$d yer imi seçildi</string> <string name="bookmarks_multi_select_title">%1$d yer imi seçildi</string>
<!-- Bookmark editing screen title --> <!-- 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 --> <!-- Bookmark folder editing screen title -->
<string name="edit_bookmark_folder_fragment_title">Klasörü düzenle</string> <string name="edit_bookmark_folder_fragment_title">Klasörü düzenle</string>
<!-- Bookmark sign in button message --> <!-- Bookmark sign in button message -->

@ -350,6 +350,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">Сповіщення</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">Синхронізувати</string> <string name="preferences_sync_now">Синхронізувати</string>
@ -535,6 +549,14 @@
<string name="recently_closed_empty_message">Немає нещодавно закритих вкладок</string> <string name="recently_closed_empty_message">Немає нещодавно закритих вкладок</string>
<!-- Tab Management --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">Закрити вкладки</string> <string name="preferences_close_tabs">Закрити вкладки</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -651,6 +673,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">Видалити %1$d елементів</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">Останні 24 години</string> <string name="history_24_hours">Останні 24 години</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -789,6 +815,8 @@
<string name="preference_phone_feature_location">Розташування</string> <string name="preference_phone_feature_location">Розташування</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Сповіщення</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Запитувати дозвіл</string> <string name="preference_option_phone_feature_ask_to_allow">Запитувати дозвіл</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -202,7 +202,7 @@
<!-- Header displayed when selecting a shortcut search engine --> <!-- 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> <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 --> <!-- 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 --> <!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
<string name="search_suggestions_onboarding_allow_button">Cho phép</string> <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 --> <!-- 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 --> <!-- 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> <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 --> <!-- 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 --> <!-- 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> <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 --> <!-- 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> <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 --> <!-- 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 --> <!-- 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> <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 --> <!-- 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> <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 --> <!-- 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 --> <!-- 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> <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 --> <!-- Preference option for asking to save passwords in Fenix -->
@ -1330,7 +1330,7 @@
<!-- Preference for autofilling saved logins in Fenix --> <!-- Preference for autofilling saved logins in Fenix -->
<string name="preferences_passwords_autofill">Tự động điền</string> <string name="preferences_passwords_autofill">Tự động điền</string>
<!-- Preference for syncing saved logins in Fenix --> <!-- 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 --> <!-- Syncing saved logins in Fenix is on -->
<string name="preferences_passwords_sync_logins_on">Bật</string> <string name="preferences_passwords_sync_logins_on">Bật</string>
<!-- Syncing saved logins in Fenix is off --> <!-- Syncing saved logins in Fenix is off -->
@ -1340,7 +1340,7 @@
<!-- Syncing saved logins in Fenix needs login --> <!-- 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> <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 --> <!-- 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. --> <!-- 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> <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 --> <!-- Preference to access list of saved logins -->
@ -1348,9 +1348,9 @@
<!-- Preference to access list of login exceptions that we never save logins for --> <!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Ngoại trừ</string> <string name="preferences_passwords_exceptions">Ngoại trừ</string>
<!-- Empty description of list of login exceptions that we never save logins for --> <!-- 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 --> <!-- 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 --> <!-- 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> <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 --> <!-- Hint for search box in logins list -->

@ -355,6 +355,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">通知</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">立即同步</string> <string name="preferences_sync_now">立即同步</string>
@ -544,6 +558,14 @@
<string name="recently_closed_empty_message">暂无最近关闭的标签页</string> <string name="recently_closed_empty_message">暂无最近关闭的标签页</string>
<!-- Tab Management --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">关闭标签页</string> <string name="preferences_close_tabs">关闭标签页</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -660,6 +682,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">删除 %1$d 个项目</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">过去 24 小时</string> <string name="history_24_hours">过去 24 小时</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -803,6 +829,8 @@
<string name="preference_phone_feature_location">位置</string> <string name="preference_phone_feature_location">位置</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">通知</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">始终询问</string> <string name="preference_option_phone_feature_ask_to_allow">始终询问</string>
<!-- Label that indicates that a permission must be blocked --> <!-- Label that indicates that a permission must be blocked -->

@ -351,6 +351,20 @@
<!-- Preference for notifications --> <!-- Preference for notifications -->
<string name="preferences_notifications">通知</string> <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 --> <!-- Account Preferences -->
<!-- Preference for triggering sync --> <!-- Preference for triggering sync -->
<string name="preferences_sync_now">立即同步</string> <string name="preferences_sync_now">立即同步</string>
@ -537,6 +551,14 @@
<string name="recently_closed_empty_message">目前還沒有最近關閉的分頁</string> <string name="recently_closed_empty_message">目前還沒有最近關閉的分頁</string>
<!-- Tab Management --> <!-- 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 --> <!-- Title of preference that allows a user to auto close tabs after a specified amount of time -->
<string name="preferences_close_tabs">自動關閉分頁</string> <string name="preferences_close_tabs">自動關閉分頁</string>
<!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs --> <!-- Option for auto closing tabs that will never auto close tabs, always allows user to manually close tabs -->
@ -653,6 +675,10 @@
<!-- Text for the button to clear selected history items. The first parameter <!-- Text for the button to clear selected history items. The first parameter
is a digit showing the number of items you have selected --> is a digit showing the number of items you have selected -->
<string name="history_delete_some">刪除 %1$d 個項目</string> <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 --> <!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 小時以內</string> <string name="history_24_hours">24 小時以內</string>
<!-- Text for the header that groups the history the past 7 days --> <!-- Text for the header that groups the history the past 7 days -->
@ -794,6 +820,8 @@
<string name="preference_phone_feature_location">位置</string> <string name="preference_phone_feature_location">位置</string>
<!-- Preference for altering the notification access for all websites --> <!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">通知</string> <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 --> <!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">總是詢問</string> <string name="preference_option_phone_feature_ask_to_allow">總是詢問</string>
<!-- Label that indicates that a permission must be blocked --> <!-- 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_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_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" 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_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_accessibility_force_enable_zoom" translatable="false">pref_key_accessibility_force_enable_zoom</string>
<string name="pref_key_advanced" translatable="false">pref_key_advanced</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_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_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_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_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_location" translatable="false">pref_key_phone_feature_location</string>
<string name="pref_key_phone_feature_microphone" translatable="false">pref_key_phone_feature_microphone</string> <string name="pref_key_phone_feature_microphone" translatable="false">pref_key_phone_feature_microphone</string>
@ -130,8 +130,6 @@
<!-- Customization Settings --> <!-- Customization Settings -->
<string name="pref_home_category" translatable="false">pref_home_category</string> <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_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_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> <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_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_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_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_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_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> <string name="pref_key_camera_permissions_needed" translatable="false">pref_key_camera_permissions_needed</string>
</resources> </resources>

@ -32,6 +32,8 @@
<!-- Label for the secret settings preference --> <!-- Label for the secret settings preference -->
<string name="preferences_debug_settings">Secret Settings</string> <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 --> <!-- Label for the show top frequently visited sites preference -->
<string name="preferences_debug_settings_enable_top_frecent_sites">Show Top Frequently Visited Sites</string> <string name="preferences_debug_settings_enable_top_frecent_sites">Show Top Frequently Visited Sites</string>
<!-- Label for the wait until first paint preference --> <!-- 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