1
0
Fork 0

Copione merged onto master
continuous-integration/drone/push Build is passing Details

master
blallo 2020-07-16 00:00:58 +02:00
commit c37e0160e3
120 changed files with 6845 additions and 587 deletions

View File

@ -248,7 +248,7 @@ tasks:
# Note: This task is built server side without the context or tooling that
# exist in tree so we must hard code the hash
image:
mozillareleases/taskgraph:decision-mobile-6020473b1a928d8df50e234a7ca2e81ade2220a4fb5fbe16b02477dd64a49728@sha256:98d226736b7d03907114bf37938002b90e8a37cbe3a297690e349f1ddddb1d7c
mozillareleases/taskgraph:decision-mobile-6607973bc60e32323a541861cc5856cd6a0f51ea9fd664ef7d43bca8df53db47@sha256:8c471aacc469ea8e7bb4846c16efe086f7350a5cc1df570cc6c86b22895a2456
maxRunTime: 1800

View File

@ -501,6 +501,7 @@ dependencies {
implementation Deps.mozilla_feature_toolbar
implementation Deps.mozilla_feature_tabs
implementation Deps.mozilla_feature_findinpage
implementation Deps.mozilla_feature_logins
implementation Deps.mozilla_feature_site_permissions
implementation Deps.mozilla_feature_readerview
implementation Deps.mozilla_feature_tab_collections

View File

@ -121,6 +121,7 @@ class BookmarksTest {
}
}
@Ignore("Intermittent failures: https://github.com/mozilla-mobile/fenix/issues/10911")
@Test
fun createBookmarkFolderTest() {
homeScreen {

View File

@ -170,6 +170,7 @@ class SettingsPrivacyTest {
verifyDefaultView()
verifyDefaultValueSyncLogins()
verifyDefaultValueAutofillLogins()
verifyDefaultValueExceptions()
}.openSavedLogins {
verifySavedLoginsView()
tapSetupLater()
@ -209,13 +210,13 @@ class SettingsPrivacyTest {
}
@Test
fun doNotSaveLoginFromPromptTest() {
fun neverSaveLoginFromPromptTest() {
val saveLoginTest = TestAssetHelper.getSaveLoginAsset(mockWebServer)
navigationToolbar {
}.enterURLAndEnterToBrowser(saveLoginTest.url) {
verifySaveLoginPromptIsShown()
// Don't save the login
// Don't save the login, add to exceptions
saveLoginFromPrompt("Never save")
}.openTabDrawer {
}.openHomeScreen {
@ -228,7 +229,11 @@ class SettingsPrivacyTest {
verifySavedLoginsView()
tapSetupLater()
// Verify that the login list is empty
verifyNotSavedLoginFromPromt()
verifyNotSavedLoginFromPrompt()
}.goBack {
}.openLoginExceptions {
// Verify localhost was added to exceptions list
verifyLocalhostExceptionAdded()
}
}

View File

@ -32,7 +32,9 @@ import org.mozilla.fenix.ui.robots.notificationShade
* - Swipe to close tab (temporarily disabled)
* - Undo close tab
* - Close private tabs persistent notification
*
* - Empty tab tray state
* - Tab tray details
* - Shortcut context menu navigation
*/
class TabbedBrowsingTest {
@ -224,4 +226,86 @@ class TabbedBrowsingTest {
verifyHomeScreen()
}
}
@Test
fun verifyEmptyTabTray() {
homeScreen { }.dismissOnboarding()
navigationToolbar {
}.openTabTray {
verifyNoTabsOpened()
verifyNewTabButton()
verifyTabTrayOverflowMenu(false)
}.toggleToPrivateTabs {
verifyNoTabsOpened()
verifyNewTabButton()
verifyTabTrayOverflowMenu(false)
}
}
@Test
fun verifyOpenTabDetails() {
homeScreen { }.dismissOnboarding()
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
// verifyPageContent(defaultWebPage.content)
}.openTabDrawer {
verifyExistingTabList()
verifyNewTabButton()
verifyTabTrayOverflowMenu(true)
verifyExistingOpenTabs(defaultWebPage.title)
verifyCloseTabsButton(defaultWebPage.title)
}.openHomeScreen {
}
}
@Test
fun verifyContextMenuShortcuts() {
homeScreen { }.dismissOnboarding()
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
// verifyPageContent(defaultWebPage.content)
}.openTabDrawer {
verifyExistingTabList()
verifyNewTabButton()
verifyTabTrayOverflowMenu(true)
verifyExistingOpenTabs(defaultWebPage.title)
verifyCloseTabsButton(defaultWebPage.title)
}.closeTabDrawer {
}.openTabButtonShortcutsMenu {
verifyTabButtonShortcutMenuItems()
}.closeTabFromShortcutsMenu {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
}.openTabButtonShortcutsMenu {
}.openNewPrivateTabFromShortcutsMenu {
verifyHomeScreen()
verifyNavigationToolbar()
verifyHomePrivateBrowsingButton()
verifyHomeMenu()
verifyHomeWordmark()
verifyTabButton()
verifyPrivateSessionMessage()
verifyHomeToolbar()
verifyHomeComponent()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
}.openTabButtonShortcutsMenu {
}.openTabFromShortcutsMenu {
verifyHomeScreen()
verifyNavigationToolbar()
verifyHomeMenu()
verifyHomeWordmark()
verifyTabButton()
verifyHomeToolbar()
verifyHomeComponent()
}
}
}

View File

@ -18,8 +18,8 @@ import androidx.test.espresso.intent.matcher.BundleMatchers
import androidx.test.espresso.intent.matcher.IntentMatchers
import androidx.test.espresso.matcher.RootMatchers.isDialog
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
import androidx.test.espresso.matcher.ViewMatchers.Visibility
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
import androidx.test.espresso.matcher.ViewMatchers.withId
@ -392,6 +392,17 @@ class BrowserRobot {
return TabDrawerRobot.Transition()
}
fun openTabButtonShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): NavigationToolbarRobot.Transition {
mDevice.waitForIdle(waitingTime)
tabsCounter().perform(
ViewActions.longClick()
)
NavigationToolbarRobot().interact()
return NavigationToolbarRobot.Transition()
}
fun openNotificationShade(interact: NotificationRobot.() -> Unit): NotificationRobot.Transition {
mDevice.openNotification()

View File

@ -7,13 +7,16 @@
package org.mozilla.fenix.ui.robots
import android.net.Uri
import androidx.recyclerview.widget.RecyclerView
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.IdlingResource
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.action.ViewActions.pressImeActionButton
import androidx.test.espresso.action.ViewActions.replaceText
import androidx.test.espresso.action.ViewActions.typeText
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.contrib.RecyclerViewActions
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
@ -47,6 +50,8 @@ class NavigationToolbarRobot {
fun verifyNoHistoryBookmarks() = assertNoHistoryBookmarks()
fun verifyTabButtonShortcutMenuItems() = assertTabButtonShortcutMenuItems()
class Transition {
private lateinit var sessionLoadedIdlingResource: SessionLoadedIdlingResource
@ -113,12 +118,25 @@ class NavigationToolbarRobot {
return ThreeDotMenuMainRobot.Transition()
}
fun openTabTray(interact: TabDrawerRobot.() -> Unit): TabDrawerRobot.Transition {
onView(withId(R.id.tab_button))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
tabTrayButton().click()
TabDrawerRobot().interact()
return TabDrawerRobot.Transition()
}
fun openNewTabAndEnterToBrowser(
url: Uri,
interact: BrowserRobot.() -> Unit
): BrowserRobot.Transition {
sessionLoadedIdlingResource = SessionLoadedIdlingResource()
mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/toolbar")), waitingTime)
mDevice.waitNotNull(
Until.findObject(By.res("org.mozilla.fenix.debug:id/toolbar")),
waitingTime
)
urlBar().click()
awesomeBar().perform(replaceText(url.toString()), pressImeActionButton())
@ -165,6 +183,54 @@ class NavigationToolbarRobot {
HomeScreenRobot().interact()
return HomeScreenRobot.Transition()
}
fun closeTabFromShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): NavigationToolbarRobot.Transition {
mDevice.waitForIdle(waitingTime)
onView(withId(R.id.mozac_browser_menu_recyclerView))
.perform(
RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>(
hasDescendant(
withText("Close tab")
), ViewActions.click()
)
)
NavigationToolbarRobot().interact()
return NavigationToolbarRobot.Transition()
}
fun openTabFromShortcutsMenu(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
mDevice.waitForIdle(waitingTime)
onView(withId(R.id.mozac_browser_menu_recyclerView))
.perform(
RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>(
hasDescendant(
withText("New tab")
), ViewActions.click()
)
)
HomeScreenRobot().interact()
return HomeScreenRobot.Transition()
}
fun openNewPrivateTabFromShortcutsMenu(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
mDevice.waitForIdle(waitingTime)
onView(withId(R.id.mozac_browser_menu_recyclerView))
.perform(
RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>(
hasDescendant(
withText("New private tab")
), ViewActions.click()
)
)
HomeScreenRobot().interact()
return HomeScreenRobot.Transition()
}
}
}
@ -196,10 +262,18 @@ private fun assertNoHistoryBookmarks() {
.check(matches(not(hasDescendant(withText("Test_Page_3")))))
}
private fun assertTabButtonShortcutMenuItems() {
onView(withId(R.id.mozac_browser_menu_recyclerView))
.check(matches(hasDescendant(withText("Close tab"))))
.check(matches(hasDescendant(withText("New private tab"))))
.check(matches(hasDescendant(withText("New tab"))))
}
private fun dismissOnboardingButton() = onView(withId(R.id.close_onboarding))
private fun urlBar() = onView(withId(R.id.toolbar))
private fun awesomeBar() = onView(withId(R.id.mozac_browser_toolbar_edit_url_view))
private fun threeDotButton() = onView(withId(R.id.mozac_browser_toolbar_menu))
private fun tabTrayButton() = onView(withId(R.id.tab_button))
private fun fillLinkButton() = onView(withId(R.id.fill_link_from_clipboard))
private fun clearAddressBar() = onView(withId(R.id.mozac_browser_toolbar_clear_view))
private fun goBackButton() = mDevice.pressBack()

View File

@ -38,6 +38,8 @@ class SettingsSubMenuLoginsAndPasswordRobot {
mDevice.waitNotNull(Until.findObjects(By.text("On")), TestAssetHelper.waitingTime)
}
fun verifyDefaultValueExceptions() = assertDefaultValueExceptions()
fun verifyDefaultValueAutofillLogins() = assertDefaultValueAutofillLogins()
fun verifyDefaultValueSyncLogins() = assertDefaultValueSyncLogins()
@ -60,6 +62,14 @@ class SettingsSubMenuLoginsAndPasswordRobot {
return SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.Transition()
}
fun openLoginExceptions(interact: SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.() -> Unit): SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.Transition {
fun loginExceptionsButton() = onView(ViewMatchers.withText("Exceptions"))
loginExceptionsButton().click()
SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot().interact()
return SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.Transition()
}
fun openSyncLogins(interact: SettingsTurnOnSyncRobot.() -> Unit): SettingsTurnOnSyncRobot.Transition {
fun syncLoginsButton() = onView(ViewMatchers.withText("Sync logins"))
syncLoginsButton().click()
@ -92,5 +102,8 @@ private fun assertDefaultView() = onView(ViewMatchers.withText("Sync logins"))
private fun assertDefaultValueAutofillLogins() = onView(ViewMatchers.withText("Autofill"))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertDefaultValueExceptions() = onView(ViewMatchers.withText("Exceptions"))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertDefaultValueSyncLogins() = onView(ViewMatchers.withText("Sign in to Sync"))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))

View File

@ -13,6 +13,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
import androidx.test.uiautomator.By
import androidx.test.uiautomator.Until
import org.hamcrest.CoreMatchers
import org.hamcrest.CoreMatchers.containsString
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.ext.waitNotNull
@ -24,16 +25,23 @@ class SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot {
fun verifySavedLoginsView() = assertSavedLoginsView()
fun verifySavedLoginsAfterSync() {
mDevice.waitNotNull(Until.findObjects(By.text("https://accounts.google.com")), TestAssetHelper.waitingTime)
mDevice.waitNotNull(
Until.findObjects(By.text("https://accounts.google.com")),
TestAssetHelper.waitingTime
)
assertSavedLoginAppears()
}
fun tapSetupLater() = onView(ViewMatchers.withText("Later")).perform(ViewActions.click())
fun verifySavedLoginFromPrompt() = mDevice.waitNotNull(Until.findObjects(By.text("test@example.com")))
fun verifySavedLoginFromPrompt() =
mDevice.waitNotNull(Until.findObjects(By.text("test@example.com")))
fun verifyNotSavedLoginFromPromt() = onView(ViewMatchers.withText("test@example.com"))
.check(ViewAssertions.doesNotExist())
fun verifyNotSavedLoginFromPrompt() = onView(ViewMatchers.withText("test@example.com"))
.check(ViewAssertions.doesNotExist())
fun verifyLocalhostExceptionAdded() = onView(ViewMatchers.withText(containsString("localhost")))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
class Transition {
fun goBack(interact: SettingsSubMenuLoginsAndPasswordRobot.() -> Unit): SettingsSubMenuLoginsAndPasswordRobot.Transition {
@ -46,9 +54,10 @@ class SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot {
}
private fun goBackButton() =
onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
private fun assertSavedLoginsView() = onView(ViewMatchers.withText("Secure your logins and passwords"))
private fun assertSavedLoginsView() =
onView(ViewMatchers.withText("Secure your logins and passwords"))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertSavedLoginAppears() = onView(ViewMatchers.withText("https://accounts.google.com"))

View File

@ -47,6 +47,8 @@ class TabDrawerRobot {
fun verifyNoTabsOpened() = assertNoTabsOpenedText()
fun verifyPrivateModeSelected() = assertPrivateModeSelected()
fun verifyNormalModeSelected() = assertNormalModeSelected()
fun verifyNewTabButton() = assertNewTabButton()
fun verifyTabTrayOverflowMenu(visibility: Boolean) = assertTabTrayOverflowButton(visibility)
fun closeTab() {
closeTabButton().click()
@ -119,6 +121,18 @@ class TabDrawerRobot {
return TabDrawerRobot.Transition()
}
fun closeTabDrawer(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
mDevice.waitForIdle(waitingTime)
// Dismisses the tab tray bottom sheet with 2 handle clicks
onView(withId(R.id.handle)).perform(
click(),
click()
)
BrowserRobot().interact()
return BrowserRobot.Transition()
}
fun openHomeScreen(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
mDevice.waitForIdle()
@ -196,6 +210,10 @@ private fun assertNoTabsOpenedText() =
onView(withId(R.id.tab_tray_empty_view))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertNewTabButton() =
onView(withId(R.id.new_tab_button))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertNormalModeSelected() =
normalBrowsingButton()
.check(matches(ViewMatchers.isSelected()))
@ -204,6 +222,10 @@ private fun assertPrivateModeSelected() =
privateBrowsingButton()
.check(matches(ViewMatchers.isSelected()))
private fun assertTabTrayOverflowButton(visible: Boolean) =
onView(withId(R.id.tab_tray_overflow))
.check(matches(withEffectiveVisibility(visibleOrGone(visible))))
private fun tab(title: String) =
onView(
allOf(
@ -213,3 +235,6 @@ private fun tab(title: String) =
)
private fun tabsCounter() = onView(withId(R.id.tab_button))
private fun visibleOrGone(visibility: Boolean) =
if (visibility) ViewMatchers.Visibility.VISIBLE else ViewMatchers.Visibility.GONE

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -21,7 +21,7 @@ enum class BrowserDirection(@IdRes val fragmentId: Int) {
FromSyncedTabs(R.id.syncedTabsFragment),
FromBookmarks(R.id.bookmarkFragment),
FromHistory(R.id.historyFragment),
FromExceptions(R.id.exceptionsFragment),
FromTrackingProtectionExceptions(R.id.trackingProtectionExceptionsFragment),
FromAbout(R.id.aboutFragment),
FromTrackingProtection(R.id.trackingProtectionFragment),
FromSavedLoginsFragment(R.id.savedLoginsFragment),
@ -29,5 +29,6 @@ enum class BrowserDirection(@IdRes val fragmentId: Int) {
FromAddSearchEngineFragment(R.id.addSearchEngineFragment),
FromEditCustomSearchEngineFragment(R.id.editCustomSearchEngineFragment),
FromAddonDetailsFragment(R.id.addonDetailsFragment),
FromAddonPermissionsDetailsFragment(R.id.addonPermissionsDetailFragment),
FromLoginDetailFragment(R.id.loginDetailFragment)
}

View File

@ -56,13 +56,14 @@ import mozilla.components.support.utils.toSafeIntent
import mozilla.components.support.webextensions.WebExtensionPopupFeature
import org.mozilla.fenix.GleanMetrics.Metrics
import org.mozilla.fenix.addons.AddonDetailsFragmentDirections
import org.mozilla.fenix.addons.AddonPermissionsDetailsFragmentDirections
import org.mozilla.fenix.browser.UriOpenedObserver
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager
import org.mozilla.fenix.components.metrics.BreadcrumbsRecorder
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.exceptions.ExceptionsFragmentDirections
import org.mozilla.fenix.trackingprotectionexceptions.TrackingProtectionExceptionsFragmentDirections
import org.mozilla.fenix.ext.alreadyOnDestination
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav
@ -322,10 +323,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
private fun actionSorter(actions: Array<String>): Array<String> {
val order = hashMapOf<String, Int>()
order["org.mozilla.geckoview.COPY"] = 0
order["CUSTOM_CONTEXT_MENU_SEARCH"] = 1
order["org.mozilla.geckoview.SELECT_ALL"] = 2
order["CUSTOM_CONTEXT_MENU_SHARE"] = 3
order["CUSTOM_CONTEXT_MENU_EMAIL"] = 0
order["CUSTOM_CONTEXT_MENU_CALL"] = 1
order["org.mozilla.geckoview.COPY"] = 2
order["CUSTOM_CONTEXT_MENU_SEARCH"] = 3
order["org.mozilla.geckoview.SELECT_ALL"] = 4
order["CUSTOM_CONTEXT_MENU_SHARE"] = 5
return actions.sortedBy { actionName ->
// Sort the actions in our preferred order, putting "other" actions unsorted at the end
@ -496,8 +499,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
BookmarkFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromHistory ->
HistoryFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromExceptions ->
ExceptionsFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromTrackingProtectionExceptions ->
TrackingProtectionExceptionsFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromAbout ->
AboutFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromTrackingProtection ->
@ -512,6 +515,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
EditCustomSearchEngineFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromAddonDetailsFragment ->
AddonDetailsFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromAddonPermissionsDetailsFragment ->
AddonPermissionsDetailsFragmentDirections.actionGlobalBrowser(customTabSessionId)
BrowserDirection.FromLoginDetailFragment ->
LoginDetailFragmentDirections.actionGlobalBrowser(customTabSessionId)
}

View File

@ -4,61 +4,36 @@
package org.mozilla.fenix.addons
import android.content.Intent
import android.content.Intent.ACTION_VIEW
import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.annotation.StringRes
import androidx.core.net.toUri
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_add_on_permissions.view.*
import mozilla.components.feature.addons.Addon
import mozilla.components.feature.addons.ui.AddonPermissionsAdapter
import mozilla.components.feature.addons.ui.translatedName
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.theme.ThemeManager
private const val LEARN_MORE_URL =
"https://support.mozilla.org/kb/permission-request-messages-firefox-extensions"
/**
* A fragment to show the permissions of an add-on.
*/
class AddonPermissionsDetailsFragment : Fragment(R.layout.fragment_add_on_permissions) {
class AddonPermissionsDetailsFragment : Fragment(R.layout.fragment_add_on_permissions),
AddonPermissionsDetailsInteractor {
private val args by navArgs<AddonPermissionsDetailsFragmentArgs>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
showToolbar(args.addon.translatedName)
bindPermissions(args.addon, view)
bindLearnMore(view)
AddonPermissionsDetailsView(view, interactor = this).bind(args.addon)
}
private fun bindPermissions(addon: Addon, view: View) {
view.add_ons_permissions.apply {
layoutManager = LinearLayoutManager(requireContext())
val sortedPermissions = addon.translatePermissions().map {
@StringRes val stringId = it
getString(stringId)
}.sorted()
adapter = AddonPermissionsAdapter(
sortedPermissions,
style = AddonPermissionsAdapter.Style(
ThemeManager.resolveAttribute(R.attr.primaryText, requireContext())
)
)
}
}
private fun bindLearnMore(view: View) {
view.learn_more_label.setOnClickListener {
val intent = Intent(ACTION_VIEW, LEARN_MORE_URL.toUri())
startActivity(intent)
}
override fun openWebsite(addonSiteUrl: Uri) {
(activity as HomeActivity).openToBrowserAndLoad(
searchTermOrURL = addonSiteUrl.toString(),
newTab = true,
from = BrowserDirection.FromAddonPermissionsDetailsFragment
)
}
}

View File

@ -0,0 +1,66 @@
/* 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.addons
import android.net.Uri
import android.view.View
import androidx.annotation.StringRes
import androidx.core.net.toUri
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.main.fragment_add_on_permissions.*
import mozilla.components.feature.addons.Addon
import mozilla.components.feature.addons.ui.AddonPermissionsAdapter
import org.mozilla.fenix.R
import org.mozilla.fenix.theme.ThemeManager
interface AddonPermissionsDetailsInteractor {
/**
* Open the given siteUrl in the browser.
*/
fun openWebsite(addonSiteUrl: Uri)
}
/**
* Shows the permission details of an add-on.
*/
class AddonPermissionsDetailsView(
override val containerView: View,
private val interactor: AddonPermissionsDetailsInteractor
) : LayoutContainer {
fun bind(addon: Addon) {
bindPermissions(addon)
bindLearnMore()
}
private fun bindPermissions(addon: Addon) {
add_ons_permissions.apply {
layoutManager = LinearLayoutManager(context)
val sortedPermissions = addon.translatePermissions().map {
@StringRes val stringId = it
context.getString(stringId)
}.sorted()
adapter = AddonPermissionsAdapter(
sortedPermissions,
style = AddonPermissionsAdapter.Style(
ThemeManager.resolveAttribute(R.attr.primaryText, context)
)
)
}
}
private fun bindLearnMore() {
learn_more_label.setOnClickListener {
interactor.openWebsite(LEARN_MORE_URL.toUri())
}
}
private companion object {
const val LEARN_MORE_URL =
"https://support.mozilla.org/kb/permission-request-messages-firefox-extensions"
}
}

View File

@ -25,12 +25,13 @@ import mozilla.components.feature.addons.Addon
import mozilla.components.feature.addons.AddonManagerException
import mozilla.components.feature.addons.ui.AddonInstallationDialogFragment
import mozilla.components.feature.addons.ui.AddonsManagerAdapter
import mozilla.components.feature.addons.ui.AddonsManagerAdapterDelegate
import mozilla.components.feature.addons.ui.PermissionsDialogFragment
import mozilla.components.feature.addons.ui.translatedName
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getRootView
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.theme.ThemeManager
@ -39,9 +40,9 @@ import java.util.concurrent.CancellationException
/**
* Fragment use for managing add-ons.
*/
@Suppress("TooManyFunctions", "LargeClass")
class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
AddonsManagerAdapterDelegate {
@Suppress("TooManyFunctions")
class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management) {
/**
* Whether or not an add-on installation is in progress.
*/
@ -65,23 +66,12 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
}
}
override fun onAddonItemClicked(addon: Addon) {
if (addon.isInstalled()) {
showInstalledAddonDetailsFragment(addon)
} else {
showDetailsFragment(addon)
}
}
override fun onInstallAddonButtonClicked(addon: Addon) {
showPermissionDialog(addon)
}
override fun onNotYetSupportedSectionClicked(unsupportedAddons: List<Addon>) {
showNotYetSupportedAddonFragment(ArrayList(unsupportedAddons))
}
private fun bindRecyclerView(view: View) {
val managementView = AddonsManagementView(
navController = findNavController(),
showPermissionDialog = ::showPermissionDialog
)
val recyclerView = view.add_ons_list
recyclerView.layoutManager = LinearLayoutManager(requireContext())
val shouldRefresh = adapter != null
@ -93,7 +83,7 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
if (!shouldRefresh) {
adapter = AddonsManagerAdapter(
requireContext().components.addonCollectionProvider,
this@AddonsManagementFragment,
managementView,
addons,
style = createAddonStyle(requireContext())
)
@ -135,30 +125,6 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
)
}
private fun showInstalledAddonDetailsFragment(addon: Addon) {
val directions =
AddonsManagementFragmentDirections.actionAddonsManagementFragmentToInstalledAddonDetails(
addon
)
findNavController().navigate(directions)
}
private fun showDetailsFragment(addon: Addon) {
val directions =
AddonsManagementFragmentDirections.actionAddonsManagementFragmentToAddonDetailsFragment(
addon
)
findNavController().navigate(directions)
}
private fun showNotYetSupportedAddonFragment(unsupportedAddons: ArrayList<Addon>) {
val directions =
AddonsManagementFragmentDirections.actionAddonsManagementFragmentToNotYetSupportedAddonFragment(
unsupportedAddons.toTypedArray()
)
findNavController().navigate(directions)
}
private fun findPreviousDialogFragment(): PermissionsDialogFragment? {
return parentFragmentManager.findFragmentByTag(PERMISSIONS_DIALOG_FRAGMENT_TAG) as? PermissionsDialogFragment
}
@ -192,11 +158,13 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
onPositiveButtonClicked = onPositiveButtonClicked
)
dialog.show(parentFragmentManager, PERMISSIONS_DIALOG_FRAGMENT_TAG)
requireContext().components.analytics.metrics.track(Event.AddonInstalled(addon.id))
}
}
private fun showInstallationDialog(addon: Addon) {
if (!isInstallationInProgress && !hasExistingAddonInstallationDialogFragment()) {
requireComponents.analytics.metrics.track(Event.AddonInstalled(addon.id))
val addonCollectionProvider = requireContext().components.addonCollectionProvider
val dialog = AddonInstallationDialogFragment.newInstance(

View File

@ -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.addons
import androidx.navigation.NavController
import mozilla.components.feature.addons.Addon
import mozilla.components.feature.addons.ui.AddonsManagerAdapterDelegate
/**
* View used for managing add-ons.
*/
class AddonsManagementView(
private val navController: NavController,
private val showPermissionDialog: (Addon) -> Unit
) : AddonsManagerAdapterDelegate {
override fun onAddonItemClicked(addon: Addon) {
if (addon.isInstalled()) {
showInstalledAddonDetailsFragment(addon)
} else {
showDetailsFragment(addon)
}
}
override fun onInstallAddonButtonClicked(addon: Addon) {
showPermissionDialog(addon)
}
override fun onNotYetSupportedSectionClicked(unsupportedAddons: List<Addon>) {
showNotYetSupportedAddonFragment(unsupportedAddons)
}
private fun showInstalledAddonDetailsFragment(addon: Addon) {
val directions =
AddonsManagementFragmentDirections.actionAddonsManagementFragmentToInstalledAddonDetails(
addon
)
navController.navigate(directions)
}
private fun showDetailsFragment(addon: Addon) {
val directions =
AddonsManagementFragmentDirections.actionAddonsManagementFragmentToAddonDetailsFragment(
addon
)
navController.navigate(directions)
}
private fun showNotYetSupportedAddonFragment(unsupportedAddons: List<Addon>) {
val directions =
AddonsManagementFragmentDirections.actionAddonsManagementFragmentToNotYetSupportedAddonFragment(
unsupportedAddons.toTypedArray()
)
navController.navigate(directions)
}
}

View File

@ -443,6 +443,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
isSaveLoginEnabled = {
context.settings().shouldPromptToSaveLogins
},
loginExceptionStorage = context.components.core.loginExceptionStorage,
shareDelegate = object : ShareDelegate {
override fun showShareSheet(
context: Context,

View File

@ -30,6 +30,7 @@ import mozilla.components.concept.engine.mediaquery.PreferredColorScheme
import mozilla.components.concept.fetch.Client
import mozilla.components.feature.customtabs.store.CustomTabsServiceStore
import mozilla.components.feature.downloads.DownloadMiddleware
import mozilla.components.feature.logins.exceptions.LoginExceptionStorage
import mozilla.components.feature.media.RecordingDevicesNotificationFeature
import mozilla.components.feature.media.middleware.MediaMiddleware
import mozilla.components.feature.pwa.ManifestStorage
@ -251,6 +252,8 @@ class Core(private val context: Context) {
val webAppManifestStorage by lazy { ManifestStorage(context) }
val loginExceptionStorage by lazy { LoginExceptionStorage(context) }
/**
* Shared Preferences that encrypt/decrypt using Android KeyStore and lib-dataprotect for 23+
* only on Nightly/Debug for now, otherwise simply stored.

View File

@ -650,6 +650,7 @@ private val Event.wrapper: EventWrapper<*>?
is Event.ClearedPrivateData -> null
is Event.DismissedOnboarding -> null
is Event.FennecToFenixMigrated -> null
is Event.AddonInstalled -> null
}
class GleanMetricsService(private val context: Context) : MetricsService {

View File

@ -38,9 +38,10 @@ private val Event.name: String?
is Event.ClearedPrivateData -> "E_Cleared_Private_Data"
is Event.DismissedOnboarding -> "E_Dismissed_Onboarding"
is Event.FennecToFenixMigrated -> "E_Fennec_To_Fenix_Migrated"
is Event.AddonInstalled -> "E_Addon_Installed"
// Do not track other events in Leanplum
else -> ""
else -> null
}
class LeanplumMetricsService(private val application: Application) : MetricsService {

View File

@ -465,6 +465,8 @@ sealed class Event {
}
object CrashReporterOpened : Event()
data class AddonInstalled(val addonId: String) : Event()
data class CrashReporterClosed(val crashSubmitted: Boolean) : Event() {
override val extras: Map<CrashReporter.closedKeys, String>?
get() = mapOf(CrashReporter.closedKeys.crashSubmitted to crashSubmitted.toString())

View File

@ -43,6 +43,13 @@ open class FenixSearchEngineProvider(
)
}
// We have two search engine types: one based on MLS reported region, one based only on Locale.
// There are multiple steps involved in returning the default search engine for example.
// Simplest and most effective way to make sure the MLS engines do not mix with Locale based engines
// is to use the same type of engines for the entire duration of the app's run.
// See fenix/issues/11875
private val isRegionCachedByLocationService = locationService.hasRegionCached()
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
open val localizationProvider: SearchLocalizationProvider =
RegionSearchLocalizationProvider(locationService)
@ -91,7 +98,7 @@ open class FenixSearchEngineProvider(
// the main one hasn't completed yet
private val searchEngines: Deferred<SearchEngineList>
get() =
if (loadedSearchEngines.isCompleted) {
if (isRegionCachedByLocationService) {
loadedSearchEngines
} else {
fallbackEngines
@ -200,7 +207,7 @@ open class FenixSearchEngineProvider(
if (!prefs.contains(installedEnginesKey)) {
val searchEngines =
if (baseSearchEngines.isCompleted) baseSearchEngines
if (isRegionCachedByLocationService) baseSearchEngines
else fallbackEngines
val defaultSet = searchEngines.await()
@ -219,7 +226,7 @@ open class FenixSearchEngineProvider(
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
suspend fun localeAwareInstalledEnginesKey(): String {
val tag = if (loadedRegion.isCompleted) {
val tag = if (isRegionCachedByLocationService) {
val localization = loadedRegion.await()
val region = localization.region?.let {
if (it.isEmpty()) "" else "-$it"

View File

@ -10,7 +10,6 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.navigation.NavDirections
import androidx.navigation.NavOptions
import androidx.navigation.Navigator
import androidx.navigation.fragment.NavHostFragment.findNavController
import androidx.navigation.fragment.findNavController
import org.mozilla.fenix.NavHostActivity
@ -23,15 +22,7 @@ import org.mozilla.fenix.components.Components
val Fragment.requireComponents: Components
get() = requireContext().components
fun Fragment.nav(@IdRes id: Int?, directions: NavDirections) {
findNavController(this).nav(id, directions)
}
fun Fragment.nav(@IdRes id: Int?, directions: NavDirections, extras: Navigator.Extras) {
findNavController(this).nav(id, directions, extras)
}
fun Fragment.nav(@IdRes id: Int?, directions: NavDirections, options: NavOptions) {
fun Fragment.nav(@IdRes id: Int?, directions: NavDirections, options: NavOptions? = null) {
findNavController(this).nav(id, directions, options)
}

View File

@ -4,12 +4,10 @@
package org.mozilla.fenix.ext
import android.os.Bundle
import androidx.annotation.IdRes
import androidx.navigation.NavController
import androidx.navigation.NavDirections
import androidx.navigation.NavOptions
import androidx.navigation.Navigator
import io.sentry.Sentry
import org.mozilla.fenix.components.isSentryEnabled
@ -25,35 +23,6 @@ fun NavController.nav(@IdRes id: Int?, directions: NavDirections, navOptions: Na
}
}
fun NavController.nav(@IdRes id: Int?, directions: NavDirections, extras: Navigator.Extras) {
if (id == null || this.currentDestination?.id == id) {
this.navigate(directions, extras)
} else {
recordIdException(this.currentDestination?.id, id)
}
}
fun NavController.nav(
@IdRes id: Int?,
directions: NavDirections,
navOptions: NavOptions? = null,
extras: Navigator.Extras? = null
) = nav(id, directions.actionId, directions.arguments, navOptions, extras)
fun NavController.nav(
@IdRes id: Int?,
@IdRes destId: Int,
args: Bundle?,
navOptions: NavOptions?,
extras: Navigator.Extras?
) {
if (id == null || this.currentDestination?.id == id) {
this.navigate(destId, args, navOptions, extras)
} else {
recordIdException(this.currentDestination?.id, id)
}
}
fun NavController.alreadyOnDestination(@IdRes destId: Int?): Boolean {
return destId?.let { currentDestination?.id == it || popBackStack(it, false) } ?: false
}

View File

@ -9,17 +9,18 @@ import android.content.Context
import android.view.MotionEvent
import android.view.View
import android.widget.PopupWindow
import androidx.appcompat.content.res.AppCompatResources.getDrawable
import kotlinx.android.synthetic.main.top_site_item.*
import kotlinx.android.synthetic.main.top_site_item.view.*
import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import mozilla.components.feature.top.sites.TopSite
import org.mozilla.fenix.R
import org.mozilla.fenix.utils.view.ViewHolder
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
import org.mozilla.fenix.settings.SupportUtils
import org.mozilla.fenix.utils.view.ViewHolder
class TopSiteItemViewHolder(
view: View,
@ -42,12 +43,12 @@ class TopSiteItemViewHolder(
interactor.onSelectTopSite(topSite.url, topSite.isDefault)
}
top_site_item.setOnLongClickListener() {
top_site_item.setOnLongClickListener {
val menu = topSiteMenu.menuBuilder.build(view.context).show(anchor = it.top_site_title)
it.setOnTouchListener @SuppressLint("ClickableViewAccessibility") { v, event ->
onTouchEvent(v, event, menu)
}
return@setOnLongClickListener true
true
}
}
@ -56,7 +57,7 @@ class TopSiteItemViewHolder(
top_site_title.text = topSite.title
when (topSite.url) {
SupportUtils.POCKET_TRENDING_URL -> {
favicon_image.setImageDrawable(itemView.context.getDrawable(R.drawable.ic_pocket))
favicon_image.setImageDrawable(getDrawable(itemView.context, R.drawable.ic_pocket))
}
else -> {
itemView.context.components.core.icons.loadIntoView(favicon_image, topSite.url)

View File

@ -0,0 +1,41 @@
/* 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.loginexceptions
import mozilla.components.feature.logins.exceptions.LoginException
import mozilla.components.lib.state.Action
import mozilla.components.lib.state.State
import mozilla.components.lib.state.Store
/**
* The [Store] for holding the [ExceptionsFragmentState] and applying [ExceptionsFragmentAction]s.
*/
class ExceptionsFragmentStore(initialState: ExceptionsFragmentState) :
Store<ExceptionsFragmentState, ExceptionsFragmentAction>(initialState, ::exceptionsStateReducer)
/**
* Actions to dispatch through the `ExceptionsStore` to modify `ExceptionsState` through the reducer.
*/
sealed class ExceptionsFragmentAction : Action {
data class Change(val list: List<LoginException>) : ExceptionsFragmentAction()
}
/**
* The state for the Exceptions Screen
* @property items List of exceptions to display
*/
data class ExceptionsFragmentState(val items: List<LoginException>) : State
/**
* The ExceptionsState Reducer.
*/
private fun exceptionsStateReducer(
state: ExceptionsFragmentState,
action: ExceptionsFragmentAction
): ExceptionsFragmentState {
return when (action) {
is ExceptionsFragmentAction.Change -> state.copy(items = action.list)
}
}

View File

@ -0,0 +1,81 @@
/* 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.loginexceptions
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import mozilla.components.feature.logins.exceptions.LoginException
import org.mozilla.fenix.loginexceptions.viewholders.LoginExceptionsDeleteButtonViewHolder
import org.mozilla.fenix.loginexceptions.viewholders.LoginExceptionsHeaderViewHolder
import org.mozilla.fenix.loginexceptions.viewholders.LoginExceptionsListItemViewHolder
sealed class AdapterItem {
object DeleteButton : AdapterItem()
object Header : AdapterItem()
data class Item(val item: LoginException) : AdapterItem()
}
/**
* Adapter for a list of sites that are exempted from saving logins,
* along with controls to remove the exception.
*/
class LoginExceptionsAdapter(
private val interactor: LoginExceptionsInteractor
) : ListAdapter<AdapterItem, RecyclerView.ViewHolder>(DiffCallback) {
/**
* Change the list of items that are displayed.
* Header and footer items are added to the list as well.
*/
fun updateData(exceptions: List<LoginException>) {
val adapterItems: List<AdapterItem> =
listOf(AdapterItem.Header) + exceptions.map { AdapterItem.Item(it) } + listOf(
AdapterItem.DeleteButton
)
submitList(adapterItems)
}
override fun getItemViewType(position: Int) = when (getItem(position)) {
AdapterItem.DeleteButton -> LoginExceptionsDeleteButtonViewHolder.LAYOUT_ID
AdapterItem.Header -> LoginExceptionsHeaderViewHolder.LAYOUT_ID
is AdapterItem.Item -> LoginExceptionsListItemViewHolder.LAYOUT_ID
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false)
return when (viewType) {
LoginExceptionsDeleteButtonViewHolder.LAYOUT_ID -> LoginExceptionsDeleteButtonViewHolder(
view,
interactor
)
LoginExceptionsHeaderViewHolder.LAYOUT_ID -> LoginExceptionsHeaderViewHolder(view)
LoginExceptionsListItemViewHolder.LAYOUT_ID -> LoginExceptionsListItemViewHolder(
view,
interactor
)
else -> throw IllegalStateException()
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder is LoginExceptionsListItemViewHolder) {
val adapterItem = getItem(position) as AdapterItem.Item
holder.bind(adapterItem.item)
}
}
private object DiffCallback : DiffUtil.ItemCallback<AdapterItem>() {
override fun areItemsTheSame(oldItem: AdapterItem, newItem: AdapterItem) =
areContentsTheSame(oldItem, newItem)
@Suppress("DiffUtilEquals")
override fun areContentsTheSame(oldItem: AdapterItem, newItem: AdapterItem) =
oldItem == newItem
}
}

View File

@ -0,0 +1,88 @@
/* 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.loginexceptions
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.asLiveData
import androidx.lifecycle.lifecycleScope
import kotlinx.android.synthetic.main.fragment_exceptions.view.*
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import mozilla.components.feature.logins.exceptions.LoginException
import mozilla.components.lib.state.ext.consumeFrom
import org.mozilla.fenix.R
import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.showToolbar
/**
* Displays a list of sites that are exempted from saving logins,
* along with controls to remove the exception.
*/
class LoginExceptionsFragment : Fragment() {
private lateinit var exceptionsStore: ExceptionsFragmentStore
private lateinit var exceptionsView: LoginExceptionsView
private lateinit var exceptionsInteractor: LoginExceptionsInteractor
override fun onResume() {
super.onResume()
showToolbar(getString(R.string.preference_exceptions))
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_exceptions, container, false)
exceptionsStore = StoreProvider.get(this) {
ExceptionsFragmentStore(
ExceptionsFragmentState(
items = listOf()
)
)
}
exceptionsInteractor =
LoginExceptionsInteractor(::deleteOneItem, ::deleteAllItems)
exceptionsView = LoginExceptionsView(view.exceptionsLayout, exceptionsInteractor)
subscribeToLoginExceptions()
return view
}
private fun subscribeToLoginExceptions(): Observer<List<LoginException>> {
return Observer<List<LoginException>> { exceptions ->
exceptionsStore.dispatch(ExceptionsFragmentAction.Change(exceptions))
}.also { observer ->
requireComponents.core.loginExceptionStorage.getLoginExceptions().asLiveData()
.observe(viewLifecycleOwner, observer)
}
}
@ExperimentalCoroutinesApi
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
consumeFrom(exceptionsStore) {
exceptionsView.update(it)
}
}
private fun deleteAllItems() {
viewLifecycleOwner.lifecycleScope.launch(IO) {
requireComponents.core.loginExceptionStorage.deleteAllLoginExceptions()
}
}
private fun deleteOneItem(item: LoginException) {
viewLifecycleOwner.lifecycleScope.launch(IO) {
requireComponents.core.loginExceptionStorage.removeLoginException(item)
}
}
}

View File

@ -0,0 +1,24 @@
/* 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.loginexceptions
import mozilla.components.feature.logins.exceptions.LoginException
/**
* Interactor for the exceptions screen
* Provides implementations for the ExceptionsViewInteractor
*/
class LoginExceptionsInteractor(
private val deleteOne: (LoginException) -> Unit,
private val deleteAll: () -> Unit
) : ExceptionsViewInteractor {
override fun onDeleteAll() {
deleteAll.invoke()
}
override fun onDeleteOne(item: LoginException) {
deleteOne.invoke(item)
}
}

View File

@ -0,0 +1,62 @@
/* 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.loginexceptions
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.main.component_exceptions.view.*
import mozilla.components.feature.logins.exceptions.LoginException
import org.mozilla.fenix.R
/**
* Interface for the ExceptionsViewInteractor. This interface is implemented by objects that want
* to respond to user interaction on the ExceptionsView
*/
interface ExceptionsViewInteractor {
/**
* Called whenever all exception items are deleted
*/
fun onDeleteAll()
/**
* Called whenever one exception item is deleted
*/
fun onDeleteOne(item: LoginException)
}
/**
* View that contains and configures the Exceptions List
*/
class LoginExceptionsView(
override val containerView: ViewGroup,
val interactor: LoginExceptionsInteractor
) : LayoutContainer {
val view: FrameLayout = LayoutInflater.from(containerView.context)
.inflate(R.layout.component_exceptions, containerView, true)
.findViewById(R.id.exceptions_wrapper)
private val exceptionsAdapter = LoginExceptionsAdapter(interactor)
init {
view.exceptions_learn_more.isVisible = false
view.exceptions_empty_message.text =
view.context.getString(R.string.preferences_passwords_exceptions_description_empty)
view.exceptions_list.apply {
adapter = exceptionsAdapter
layoutManager = LinearLayoutManager(containerView.context)
}
}
fun update(state: ExceptionsFragmentState) {
view.exceptions_empty_view.isVisible = state.items.isEmpty()
view.exceptions_list.isVisible = state.items.isNotEmpty()
exceptionsAdapter.updateData(state.items)
}
}

View File

@ -0,0 +1,28 @@
/* 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.loginexceptions.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.delete_exceptions_button.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.loginexceptions.LoginExceptionsInteractor
class LoginExceptionsDeleteButtonViewHolder(
view: View,
private val interactor: LoginExceptionsInteractor
) : RecyclerView.ViewHolder(view) {
private val deleteButton = view.removeAllExceptions
init {
deleteButton.setOnClickListener {
interactor.onDeleteAll()
}
}
companion object {
const val LAYOUT_ID = R.layout.delete_logins_exceptions_button
}
}

View File

@ -0,0 +1,23 @@
/* 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.loginexceptions.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.exceptions_description.view.*
import org.mozilla.fenix.R
class LoginExceptionsHeaderViewHolder(
view: View
) : RecyclerView.ViewHolder(view) {
companion object {
const val LAYOUT_ID = R.layout.exceptions_description
}
init {
view.exceptions_description.text =
view.context.getString(R.string.preferences_passwords_exceptions_description)
}
}

View File

@ -0,0 +1,50 @@
/* 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.loginexceptions.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.exception_item.view.*
import mozilla.components.feature.logins.exceptions.LoginException
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.loginexceptions.LoginExceptionsInteractor
/**
* View holder for a single website that is exempted from Tracking Protection.
*/
class LoginExceptionsListItemViewHolder(
view: View,
private val interactor: LoginExceptionsInteractor
) : RecyclerView.ViewHolder(view) {
private val favicon = view.favicon_image
private val url = view.webAddressView
private val deleteButton = view.delete_exception
private var item: LoginException? = null
init {
deleteButton.setOnClickListener {
item?.let {
interactor.onDeleteOne(it)
}
}
}
fun bind(item: LoginException) {
this.item = item
url.text = item.origin
}
private fun updateFavIcon(url: String) {
favicon.context.components.core.icons.loadIntoView(favicon, url)
}
companion object {
const val LAYOUT_ID = R.layout.exception_item
}
}

View File

@ -96,9 +96,7 @@ private fun searchStateReducer(state: SearchFragmentState, action: SearchFragmen
is SearchFragmentAction.UpdateQuery ->
state.copy(query = action.query)
is SearchFragmentAction.SelectNewDefaultSearchEngine ->
state.copy(
searchEngineSource = SearchEngineSource.Default(action.engine)
)
state.copy(searchEngineSource = SearchEngineSource.Default(action.engine))
is SearchFragmentAction.AllowSearchSuggestionsInPrivateModePrompt ->
state.copy(showSearchSuggestionsHint = action.show)
is SearchFragmentAction.SetShowSearchSuggestions ->

View File

@ -34,16 +34,15 @@ class ShortcutsSuggestionProvider(
override suspend fun onInputChanged(text: String): List<AwesomeBar.Suggestion> {
val suggestions = mutableListOf<AwesomeBar.Suggestion>()
searchEngineProvider.installedSearchEngines(context).list.forEach {
suggestions.add(
AwesomeBar.Suggestion(
provider = this,
id = it.identifier,
icon = it.icon,
title = it.name,
onSuggestionClicked = {
selectShortcutEngine(it)
})
searchEngineProvider.installedSearchEngines(context).list.mapTo(suggestions) {
AwesomeBar.Suggestion(
provider = this,
id = it.identifier,
icon = it.icon,
title = it.name,
onSuggestionClicked = {
selectShortcutEngine(it)
}
)
}
@ -55,7 +54,8 @@ class ShortcutsSuggestionProvider(
title = context.getString(R.string.search_shortcuts_engine_settings),
onSuggestionClicked = {
selectShortcutEngineSettings()
})
}
)
)
return suggestions
}

View File

@ -22,24 +22,24 @@ import org.mozilla.fenix.theme.ThemeManager
/**
* Interface for the Toolbar Interactor. This interface is implemented by objects that want
* to respond to user interaction on the [BrowserToolbarView]
* to respond to user interaction on the [ToolbarView]
*/
interface ToolbarInteractor {
/**
* Called when a user hits the return key while [BrowserToolbarView] has focus.
* @param url the text inside the [BrowserToolbarView] when committed
* Called when a user hits the return key while [ToolbarView] has focus.
* @param url the text inside the [ToolbarView] when committed
*/
fun onUrlCommitted(url: String)
/**
* Called when a user removes focus from the [BrowserToolbarView]
* Called when a user removes focus from the [ToolbarView]
*/
fun onEditingCanceled()
/**
* Called whenever the text inside the [BrowserToolbarView] changes
* @param text the current text displayed by [BrowserToolbarView]
* Called whenever the text inside the [ToolbarView] changes
* @param text the current text displayed by [ToolbarView]
*/
fun onTextChanged(text: String)
}
@ -103,7 +103,7 @@ class ToolbarView(
override fun onTextChanged(text: String) {
url = text
this@ToolbarView.interactor.onTextChanged(text)
interactor.onTextChanged(text)
}
})
}

View File

@ -25,7 +25,7 @@ import org.mozilla.fenix.utils.view.addToRadioGroup
/**
* Displays the toggle for tracking protection, options for tracking protection policy and a button
* to open info about the tracking protection [org.mozilla.fenix.exceptions.ExceptionsFragment].
* to open info about the tracking protection [org.mozilla.fenix.settings.TrackingProtectionFragment].
*/
class TrackingProtectionFragment : PreferenceFragmentCompat() {
@ -56,7 +56,8 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() {
showToolbar(getString(R.string.preference_enhanced_tracking_protection))
// Tracking Protection Switch
val preferenceTP = requirePreference<SwitchPreference>(R.string.pref_key_tracking_protection)
val preferenceTP =
requirePreference<SwitchPreference>(R.string.pref_key_tracking_protection)
preferenceTP.isChecked = requireContext().settings().shouldUseTrackingProtection
preferenceTP.setOnPreferenceChangeListener<Boolean> { preference, trackingProtectionOn ->
@ -86,7 +87,8 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() {
getString(R.string.app_name)
)
val preferenceExceptions = requirePreference<Preference>(R.string.pref_key_tracking_protection_exceptions)
val preferenceExceptions =
requirePreference<Preference>(R.string.pref_key_tracking_protection_exceptions)
preferenceExceptions.onPreferenceClickListener = exceptionsClickListener
}

View File

@ -34,6 +34,7 @@ import mozilla.components.service.fxa.manager.SyncEnginesStorage
import mozilla.components.service.fxa.sync.SyncReason
import mozilla.components.service.fxa.sync.SyncStatusObserver
import mozilla.components.service.fxa.sync.getLastSynced
import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.util.dpToPx
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.R
@ -138,6 +139,10 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
preferenceSyncNow.apply {
onPreferenceClickListener = getClickListenerForSyncNow()
icon = icon.mutate().apply {
setTint(context.getColorFromAttr(R.attr.primaryText))
}
// Current sync state
if (requireComponents.backgroundServices.accountManager.isSyncActive()) {
title = getString(R.string.sync_syncing_in_progress)

View File

@ -133,6 +133,13 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
}
}
requirePreference<Preference>(R.string.pref_key_login_exceptions).apply {
setOnPreferenceClickListener {
navigateToLoginExceptionFragment()
true
}
}
requirePreference<SwitchPreference>(R.string.pref_key_autofill_logins).apply {
isChecked = context.settings().shouldAutofillLogins
onPreferenceChangeListener = object : SharedPreferenceUpdater() {
@ -322,6 +329,12 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
findNavController().navigate(directions)
}
private fun navigateToLoginExceptionFragment() {
val directions =
SavedLoginsAuthFragmentDirections.actionSavedLoginsAuthFragmentToLoginExceptionsFragment()
findNavController().navigate(directions)
}
companion object {
const val SHORT_DELAY_MS = 100L
private const val LOG_TAG = "LoginsFragment"

View File

@ -2,7 +2,7 @@
* 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.exceptions
package org.mozilla.fenix.trackingprotectionexceptions
import android.view.LayoutInflater
import android.view.ViewGroup
@ -10,9 +10,9 @@ import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import mozilla.components.concept.engine.content.blocking.TrackingProtectionException
import org.mozilla.fenix.exceptions.viewholders.ExceptionsDeleteButtonViewHolder
import org.mozilla.fenix.exceptions.viewholders.ExceptionsHeaderViewHolder
import org.mozilla.fenix.exceptions.viewholders.ExceptionsListItemViewHolder
import org.mozilla.fenix.trackingprotectionexceptions.viewholders.ExceptionsDeleteButtonViewHolder
import org.mozilla.fenix.trackingprotectionexceptions.viewholders.ExceptionsHeaderViewHolder
import org.mozilla.fenix.trackingprotectionexceptions.viewholders.ExceptionsListItemViewHolder
/**
* Adapter for a list of sites that are exempted from Tracking Protection,

View File

@ -2,7 +2,7 @@
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.exceptions
package org.mozilla.fenix.trackingprotectionexceptions
import mozilla.components.concept.engine.content.blocking.TrackingProtectionException
import mozilla.components.lib.state.Action

View File

@ -2,7 +2,7 @@
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.exceptions
package org.mozilla.fenix.trackingprotectionexceptions
import mozilla.components.concept.engine.content.blocking.TrackingProtectionException

View File

@ -2,7 +2,7 @@
* 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.exceptions
package org.mozilla.fenix.trackingprotectionexceptions
import android.text.method.LinkMovementMethod
import android.text.style.UnderlineSpan
@ -50,7 +50,10 @@ class ExceptionsView(
.inflate(R.layout.component_exceptions, container, true)
.findViewById(R.id.exceptions_wrapper)
private val exceptionsAdapter = ExceptionsAdapter(interactor)
private val exceptionsAdapter =
ExceptionsAdapter(
interactor
)
init {
exceptions_list.apply {

View File

@ -2,7 +2,7 @@
* 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.exceptions
package org.mozilla.fenix.trackingprotectionexceptions
import android.os.Bundle
import android.util.Log
@ -27,7 +27,7 @@ import org.mozilla.fenix.settings.SupportUtils
* Displays a list of sites that are exempted from Tracking Protection,
* along with controls to remove the exception.
*/
class ExceptionsFragment : Fragment() {
class TrackingProtectionExceptionsFragment : Fragment() {
private lateinit var exceptionsStore: ExceptionsFragmentStore
private lateinit var exceptionsView: ExceptionsView
@ -54,8 +54,16 @@ class ExceptionsFragment : Fragment() {
)
}
exceptionsInteractor =
ExceptionsInteractor(::openLearnMore, ::deleteOneItem, ::deleteAllItems)
exceptionsView = ExceptionsView(view.exceptionsLayout, exceptionsInteractor)
ExceptionsInteractor(
::openLearnMore,
::deleteOneItem,
::deleteAllItems
)
exceptionsView =
ExceptionsView(
view.exceptionsLayout,
exceptionsInteractor
)
reloadExceptions()
return view
}
@ -83,13 +91,17 @@ class ExceptionsFragment : Fragment() {
searchTermOrURL = SupportUtils.getGenericSumoURLForTopic
(SupportUtils.SumoTopic.TRACKING_PROTECTION),
newTab = true,
from = BrowserDirection.FromExceptions
from = BrowserDirection.FromTrackingProtectionExceptions
)
}
private fun reloadExceptions() {
trackingProtectionUseCases.fetchExceptions { resultList ->
exceptionsStore.dispatch(ExceptionsFragmentAction.Change(resultList))
exceptionsStore.dispatch(
ExceptionsFragmentAction.Change(
resultList
)
)
}
}
}

View File

@ -2,13 +2,13 @@
* 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.exceptions.viewholders
package org.mozilla.fenix.trackingprotectionexceptions.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.delete_exceptions_button.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.exceptions.ExceptionsInteractor
import org.mozilla.fenix.trackingprotectionexceptions.ExceptionsInteractor
class ExceptionsDeleteButtonViewHolder(
view: View,

View File

@ -2,7 +2,7 @@
* 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.exceptions.viewholders
package org.mozilla.fenix.trackingprotectionexceptions.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView

View File

@ -2,14 +2,14 @@
* 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.exceptions.viewholders
package org.mozilla.fenix.trackingprotectionexceptions.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.exception_item.view.*
import mozilla.components.concept.engine.content.blocking.TrackingProtectionException
import org.mozilla.fenix.R
import org.mozilla.fenix.exceptions.ExceptionsInteractor
import org.mozilla.fenix.trackingprotectionexceptions.ExceptionsInteractor
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView

View File

@ -2,7 +2,6 @@
- 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/. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/account_preference_background"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<com.google.android.material.button.MaterialButton xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/removeAllExceptions"
style="@style/DestructiveButton"
android:layout_marginHorizontal="16dp"
android:text="@string/preferences_passwords_exceptions_remove_all" />

View File

@ -3,10 +3,7 @@
- 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/. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/exceptionsLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.mozilla.fenix.exceptions.ExceptionsFragment">
</LinearLayout>
android:orientation="vertical"/>

View File

@ -1,11 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@ -15,34 +12,41 @@
android:focusable="true"
android:minHeight="?android:attr/listPreferredItemHeight">
<ImageView
android:id="@+id/favicon_image"
android:layout_width="24dp"
android:layout_height="24dp"
<FrameLayout
android:id="@+id/favicon_wrapper"
android:layout_width="40dp"
android:layout_height="40dp"
android:padding="4dp"
android:layout_marginStart="16dp"
android:adjustViewBounds="true"
android:importantForAccessibility="no"
android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
android:background="@drawable/top_sites_background"
android:layout_gravity="center"
android:importantForAccessibility="noHideDescendants"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:id="@+id/favicon_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:importantForAccessibility="no"
android:scaleType="fitCenter" />
</FrameLayout>
<TextView
android:id="@+id/webAddressView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:layout_weight="1"
android:layout_marginStart="16dp"
android:layout_marginEnd="48dp"
android:ellipsize="middle"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceListItem"
android:textColor="?primaryText"
app:layout_constraintBottom_toTopOf="@id/usernameView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/favicon_image"
app:layout_constraintStart_toEndOf="@+id/favicon_wrapper"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="mozilla.org" />
@ -51,16 +55,14 @@
android:id="@+id/usernameView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:layout_weight="1"
android:layout_marginStart="16dp"
android:layout_marginEnd="48dp"
android:ellipsize="middle"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:singleLine="true"
android:textColor="?secondaryText"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/favicon_image"
app:layout_constraintStart_toEndOf="@+id/favicon_wrapper"
app:layout_constraintTop_toBottomOf="@id/webAddressView"
app:layout_constraintVertical_chainStyle="packed"
tools:text="mozilla.org" />

View File

@ -27,35 +27,83 @@
android:id="@+id/action_global_search"
app:destination="@id/searchFragment" />
<action android:id="@+id/action_global_shareFragment" app:destination="@id/shareFragment" />
<action android:id="@+id/action_global_crash_reporter" app:destination="@id/crashReporterFragment" />
<action android:id="@+id/action_global_turn_on_sync" app:destination="@id/turnOnSyncFragment" />
<action android:id="@+id/action_global_settings_addonsManagementFragment" app:destination="@id/addonsManagementFragment" />
<action android:id="@+id/action_global_searchEngineFragment" app:destination="@id/searchEngineFragment" />
<action android:id="@+id/action_global_accessibilityFragment" app:destination="@id/accessibilityFragment" />
<action android:id="@+id/action_global_deleteBrowsingDataFragment" app:destination="@id/deleteBrowsingDataFragment" />
<action android:id="@+id/action_global_webExtensionActionPopupFragment" app:destination="@id/webExtensionActionPopupFragment" />
<action android:id="@+id/action_global_settingsFragment" app:destination="@id/settingsFragment" />
<action android:id="@+id/action_global_syncedTabsFragment" app:destination="@+id/syncedTabsFragment" />
<action android:id="@+id/action_global_privateBrowsingFragment" app:destination="@id/privateBrowsingFragment"/>
<action android:id="@+id/action_global_bookmarkFragment" app:destination="@id/bookmarkFragment"/>
<action android:id="@+id/action_global_historyFragment" app:destination="@id/historyFragment"/>
<action android:id="@+id/action_global_accountProblemFragment" app:destination="@id/accountProblemFragment"/>
<action android:id="@+id/action_global_SitePermissionsManagePhoneFeature" app:destination="@id/SitePermissionsManagePhoneFeature" />
<action android:id="@+id/action_global_collectionCreationFragment" app:destination="@id/collectionCreationFragment" />
<action android:id="@+id/action_global_bookmarkEditFragment" app:destination="@id/bookmarkEditFragment" />
<action android:id="@+id/action_global_addonsManagementFragment" app:destination="@id/addonsManagementFragment" />
<action android:id="@+id/action_global_trackingProtectionFragment" app:destination="@id/trackingProtectionFragment" />
<action android:id="@+id/action_global_exceptionsFragment" app:destination="@id/exceptionsFragment" />
<action android:id="@+id/action_global_accountSettingsFragment" app:destination="@id/accountSettingsFragment" />
<action android:id="@+id/action_global_trackingProtectionPanelDialogFragment" app:destination="@id/trackingProtectionPanelDialogFragment" />
<action android:id="@+id/action_global_quickSettingsSheetDialogFragment" app:destination="@id/quickSettingsSheetDialogFragment"/>
<action android:id="@+id/action_global_tabTrayDialogFragment" app:destination="@id/tabTrayDialogFragment"/>
<action
android:id="@+id/action_global_shareFragment"
app:destination="@id/shareFragment" />
<action
android:id="@+id/action_global_crash_reporter"
app:destination="@id/crashReporterFragment" />
<action
android:id="@+id/action_global_turn_on_sync"
app:destination="@id/turnOnSyncFragment" />
<action
android:id="@+id/action_global_settings_addonsManagementFragment"
app:destination="@id/addonsManagementFragment" />
<action
android:id="@+id/action_global_searchEngineFragment"
app:destination="@id/searchEngineFragment" />
<action
android:id="@+id/action_global_accessibilityFragment"
app:destination="@id/accessibilityFragment" />
<action
android:id="@+id/action_global_deleteBrowsingDataFragment"
app:destination="@id/deleteBrowsingDataFragment" />
<action
android:id="@+id/action_global_webExtensionActionPopupFragment"
app:destination="@id/webExtensionActionPopupFragment" />
<action
android:id="@+id/action_global_settingsFragment"
app:destination="@id/settingsFragment" />
<action
android:id="@+id/action_global_syncedTabsFragment"
app:destination="@+id/syncedTabsFragment" />
<action
android:id="@+id/action_global_privateBrowsingFragment"
app:destination="@id/privateBrowsingFragment" />
<action
android:id="@+id/action_global_bookmarkFragment"
app:destination="@id/bookmarkFragment" />
<action
android:id="@+id/action_global_historyFragment"
app:destination="@id/historyFragment" />
<action
android:id="@+id/action_global_accountProblemFragment"
app:destination="@id/accountProblemFragment" />
<action
android:id="@+id/action_global_SitePermissionsManagePhoneFeature"
app:destination="@id/SitePermissionsManagePhoneFeature" />
<action
android:id="@+id/action_global_collectionCreationFragment"
app:destination="@id/collectionCreationFragment" />
<action
android:id="@+id/action_global_bookmarkEditFragment"
app:destination="@id/bookmarkEditFragment" />
<action
android:id="@+id/action_global_addonsManagementFragment"
app:destination="@id/addonsManagementFragment" />
<action
android:id="@+id/action_global_trackingProtectionFragment"
app:destination="@id/trackingProtectionFragment" />
<action
android:id="@+id/action_global_trackingProtectionExceptionsFragment"
app:destination="@id/trackingProtectionExceptionsFragment" />
<action
android:id="@+id/action_global_accountSettingsFragment"
app:destination="@id/accountSettingsFragment" />
<action
android:id="@+id/action_global_trackingProtectionPanelDialogFragment"
app:destination="@id/trackingProtectionPanelDialogFragment" />
<action
android:id="@+id/action_global_quickSettingsSheetDialogFragment"
app:destination="@id/quickSettingsSheetDialogFragment" />
<action
android:id="@+id/action_global_tabTrayDialogFragment"
app:destination="@id/tabTrayDialogFragment" />
<dialog
android:id="@+id/tabTrayDialogFragment"
android:name="org.mozilla.fenix.tabtray.TabTrayDialogFragment"
tools:layout="@layout/fragment_tab_tray_dialog"/>
tools:layout="@layout/fragment_tab_tray_dialog" />
<fragment
android:id="@+id/homeFragment"
@ -73,9 +121,9 @@
app:argType="boolean" />
<argument
android:name="session_to_delete"
android:defaultValue="@null"
app:argType="string"
app:nullable="true"
android:defaultValue="@null" />
app:nullable="true" />
</fragment>
<fragment
@ -93,8 +141,8 @@
app:nullable="true" />
<argument
android:name="search_access_point"
app:argType="org.mozilla.fenix.components.metrics.Event$PerformedSearch$SearchAccessPoint"
android:defaultValue="NONE" />
android:defaultValue="NONE"
app:argType="org.mozilla.fenix.components.metrics.Event$PerformedSearch$SearchAccessPoint" />
</fragment>
<fragment
@ -149,17 +197,17 @@
tools:layout="@layout/fragment_browser">
<action
android:id="@+id/action_browserFragment_to_searchFragment"
app:destination="@id/searchFragment"
app:enterAnim="@anim/fade_in_up"
app:popExitAnim="@anim/fade_out_down"
app:destination="@id/searchFragment" />
app:popExitAnim="@anim/fade_out_down" />
<argument
android:name="activeSessionId"
app:argType="string"
app:nullable="true" />
<argument
android:name="shouldAnimate"
app:argType="boolean"
android:defaultValue="false" />
android:defaultValue="false"
app:argType="boolean" />
<action
android:id="@+id/action_browserFragment_to_syncedTabsFragment"
app:destination="@id/syncedTabsFragment" />
@ -234,8 +282,8 @@
app:destination="@id/bookmarkSelectFolderFragment" />
<argument
android:name="requiresSnackbarPaddingForToolbar"
app:argType="boolean"
android:defaultValue="false" />
android:defaultValue="false"
app:argType="boolean" />
</fragment>
<fragment
@ -274,25 +322,32 @@
android:label="@string/preferences_passwords_logins_and_passwords">
<action
android:id="@+id/action_savedLoginsAuthFragment_to_loginsListFragment"
app:destination="@id/savedLoginsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/savedLoginsFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_savedLoginsAuthFragment_to_turnOnSyncFragment"
app:destination="@id/turnOnSyncFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/turnOnSyncFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_savedLoginsAuthFragment_to_savedLoginsSettingFragment"
app:destination="@id/saveLoginSettingFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/saveLoginSettingFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_savedLoginsAuthFragment_to_loginExceptionsFragment"
app:destination="@id/loginExceptionsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
</fragment>
<fragment
@ -313,8 +368,13 @@
android:id="@+id/syncedTabsFragment"
android:name="org.mozilla.fenix.sync.SyncedTabsFragment"
android:label="@string/synced_tabs"
tools:layout="@layout/fragment_synced_tabs">
</fragment>
tools:layout="@layout/fragment_synced_tabs"/>
<fragment
android:id="@+id/loginExceptionsFragment"
android:name="org.mozilla.fenix.loginexceptions.LoginExceptionsFragment"
android:label="@string/preferences_passwords_exceptions"
tools:layout="@layout/fragment_exceptions"/>
<fragment
android:id="@+id/loginDetailFragment"
@ -323,12 +383,12 @@
<argument
android:name="savedLoginId"
app:argType="string"
app:nullable="false"/>
app:nullable="false" />
<action
android:id="@+id/action_loginDetailFragment_to_editLoginFragment"
app:destination="@id/editLoginFragment"
app:popUpTo="@id/editLoginFragment"
app:popUpToInclusive="true"/>
app:popUpToInclusive="true" />
</fragment>
<fragment
@ -338,12 +398,12 @@
<argument
android:name="savedLoginItem"
app:argType="org.mozilla.fenix.settings.logins.SavedLogin"
app:nullable="false"/>
app:nullable="false" />
<action
android:id="@+id/action_editLoginFragment_to_loginDetailFragment"
app:destination="@id/loginDetailFragment"
app:popUpTo="@id/loginDetailFragment"
app:popUpToInclusive="true"/>
app:popUpToInclusive="true" />
</fragment>
<fragment
@ -352,124 +412,124 @@
android:label="@string/settings_title">
<action
android:id="@+id/action_settingsFragment_to_dataChoicesFragment"
app:destination="@id/dataChoicesFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/dataChoicesFragment"
app:popUpTo="@+id/settingsFragment" />
<action
android:id="@+id/action_settingsFragment_to_sitePermissionsFragment"
app:destination="@id/sitePermissionsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/sitePermissionsFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_savedLoginsAuthFragment"
app:destination="@id/savedLoginsAuthFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/savedLoginsAuthFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_accessibilityFragment"
app:destination="@id/accessibilityFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/accessibilityFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_accountSettingsFragment"
app:destination="@id/accountSettingsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/accountSettingsFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_searchEngineFragment"
app:destination="@id/searchEngineFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/searchEngineFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_turnOnSyncFragment"
app:destination="@id/turnOnSyncFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/turnOnSyncFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_aboutFragment"
app:destination="@id/aboutFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/aboutFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_secretSettingsFragment"
app:destination="@id/secretSettingsPreference"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/secretSettingsPreference" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_customizationFragment"
app:destination="@id/customizationFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/customizationFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_privateBrowsingFragment"
app:destination="@id/privateBrowsingFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/privateBrowsingFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_trackingProtectionFragment"
app:destination="@id/trackingProtectionFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/trackingProtectionFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_deleteBrowsingDataFragment"
app:destination="@id/deleteBrowsingDataFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/deleteBrowsingDataFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_accountProblemFragment"
app:destination="@id/accountProblemFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/accountProblemFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_deleteBrowsingDataOnQuitFragment"
app:destination="@id/deleteBrowsingDataOnQuitFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/deleteBrowsingDataOnQuitFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_localeSettingsFragment"
app:destination="@id/localeSettingsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/localeSettingsFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_addonsFragment"
app:destination="@id/addonsManagementFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/addonsManagementFragment" />
app:popExitAnim="@anim/slide_out_right" />
</fragment>
<fragment
android:id="@+id/dataChoicesFragment"
@ -481,19 +541,19 @@
android:label="@string/preferences_site_permissions">
<action
android:id="@+id/action_site_permissions_to_manage_phone_features"
app:destination="@id/SitePermissionsManagePhoneFeature"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/SitePermissionsManagePhoneFeature"
app:popUpTo="@id/sitePermissionsFragment" />
<action
android:id="@+id/action_site_permissions_to_exceptions"
app:destination="@id/sitePermissionsExceptionsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/sitePermissionsExceptionsFragment"
app:popUpTo="@id/sitePermissionsFragment" />
</fragment>
@ -541,7 +601,7 @@
<fragment
android:id="@+id/aboutFragment"
android:name="org.mozilla.fenix.settings.about.AboutFragment"/>
android:name="org.mozilla.fenix.settings.about.AboutFragment" />
<fragment
android:id="@+id/secretSettingsPreference"
android:name="org.mozilla.fenix.settings.SecretSettingsFragment"
@ -566,27 +626,27 @@
android:name="org.mozilla.fenix.settings.TrackingProtectionFragment">
<action
android:id="@+id/action_trackingProtectionFragment_to_exceptionsFragment"
app:destination="@id/trackingProtectionExceptionsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/exceptionsFragment" />
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_trackingProtectionFragment_to_trackingProtectionBlockingFragment"
app:destination="@id/trackingProtectionBlockingFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:destination="@id/trackingProtectionBlockingFragment" />
app:popExitAnim="@anim/slide_out_right" />
</fragment>
<fragment
android:id="@+id/deleteBrowsingDataFragment"
android:name="org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataFragment"
android:label="@string/preferences_delete_browsing_data" />
<fragment
android:id="@+id/exceptionsFragment"
android:name="org.mozilla.fenix.exceptions.ExceptionsFragment"
android:label="@string/preference_exceptions"/>
android:id="@+id/trackingProtectionExceptionsFragment"
android:name="org.mozilla.fenix.trackingprotectionexceptions.TrackingProtectionExceptionsFragment"
android:label="@string/preference_exceptions" />
<dialog
android:id="@+id/collectionCreationFragment"
android:name="org.mozilla.fenix.collections.CollectionCreationFragment"
@ -795,6 +855,6 @@
<argument
android:name="webExtensionTitle"
app:argType="string"
app:nullable="true"/>
app:nullable="true" />
</fragment>
</navigation>

View File

@ -2,6 +2,8 @@
<resources>
<!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="app_name_private_5">متصفّح %s خاص</string>
<!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="app_name_private_4">%s (خاص)</string>
<!-- Home Fragment -->
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
<string name="content_description_menu">خيارات أكثر</string>
@ -20,6 +22,9 @@
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">لسان واحد مفتوح. انقر لتبديل الألسنة.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s من الألسنة مفتوح. انقر لتبديل الألسنة.</string>
<!-- Private Browsing -->
<!-- Title for private session option -->
<string name="private_browsing_title">أنت في جلسة خاصة</string>
@ -39,6 +44,9 @@
<!-- Text for the negative button -->
<string name="cfr_neg_button_text">لا، شكرًا</string>
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">ليس الآن</string>
<!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">لسان جديد</string>
@ -81,6 +89,8 @@
<string name="browser_menu_add_to_homescreen">أضِف إلى شاشة البداية</string>
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">ثبّت</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">الألسنة المُزامنة</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">ابحث في الصفحة</string>
<!-- Browser menu button that creates a private tab -->
@ -104,6 +114,8 @@
<string name="browser_menu_powered_by2">تدعمها %1$s</string>
<!-- Browser menu button to put the current page in reader mode -->
<string name="browser_menu_read">منظور القارئ</string>
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
<string name="browser_menu_read_close">أغلِق منظور القارئ</string>
<!-- Browser menu button to open the current page in an external app -->
<string name="browser_menu_open_app_link">افتح في التطبيق</string>
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
@ -232,6 +244,8 @@
<string name="preferences_account_sync_error">أعِد الاتصال لمواصلة المزامنة</string>
<!-- Preference for language -->
<string name="preferences_language">اللغة</string>
<!-- Preference for data choices -->
<string name="preferences_data_choices">اختيارات البيانات</string>
<!-- Preference for data collection -->
<string name="preferences_data_collection">جمع البيانات</string>
<!-- Preference linking to the privacy notice -->
@ -272,6 +286,8 @@
<string name="preferences_sync_bookmarks">العلامات</string>
<!-- Preference for syncing logins -->
<string name="preferences_sync_logins">جلسات الولوج</string>
<!-- Preference for syncing tabs -->
<string name="preferences_sync_tabs_2">الألسنة المفتوحة</string>
<!-- Preference for signing out -->
<string name="preferences_sign_out">اخرج</string>
<!-- Preference displays and allows changing current FxA device name -->
@ -281,6 +297,10 @@
<!-- Label indicating that sync is in progress -->
<string name="sync_syncing_in_progress">يُزامن…</string>
<!-- Label summary indicating that sync failed. The first parameter is the date stamp showing last time it succeeded -->
<string name="sync_failed_summary">فشلت المزامنة. آخر نجاح: %s</string>
<!-- Label summary showing never synced -->
<string name="sync_failed_never_synced_summary">فشلت المزامنة. تاريخ آخر مزامنة: لم تحدث</string>
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
<string name="sync_last_synced_summary">تاريخ آخر مزامنة: %s</string>
<!-- Label summary showing never synced -->
@ -291,6 +311,10 @@
<string name="fxa_received_tab_channel_name">الألسنة المستلمة</string>
<!-- Description of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
<string name="fxa_received_tab_channel_description">تنبيهات الألسنة المستلمة من أجهزة Firefox الأخرى.</string>
<!-- The body for these is the URL of the tab received -->
<string name="fxa_tab_received_notification_name">وصل لسان</string>
<!-- When multiple tabs have been received -->
<string name="fxa_tabs_received_notification_name">وصلت ألسنة</string>
<!-- %s is the device name -->
<string name="fxa_tab_received_from_notification_name">لسان من %s</string>
@ -299,6 +323,8 @@
<string name="preferences_tracking_protection_settings">الحماية من التعقّب</string>
<!-- Preference switch for tracking protection -->
<string name="preferences_tracking_protection">الحماية من التعقّب</string>
<!-- Preference switch description for tracking protection -->
<string name="preferences_tracking_protection_description">احجب المحتوى والنصوص البرمجية التي تتعقّبك على الإنترنت</string>
<!-- Preference for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions">الاستثناءات</string>
<!-- Preference description for tracking protection exceptions -->
@ -316,6 +342,12 @@
<!-- Preference switch for Telemetry -->
<string name="preferences_telemetry">تليمتري</string>
<!-- Preference switch for usage and technical data collection -->
<string name="preference_usage_data">الاستخدام والبيانات التقنية</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">بيانات التسويق</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">التجارب</string>
<!-- Summary for experiments preferences -->
<string name="preference_experiments_summary">يسمح بأن تثبّت Mozilla بيانات المزايا التجريبية وتجمعها</string>
<!-- Preference switch for crash reporter -->
@ -330,6 +362,8 @@
<string name="preferences_sync_pair">امسح رمز الاقتران رقميًا في Firefox على سطح المكتب</string>
<!-- Preference for account login -->
<string name="preferences_sync_sign_in">لِج</string>
<!-- Preference for reconnecting to FxA sync -->
<string name="preferences_sync_sign_in_to_reconnect">لِج لإعادة الاتصال</string>
<!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">أزِل الحساب</string>
@ -374,8 +408,12 @@
<string name="library_desktop_bookmarks_unfiled">العلامات الأخرى</string>
<!-- Option in Library to open History page -->
<string name="library_history">التأريخ</string>
<!-- Option in Library to open Synced Tabs page -->
<string name="library_synced_tabs">الألسنة المُزامنة</string>
<!-- Option in Library to open Reading List -->
<string name="library_reading_list">قائمة القراءة</string>
<!-- Menu Item Label for Search in Library -->
<string name="library_search">ابحث</string>
<!-- Settings Page Title -->
<string name="settings_title">الإعدادات</string>
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
@ -384,8 +422,26 @@
<!-- Sessions -->
<!-- Title for the list of tabs -->
<string name="tab_header_label">الألسنة المفتوحة</string>
<!-- Title for the list of tabs in the current private session -->
<string name="tabs_header_private_title">جلسة خاصة</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_tab">أضِف لسانًا</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_private_tab">أضِف لسانًا خاصًا</string>
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
<string name="tab_drawer_fab_content">خاص</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">الألسنة المفتوحة</string>
<!-- Text shown in the menu for saving tabs to a collection -->
<string name="tab_tray_menu_item_save">احفظ في التجميعة</string>
<!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">شارِك كل الألسنة</string>
<!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">أغلِق كل الألسنة</string>
<!-- Shortcut action to open new tab -->
<string name="tab_tray_menu_open_new_tab">لسان جديد</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">انتقل إلى الصفحة الرئيسية</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 -->
@ -408,6 +464,12 @@
<string name="current_session_save">احفظ</string>
<!-- Button in the current session menu. Opens the share menu when pressed -->
<string name="current_session_share">شارِك</string>
<!-- Button to save the current set of tabs into a collection -->
<string name="save_to_collection">احفظ في التجميعة</string>
<!-- Text for the menu button to delete a collection -->
<string name="collection_delete">حذف المجموعة</string>
<!-- Text for the menu button to rename a collection -->
<string name="collection_rename">إعادة تسمية المجموعة</string>
<!-- Text for the button to open tabs of the selected collection -->
<string name="collection_open_tabs">افتح الألسنة</string>
<!-- Text for the menu button to remove a top site -->
@ -444,6 +506,8 @@
<!-- Text for the header that groups the history the past 30 days -->
<string name="history_30_days">آخر 30 يومًا</string>
<!-- Text for the header that groups the history older than the last month -->
<string name="history_older">أقدم</string>
<!-- Text shown when no history exists -->
<string name="history_empty_message">ما من تأريخ هنا</string>
@ -467,6 +531,8 @@
<string name="bookmark_menu_content_description">قائمة العلامات</string>
<!-- Screen title for editing bookmarks -->
<string name="bookmark_edit">حرّر العلامة</string>
<!-- Screen title for selecting a bookmarks folder -->
<string name="bookmark_select_folder">اختر مجلدًا</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
<string name="bookmark_delete_folder_confirmation_dialog">أمتأكّد من حذف هذا المجلد؟</string>
<!-- Snackbar title shown after a folder has been deleted. This first parameter is the name of the deleted folder -->
@ -482,6 +548,8 @@
<string name="edit_bookmark_snackbar_action">حرّر</string>
<!-- Bookmark overflow menu edit button -->
<string name="bookmark_menu_edit_button">حرّر</string>
<!-- Bookmark overflow menu select button -->
<string name="bookmark_menu_select_button">اختر</string>
<!-- Bookmark overflow menu copy button -->
<string name="bookmark_menu_copy_button">انسخ</string>
<!-- Bookmark overflow menu share button -->
@ -502,9 +570,301 @@
<!-- Bookmark folder editing screen title -->
<string name="edit_bookmark_folder_fragment_title">حرّر المجلد</string>
<!-- Bookmark FOLDER editing field label -->
<string name="bookmark_folder_label">المجلد</string>
<!-- Bookmark NAME editing field label -->
<string name="bookmark_name_label">الاسم</string>
<!-- Bookmark add folder screen title -->
<string name="bookmark_add_folder_fragment_label">أضِف مجلدًا</string>
<!-- Bookmark select folder screen title -->
<string name="bookmark_select_folder_fragment_label">اختر مجلدًا</string>
<!-- Bookmark snackbar message on deletion
The first parameter is the host part of the URL of the bookmark deleted, if any -->
<string name="bookmark_deletion_snackbar_message">حُذف %1$s</string>
<!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">تراجَع</string>
<!-- Site Permissions -->
<!-- Site permissions preferences header -->
<string name="permissions_header">الصلاحيات</string>
<!-- Button label that take the user to the Android App setting -->
<string name="phone_feature_go_to_settings">انتقل إلى الإعدادات</string>
<!-- Content description (not visible, for screen readers etc.): Quick settings sheet
to give users access to site specific information / settings. For example:
Secure settings status and a button to modify site permissions -->
<string name="quick_settings_sheet">صفحة الإعدادات السريعة</string>
<!-- Label that indicates that this option it the recommended one -->
<string name="phone_feature_recommended">موصى به</string>
<!-- Preference for altering video and audio autoplay for all websites -->
<string name="preference_browser_feature_autoplay">التشغيل التلقائي</string>
<!-- Preference for altering the camera access for all websites -->
<string name="preference_phone_feature_camera">الكمرة</string>
<!-- Preference for altering the microphone access for all websites -->
<string name="preference_phone_feature_microphone">الميكروفون</string>
<!-- Label that indicates that a permission must be blocked -->
<string name="preference_option_phone_feature_blocked">محجوبة</string>
<!-- Label that indicates that a permission must be allowed -->
<string name="preference_option_phone_feature_allowed">مسموح بها</string>
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
<string name="preference_exceptions">الاستثناءات</string>
<!-- Summary of tracking protection preference if tracking protection is set to on -->
<string name="tracking_protection_on">مفعّل</string>
<!-- Summary of tracking protection preference if tracking protection is set to off -->
<string name="tracking_protection_off">معطّل</string>
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">اسمح بالصوت والڤِديو</string>
<!-- Summary of delete browsing data on quit preference if it is set to on -->
<string name="delete_browsing_data_quit_on">مفعّل</string>
<!-- Summary of delete browsing data on quit preference if it is set to off -->
<string name="delete_browsing_data_quit_off">معطّل</string>
<!-- Collections -->
<!-- Collections header on home fragment -->
<string name="collections_header">التجميعات</string>
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_select_all">اختر الكل</string>
<!-- Button to deselect all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_deselect_all">ألغِ تحديد الكل</string>
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
<string name="create_collection_close">أغلِق</string>
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
<string name="create_collection_save">احفظ</string>
<!-- Snackbar action to view the collection the user just created or updated -->
<string name="create_collection_view">اعرض</string>
<!-- Share -->
<!-- Share screen header -->
<string name="share_header">أرسِل وشارِك</string>
<!-- Share screen header -->
<string name="share_header_2">شارِك</string>
<!-- Content description (not visible, for screen readers etc.):
"Share" button. Opens the share menu when pressed. -->
<string name="share_button_content_description">شارِك</string>
<!-- Sub-header in the dialog to share a link to another app -->
<string name="share_link_subheader">شارك الرابط</string>
<!-- Sub-header in the dialog to share a link to another sync device -->
<string name="share_device_subheader">أرسل إلى جهاز</string>
<!-- Sub-header in the dialog to share a link to an app from the full list -->
<string name="share_link_all_apps_subheader">كل الإجراءات</string>
<!-- Sub-header in the dialog to share a link to an app from the most-recent sorted list -->
<string name="share_link_recent_apps_subheader">المستخدمة حديثًا</string>
<!-- An option from the share dialog to sign into sync -->
<string name="sync_sign_in">لِج إلى «المزامنة»</string>
<!-- An option from the share dialog to send link to all other sync devices -->
<string name="sync_send_to_all">أرسله إلى كل الأجهزة</string>
<!-- Text displayed when sync is offline and cannot be accessed -->
<string name="sync_offline">غير متصل</string>
<!-- An option to connect additional devices -->
<string name="sync_connect_device">صِلْ جهازًا آخر</string>
<!-- Confirmation dialog button -->
<string name="sync_confirmation_button">فهمت</string>
<!-- Add new device screen title -->
<string name="sync_add_new_device_title">أرسِل إلى جهاز</string>
<!-- Text for the warning message on the Add new device screen -->
<string name="sync_add_new_device_message">لا أجهزة متصلة</string>
<!-- Text for the button to learn about sending tabs -->
<string name="sync_add_new_device_learn_button">اطلع على المزيد عن إرسال الألسنة…</string>
<!-- Text for the button to connect another device -->
<string name="sync_add_new_device_connect_button">صِلْ جهازًا آخر…</string>
<!-- Notifications -->
<!-- The user visible name of the "notification channel" (Android 8+ feature) for the ongoing notification shown while a browsing session is active. -->
<string name="notification_pbm_channel_name">جلسة تصفح خاصة</string>
<!-- Notification action to open Fenix and resume the current browsing session. -->
<string name="notification_pbm_action_open">افتح</string>
<!-- Text shown in snackbar when user closes a tab -->
<string name="snackbar_tab_closed">أُغلق اللسان</string>
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
<string name="snackbar_deleted_undo">تراجَع</string>
<!-- Text shown in snackbar when user removes a top site -->
<string name="snackbar_top_site_removed">أُزيلت الصفحة</string>
<!-- Text for action to undo deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_undo">تراجَع</string>
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_confirm">أكّد</string>
<!-- Tab collection deletion prompt dialog option to delete the collection -->
<string name="tab_collection_dialog_positive">احذف</string>
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
<string name="tab_collection_dialog_negative">ألغِ</string>
<!-- Title for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_font_size_title">حجم الخط</string>
<!-- Title for history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_history_title">التأريخ</string>
<!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">أغلِق</string>
<!-- Text for the cancel button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_cancel">ألغِ</string>
<!-- Text for the allow button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_allow">احذف</string>
<!-- Text for the snackbar confirmation that the data was deleted -->
<string name="preferences_delete_browsing_data_snackbar">حُذفت بيانات التصفح</string>
<!-- Text for the snackbar to show the user that the deletion of browsing data is in progress -->
<string name="deleting_browsing_data_in_progress">يحذف بيانات التصفح…</string>
<!-- text for the Firefox Accounts section header -->
<string name="onboarding_fxa_section_header">ألديك حساب؟</string>
<!-- text for the Firefox Preview feature section header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_feature_section_header">تعرف على %s</string>
<!-- text for the "What's New" onboarding card header -->
<string name="onboarding_whats_new_header1">اعرف ما الجديد</string>
<!-- text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">استغلّ %s إلى أقصى حد.</string>
<!-- text for the button to manually sign into Firefox account. The word "Firefox" should not be translated -->
<string name="onboarding_firefox_account_sign_in">لِج إلى Firefox</string>
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">فشل الولوج</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_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 the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">تصفّح بخصوصية</string>
<!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">افتح الإعدادات</string>
<!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">خصوصيتك</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
<string name="onboarding_close">أغلِق</string>
<!-- text for the button to finish onboarding -->
<string name="onboarding_finish">ابدأ التصفح</string>
<!-- Onboarding theme -->
<!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">اختر السمة</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">آلي</string>
<!-- Theme setting for dark mode -->
<string name="onboarding_theme_dark_title">سمة داكنة</string>
<!-- Theme setting for light mode -->
<string name="onboarding_theme_light_title">سمة فاتحة</string>
<!-- Text shown in snackbar when multiple tabs have been sent to device -->
<string name="sync_sent_tabs_snackbar">أُرسلت الألسنة!</string>
<!-- Text shown in snackbar when one tab has been sent to device -->
<string name="sync_sent_tab_snackbar">أُرسل اللسان!</string>
<!-- Text shown in snackbar when sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar">تعذر الإرسال</string>
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar_action">أعِد المحاولة</string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">سيتوقف Firefox عن مزامنة حسابك، لكن لن يحذف أيًا من بيانات تصفحك على هذا الجهاز.</string>
<!-- Text shown in confirmation dialog to sign out of account. The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="sign_out_confirmation_message_2">سيتوقف %s عن مزامنة حسابك، لكن لن يحذف أيًا من بيانات تصفحك على هذا الجهاز.</string>
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">اقطع الاتصال</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">ألغِ</string>
<!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">إعدادات الحماية</string>
<!-- Preference title for enhanced tracking protection settings -->
<string name="preference_enhanced_tracking_protection">الحماية الموسّعة من التعقب</string>
<!-- Title for the description of enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_title">تصفّح ولا أحد ورائك</string>
<!-- Description of enhanced tracking protection. The first parameter is the name of the application (For example: Fenix) -->
<string name="preference_enhanced_tracking_protection_explanation">لتعبّر الكاف في ”بياناتك“ عنك أنت. يحميك %s من عديد من المتعقّبات المعروفة والتي تريد معرفة ما تفعله في المواقع.</string>
<!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">اطّلع على المزيد</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">القياسي (المبدئي)</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">صارم</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">مخصّص</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description_2">اختر المتعقّبات والسكربتات التي تريد حجبها.</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">الكعكات</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_1">المتعقّبات الاجتماعية ومتعقّبات بين المواقع</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_2">الكعكات من المواقع غير المُزارة</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_3">كل كعكات الأطراف الثالثة (يمكن أن تعطب المواقع هكذا)</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_4">كل الكعكات (يمكن أن تعطب المواقع هكذا)</string>
<!-- Preference for enhanced tracking protection for the custom protection settings for tracking content -->
<string name="preference_enhanced_tracking_protection_custom_tracking_content">محتوى التعقّب</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_1">في كل الألسنة</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_2">في الألسنة الخاصة فقط</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_3">في الألسنة المخصصة فقط</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom_cryptominers">المُعدّنات المعمّاة</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom_fingerprinters">مسجّلات البصمات</string>
<string name="enhanced_tracking_protection_blocked">حُجبت</string>
<!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings -->
<string name="enhanced_tracking_protection_allowed">مسموح بها</string>
<!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_title">متعقبات مواقع التواصل الاجتماعي</string>
<!-- Description of social media trackers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_description">يحدّ من قدرة الشبكات الاجتماعية على تعقب نشاط تصفحك على الإنترنت.</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">كعكات تتعقّبك بين المواقع</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">المُعدّنات المعمّاة</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">مسجّلات البصمات</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">فُعّلت الحماية في هذا الموقع</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
<string name="etp_panel_off">عُطّلت الحماية في هذا الموقع</string>
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
<string name="enhanced_tracking_protection_exceptions">عُطّلت الحماية الموسّعة من التعقب لهذه المواقع</string>
<!-- About page Your rights link text -->
<string name="about_your_rights">حقوقك</string>
<!-- About page link text to open what's new link -->
<string name="about_whats_new">ما جديد %s</string>
<!-- About page link text to open support link -->
<string name="about_support">الدعم</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
<string name="about_crashes">الانهيارات</string>
<!-- About page link text to open privacy notice link -->
<string name="about_privacy_notice">تنويه الخصوصية</string>
<!-- About page link text to open know your rights link -->
<string name="about_know_your_rights">اعرف حقوقك</string>
<!-- About page link text to open licensing information link -->
<string name="about_licensing_information">معلومات الترخيص</string>
<!-- Browser long press popup menu -->
<!-- Copy the current url -->
<string name="browser_toolbar_long_press_popup_copy">انسخ</string>
<!-- Paste & go the text in the clipboard. '&amp;' is replaced with the ampersand symbol: & -->
<string name="browser_toolbar_long_press_popup_paste_and_go">ألصِق وانتقل</string>
<!-- Paste the text in the clipboard -->
<string name="browser_toolbar_long_press_popup_paste">ألصِق</string>
<!-- Snackbar message shown after an URL has been copied to clipboard. -->
<string name="browser_toolbar_url_copied_to_clipboard_snackbar">نُسخ المسار إلى الحافظة</string>
<!-- Title text for the Add To Homescreen dialog -->
<string name="add_to_homescreen_title">أضِف إلى شاشة البداية</string>
<!-- Cancel button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_cancel">ألغِ</string>
<!-- Add button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_add">أضِف</string>
<!-- Continue to website button text for the first-time Add to Homescreen dialog -->
<string name="add_to_homescreen_continue">تابِع نحو الموقع</string>
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">اسم الاختصار</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">جلسات الولوج وكلمات السر</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -517,9 +877,146 @@
<string name="preferences_passwords_autofill">الملء التلقائي</string>
<!-- Preference for syncing saved logins in Fenix -->
<string name="preferences_passwords_sync_logins">زامِن جلسات الولوج</string>
<!-- Syncing saved logins in Fenix is on -->
<string name="preferences_passwords_sync_logins_on">مفعّلة</string>
<!-- Syncing saved logins in Fenix is off -->
<string name="preferences_passwords_sync_logins_off">معطّلة</string>
<!-- Syncing saved logins in Fenix needs reconnect to sync -->
<string name="preferences_passwords_sync_logins_reconnect">أعِد الاتصال</string>
<!-- Syncing saved logins in Fenix needs login -->
<string name="preferences_passwords_sync_logins_sign_in">لِج إلى «المزامنة»</string>
</resources>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">جلسات الولوج المحفوظة</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">اعرف المزيد عن المزامنة.</string>
<!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">الاستثناءات</string>
<!-- Empty description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description_empty">ستظهر جلسات الولوج وكلمات السر غير المحفوظة هنا.</string>
<!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">لن تُحفظ جلسات الولوج وكلمات السر لهذه المواقع.</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">ابحث في جلسات الولوج</string>
<!-- Option to sort logins list A-Z, alphabetically -->
<string name="preferences_passwords_saved_logins_alphabetically">أبجديًا</string>
<!-- Option to sort logins list by most recently used -->
<string name="preferences_passwords_saved_logins_recently_used">المستخدمة حديثًا</string>
<!-- The header for the site that a login is for -->
<string name="preferences_passwords_saved_logins_site">الموقع</string>
<!-- The header for the username for a login -->
<string name="preferences_passwords_saved_logins_username">اسم المستخدم</string>
<!-- The header for the password for a login -->
<string name="preferences_passwords_saved_logins_password">كلمة السر</string>
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning_learn_more">اطّلع على المزيد</string>
<!-- Positive confirmation that Fenix should save the new or updated login -->
<string name="logins_doorhanger_save_confirmation">احفظ</string>
<!-- Negative confirmation that Fenix should not save the new or updated login -->
<string name="logins_doorhanger_save_dont_save">لا تحفظ</string>
<!-- Shown in snackbar to tell user that the password has been copied -->
<string name="logins_password_copied">نُسخت كلمة السر إلى الحافظة</string>
<!-- Shown in snackbar to tell user that the username has been copied -->
<string name="logins_username_copied">نُسخ اسم المستخدم إلى الحافظة</string>
<!-- Shown in snackbar to tell user that the site has been copied -->
<string name="logins_site_copied">نُسخ الموقع إلى الحافظة</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">انسخ كلمة السر</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">اسنخ اسم المستخدم</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">انسخ الموقع</string>
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
<string name="saved_login_reveal_password">أظهِر كلمة السر</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">أخفِ كلمة السر</string>
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">لاحقًا</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">الاسم (ا-ي)</string>
<!-- Saved logins sorting strategy menu item -by last used- (if selected, it will sort saved logins by last used) -->
<string name="saved_logins_sort_strategy_last_used">آخر استخدام</string>
<!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">أضِف محرك بحث</string>
<!-- Title of the Edit search engine screen -->
<string name="search_engine_edit_custom_search_engine_title">حرّر محرك بحث</string>
<!-- Content description (not visible, for screen readers etc.): Title for the button to add a search engine in the action bar -->
<string name="search_engine_add_button_content_description">أضِف</string>
<!-- Content description (not visible, for screen readers etc.): Title for the button to save a search engine in the action bar -->
<string name="search_engine_add_custom_search_engine_edit_button_content_description">احفظ</string>
<!-- Text for the menu button to edit a search engine -->
<string name="search_engine_edit">حرّر</string>
<!-- Text for the menu button to delete a search engine -->
<string name="search_engine_delete">احذف</string>
<!-- Text for the button to create a custom search engine on the Add search engine screen -->
<string name="search_add_custom_engine_label_other">أخرى</string>
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
<string name="search_add_custom_engine_name_hint">الاسم</string>
<!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">اطّلع على المزيد</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 leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">أدخِل نص البحث</string>
<!-- Text on the enabled button. Placeholder replaced with app name-->
<string name="migration_update_app_button">ابدأ %s</string>
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
<string name="migration_text_passwords">كلمات السر</string>
<!-- Label that indicates a site is using a secure connection -->
<string name="quick_settings_sheet_secure_connection">اتصال آمن</string>
<!-- Label that indicates a site is using a insecure connection -->
<string name="quick_settings_sheet_insecure_connection">اتصال غير آمن</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for all sites-->
<string name="confirm_clear_permissions_on_all_sites">أمتأكد من مسح كل الصلاحيات لكل المواقع؟</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for a site-->
<string name="confirm_clear_permissions_site">أمتأكد من مسح كل الصلاحيات لهذا الموقع؟</string>
<!-- Confirmation message for a dialog confirming if the user wants to set default value a permission for a site-->
<string name="confirm_clear_permission_site">أمتأكد من مسح التصريح لهذا الموقع؟</string>
<!-- Browser menu button that adds a top site to the home fragment -->
<string name="browser_menu_add_to_top_sites">أضِف للمواقع الشائعة</string>
<!-- Login overflow menu delete button -->
<string name="login_menu_delete_button">احذف</string>
<!-- Login overflow menu edit button -->
<string name="login_menu_edit_button">حرّر</string>
<!-- Message in delete confirmation dialog for logins -->
<string name="login_deletion_confirmation">أمتأكد من حذف جلسة الولوج هذه؟</string>
<!-- Positive action of a dialog asking to delete -->
<string name="dialog_delete_positive">احذف</string>
<!-- The button description to discard changes to an edited login. -->
<string name="discard_changes">أهمِل التعديلات</string>
<!-- The page title for editing a saved login. -->
<string name="edit">حرّر</string>
<!-- The error message in edit login view when password field is blank. -->
<string name="saved_login_password_required">كلمة السر مطلوبة</string>
<!-- Voice search button content description -->
<string name="voice_search_content_description">البحث الصوتي</string>
<!-- Voice search prompt description displayed after the user presses the voice search button -->
<string name="voice_search_explainer">تكلّم الآن</string>
<!-- The error message in edit login view when a duplicate username exists. -->
<string name="saved_login_duplicate">يوجد بالفعل جلسة ولوج باسم المستخدم هذا</string>
<!-- Synced Tabs -->
<!-- Text displayed when user is not logged into a Firefox Account -->
<string name="synced_tabs_connect_to_sync_account">الاتصال بحساب Firefox.</string>
<!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">صِلْ جهازا آخر.</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">من فضلك فعّل مزامنة الألسنة.</string>
<!-- Text displayed when user has no tabs that have been synced -->
<string name="synced_tabs_no_tabs">لا ألسنة مفتوحة في Firefox على أجهزتك الأخرى.</string>
<!-- Text displayed in the synced tabs screen when a user is not signed in to Firefox Sync describing Synced Tabs -->
<string name="synced_tabs_sign_in_message">اعرض قائمة بالألسنة من أجهزتك الأخرى.</string>
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">لِج إلى «المزامنة»</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">لإضافة موقع شائع جديد، أزِل واحدًا. انقر مطولًا على الموقع واختر ”أزِل“.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">حسنًا، فهمت</string>
</resources>

View File

@ -34,8 +34,7 @@
<!-- 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 llimpia los historiales cuando coles de l\'aplicación o zarres toles llingüetes privaes. Magar qu\'esto nun t\'anonimiza n\'internet, fai que la to actividá en llinia seya fácil d\'anubrir
a otros usuarios qu\'usen el preséu.</string>
<string name="private_browsing_placeholder_description_2">%1$s llimpia los historiales cuando coles de l\'aplicación o zarres toles llingüetes privaes. Magar qu\'esto nun t\'anonimiza n\'internet, fai que la to actividá en llinia seya fácil d\'anubrir a otros usuarios qu\'usen el preséu.</string>
<string name="private_browsing_common_myths">Mitos comunes tocante al restolar en privao</string>
<!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Desaniciar la sesión</string>
@ -220,6 +219,10 @@
<string name="preferences_add_private_browsing_shortcut">Amestar un atayu pa restolar en privao</string>
<!-- Preference for accessibility -->
<string name="preferences_accessibility">Accesibilidá</string>
<!-- Preference to override the Firefox Account server -->
<string name="preferences_override_fxa_server">Sirvidor personalizáu de Firefox Accounts</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">Sirvidor personalizáu de Sync</string>
<!-- Toast shown after updating the FxA/Sync server override preferences -->
<string name="toast_override_fxa_sync_server_done">Modificóse\'l sirvidor de cuentes/sincronización de Firefox. Colando de l\'aplicación p\'aplicar los cambeos…</string>
<!-- Preference category for account information -->
@ -872,6 +875,8 @@
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">Posición</string>
<!-- text for the toolbar position card description -->
<string name="onboarding_toolbar_position_description">Prueba\'l restolar con una mano cola barra de ferramientes no baxero o móvila a lo cimero.</string>
<!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">Restolar en privao</string>
<!-- text for the private browsing onboarding card description
@ -902,6 +907,8 @@
<string name="onboarding_theme_picker_header">Escoyeta d\'un estilu</string>
<!-- text for the theme picker onboarding card description -->
<string name="onboarding_theme_picker_description1">Aforra daqué de batería y curia los güeyos activando\'l mou escuru.</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">Siguir l\'estilu del sistema</string>
<!-- Summary of automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_summary">Adáutase a los axustes del preséu</string>
<!-- Theme setting for dark mode -->
@ -1049,6 +1056,9 @@
<!-- About page link text to open a screen with libraries that are used -->
<string name="about_other_open_source_libraries">Les biblioteques qu\'usamos</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">Menú de depuración: %1$d calcu(os) p\'activar</string>
<string name="about_debug_menu_toast_done">Activóse\'l menú de depuración</string>
<!-- Content description of the tab counter toolbar button when one tab is open -->
@ -1079,6 +1089,9 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Nome del atayu</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">Pues amestar fácilmente esti sitiu web a la pantalla d\'aniciu del preséu p\'acceder nel intre y restolalu como si fore una aplicación.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Anicios de sesión y contraseñes</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1250,6 +1263,12 @@
<string name="quick_settings_sheet_secure_connection">La conexón ye segura</string>
<!-- Label that indicates a site is using a insecure connection -->
<string name="quick_settings_sheet_insecure_connection">La conexón ye insegura</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for all sites-->
<string name="confirm_clear_permissions_on_all_sites">¿De xuru que quies quitar tolos permisos de tolos sitios?</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for a site-->
<string name="confirm_clear_permissions_site">¿De xuru que quies quitar tolos permisos d\'esti sitiu?</string>
<!-- Confirmation message for a dialog confirming if the user wants to set default value a permission for a site-->
<string name="confirm_clear_permission_site">¿De xuru que quies quitar esti permisu d\'esti sitiu?</string>
<!-- label shown when there are not site exceptions to show in the site exception settings -->
<string name="no_site_exceptions">Nun hai nenguna</string>
<!-- Label for the Pocket default top site -->
@ -1270,6 +1289,12 @@
<!-- Positive action of a dialog asking to delete -->
<string name="dialog_delete_positive">Desaniciar</string>
<!-- The editable text field for a login's web address. -->
<string name="saved_login_hostname_description">El campu de testu editable pa la direición web del aniciu de sesión.</string>
<!-- The editable text field for a login's username. -->
<string name="saved_login_username_description">El campu de testu editable pal nome d\'usuariu del aniciu de sesión.</string>
<!-- The editable text field for a login's password. -->
<string name="saved_login_password_description">El campu de testu editable pa la contraseña del aniciu de sesión.</string>
<!-- The page title for editing a saved login. -->
<string name="edit">Edición</string>
<!-- The error message in edit login view when password field is blank. -->
@ -1296,7 +1321,7 @@
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Algamóse la llende de sitios destacaos</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">P\'amestar sitios nuevos, desanicia dalgún. Ten primíu un sitiu y esbilla Desaniciar.</string>
<string name="top_sites_max_limit_content">P\'amestar sitios nuevos desanicia dalgún. Ten primíu un sitiu y esbilla Desaniciar.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Val, entendílo</string>

View File

@ -25,6 +25,9 @@
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">Адкрытых картак: %1$s. Націсніце, каб пераключыць карткі.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s распрацаваны Mozilla.</string>
<!-- Private Browsing -->
<!-- Title for private session option -->
<string name="private_browsing_title">Вы ў прыватным сеансе</string>
@ -202,6 +205,10 @@
<string name="preferences_add_private_browsing_shortcut">Дадаць ярлык прыватнага аглядання</string>
<!-- Preference for accessibility -->
<string name="preferences_accessibility">Даступнасць</string>
<!-- Preference to override the Firefox Account server -->
<string name="preferences_override_fxa_server">Уласны сервер уліковых запісаў Firefox</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">Уласны сервер сінхранізацыі</string>
<!-- Preference category for account information -->
<string name="preferences_category_account">Уліковы запіс</string>
<!-- Preference shown on banner to sign into account -->
@ -302,13 +309,19 @@
<string name="preferences_tracking_protection_exceptions">Выключэнні</string>
<!-- Preference description for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions_description">Ахова ад сачэння выключана на гэтых сайтах</string>
<!-- Button in Exceptions Preference to turn on tracking protection for all sites (remove all exceptions) -->
<string name="preferences_tracking_protection_exceptions_turn_on_for_all">Уключыць для ўсіх сайтаў</string>
<!-- Text displayed when there are no exceptions, with learn more link that brings users to a tracking protection SUMO page -->
<string name="exceptions_empty_message_learn_more_link">Даведацца больш</string>
<!-- Preference switch for Telemetry -->
<string name="preferences_telemetry">Тэлеметрыя</string>
<!-- Preference switch for usage and technical data collection -->
<string name="preference_usage_data">Выкарыстанне і тэхнічныя дадзеныя</string>
<!-- Preference description for usage and technical data collection -->
<string name="preferences_usage_data_description">Дзяліцца звесткамі пра прадукцыйнасць, выкарыстанне, апаратнае забеспячэнне і налады вашага браўзера з Mozilla, каб дапамагчы ўдасканаліць %1$s</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Маркетынгавыя дадзеныя</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">Доследы</string>

View File

@ -0,0 +1,310 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="app_name_private_5">%s prevez</string>
<!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="app_name_private_4">%s (prevez)</string>
<!-- Home Fragment -->
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
<string name="content_description_menu">Dibarzhioù ouzhpenn</string>
<!-- Content description (not visible, for screen readers etc.): "Private Browsing" menu button. -->
<string name="content_description_private_browsing_button">Gweredekaat ar Merdeiñ Prevez</string>
<!-- Content description (not visible, for screen readers etc.): "Private Browsing" menu button. -->
<string name="content_description_disable_private_browsing_button">Diweredekaat ar Merdeiñ Prevez</string>
<!-- Placeholder text shown in the search bar before a user enters text -->
<string name="search_hint">Klask pe chomlecʼh</string>
<!-- No Open Tabs Message Description -->
<string name="no_open_tabs_description">Diskouezet e vo amañ hocʼh ivinelloù digoret</string>
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">Diskouezet e vo amañ hocʼh ivinelloù prevez</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">1 ivinell digor. Stokit evit mont dʼun ivinell all.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s ivinell digor. Stokit evit mont dʼun ivinell all.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">Gant Mozilla eo produet %1$s.</string>
<!-- Private Browsing -->
<!-- Title for private session option -->
<string name="private_browsing_title">En un estez prevez emaocʼh</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 a skarzh ho roll istor klask ha merdeiñ eus an ivinelloù prevez pa guitait anezho pe pa guitait an arload. Daoust ma ne lak ket acʼhanocʼh da vezañ dizanv evit al lecʼhiennoù pe evit ho pourchaser kenrouedad e vo aesocʼh da zercʼhel prevez ar pezh a rit enlinenn evit an dud all a implij an trevnad-mañ.</string>
<string name="private_browsing_common_myths">Mojennoù a vez alies diwar-benn ar merdeiñ prevez</string>
<!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Dilemel an estez</string>
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
<!-- Text for the main message -->
<string name="cfr_message">Ouzhpennañ ur verradenn evit digeriñ ivinelloù prevez adalek ho skramm degemer.</string>
<!-- Text for the positive button -->
<string name="cfr_pos_button_text">Ouzhpennañ ur verradenn</string>
<!-- Text for the negative button -->
<string name="cfr_neg_button_text">Ket, trugarez</string>
<!-- Search widget "contextual feature recommendation" (CFR) -->
<!-- Text for the main message. 'Firefox' intentionally hardcoded here.-->
<string name="search_widget_cfr_message">Kit buanocʼh war Firefox. Ouzhpennit ur widjet war ho skramm degemer.</string>
<!-- Text for the positive button -->
<string name="search_widget_cfr_pos_button_text">Ouzhpennañ ur widjet</string>
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Ket bremañ</string>
<!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Ivinell nevez</string>
<!-- Shortcut action to open new private tab -->
<string name="home_screen_shortcut_open_new_private_tab_2">Ivinell prevez nevez</string>
<!-- Heading for the Top Sites block -->
<string name="home_screen_top_sites_heading">Lecʼhiennoù gwellañ</string>
<!-- Browser Fragment -->
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
<string name="browser_tabs_button">Ivinelloù digor</string>
<!-- Content description (not visible, for screen readers etc.): Navigate backward (browsing history) -->
<string name="browser_menu_back">Distreiñ</string>
<!-- Content description (not visible, for screen readers etc.): Navigate forward (browsing history) -->
<string name="browser_menu_forward">War-lercʼh</string>
<!-- Content description (not visible, for screen readers etc.): Refresh current website -->
<string name="browser_menu_refresh">Azbevaat</string>
<!-- Content description (not visible, for screen readers etc.): Stop loading current website -->
<string name="browser_menu_stop">Paouez</string>
<!-- Content description (not visible, for screen readers etc.): Bookmark the current page -->
<string name="browser_menu_bookmark">Sined</string>
<!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page -->
<string name="browser_menu_edit_bookmark">Embann ar sined</string>
<!-- Browser menu button that opens the addon manager -->
<string name="browser_menu_add_ons">Askouezhioù</string>
<!-- Text displayed when there are no add-ons to be shown -->
<string name="no_add_ons">Nʼeus tamm enlugellad ebet amañ</string>
<!-- Browser menu button that sends a user to help articles -->
<string name="browser_menu_help">Skoazell</string>
<!-- Browser menu button that sends a to a the what's new article -->
<string name="browser_menu_whats_new">Petra nevez</string>
<!-- Browser menu button that opens the settings menu -->
<string name="browser_menu_settings">Arventennoù</string>
<!-- Browser menu button that opens a user's library -->
<string name="browser_menu_library">Levraoueg</string>
<!-- Browser menu toggle that requests a desktop site -->
<string name="browser_menu_desktop_site">Lecʼhienn urzhiataer</string>
<!-- Browser menu toggle that adds a shortcut to the site on the device home screen. -->
<string name="browser_menu_add_to_homescreen">Ouzhpennañ dʼar skramm degemer</string>
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">Staliañ</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Ivinelloù goubredet</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Kavout er bajennad</string>
<!-- Browser menu button that creates a private tab -->
<string name="browser_menu_private_tab">Roadennoù prevez</string>
<!-- Browser menu button that creates a new tab -->
<string name="browser_menu_new_tab">Ivinell nevez</string>
<!-- Browser menu button that saves the current tab to a collection -->
<string name="browser_menu_save_to_collection_2">Enrollañ en dastumad</string>
<!-- Browser menu button that open a share menu to share the current site -->
<string name="browser_menu_share">Rannañ</string>
<!-- Share menu title, displayed when a user is sharing their current site -->
<string name="menu_share_with">Rannañ gant...</string>
<!-- Browser menu button shown in custom tabs that opens the current tab in Fenix
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_open_in_fenix">Digeriñ e %1$s</string>
<!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_powered_by">LUSKET GANT %1$s</string>
<!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_powered_by2">Lusket gant %1$s</string>
<!-- Browser menu button to put the current page in reader mode -->
<string name="browser_menu_read">Mod Lenn</string>
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
<string name="browser_menu_read_close">Serriñ ar mod lenn</string>
<!-- Browser menu button to open the current page in an external app -->
<string name="browser_menu_open_app_link">Digeriñ en arload</string>
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
<string name="browser_menu_read_appearance">Neuz</string>
<!-- Error message to show when the user tries to access a scheme not
handled by the app (Ex: blob, tel etc) -->
<string name="unknown_scheme_error_message">Ne cʼhaller ket kennaskañ. Steuñv URL dianav.</string>
<!-- Locale Settings Fragment -->
<!-- Content description for tick mark on selected language -->
<string name="a11y_selected_locale_content_description">Yezh dibabet</string>
<!-- Content description for search icon -->
<string name="a11y_search_icon_content_description">Klask</string>
<!-- Text for default locale item -->
<string name="default_locale_text">Ober gant yezh ar benveg</string>
<!-- Placeholder text shown in the search bar before a user enters text -->
<string name="locale_search_hint">Klask ur yezh</string>
<!-- Search Fragment -->
<!-- Button in the search view that lets a user search by scanning a QR code -->
<string name="search_scan_button">Cʼhwilerviñ</string>
<!-- Button in the search view that lets a user search by using a shortcut -->
<string name="search_shortcuts_button">Berradennoù</string>
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
<string name="search_shortcuts_engine_settings">Arventennoù al lusker klask</string>
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
<string name="search_shortcuts_search_with">Klask gant</string>
<!-- Header displayed when selecting a shortcut search engine -->
<string name="search_shortcuts_search_with_2">Evit ar wech-mañ, klask gant:</string>
<!-- Button in the search view that lets a user navigate to the site in their clipboard -->
<string name="awesomebar_clipboard_title">Leuniañ diwar ar golver</string>
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
<string name="search_suggestions_onboarding_allow_button">Aotren</string>
<!-- Button in the search suggestions onboarding that does not allow search suggestions in private sessions -->
<string name="search_suggestions_onboarding_do_not_allow_button">Na aotren</string>
<!-- Search suggestion onboarding hint title text -->
<string name="search_suggestions_onboarding_title">Aotren alioù klask er merdeiñ prevez?</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 a ranno ar pezh a vizskrivit er varrenn chomlecʼhioù gant ho lusker enklask dre ziouer.</string>
<!-- Search suggestion onboarding hint Learn more link text -->
<string name="search_suggestions_onboarding_learn_more_link">Gouzout hirocʼh</string>
<!-- Search Widget -->
<!-- Text preview for smaller sized widgets -->
<string name="search_widget_text_short">Klask</string>
<!-- Text preview for larger sized widgets -->
<string name="search_widget_text_long">Klask er web</string>
<!-- Content description (not visible, for screen readers etc.): Voice search -->
<string name="search_widget_voice">Klask dre vouezh</string>
<!-- Preferences -->
<!-- Title for the settings page-->
<string name="settings">Arventennoù</string>
<!-- Preference category for basic settings -->
<string name="preferences_category_basics">Diazez</string>
<!-- Preference category for general settings -->
<string name="preferences_category_general">Hollek</string>
<!-- Preference category for all links about Fenix -->
<string name="preferences_category_about">A-zivout</string>
<!-- Preference for settings related to changing the default search engine -->
<string name="preferences_default_search_engine">Keflusker enklask dre ziouer</string>
<!-- Preference for settings related to Search -->
<string name="preferences_search">Klask</string>
<!-- Preference for settings related to Search address bar -->
<string name="preferences_search_address_bar">Barrenn chomlecʼhioù</string>
<!-- Preference linking to help about Fenix -->
<string name="preferences_help">Skoazell</string>
<!-- Preference link to rating Fenix on the Play Store -->
<string name="preferences_rate">Notennit anezhañ war Google Play</string>
<!-- Preference for giving feedback about Fenix -->
<string name="preferences_feedback">Reiñ evezhiadennoù</string>
<!-- Preference linking to about page for Fenix
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="preferences_about">A-zivout %1$s</string>
<!-- Preference linking to the your rights SUMO page -->
<string name="preferences_your_rights">Ho kwirioù</string>
<!-- Preference for settings related to saved passwords -->
<string name="preferences_passwords">Gerioù-tremen</string>
<!-- Preference for settings related to saved credit cards and addresses -->
<string name="preferences_credit_cards_addresses">Kartennoù kred ha chomlecʼhioù</string>
<!-- Preference for settings related to changing the default browser -->
<string name="preferences_set_as_default_browser">Lakaat evel merdeer dre ziouer</string>
<!-- Preference category for advanced settings -->
<string name="preferences_category_advanced">Kempleshocʼh</string>
<!-- Preference category for privacy settings -->
<string name="preferences_category_privacy">Buhez prevez</string>
<!-- Preference category for privacy and security settings -->
<string name="preferences_category_privacy_security">Buhez prevez ha diogelroez</string>
<!-- Preference for advanced site permissions -->
<string name="preferences_site_permissions">Aotreoù al lecʼhiennoù</string>
<!-- Preference for private browsing options -->
<string name="preferences_private_browsing_options">Merdeiñ prevez</string>
<!-- Preference for opening links in a private tab-->
<string name="preferences_open_links_in_a_private_tab">Digeriñ an ereoù en un ivinell brevez</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Aotren an tapadennoù-skramm er merdeiñ prevez</string>
<!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Ouzhpennañ ur verradenn merdeiñ prevez</string>
<!-- Preference for accessibility -->
<string name="preferences_accessibility">Haezadusted</string>
<!-- Preference to override the Firefox Account server -->
<string name="preferences_override_fxa_server">Dafariad kont Firefox personelaet</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">Dafariad Sync personelaet</string>
<!-- Toast shown after updating the FxA/Sync server override preferences -->
<string name="toast_override_fxa_sync_server_done">Dafariad kont Firefox/Sync kemmet. Kuitaet e vo an arload evit arloañ ar cʼhemmoù…</string>
<!-- Preference category for account information -->
<string name="preferences_category_account">Kont</string>
<!-- Preference shown on banner to sign into account -->
<string name="preferences_sign_in">Kennaskañ</string>
<!-- Preference for changing where the toolbar is positioned -->
<string name="preferences_toolbar">Barrenn ostilhoù</string>
<!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Neuz</string>
<!-- Preference for settings related to visual options -->
<string name="preferences_customize">Personelaat</string>
<!-- Preference description for banner about signing in -->
<string name="preferences_sign_in_description">Goubredit sinedoù, ar roll istor, ha muiocʼh cʼhoazh gant ho kont Firefox.</string>
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
<string name="preferences_account_default_name">Kont Firefox</string>
<!-- Preference text for account title when there was an error syncing FxA -->
<string name="preferences_account_sync_error">Adkennaskit evit kendercʼhel gant ar goubredañ</string>
<!-- Preference for language -->
<string name="preferences_language">Yezh</string>
<!-- Preference for data choices -->
<string name="preferences_data_choices">Dibaboù roadennoù</string>
<!-- Preference for data collection -->
<string name="preferences_data_collection">Dastum roadennoù</string>
<!-- Preference linking to the privacy notice -->
<string name="preferences_privacy_link">Evezhiadennoù a-fet buhez prevez</string>
<!-- Preference category for developer tools -->
<string name="developer_tools_category">Ostilhoù an diorroer</string>
<!-- Preference for developers -->
<string name="preferences_remote_debugging">Diveugañ a-bell dre USB</string>
<!-- Preference title for switch preference to show search shortcuts -->
<string name="preferences_show_search_shortcuts">Berradennoù klask</string>
<!-- Preference title for switch preference to show search suggestions -->
<string name="preferences_show_search_suggestions">Diskouez kinnigoù ar cʼhlask</string>
<!-- Preference title for switch preference to show voice search button -->
<string name="preferences_show_voice_search">Diskouez ar cʼhlask dre vouezh</string>
<!-- Preference title for switch preference to show search suggestions also in private mode -->
<string name="preferences_show_search_suggestions_in_private">Diskouez er estezioù prevez</string>
<!-- Preference title for switch preference to show a clipboard suggestion when searching -->
<string name="preferences_show_clipboard_suggestions">Diskouez kinnigoù ar golver</string>
<!-- Preference title for switch preference to suggest browsing history when searching -->
<string name="preferences_search_browsing_history">Klask er roll istor</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Klask er sinedoù</string>
<!-- Preference for account settings -->
<string name="preferences_account_settings">Arventennoù ar gont</string>
<!-- Preference for open links in third party apps -->
<string name="preferences_open_links_in_apps">Digeriñ ereoù en arloadoù</string>
<!-- Preference for add_ons -->
<string name="preferences_addons">Askouezhioù</string>
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Goubredañ bremañ</string>
<!-- Preference category for sync -->
<string name="preferences_sync_category">Dibabit petra vo goubredet</string>
<!-- Preference for syncing history -->
<string name="preferences_sync_history">Roll istor</string>
<!-- Preference for syncing bookmarks -->
<string name="preferences_sync_bookmarks">Sinedoù</string>
<!-- Preference for syncing logins -->
<string name="preferences_sync_logins">Titouroù kennaskañ</string>
<!-- Preference for syncing tabs -->
<string name="preferences_sync_tabs_2">Ivinelloù digor</string>
<!-- Preference for signing out -->
<string name="preferences_sign_out">Digennaskañ</string>
<!-- Preference displays and allows changing current FxA device name -->
<string name="preferences_sync_device_name">Anv an trevnad</string>
<!-- Text shown when user enters empty device name -->
<string name="empty_device_name_error">Anv an trevnad nʼhall ket bezañ goullo.</string>
<!-- Label indicating that sync is in progress -->
<string name="sync_syncing_in_progress">O goubredañ...</string>
<!-- Label summary indicating that sync failed. The first parameter is the date stamp showing last time it succeeded -->
<string name="sync_failed_summary">Goubredañ cʼhwitet. Berzh diwezhañ: %s</string>
<!-- Label summary showing never synced -->
<string name="sync_failed_never_synced_summary">Goubredañ cʼhwitet. Goubredañ diwezhañ: morse</string>
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
<string name="sync_last_synced_summary">Goubredañ diwezhañ : %s</string>
<!-- Label summary showing never synced -->
<string name="sync_never_synced_summary">Goubredañ diwezhañ : morse</string>
</resources>

View File

@ -22,6 +22,11 @@
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">Wawe\' xkeq\'alajin pe ri ichinan taq ruwi\'.</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">1 ruwi\' jaqon. Tachapa\' richin nak\'ëx ruwi\'.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s ruwi\' ejaqon. Tachapa\' richin nak\'ëx ruwi\'.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s b\'anon ruma Mozilla.</string>
@ -299,6 +304,8 @@
<string name="preferences_sync_bookmarks">Taq yaketal</string>
<!-- Preference for syncing logins -->
<string name="preferences_sync_logins">Ketikirisäx molojri\'ïl</string>
<!-- Preference for syncing tabs -->
<string name="preferences_sync_tabs_2">Kejaq ruwi\'</string>
<!-- Preference for signing out -->
<string name="preferences_sign_out">Titz\'apïx molojri\'ïl</string>
<!-- Preference displays and allows changing current FxA device name -->
@ -489,6 +496,8 @@
<string name="tabs_menu_close_all_tabs">Titz\'apïx ronojel ri taq ruwi\'</string>
<!-- Open tabs menu item to share all tabs -->
<string name="tabs_menu_share_tabs">Kekomonïx taq ruwi\'</string>
<!-- Open tabs menu item to save tabs to collection -->
<string name="tabs_menu_save_to_collection1">Keyak ruwi\' pa mol</string>
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
<string name="tab_menu">Ruk\'utsamaj ruwi\'</string>
<!-- Tab menu item to share the tab -->
@ -711,6 +720,10 @@
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Ruk\'utsamaj mol</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Ke\'amolo\' ri taq wachinäq niqa chawa</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Ketzob\'ajïx taq kanoxïk, taq ruxaq chuqa\' taq ruwi\' ejunam richin ye\'okisäx na.</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Kecha\' taq Ruwi\'</string>
<!-- Title for the "select collection" step of the collection creator -->
@ -921,6 +934,9 @@
<string name="tip_firefox_preview_moved_description">Firefox Nightly nuk\'ëx ri\' ronojel taq aq\'a\' chuqa\' k\'o k\'ak\'a\' tojtob\'enel taq rusamaj.
Po rik\'in jub\'a\' man kan ta jikïl. Taqasaj ri beta qokik\'amaya\'l richin jun jikïl samaj.</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">Tak\'ulu\' Firefox richin 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 Nightly xsilöx</string>
<!-- text for firefox preview moving tip description -->
@ -1438,6 +1454,9 @@ Achi\'el: \nhttps://www.google.com/search?q=%s</string>
<!-- Voice search prompt description displayed after the user presses the voice search button -->
<string name="voice_search_explainer">Kach\'o wakami</string>
<!-- The error message in edit login view when a duplicate username exists. -->
<string name="saved_login_duplicate">K\'o chik jun tikirib\'äl molojri\'ïl rik\'in re b\'i\'aj re\'</string>
<!-- Synced Tabs -->
<!-- Text displayed when user is not logged into a Firefox Account -->
<string name="synced_tabs_connect_to_sync_account">Tok rik\'in jun Rub\'i\' Rutaqoya\'l Firefox</string>
@ -1448,4 +1467,19 @@ Achi\'el: \nhttps://www.google.com/search?q=%s</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">Tatzija\' ri kiximik taq ruwi\'.</string>
</resources>
<!-- Text displayed when user has no tabs that have been synced -->
<string name="synced_tabs_no_tabs">Majun ruwi\' ajaqon pa Firefox pa ri ch\'aqa\' chik awokisab\'al.</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">Titz\'et jun kicholb\'al ruwi\' pa juley chik awokisab\'al.</string>
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">Tatikirisaj molojri\'ïl pa yaximon</string>
<!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Xaq\'i\' ruchi\' ri jutaqil taq ruxaq</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">Richin natz\'aqatisaj jun k\'ak\'a\' jutaqil ruxaq, tayuju\' jun. Tapitz\'a\' pa ruwi\' ri ruxaq richin nacha\' tiyuj.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">ÜTZ, Wetaman Chik</string>
</resources>

View File

@ -13,14 +13,17 @@
<string name="content_description_disable_private_browsing_button">Deaktiver privat browsing</string>
<!-- Placeholder text shown in the search bar before a user enters text -->
<string name="search_hint">Søg eller indtast adresse</string>
<!-- No Open Tabs Message Header -->
<string name="no_open_tabs_header_2">Ingen åbne faneblade</string>
<!-- No Open Tabs Message Description -->
<string name="no_open_tabs_description">Dine åbne faneblade vil blive vist her.</string>
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">Dine private faneblade vil blive vist her.</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">1 åbent faneblad. Tryk for at skifte faneblade.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s åbne faneblade. Tryk for at skifte faneblade.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s er lavet af Mozilla.</string>
@ -93,6 +96,8 @@
<string name="browser_menu_add_to_homescreen">Føj til startskærm</string>
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">Installer</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Synkroniserede faneblade</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Find på siden</string>
<!-- Browser menu button that creates a private tab -->
@ -101,8 +106,6 @@
<string name="browser_menu_new_tab">Nyt faneblad</string>
<!-- Browser menu button that saves the current tab to a collection -->
<string name="browser_menu_save_to_collection_2">Gem til samling</string>
<!-- Browser menu button that opens a dialog to report issues with the current site -->
<string name="browser_menu_report_issue">Anmeld problem med webstedet</string>
<!-- Browser menu button that open a share menu to share the current site -->
<string name="browser_menu_share">Del</string>
<!-- Share menu title, displayed when a user is sharing their current site -->
@ -116,8 +119,10 @@
<!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_powered_by2">Leveret af %1$s</string>
<!-- Browser menu button to put the the current page in reader mode -->
<!-- Browser menu button to put the current page in reader mode -->
<string name="browser_menu_read">Læsevisning</string>
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
<string name="browser_menu_read_close">Luk læsevisning</string>
<!-- Browser menu button to open the current page in an external app -->
<string name="browser_menu_open_app_link">Åbn i app</string>
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
@ -286,6 +291,8 @@
<string name="preferences_sync_bookmarks">Bogmærker</string>
<!-- Preference for syncing logins -->
<string name="preferences_sync_logins">Logins</string>
<!-- Preference for syncing tabs -->
<string name="preferences_sync_tabs_2">Åbne faneblade</string>
<!-- Preference for signing out -->
<string name="preferences_sign_out">Log ud</string>
<!-- Preference displays and allows changing current FxA device name -->
@ -417,6 +424,8 @@
<string name="library_desktop_bookmarks_unfiled">Andre bogmærker</string>
<!-- Option in Library to open History page -->
<string name="library_history">Historik</string>
<!-- Option in Library to open Synced Tabs page -->
<string name="library_synced_tabs">Synkroniserede faneblade</string>
<!-- Option in Library to open Reading List -->
<string name="library_reading_list">Læseliste</string>
@ -438,6 +447,24 @@
<string name="tabs_header_private_tabs_title">Private faneblade</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_tab">Tilføj faneblad</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_private_tab">Tilføj privat faneblad</string>
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
<string name="tab_drawer_fab_content">Privat</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">Åbne faneblade</string>
<!-- Text shown in the menu for saving tabs to a collection -->
<string name="tab_tray_menu_item_save">Gem til samling</string>
<!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Del alle faneblade</string>
<!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Luk alle faneblade</string>
<!-- Shortcut action to open new tab -->
<string name="tab_tray_menu_open_new_tab">Nyt faneblad</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">Gå til startsiden</string>
<!-- Shortcut action to toggle private mode -->
<string name="tab_tray_menu_toggle">Skift tilstand for faneblade</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">Fjern faneblad fra samling</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
@ -451,7 +478,7 @@
<!-- Open tabs menu item to share all tabs -->
<string name="tabs_menu_share_tabs">Del faneblade</string>
<!-- Open tabs menu item to save tabs to collection -->
<string name="tabs_menu_save_to_collection">Gem til samling</string>
<string name="tabs_menu_save_to_collection1">Gem faneblade til samling</string>
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
<string name="tab_menu">Faneblads-menu</string>
<!-- Tab menu item to share the tab -->
@ -661,16 +688,14 @@
<string name="delete_browsing_data_quit_off">Fra</string>
<!-- Collections -->
<!-- Label to describe what collections are to a new user without any collections -->
<string name="collections_description">Saml de ting, der er vigtige for dig. Gem åbne faneblade i en ny samling for at komme i gang.</string>
<!-- Collections header on home fragment -->
<string name="collections_header">Samlinger</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Samlings-menu</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header">Ingen samlinger</string>
<!-- No Open Tabs Message Description -->
<string name="no_collections_description">Dine samlinger vil blive vist her.</string>
<string name="no_collections_header1">Saml de ting, der betyder noget for dig</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Saml relaterede søgninger, websteder og faneblade i grupper. Så kan du hurtigt finde dem igen.</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Vælg faneblade</string>
<!-- Title for the "select collection" step of the collection creator -->
@ -700,6 +725,9 @@
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
<string name="create_collection_save">Gem</string>
<!-- Snackbar action to view the collection the user just created or updated -->
<string name="create_collection_view">Vis</string>
<!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections-->
<string name="create_collection_default_name">Samling %d</string>
@ -848,8 +876,6 @@
<string name="preference_summary_delete_browsing_data_on_quit">Sletter automatisk browserdata, når du vælger &quot;Afslut&quot; i hovedmenuen</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">Sletter automatisk browserdata, når du vælger \&quot;Afslut\&quot; i hovedmenuen</string>
<!-- Category for history items to delete on quit in delete browsing data on quit -->
<string name="preferences_delete_browsing_data_on_quit_browsing_history">Browserhistorik</string>
<!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Afslut</string>
@ -873,8 +899,9 @@
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description">Firefox Nightly bliver opdateret hver nat og har nye, eksperimentelle funktioner.
Nightly kan dog være ustabil nogle gange. Hent vores beta-version, hvis du vil have en mere stabil browser.</string>
<!-- text for firefox preview moving tip button. "Mozilla Firefox Browser" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button">Hent Mozilla Firefox Browser</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">Hent Firefox Beta til Android</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_installed">Firefox Nightly er flyttet</string>
@ -929,18 +956,20 @@
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">Kunne ikke logge ind</string>
<!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header">Beskyt dig selv</string>
<string name="onboarding_tracking_protection_header_2">Automatisk privatlivsbeskyttelse</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_description1">%s hjælper dig med at forhindre websteder i at spore dig på nettet.</string>
<string name="onboarding_tracking_protection_description_2">Indstillinger for privatlivsbeskyttelse og sikkerhed blokerer sporings-mekanismer, skadelig software og virksomheder, der følger dig på nettet.</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button">Standard</string>
<string name="onboarding_tracking_protection_standard_button_2">Standard</string>
<!-- text for standard blocking option button description -->
<string name="onboarding_tracking_protection_standard_button_description">Blokerer færre sporings-teknologier, men gør det muligt for sider at indlæses normalt</string>
<string name="onboarding_tracking_protection_standard_button_description_2">Blokerer færre sporings-mekanismer. Sider indlæses som normalt.</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">Striks (anbefalet)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">Striks</string>
<!-- text for strict blocking option button description -->
<string name="onboarding_tracking_protection_strict_button_description">Blokerer flere sporings-teknologier for at opnå bedre beskyttelse og ydelse, men kan forhindre nogle websteder fra at fungere optimalt</string>
<string name="onboarding_tracking_protection_strict_button_description_2">Blokerer flere sporings-mekanismer, reklamer og pop ups. Sider indlæses hurtigere, men noget funktionalitet virker måske ikke.</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 -->
@ -1026,31 +1055,21 @@
<!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Læs mere</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_option">Standard</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard">Standard (anbefalet)</string>
<string name="preference_enhanced_tracking_protection_standard_default_1">Standard</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description">Balanceret mellem beskyttelse og ydelse.</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description_2">Sider indlæses normalt, men færre sporings-teknologier blokeres.</string>
<string name="preference_enhanced_tracking_protection_standard_description_3">Blokerer færre sporings-mekanismer. Sider indlæses som normalt.</string>
<!-- Accessibility text for the Standard protection information icon -->
<string name="preference_enhanced_tracking_protection_standard_info_button">Hvad der bliver blokeret af standard-opsætningen af beskyttelse mod sporing</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">Striks</string>
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
<string name="preference_enhanced_tracking_protection_strict_default">Striks (standard)</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_default_description">Stærkere beskyttelse mod sporing og hurtigere ydelse, men nogle websteder virker måske ikke ordentligt.</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_strict_recommended">Striks (anbefalet)</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_description">Stærkere beskyttelse, men nogle websteder eller noget indhold indlæses måske ikke korrekt.</string>
<string name="preference_enhanced_tracking_protection_strict_description_2">Blokerer flere sporings-mekanismer, reklamer og pop ups. Sider indlæses hurtigere, men noget funktionalitet virker måske ikke.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_strict_info_button">Hvad der bliver blokeret af striks beskyttelse mod sporing</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">Tilpasset</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description">Vælg selv, hvilke sporings-teknologier og scripts der skal blokeres</string>
<string name="preference_enhanced_tracking_protection_custom_description_2">Vælg selv, hvilke sporings-teknologier og scripts der skal blokeres.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_custom_info_button">Hvad der bliver blokeret af tilpasset beskyttelse mod sporing</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
@ -1100,7 +1119,7 @@
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_description">Stopper indlæsning af eksterne reklamer, videoer og andet indhold, der indeholder sporings-kode. Kan påvirke nogle websteders funktionalitet.</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_message_2">%s blokerer sporings-teknologier på dette websted, når skjoldet er lilla. Tryk på ikonet for at se, hvad der er blokeret.</string>
<string name="etp_onboarding_cfr_message">Når skjoldet er lilla, betyder det at %s har blokeret sporings-mekanismer på et websted. Tryk for mere info.</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Beskyttelse er slået TIL for dette websted</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
@ -1383,4 +1402,31 @@
<string name="voice_search_content_description">Stemme-søgning</string>
<!-- Voice search prompt description displayed after the user presses the voice search button -->
<string name="voice_search_explainer">Tal nu</string>
<!-- The error message in edit login view when a duplicate username exists. -->
<string name="saved_login_duplicate">Et login med dette brugernavn findes allerede</string>
<!-- Synced Tabs -->
<!-- Text displayed when user is not logged into a Firefox Account -->
<string name="synced_tabs_connect_to_sync_account">Forbind med en Firefox-konto.</string>
<!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">Opret forbindelse til en ny enhed.</string>
<!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">Godkend igen.</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">Aktiver synkronisering af faneblade.</string>
<!-- Text displayed when user has no tabs that have been synced -->
<string name="synced_tabs_no_tabs">Du har ikke nogen faneblade åbne i Firefox på dine andre enheder.</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">Se en liste med faneblade fra dine andre enheder.</string>
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">Log ind på Sync</string>
<!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">Grænsen for Mest besøgte websider er nået</string>
<!-- Content description text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_content">Hvis du vil tilføje en ny webside, skal du først fjerne én. Tryk og hold på websiden, og vælg så Fjern.</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Ok, forstået</string>
</resources>

View File

@ -920,8 +920,6 @@
<string name="preference_summary_delete_browsing_data_on_quit">Löscht die Browser-Daten automatisch, wenn Sie im Hauptmenü die Option „Beenden“ auswählen</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">Löscht die Browser-Daten automatisch, wenn Sie im Hauptmenü die Option „Beenden“ auswählen</string>
<!-- Category for history items to delete on quit in delete browsing data on quit -->
<string name="preferences_delete_browsing_data_on_quit_browsing_history">Chronik</string>
<!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Beenden</string>
@ -953,7 +951,7 @@
<string name="tip_firefox_preview_moved_header_preview_installed">Firefox Nightly ist umgezogen</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_installed">Diese App erhält keine Sicherheitsupdates mehr. Nutzen Sie diese App nicht mehr und wechseln Sie zum neuen Nightly.
        \ n \ nUm Ihre Lesezeichen, Zugangsdaten und Chronik auf eine andere App zu übertragen, erstellen Sie ein Firefox-Konto.</string>
\n\nUm Ihre Lesezeichen, Zugangsdaten und Chronik auf eine andere App zu übertragen, erstellen Sie ein Firefox-Konto.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_installed">Wechseln Sie zum neuen Nightly</string>
@ -961,7 +959,7 @@
<string name="tip_firefox_preview_moved_header_preview_not_installed">Firefox Nightly ist umgezogen</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_not_installed">Diese App erhält keine Sicherheitsupdates mehr. Holen Sie sich das neue Nightly und nutzen Sie diese App nicht mehr.
        \ n \ nUm Ihre Lesezeichen, Zugangsdaten und Chronik auf eine andere App zu übertragen, erstellen Sie ein Firefox-Konto.</string>
\n\nUm Ihre Lesezeichen, Zugangsdaten und Chronik auf eine andere App zu übertragen, erstellen Sie ein Firefox-Konto.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_not_installed">Holen Sie sich das neue Nightly</string>

File diff suppressed because one or more lines are too long

View File

@ -31,7 +31,7 @@
<string name="private_browsing_title">Ti ê inte \'na sescion privâ</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 scancella a teu cronologia de navegaçion e de riçerche quande seri i feuggi e i barcoin de navegaçion privâ. Sciben che questo o no ti fa deventâ anònimo co-i sciti o co-o fornitô de Internet, o l\'agiutta in ògni mòddo a mantegnî privòu da-i atri utenti de sto computer cöse ti fæ in linea.</string>
<string name="private_browsing_placeholder_description_2">%1$s o scancella a teu stöia de navegaçion e riçerche quande særi i feuggi e-i barcoin de navegaçion privâ. Sciben che questo o no te fa deventâ anònimo co-i sciti ò co-o fornitô de Internet, o l\'agiutta in a mantegnî privòu cöse ti fæ in linea a-i atri utenti de sto computer.</string>
<string name="private_browsing_common_myths">Miti comuin in sciâ navegaçion privâ</string>
<!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Scancella sescion</string>
@ -66,7 +66,7 @@
<!-- Content description (not visible, for screen readers etc.): Navigate backward (browsing history) -->
<string name="browser_menu_back">Inderê</string>
<!-- Content description (not visible, for screen readers etc.): Navigate forward (browsing history) -->
<string name="browser_menu_forward"></string>
<string name="browser_menu_forward">Avanti</string>
<!-- Content description (not visible, for screen readers etc.): Refresh current website -->
<string name="browser_menu_refresh">Agiorna</string>
<!-- Content description (not visible, for screen readers etc.): Stop loading current website -->
@ -94,7 +94,7 @@
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">Installa</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs"></string>
<string name="synced_tabs">Feuggi scincronizæ</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Treuva in pagina</string>
<!-- Browser menu button that creates a private tab -->
@ -143,7 +143,7 @@
<!-- Button in the search view that lets a user search by scanning a QR code -->
<string name="search_scan_button">Scanscionn-a</string>
<!-- Button in the search view that lets a user search by using a shortcut -->
<string name="search_shortcuts_button">Scorsaiéu</string>
<string name="search_shortcuts_button">Scorsaieu</string>
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
<string name="search_shortcuts_engine_settings">Inpostaçioin motô de riçerca</string>
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
@ -337,6 +337,8 @@
<string name="preferences_tracking_protection_exceptions_description">A proteçion anti-traciamento a l\'é asmortâ pe sti sciti</string>
<!-- Button in Exceptions Preference to turn on tracking protection for all sites (remove all exceptions) -->
<string name="preferences_tracking_protection_exceptions_turn_on_for_all">Açendi pe tutti i sciti</string>
<!-- Text displayed when there are no exceptions -->
<string name="exceptions_empty_message_description">Con Eceçioin ti peu dizativâ a proteçion anti-traciamento pe-i sciti seleçionæ.</string>
<!-- Text displayed when there are no exceptions, with learn more link that brings users to a tracking protection SUMO page -->
<string name="exceptions_empty_message_learn_more_link">Atre informaçioin</string>
@ -347,8 +349,12 @@
<string name="preferences_telemetry">Telemetria</string>
<!-- Preference switch for usage and technical data collection -->
<string name="preference_usage_data">Dæti tecnichi e statistiche d\'uzo</string>
<!-- Preference description for usage and technical data collection -->
<string name="preferences_usage_data_description">Condividdi con Mozilla informaçioin in sce prestaçioin, uzo, hardware e personalizaçioin do navegatô pe contribuî a-o megioamento de %1$s</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Dæti de marketing</string>
<!-- Preference description for marketing data collection, parameter is the app name (e.g. Firefox) -->
<string name="preferences_marketing_data_description">Condividdi dæti in sce fonçioin adeuviæ in %1$s con Leanplum, o nòstro fornitô pe-o marketing inta piataforma mòbile.</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">Esperimenti</string>
@ -669,6 +675,10 @@
<string name="tracking_protection_off">Asmòrtou</string>
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Permetti aodio e video</string>
<!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only2">Blòcca aodio e video solo con conescion dæti</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">Aodio e video saian riproduti co-a conescion Wi-Fi</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio2">Blòcca solo l\'aodio</string>
<!-- Label that indicates that all video and audio autoplay is blocked -->
@ -685,6 +695,8 @@
<string name="collection_menu_button_content_description">Menû coleçion</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Ragruppa i teu interessi</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">Amuggia riçerche, sciti e feuggi scimili pe poeghe acede ciù a-a spedia dòppo.</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Seleçionn-a feuggi</string>
<!-- Title for the "select collection" step of the collection creator -->
@ -745,6 +757,8 @@
<string name="sync_offline">Feua linia</string>
<!-- An option to connect additional devices -->
<string name="sync_connect_device">Conetti atro dispoxitivo</string>
<!-- The dialog text shown when additional devices are not available -->
<string name="sync_connect_device_dialog">Pe mandâ un feuggio, intra into conto Firefox almeno inte \'n atro dispoxitivo.</string>
<!-- Confirmation dialog button -->
<string name="sync_confirmation_button">Ò capio!</string>
<!-- Share error message -->
@ -817,6 +831,8 @@
<string name="full_screen_notification">Intra into mòddo a tutto schermo</string>
<!-- Message for copying the URL via long press on the toolbar -->
<string name="url_copied">Indirisso copiou</string>
<!-- Sample text for accessibility font size -->
<string name="accessibility_text_size_sample_text_1">Sto chi o l\'é \'n testo d\'ezenpio. Serve pe fa vedde comme saiâ o testo quande ti t\'aomenti o ti diminoisci o testo con sta inpostaçion.</string>
<!-- Summary for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_text_size_summary">Aomenta ò riduxi a dimenscion do testo di sciti web</string>
<!-- Title for Accessibility Text Size Scaling Preference -->
@ -825,6 +841,9 @@
<!-- Title for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_2">Dimescionamento di carateri aotomatico</string>
<!-- Summary for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_summary">A dimenscion di carateri saiâ pægia a quella de Android. Dizativâ pe gestî a dimenscion di carateri chi.</string>
<!-- Title for the Delete browsing data preference -->
<string name="preferences_delete_browsing_data">Scancella dæti navegaçion</string>
<!-- Title for the tabs item in Delete browsing data -->
@ -856,6 +875,10 @@
<!-- Title for the Delete browsing data on quit preference -->
<string name="preferences_delete_browsing_data_on_quit">Scancella dæti navegaçion quande sciòrto</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">Scancella in aotomatico i dæti de navegaçion quande ti seleçionn-i &quot;Sciòrti&quot; da-o menû prinçipâ</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">Scancella in aotomatico i dæti de navegaçion quande ti seleçionn-i \&quot;Sciòrti\&quot; da-o menû prinçipâ</string>
<!-- Action item in menu for the Delete browsing data on quit feature -->
<string name="delete_browsing_data_on_quit_action">Sciòrti</string>
@ -873,12 +896,29 @@
<!-- Text for the snackbar to show the user that the deletion of browsing data is in progress -->
<string name="deleting_browsing_data_in_progress">Scancella dæti navegaçion…</string>
<!-- Tips -->
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header">Firefox Preview oua se ciamma Firefox Nightly</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description">Firefox Nightly o vegne agiornou tutte e neutti e-o l\'à de carateristiche sperimentâ.
A ògni mòddo, o peu ese meno stabile. Scarega o nòstro navegatô beta pe avei ciù stabilitæ.</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">Descarega Firefox pe 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 Nightly o s\'é mesciou</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_installed">Sta app a no riçeiviâ ciù agiornamenti de seguessa. No deuviâ ciù sta app e passa a-o neuvo Nightly.
\n\nPe trasferî i teu segnalibbri, acessi e stöia in sce \'n atra app, crea \'n conto Firefox.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_installed">Passa a-o neuvo Nightly</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_not_installed">Firefox Nightly o s\'é mesciou</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_not_installed">Sta app a no riçeiviâ ciù agiornamenti de seguessa. No deuviâ ciù sta app e passa a-o neuvo Nightly.
\n\nPe trasferî i teu segnalibbri, acessi e stöia in sce \'n atra app, crea \'n conto Firefox.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_not_installed">Piggite o neuvo Nightly</string>
@ -893,11 +933,18 @@
<string name="onboarding_feature_section_header">Descòvri %s</string>
<!-- text for the "What's New" onboarding card header -->
<string name="onboarding_whats_new_header1">Descòvri cöse gh\'é de neuvo</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">Ti gh\'æ de domande in sciô neuvo %s? Ti veu savei cöse l\'é cangiou?</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">Treuva chi e risposte</string>
<!-- text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Piggia o mascimo da %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">T\'ê za conesso comme %s inte \'n atro navegatô Firefox sorvia sto telefono. Ti veu intrâ con questo conto?</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Sì, famme intrâ</string>
<!-- text for the automatic sign-in button while signing in is in process -->
@ -912,23 +959,41 @@
<string name="onboarding_firefox_account_automatic_signin_failed">No riescio a acede</string>
<!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header_2">Privacy aotomatica</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">E inpostaçion da privacy e seguessa blocan elementi che tracian, malware e aziende che ascoran e teu ativitæ in linia.</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">Normale (predefinio)</string>
<!-- text for standard blocking option button description -->
<string name="onboarding_tracking_protection_standard_button_description_2">Blòcca meno elementi che tracian. E pagine saian caregæ normalmente.</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">Restritivo (consegiou)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">Restritivo</string>
<!-- text for strict blocking option button description -->
<string name="onboarding_tracking_protection_strict_button_description_2">Blòcca ciù elementi che tracian, publicitæ e pop-up. E pagine saian caregæ ciù a-a spedia ma quarche fonçion a no aniâ.</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">Piggia poxiçion</string>
<!-- text for the toolbar position card description -->
<string name="onboarding_toolbar_position_description">Preuva a bara di atressi da basso pe navegâ con \'na sola man, ò mesciala de d\'ato.</string>
<!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">Navega in mòddo privou</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">Arvi un feuggio privou \'na sola vòtta: tocca liconn-a %s</string>
<!-- text for the private browsing onboarding card description, explaining how to always using private browsing -->
<string name="onboarding_private_browsing_always_description">Arvi un feuggio privou ògni vòtta: agiorna e inpostaçioin do navegatô.</string>
<!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">Arvi inpostaçioin</string>
<!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">A teu privacy</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">Emmo progetou %s pe date o controllo in sce cöse ti condividdi
in linia e cöse condividdi con niatri.</string>
<!-- Text for the button to read the privacy notice -->
<string name="onboarding_privacy_notice_read_button">Lezzi a nòstra informativa in sciâ privacy</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
@ -940,8 +1005,12 @@
<!-- Onboarding theme -->
<!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">Çerni o teu tema</string>
<!-- text for the theme picker onboarding card description -->
<string name="onboarding_theme_picker_description1">Risparmia bateria e protezzi i teu euggi ativando o mòddo scuo.</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">Aotomatico</string>
<!-- Summary of automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_summary">O se adatta a-e inpostaçioin do dispoxitivo</string>
<!-- Theme setting for dark mode -->
<string name="onboarding_theme_dark_title">Tema scuo</string>
<!-- Theme setting for light mode -->
@ -957,17 +1026,26 @@
<string name="sync_sent_tab_error_snackbar_action">PREUVA TORNA</string>
<!-- Title of QR Pairing Fragment -->
<string name="sync_scan_code">Scançionn-a o còdice</string>
<!-- Instructions on how to access pairing -->
<string name="sign_in_instructions"><![CDATA[Arvi Firefox in sciô computer e vanni chi <b>https://firefox.com/pair</b>]]></string>
<!-- Text shown for sign in pairing when ready -->
<string name="sign_in_ready_for_scan">Pronto pe-a scançion</string>
<!-- Text shown for settings option for sign with pairing -->
<string name="sign_in_with_camera">Acedi co-a fòtocamera</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Acedi con lemail</string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">I dæti de navegaçion no saian ciù scincronizæ co-o conto Firefox, ma no saian scancelæ da sto dispoxitivo.</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">I dæti de navegaçion no saian ciù scincronizæ co-o conto %s, ma no saian scancelæ da sto dispoxitivo.</string>
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">Disconnetti</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">Anulla</string>
<!-- Error message snackbar shown after the user tried to select a default folder which cannot be altered -->
<string name="bookmark_cannot_edit_root">No pòsso cangiâ e cartelle predefinie</string>
<!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">Preferense proteçion</string>
@ -975,18 +1053,38 @@
<string name="preference_enhanced_tracking_protection">Proteçion anti-traciamento avansâ</string>
<!-- Title for the description of enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_title">Navega sensa ese ascorio</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">Mantegni i teu dæti pe ti mæximmo. %s o te protezze da-a magiô parte di elementi che te tracian in linia.</string>
<!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Atre informaçioin</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">Normale (predefinio)</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description_3">Blòcca meno elementi che tracian. E pagine saian caregæ normalmente.</string>
<!-- Accessibility text for the Standard protection information icon -->
<string name="preference_enhanced_tracking_protection_standard_info_button">Elementi blocæ da-a proteçion anti-traciamento standard</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">Restritivo</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict_description_2">Blòcca ciù elementi che tracian, publicitæ e pop-up. E pagine saian caregæ ciù a-a spedia ma quarche fonçion a no aniâ.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_strict_info_button">Elementi blocæ da-a proteçion anti-traciamento restritiva</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">Personalizou</string>
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_custom_description_2">Çerni quæ traciatoî e script blocâ.</string>
<!-- Accessibility text for the Strict protection information icon -->
<string name="preference_enhanced_tracking_protection_custom_info_button">Elementi blocæ da-a proteçion anti-traciamento personalizâ</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">Cookie</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_1">Traciatoî inter-scito e di social media</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_2">Cookie da sciti no vixitæ</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_3">Tutti i cookie de terse parte (quarche scito o porieiva no fonçionâ ben)</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_4">Tutti i cookie (quarche scito o no fonçioniâ ben)</string>
<!-- Preference for enhanced tracking protection for the custom protection settings for tracking content -->
<string name="preference_enhanced_tracking_protection_custom_tracking_content">Contegnui che tracian</string>
@ -1009,16 +1107,28 @@
<string name="etp_social_media_trackers_description">Limita a capaçitæ di social network de traciâ e teu ativitæ in sciâ ræ.</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">Cookie che tracian inter-scito</string>
<!-- Description of cross-site tracking cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_description">Blòcca i cookie che e ræ de publicitæ e soçietæ de analixi dæti deuvian pe arecheugge i dæti de navegaçion quande ti passi da un scito a l\atro.</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Cryptominer</string>
<!-- Description of cryptominers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_description">Inpedisce a di script mascarsoin de acede a-o dispoxitivo pe fâ da moneta digitale.</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Fingerprinter</string>
<!-- Description of fingerprinters that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_description">Blòcca l\'acugeita dæti identificativi univochi in sciô dispoxitivo e che peuan ese deuviæ pe traciate.</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Contegnui che tracian</string>
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_description">Blòcca o caregamento de anonçi esterni, video e atri contegnui che gh\'an do còdice traciante. O peu infloî in sce quarche fonçion do scito.</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">Tutte e vòtte che-o scuddo o l\'é cô de viovetta, %s o l\'à blocou di elementi che tracian do scito. Tocca pe avei ciù informaçioin.</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">E proteçioin en ative pe sto scito</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
<string name="etp_panel_off">E proteçioin no en ative pe sto scito</string>
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
<string name="enhanced_tracking_protection_exceptions">A proteçion anti-traciamento avansâ a l\'é asmortâ pe sti sciti</string>
<!-- Content description (not visible, for screen readers etc.): Navigate
back from ETP details (Ex: Tracking content) -->
<string name="etp_back_button_content_description">Vanni inderæ</string>
@ -1077,6 +1187,9 @@
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Nomme scorsaieu</string>
<!-- Describes the add to homescreen functionality -->
<string name="add_to_homescreen_description">Ti peu azoze con facilitæ sto scito a-a teu Pagina prinçipâ pe aveighe acesso instantaneo e navegâ veloce co-ina esperiesa scimile a \'n app.</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Acessi e poule segrete</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
@ -1099,10 +1212,16 @@
<string name="preferences_passwords_sync_logins_sign_in">Acedi a Sync</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">Acessi sarvæ</string>
<!-- Description of empty list of saved passwords. Placeholder is replaced with app name. -->
<string name="preferences_passwords_saved_logins_description_empty_text">I acessi che ti sarvi ò ti scincronizzi saian mostræ chi.</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Ciù informaçioin in sce Sync.</string>
<!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Eceçioin</string>
<!-- Empty description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description_empty">I acessi e poule segrete che no en sarvæ saian mostræ chi.</string>
<!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">I acessi e poule segrete no saian sarvæ pe sti sciti.</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Çerca inti acessi</string>
<!-- Option to sort logins list A-Z, alphabetically -->
@ -1117,9 +1236,15 @@
<string name="preferences_passwords_saved_logins_password">Poula segreta</string>
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin">Scrivi torna o PIN</string>
<!-- Message displayed in security prompt to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin_description">Sblocca pe vedde i acessi sarvæ</string>
<!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning">Sta conescion a no l\'é segua. Te peuan arobâ i teu acessi.</string>
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning_learn_more">Atre informaçioin</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) -->
<string name="logins_doorhanger_save">Ti veu che %s o sarve sto acesso?</string>
<!-- Positive confirmation that Fenix should save the new or updated login -->
<string name="logins_doorhanger_save_confirmation">Sarva</string>
<!-- Negative confirmation that Fenix should not save the new or updated login -->
@ -1140,6 +1265,12 @@
<string name="saved_login_reveal_password">Mostra poula segreta</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">Ascondi poula segreta</string>
<!-- Message displayed in biometric prompt displayed for authentication before allowing users to view their logins -->
<string name="logins_biometric_prompt_message">Sblocca pe vedde i acessi sarvæ</string>
<!-- Title of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_title">Protezzi i acessi e poule segrete</string>
<!-- Message of warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_message">Inpòsta \'na sequensa de blòcco, PIN ò poula segreta pe protezze i teu acessi e poule segrte sarvæ da ese arobæ da quarchedun ch\'o te piggia o dispoxitivo.</string>
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">Dòppo</string>
<!-- Positive button to send users to set up a pin of warning dialog if users have no device authentication set up -->
@ -1148,11 +1279,20 @@
<string name="logins_biometric_prompt_message_pin">Sblòcca o teu dispoxitivo</string>
<!-- Title for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom">Zoon inti tutti i sciti</string>
<!-- Summary for Accessibility Force Enable Zoom Preference -->
<string name="preference_accessibility_force_enable_zoom_summary">Ativa pe consentî a fonçion pitta e zoom, in sci sciti che l\'inpediscian ascì.</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">Nomme (A-Z)</string>
<!-- Saved logins sorting strategy menu item -by last used- (if selected, it will sort saved logins by last used) -->
<string name="saved_logins_sort_strategy_last_used">Urtimo deuviou</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">Òrdina menû di acessi</string>
<!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">Azonzi motô de riçerca</string>
<!-- Title of the Edit search engine screen -->
<string name="search_engine_edit_custom_search_engine_title">Cangia motô de riçerca</string>
<!-- Content description (not visible, for screen readers etc.): Title for the button to add a search engine in the action bar -->
<string name="search_engine_add_button_content_description">Azonzi</string>
<!-- Content description (not visible, for screen readers etc.): Title for the button to save a search engine in the action bar -->
@ -1168,12 +1308,26 @@
<string name="search_add_custom_engine_name_hint">Nomme</string>
<!-- Placeholder text shown in the Search String TextField before a user enters text -->
<string name="search_add_custom_engine_search_string_hint">Stringa de riçerca da deuviâ</string>
<!-- Description text for the Search String TextField. The %s is part of the string -->
<string name="search_add_custom_engine_search_string_example">Cangia a ciave de riçerca con “%s”. Ezenpio:\nhttps://www.google.com/search?q=%s</string>
<!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">Atre informaçioin</string>
<!-- Accessibility description for the form in which details about the custom search engine are entered -->
<string name="search_add_custom_engine_form_description">Informaçioin in sciô motô de riçerca personalizou</string>
<!-- Accessibility description for the 'Learn more' link -->
<string name="search_add_custom_engine_learn_more_description">Colegamento pe atre informaçioin</string>
<!-- Text shown when a user leaves the name field empty -->
<string name="search_add_custom_engine_error_empty_name">Scrivi o nomme do motô de riçerca</string>
<!-- Text shown when a user tries to add a search engine that already exists -->
<string name="search_add_custom_engine_error_existing_name">L\'existe zà \'n motô de riçerca co-o nomme “%s”.</string>
<!-- Text shown when a user leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">Scrivi \'na stringa de riçerca</string>
<!-- Text shown when a user leaves out the required template string -->
<string name="search_add_custom_engine_error_missing_template">Contròlla che a stringa de riçerca a segge into formou d\'ezenpio.</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">Erô de conescion a “%s”</string>
<!-- Text shown when a user creates a new search engine -->
<string name="search_add_custom_engine_success_message">%s creou</string>
<!-- Text shown when a user successfully edits a custom search engine -->
@ -1181,10 +1335,16 @@
<!-- Text shown when a user successfully deletes a custom search engine -->
<string name="search_delete_search_engine_success_message">%s scancelou</string>
<!-- Title text shown for the migration screen to the new browser. Placeholder replaced with app name -->
<string name="migration_title">Benvegnuo into %s tutto neuvo</string>
<!-- Description text followed by a list of things migrating (e.g. Bookmarks, History). Placeholder replaced with app name-->
<string name="migration_description">O t\'aspeta un navegatô riprogetou conpletamente, con de megio prestaçioin e fonçioin pe agiutate in linia.\n\nPe piaxei aspeta tanto che agiornemmo %s con</string>
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">Agiornamento de %s…</string>
<!-- Text on the enabled button. Placeholder replaced with app name-->
<string name="migration_update_app_button">Xeua %s</string>
<!-- Accessibility description text for a completed migration item -->
<string name="migration_icon_description">Migraçion conpletâ</string>
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
<string name="migration_text_passwords">Poule segrete</string>
@ -1201,6 +1361,12 @@
<string name="quick_settings_sheet_secure_connection">Conescion segua</string>
<!-- Label that indicates a site is using a insecure connection -->
<string name="quick_settings_sheet_insecure_connection">Conescion no segua</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for all sites-->
<string name="confirm_clear_permissions_on_all_sites">Te seguo de scancelâ tutti i permissi de tutti i sciti?</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for a site-->
<string name="confirm_clear_permissions_site">Te seguo de scancelâ tutti i permissi pe sto scito?</string>
<!-- Confirmation message for a dialog confirming if the user wants to set default value a permission for a site-->
<string name="confirm_clear_permission_site">Te seguo de scancelâ sto permisso pe sto scito?</string>
<!-- label shown when there are not site exceptions to show in the site exception settings -->
<string name="no_site_exceptions">Nisciunn-a eceçion pe-i sciti</string>
<!-- Label for the Pocket default top site -->
@ -1222,6 +1388,12 @@
<string name="dialog_delete_positive">Scancella</string>
<!-- The saved login options menu description. -->
<string name="login_options_menu">Inpostaçioin acessi</string>
<!-- The editable text field for a login's web address. -->
<string name="saved_login_hostname_description">O canpo de testo cangiabile pe l\'indirisso de acesso.</string>
<!-- The editable text field for a login's username. -->
<string name="saved_login_username_description">O canpo de testo cangiabile pe-o nomme utente de acesso.</string>
<!-- The editable text field for a login's password. -->
<string name="saved_login_password_description">O canpo de testo cangiabile pe-a poula segreta de acesso.</string>
<!-- The button description to save changes to an edited login. -->
<string name="save_changes_to_login">Sarva i cangiamenti a-i acessi</string>
<!-- The button description to discard changes to an edited login. -->

View File

@ -19,6 +19,11 @@
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">ແທັບສ່ວນຕົວຂອງທ່ານຈະຖືກສະແດງຢູ່ບ່ອນນີ້.</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">ເປີດ 1 ແຖບ. ແຕະເພື່ອປ່ຽນແທັບ.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">ເປີດ %1$s ແຖບ. ແຕະເພື່ອປ່ຽນແທັບ.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s ແມ່ນຜະລິດຂື້ນໂດຍ Mozilla.</string>
@ -96,6 +101,8 @@
<string name="browser_menu_private_tab">ແທັບສ່ວນຕົວ</string>
<!-- Browser menu button that creates a new tab -->
<string name="browser_menu_new_tab">ແທັບໃຫມ່</string>
<!-- Browser menu button that saves the current tab to a collection -->
<string name="browser_menu_save_to_collection_2">ບັນທຶກໄປໄວ້ບ່ອນເກັບສະສົມ</string>
<!-- Browser menu button that open a share menu to share the current site -->
<string name="browser_menu_share">ແບ່ງປັນ</string>
<!-- Share menu title, displayed when a user is sharing their current site -->
@ -111,11 +118,17 @@
<string name="browser_menu_powered_by2">ຂັບເຄື່ອນໂດຍ %1$s</string>
<!-- Browser menu button to put the current page in reader mode -->
<string name="browser_menu_read">ມຸມມອງຂອງຜູ້ອ່ານ</string>
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
<string name="browser_menu_read_close">ປິດມຸມມອງຜູ້ອ່ານ</string>
<!-- Browser menu button to open the current page in an external app -->
<string name="browser_menu_open_app_link">ເປີດໃນ App</string>
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
<string name="browser_menu_read_appearance">ຮູບ​ຮ່າງ</string>
<!-- Error message to show when the user tries to access a scheme not
handled by the app (Ex: blob, tel etc) -->
<string name="unknown_scheme_error_message">ບໍ່​ສາ​ມາດ​​ເຊື່ອມ​ຕໍ່ໄດ້ ເນື່ອງຈາກບໍ່ຮູ້ຈັກຮູບແບບ URL</string>
<!-- Locale Settings Fragment -->
<!-- Content description for tick mark on selected language -->
<string name="a11y_selected_locale_content_description">ພາສາທີ່ເລືອກ</string>
@ -143,6 +156,10 @@
<string name="search_suggestions_onboarding_allow_button">ອະນຸຍາດ</string>
<!-- Button in the search suggestions onboarding that does not allow search suggestions in private sessions -->
<string name="search_suggestions_onboarding_do_not_allow_button">ບໍ່ອະນຸຍາດ</string>
<!-- Search suggestion onboarding hint title text -->
<string name="search_suggestions_onboarding_title">ອະນຸຍາດໃຫ້ມີຄຳແນະນຳການຄົ້ນຫາໃນແຊັສຊັນສ່ວນໂຕຫລືບໍ່?</string>
<!-- Search suggestion onboarding hint description text, first parameter is the name of the app defined in app_name (for example: Fenix)-->
<string name="search_suggestions_onboarding_text">%s ຈະແຊລທຸກຢ່າງທີ່ທ່ານພິມໃນແທັບທີ່ຢູ່ກັບເຄືອງມືການຄົ້ນຫາພື້ນຖານຂອງທ່ານ.</string>
<!-- Search suggestion onboarding hint Learn more link text -->
<string name="search_suggestions_onboarding_learn_more_link">ຮຽນຮູ້ເພີ່ມເຕີມ</string>
@ -193,6 +210,8 @@
<string name="preferences_category_privacy">ຄວາມເປັນສ່ວນຕົວ</string>
<!-- Preference category for privacy and security settings -->
<string name="preferences_category_privacy_security">ຄວາມເປັນສ່ວນຕົວ ແລະ ຄວາມປອດໄພ</string>
<!-- Preference for advanced site permissions -->
<string name="preferences_site_permissions">ສິດທິໃນເວັບໄຊທ</string>
<!-- Preference for private browsing options -->
<string name="preferences_private_browsing_options">ການທ່ອງເວັບແບບສ່ວນຕົວ</string>
<!-- Preference for opening links in a private tab-->
@ -203,6 +222,12 @@
<string name="preferences_add_private_browsing_shortcut">ເພີ່ມທາງລັດການທ່ອງເວັບແບບສ່ວນຕົວ</string>
<!-- Preference for accessibility -->
<string name="preferences_accessibility">ສິ່ງອຳນວຍຄວາມສະດວກ</string>
<!-- Preference to override the Firefox Account server -->
<string name="preferences_override_fxa_server">ດັດແກ້ບັນຊີເຊີເວີ Firefox</string>
<!-- Preference to override the Sync token server -->
<string name="preferences_override_sync_tokenserver">ກຳຫນົດເຊີເວີ Sync</string>
<!-- Toast shown after updating the FxA/Sync server override preferences -->
<string name="toast_override_fxa_sync_server_done">ບັນຊີ/Sync ຂອງ Firefox ໄດ້ຮັບການດັດແກ້ແລ້ວ. ອອກຈາກແອັບພລິເຄຊັນເພື່ອນຳໃຊ້ການດັດແກ້…</string>
<!-- Preference category for account information -->
<string name="preferences_category_account">ບັນຊີ</string>
<!-- Preference shown on banner to sign into account -->
@ -345,9 +370,14 @@
<!-- Preference switch for Mozilla location service -->
<string name="preferences_mozilla_location_service">ການໃຫ້ບໍລິການຕຳແຫນ່ງທີ່ຢູ່ຂອງ Mozilla</string>
<!-- Preference switch for app health report. The first parameter is the name of the application (For example: Fenix) -->
<string name="preferences_fenix_health_report">%s ລາຍງານສະພາບການນຳໃຊ້</string>
<!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">ເປີດ Sync</string>
<!-- Preference for pairing -->
<string name="preferences_sync_pair">ສະແກນລະຫັດການຈັບຄູ່ໃນ Firefox ເດັສກທັອບ</string>
<!-- Preference for account login -->
<string name="preferences_sync_sign_in">ເຂົ້າສູ່ລະບົບ</string>
<!-- Preference for reconnecting to FxA sync -->
@ -375,6 +405,9 @@
<!-- Preference for using dark theme -->
<string name="preference_dark_theme">ເຂັ້ມ</string>
<!-- Preference for using using dark or light theme automatically set by battery -->
<string name="preference_auto_battery_theme">ຕັ້ງໂດຍຕົວປະຢັດແບດເຕີລີ່</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">ເຊດຊັນ</string>
@ -422,6 +455,8 @@
<string name="tab_drawer_fab_content">ສ່ວນຕົວ</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">ເປີດແທັບ</string>
<!-- Text shown in the menu for saving tabs to a collection -->
<string name="tab_tray_menu_item_save">ບັນທຶກໄປໄວ້ບ່ອນເກັບສະສົມ</string>
<!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">ແບ່ງປັນແທັບທັງໝົດ</string>
<!-- Text shown in the menu for closing all tabs -->
@ -430,6 +465,10 @@
<string name="tab_tray_menu_open_new_tab">ແທັບໃຫມ່</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">ໄປຫນ້າທຳອິດ</string>
<!-- Shortcut action to toggle private mode -->
<string name="tab_tray_menu_toggle">ຮູບແບບການສະຫຼັບແທັບ</string>
<!-- Content description (not visible, for screen readers etc.): Removes tab from collection button. Removes the selected tab from collection when pressed -->
<string name="remove_tab_from_collection">ລຶບແຖບອອກຈາກບ່ອນເກັບສະສົມ</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
<string name="close_tab">ປິດແທັບ</string>
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
@ -440,6 +479,8 @@
<string name="tabs_menu_close_all_tabs">ປິດແທັບທັງຫມົດ</string>
<!-- Open tabs menu item to share all tabs -->
<string name="tabs_menu_share_tabs">ແບ່ງປັນແທັບ</string>
<!-- Open tabs menu item to save tabs to collection -->
<string name="tabs_menu_save_to_collection1">ບັນທຶກແຖບໄປໄວ້ໃນບ່ອນເກັບສະສົມ</string>
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
<string name="tab_menu">ເມນູແທັບ</string>
<!-- Tab menu item to share the tab -->
@ -451,6 +492,14 @@
<!-- Button in the current session menu. Opens the share menu when pressed -->
<string name="current_session_share">ແບ່ງປັນ</string>
<!-- Content description (not visible, for screen readers etc.): Title icon for current session menu -->
<string name="current_session_image">ແຊັສຊັນຮູບພາບຕອນນີ້</string>
<!-- Button to save the current set of tabs into a collection -->
<string name="save_to_collection">ບັນທຶກໄປໄວ້ບ່ອນເກັບສະສົມ</string>
<!-- Text for the menu button to delete a collection -->
<string name="collection_delete">ລຶບບ່ອນເກັບສະສົມ</string>
<!-- Text for the menu button to rename a collection -->
<string name="collection_rename">ປ່ຽນຊື່ບ່ອນເກັບສະສົມ</string>
<!-- Text for the button to open tabs of the selected collection -->
<string name="collection_open_tabs">ເປີດແທັບ</string>
<!-- Text for the menu button to remove a top site -->
@ -511,6 +560,12 @@
<!-- Restore tab button text on the tab crash page -->
<string name="tab_crash_restore">ກູ້ຄືນແທັບ</string>
<!-- Content Description for session item menu button -->
<string name="content_description_session_menu">ຕົວເລືອກຂອງແຊັສຊັນ</string>
<!-- Content Description for session item share button -->
<string name="content_description_session_share">ແບ່ງປັນແຊັສຊັນ</string>
<!-- Bookmarks -->
<!-- Content description for bookmarks library menu -->
<string name="bookmark_menu_content_description">ເມນູບຸກມາກ</string>
@ -587,4 +642,226 @@
<!-- Button label that take the user to the Android App setting -->
<string name="phone_feature_go_to_settings">ໄປທີ່ການຕັ້ງຄ່າ</string>
<!-- Content description (not visible, for screen readers etc.): Quick settings sheet
to give users access to site specific information / settings. For example:
Secure settings status and a button to modify site permissions -->
<string name="quick_settings_sheet">ອອກຈາກການຕັ້ງຄ່າ sheet</string>
<!-- Label that indicates that this option it the recommended one -->
<string name="phone_feature_recommended">ແນະນຳ</string>
<!-- button that allows editing site permissions settings -->
<string name="quick_settings_sheet_manage_site_permissions">ຈັດການສິດໃນເວັບໄຊທ</string>
<!-- Button label for clearing all the information of site permissions-->
<string name="clear_permissions">ລົບລ້າງສິດ</string>
<!-- Button label for clearing a site permission-->
<string name="clear_permission">ລົບລ້າງສິດ</string>
<!-- Button label for clearing all the information on all sites-->
<string name="clear_permissions_on_all_sites">ລົບລ້າງສິດສຳລັບທຸກເວັບໄຊທ</string>
<!-- Preference for altering video and audio autoplay for all websites -->
<string name="preference_browser_feature_autoplay">ເປີດອັດຕະໂນມັດ</string>
<!-- Preference for altering the camera access for all websites -->
<string name="preference_phone_feature_camera">ກ້ອງຖ່າຍຮູບ</string>
<!-- Preference for altering the microphone access for all websites -->
<string name="preference_phone_feature_microphone">ໄມໂຄຣໂຟນ</string>
<!-- Preference for altering the location access for all websites -->
<string name="preference_phone_feature_location">ຕໍາ​ແໜ່​ງທີ່​ຕັ້ງ</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">ການແຈ້ງເຕືອນ</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">ຖາມເພື່ອອະນຸຍາດ</string>
<!-- Label that indicates that a permission must be blocked -->
<string name="preference_option_phone_feature_blocked">ບັອກແລ້ວ</string>
<!-- Label that indicates that a permission must be allowed -->
<string name="preference_option_phone_feature_allowed">ອະນຸຍາດແລ້ວ</string>
<!--Label that indicates a permission is by the Android OS-->
<string name="phone_feature_blocked_by_android">ຖືກບລັອກໂດຍ Android</string>
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
<string name="preference_exceptions">ຂໍ້ຍົກເວັ້ນ</string>
<!-- Summary of tracking protection preference if tracking protection is set to on -->
<string name="tracking_protection_on">ເປີດ</string>
<!-- Summary of tracking protection preference if tracking protection is set to off -->
<string name="tracking_protection_off">ປິດ</string>
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">ອະນຸຍາດໃຫ້ເປີດສຽງ ແລະ ວີດີໂອ</string>
<!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only2">ບັອກສຽງ ແລະ ວິດີໂອໃນການນໍາໃຊ້ຂໍ້ມູນອິນເຕີເນັດໃນໂທລະສັບມືຖືເທົ່ານັ້ນ</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">ສຽງ ແລະ ວິດີໂອຈະເປີດໃນ Wi-Fi</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio2">ບັອກສຽງເທົ່ານັ້ນ</string>
<!-- Label that indicates that all video and audio autoplay is blocked -->
<string name="preference_option_autoplay_blocked3">ບັອກສຽງ ແລະ ວີດີໂອ</string>
<!-- Summary of delete browsing data on quit preference if it is set to on -->
<string name="delete_browsing_data_quit_on">ເປີດ</string>
<!-- Summary of delete browsing data on quit preference if it is set to off -->
<string name="delete_browsing_data_quit_off">ປິດ</string>
<!-- Collections -->
<!-- Collections header on home fragment -->
<string name="collections_header">ການສະສົມ</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">ເມນູການສະສົມ</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">ເກັບກຳສິ່ງທີ່ສຳຄັນສຳລັບທ່ານ</string>
<!-- Label to describe what collections are to a new user without any collections -->
<string name="no_collections_description1">ເອົາການຄົ້ນຫາ, ເວັບໄຊທ ແລະ ແທັບທີ່ຄ້າຍຄືກັນມາໄວ້ໃນກຸ່ມດຽວກັນ ເພື່ອເຮັດໃຫ້ສາມາດເຂົ້າໄດ້ງ່າຍໃນພາຍຫລັງ.</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">ເລືອກແທັບ</string>
<!-- Title for the "select collection" step of the collection creator -->
<string name="create_collection_select_collection">ເລືອກການສະສົມ</string>
<!-- Title for the "name collection" step of the collection creator -->
<string name="create_collection_name_collection">ຊື່ການສະສົມ</string>
<!-- Button to add new collection for the "select collection" step of the collection creator -->
<string name="create_collection_add_new_collection">ເພີ່ມການສະສົມໃຫມ່</string>
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_select_all">ເລືອກທັ້ງຫມົດ</string>
<!-- Button to deselect all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_deselect_all">ບໍ່ເລືອກທັງຫມົດ</string>
<!-- Text to prompt users to select the tabs to save in the "select tabs" step of the collection creator -->
<string name="create_collection_save_to_collection_empty">ເລືອກແທັບເພື່ອບັນທຶກ</string>
<!-- Text to show users how many tabs they have selected in the "select tabs" step of the collection creator.
%d is a placeholder for the number of tabs selected. -->
<string name="create_collection_save_to_collection_tabs_selected">%d ແທັບທີ່ເລືອກແລ້ວ</string>
<!-- Text to show users they have one tab selected in the "select tabs" step of the collection creator.
%d is a placeholder for the number of tabs selected. -->
<string name="create_collection_save_to_collection_tab_selected">%d ແທັບທີ່ເລືອກແລ້ວ</string>
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
<string name="create_collection_tabs_saved">ບັນທຶກແທັບແລ້ວ!</string>
<!-- Text shown in snackbar when one tab has been saved in a collection -->
<string name="create_collection_tab_saved">ບັນທຶກແທັບແລ້ວ!</string>
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
<string name="create_collection_close">ປິດ</string>
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
<string name="create_collection_save">ບັນທຶກ</string>
<!-- Snackbar action to view the collection the user just created or updated -->
<string name="create_collection_view">ມູມມອງ</string>
<!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections-->
<string name="create_collection_default_name">%d ການສະສົມ</string>
<!-- Share -->
<!-- Share screen header -->
<string name="share_header">ສົ່ງ ແລະ ແບ່ງປັນ</string>
<!-- Share screen header -->
<string name="share_header_2">ແບ່ງປັນ</string>
<!-- Content description (not visible, for screen readers etc.):
"Share" button. Opens the share menu when pressed. -->
<string name="share_button_content_description">ແບ່ງປັນ</string>
<!-- Sub-header in the dialog to share a link to another app -->
<string name="share_link_subheader">ແບ່ງປັນລີ້ງ</string>
<!-- Sub-header in the dialog to share a link to another sync device -->
<string name="share_device_subheader">ສົ່ງໄປຫາອຸປະກອນ</string>
<!-- Sub-header in the dialog to share a link to an app from the full list -->
<string name="share_link_all_apps_subheader">ການກະທຳທັງຫມົດ</string>
<!-- Sub-header in the dialog to share a link to an app from the most-recent sorted list -->
<string name="share_link_recent_apps_subheader">ທີ່ຫາກໍນຳໃຊ້ໄປ</string>
<!-- An option from the share dialog to sign into sync -->
<string name="sync_sign_in">ລົງຊື່ເຂົ້າໃຊ້ເພື່ອ Sync</string>
<!-- An option from the share dialog to send link to all other sync devices -->
<string name="sync_send_to_all">ສົ່ງໄປຫາທຸກອຸປະກອນ</string>
<!-- An option from the share dialog to reconnect to sync -->
<string name="sync_reconnect">ເຊື່ອມຕໍ່ຄືນໃຫມ່ເພື່ອ Sync</string>
<!-- Text displayed when sync is offline and cannot be accessed -->
<string name="sync_offline">ອອບລາຍ</string>
<!-- An option to connect additional devices -->
<string name="sync_connect_device">ເຊື່ອມຕໍ່ກັບອຸປະກອນອື່ນ</string>
<!-- The dialog text shown when additional devices are not available -->
<string name="sync_connect_device_dialog">ລົງຊື່ເຂົ້າໃຊ້ Firefox ຢ່າງນ້ອຍໃນ 1 ເຄື່ອງເພື່ອສົ່ງແທັບ</string>
<!-- Share error message -->
<string name="share_error_snackbar">ບໍ່ສາມາດແບ່ງປັນກັບແອັບນີ້ໄດ້</string>
<!-- Add new device screen title -->
<string name="sync_add_new_device_title">ສົ່ງໄປຫາອຸປະກອນ</string>
<!-- Text for the warning message on the Add new device screen -->
<string name="sync_add_new_device_message">ບໍ່ມີອຸປະກອນເຊື່ອມຕໍ່</string>
<!-- Text for the button to learn about sending tabs -->
<string name="sync_add_new_device_learn_button">ຮຽນຮູ້ກ່ຽວກັບການສົ່ງແທັບ…</string>
<!-- Text for the button to connect another device -->
<string name="sync_add_new_device_connect_button">ເຊື່ອມຕໍ່ກັບອຸປະກອນອື່ນ…</string>
<!-- Notifications -->
<!-- The user visible name of the "notification channel" (Android 8+ feature) for the ongoing notification shown while a browsing session is active. -->
<string name="notification_pbm_channel_name">ເຊສຊັນການທ່ອງເວັບແບບສ່ວນຕົວ</string>
<!-- Text shown in the notification that pops up to remind the user that a private browsing session is active. -->
<string name="notification_pbm_delete_text">ລຶບແທັບສ່ວນຕົວ</string>
<!-- Text shown in the notification that pops up to remind the user that a private browsing session is active. -->
<string name="notification_pbm_delete_text_2">ປິດແທັບສ່ວນຕົວ</string>
<!-- Notification action to open Fenix and resume the current browsing session. -->
<string name="notification_pbm_action_open">ເປີດ</string>
<!-- Notification action to delete all current private browsing sessions AND switch to Fenix (bring it to the foreground) -->
<string name="notification_pbm_action_delete_and_open">ລົບ ແລະ ເປີດ</string>
<!-- Name of the "Powered by Fenix" notification channel. Displayed in the "App notifications" system settings for the app -->
<string name="notification_powered_by_channel_name">ຂັບເຄື່ອນໂດຍ</string>
<!-- Text shown in snackbar when user deletes a collection -->
<string name="snackbar_collection_deleted">ລົບການສະສົມແລ້ວ</string>
<!-- Text shown in snackbar when user renames a collection -->
<string name="snackbar_collection_renamed">ປ່ຽນຊື່ການສະສົມແລ້ວ</string>
<!-- Text shown in snackbar when user deletes a tab -->
<string name="snackbar_tab_deleted">ລົບແທັບແລ້ວ</string>
<!-- Text shown in snackbar when user deletes all tabs -->
<string name="snackbar_tabs_deleted">ລົບແທັບແລ້ວ</string>
<!-- Text shown in snackbar when user closes a tab -->
<string name="snackbar_tab_closed">ປິດແທັບແລ້ວ</string>
<!-- Text shown in snackbar when user closes all tabs -->
<string name="snackbar_tabs_closed">ປິດແທັບແລ້ວ</string>
<!-- Text shown in snackbar when user adds a site to top sites -->
<string name="snackbar_added_to_top_sites">ເພີ່ມເຂົ້າໄປໃນເວັບຍອດນິຍົມແລ້ວ!</string>
<!-- Text shown in snackbar when user closes a private tab -->
<string name="snackbar_private_tab_closed">ປິດແທັບສ່ວນໂຕແລ້ວ</string>
<!-- Text shown in snackbar when user closes all private tabs -->
<string name="snackbar_private_tabs_closed">ປິດແທັບສ່ວນໂຕແລ້ວ</string>
<!-- Text shown in snackbar when user deletes all private tabs -->
<string name="snackbar_private_tabs_deleted">ລົບແທັບສ່ວນໂຕແລ້ວ</string>
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
<string name="snackbar_deleted_undo">ເອົາກັບຄືນ</string>
<!-- Text shown in snackbar when user removes a top site -->
<string name="snackbar_top_site_removed">ລຶບເວັບໄຊທແລ້ວ</string>
<!-- Text for action to undo deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_undo">ເອົາກັບຄືນ</string>
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_confirm">ຢືນຢັນ​</string>
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it
First parameter is the name of the app, second parameter is the URL or text scanned-->
<string name="qr_scanner_confirmation_dialog_message">ອະນຸຍາດໃຫ້ %1$s ເພື່ອເປີດ %2$s</string>
<!-- QR code scanner prompt dialog positive option to allow navigation to scanned link -->
<string name="qr_scanner_dialog_positive">ອະນຸຍາດ</string>
<!-- QR code scanner prompt dialog positive option to deny navigation to scanned link -->
<string name="qr_scanner_dialog_negative">ປະຕິເສດ</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">ທ່ານແນ່ໃຈແລ້ວບໍ່ວ່າທ່ານຕ້ອງການລຶບ %1$s?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection -->
<string name="tab_collection_dialog_positive">ລຶບ</string>
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
<string name="tab_collection_dialog_negative">ຍົກເລີກ</string>
<!-- Text displayed in a notification when the user enters full screen mode -->
<string name="full_screen_notification">ເຂົ້າສູ່ໂມດເຕັມຫນ້າຈໍ</string>
<!-- Message for copying the URL via long press on the toolbar -->
<string name="url_copied">ສຳເນົາ URL ແລ້ວ</string>
<!-- Title for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_font_size_title">ຂະໜາດຟັອນ</string>
<!-- Title for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_2">ການປັບຂະໜາດຟັອນແບບອັດຕະໂນມັດ</string>
<!-- Title for the Delete browsing data preference -->
<string name="preferences_delete_browsing_data">ລຶບຂໍ້ມູນການທ່ອງເວັບ</string>
<!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">ເປີດແທັບ</string>
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
<string name="preferences_delete_browsing_data_tabs_subtitle">ແທັບ %d</string>
<!-- Title for the data and history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_data_title">ປະຫວັດການທ່ອງເວັບ ແລະ ຂໍ້ມູນເວັບໄຊທ</string>
<!-- Subtitle for the data and history items in delete browsing data, parameter will be replaced with the
number of history items the user has -->
<string name="preferences_delete_browsing_data_browsing_data_subtitle">ທີ່ຢູ່ %d</string>
<!-- Title for history items in Delete browsing data -->
<string name="preferences_delete_browsing_data_browsing_history_title">ປະຫວັດ</string>
<!-- Subtitle for the history items in delete browsing data, parameter will be replaced with the
number of history pages the user has -->
<string name="preferences_delete_browsing_data_browsing_history_subtitle">ຫນ້າ %d</string>
<!-- Title for the cookies item in Delete browsing data -->
<string name="preferences_delete_browsing_data_cookies">ຄຸກກີ້</string>
</resources>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<resources>
<style name="BottomSheet" parent="BottomSheetBase">
<item name="android:windowLightStatusBar">false</item>
<!-- Style the navigation bar -->
<item name="android:navigationBarColor">?foundation</item>
</style>
<style name="TabTrayDialogStyle" parent="TabTrayDialogStyleBase">
<item name="android:windowLightStatusBar">false</item>
<!-- Style the navigation bar -->
<item name="android:navigationBarColor">@color/foundation_normal_theme</item>
</style>
</resources>

View File

@ -14,14 +14,32 @@
<!-- Placeholder text shown in the search bar before a user enters text -->
<string name="search_hint">Recèrca o adreça</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s es produch per Mozilla.</string>
<!-- Private Browsing -->
<!-- Title for private session option -->
<string name="private_browsing_title">Sètz en una session privada</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 escafa vòstre istoric de recèrcas e de navegacion quand quitatz laplicacion o tampatz totes los onglets e fenèstras de navegacion privada. Malgrat quaquò vos faga pas venir anonim pels sites web o vòstre provesidor Internet, fa venir mai simple de gardar privat çò que fasètz en linha pels autres quutilizan aqueste ordenador.</string>
<string name="private_browsing_common_myths">Mites màgers de la navegacion privada</string>
<!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Suprimir la session</string>
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
<!-- Text for the main message -->
<string name="cfr_message">Apondre un acorchi per dobrir donglets privats de lecran dacuèlh estant.</string>
<!-- Text for the positive button -->
<string name="cfr_pos_button_text">Apondre un acorchi</string>
<!-- Text for the negative button -->
<string name="cfr_neg_button_text">Non, mercé</string>
<!-- Text for the positive button -->
<string name="search_widget_cfr_pos_button_text">Apondre lo widget</string>
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Pas ara</string>
<!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Onglet novèl</string>
@ -29,6 +47,9 @@
<!-- Shortcut action to open new private tab -->
<string name="home_screen_shortcut_open_new_private_tab_2">Novèl onglet de nav. privada</string>
<!-- Heading for the Top Sites block -->
<string name="home_screen_top_sites_heading">Mai visitats</string>
<!-- Browser Fragment -->
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
<string name="browser_tabs_button">Onglets dobèrts</string>
@ -38,6 +59,8 @@
<string name="browser_menu_forward">Pagina seguenta</string>
<!-- Content description (not visible, for screen readers etc.): Refresh current website -->
<string name="browser_menu_refresh">Actualizar</string>
<!-- Content description (not visible, for screen readers etc.): Stop loading current website -->
<string name="browser_menu_stop">Arrestar</string>
<!-- Content description (not visible, for screen readers etc.): Bookmark the current page -->
<string name="browser_menu_bookmark">Marcapagina</string>
<!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page -->
@ -58,12 +81,16 @@
<string name="browser_menu_add_to_homescreen">Apondre a lecran dacuèlh</string>
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">Installar</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Onglets sincronizats</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Recercar dins la pagina</string>
<!-- Browser menu button that creates a private tab -->
<string name="browser_menu_private_tab">Onglet privat</string>
<!-- Browser menu button that creates a new tab -->
<string name="browser_menu_new_tab">Onglet novèl</string>
<!-- Browser menu button that saves the current tab to a collection -->
<string name="browser_menu_save_to_collection_2">Salvar a la colleccion</string>
<!-- Browser menu button that open a share menu to share the current site -->
<string name="browser_menu_share">Partejar</string>
<!-- Share menu title, displayed when a user is sharing their current site -->
@ -78,6 +105,12 @@
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_powered_by2">Fonciona gràcia a %1$s</string>
<!-- Browser menu button to put the current page in reader mode -->
<string name="browser_menu_read">Mòde lectura</string>
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
<string name="browser_menu_read_close">Tampar la vista de lectura</string>
<!-- Browser menu button to open the current page in an external app -->
<string name="browser_menu_open_app_link">Dobrir amb laplicacion</string>
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
<string name="browser_menu_read_appearance">Aparéncia</string>
@ -91,8 +124,13 @@
<!-- Placeholder text shown in the search bar before a user enters text -->
<string name="locale_search_hint">Cercar una lenga</string>
<!-- Search Fragment -->
<!-- Button in the search view that lets a user search by scanning a QR code -->
<string name="search_scan_button">Escanerizar</string>
<!-- Button in the search view that lets a user search by using a shortcut -->
<string name="search_shortcuts_button">Acorchis</string>
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
<string name="search_shortcuts_engine_settings">Paramètres del motor de recèrca</string>
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
<string name="search_shortcuts_search_with">Recercar amb</string>
<!-- Header displayed when selecting a shortcut search engine -->
@ -103,6 +141,8 @@
<string name="search_suggestions_onboarding_do_not_allow_button">Autorizar pas</string>
<!-- Search suggestion onboarding hint title text -->
<string name="search_suggestions_onboarding_title">Autorizar las suggestions de recèrca en navegacion privada?</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 enviarà tot çò que picatz dins la barra dadreça al motor de recèrca</string>
<!-- Search suggestion onboarding hint Learn more link text -->
<string name="search_suggestions_onboarding_learn_more_link">Ne saber mai</string>
@ -112,6 +152,9 @@
<!-- Text preview for larger sized widgets -->
<string name="search_widget_text_long">Recercar sul web</string>
<!-- Content description (not visible, for screen readers etc.): Voice search -->
<string name="search_widget_voice">Recèrca a la votz</string>
<!-- Preferences -->
<!-- Title for the settings page-->
<string name="settings">Paramètres</string>
@ -129,18 +172,36 @@
<string name="preferences_search_address_bar">Barra dadreça</string>
<!-- Preference linking to help about Fenix -->
<string name="preferences_help">Ajuda</string>
<!-- Preference link to rating Fenix on the Play Store -->
<string name="preferences_rate">Valorar sus Google Play</string>
<!-- Preference for giving feedback about Fenix -->
<string name="preferences_feedback">Donar vòstre vejaire</string>
<!-- Preference linking to about page for Fenix
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="preferences_about">A prepaus de %1$s</string>
<!-- Preference linking to the your rights SUMO page -->
<string name="preferences_your_rights">Vòstres dreches</string>
<!-- Preference for settings related to saved passwords -->
<string name="preferences_passwords">Senhals</string>
<!-- Preference for settings related to saved credit cards and addresses -->
<string name="preferences_credit_cards_addresses">Cartas de crèdit e adreças</string>
<!-- Preference for settings related to changing the default browser -->
<string name="preferences_set_as_default_browser">Definir coma navegador per defaut</string>
<!-- Preference category for advanced settings -->
<string name="preferences_category_advanced">Avançat</string>
<!-- Preference category for privacy settings -->
<string name="preferences_category_privacy">Vida privada</string>
<!-- Preference category for privacy and security settings -->
<string name="preferences_category_privacy_security">Vida privada e seguretat</string>
<!-- Preference for advanced site permissions -->
<string name="preferences_site_permissions">Autorizacions de site</string>
<!-- Preference for private browsing options -->
<string name="preferences_private_browsing_options">Navegacion privada</string>
<!-- Preference for opening links in a private tab-->
<string name="preferences_open_links_in_a_private_tab">Dobrir los ligams en navigacion privada</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Permetre las capturas decran en navegacion privada</string>
<!-- Preference for accessibility -->
<string name="preferences_accessibility">Accessibilitat</string>
<!-- Preference category for account information -->
@ -158,8 +219,22 @@
<!-- Preference for language -->
<string name="preferences_language">Lenga</string>
<!-- Preference for data choices -->
<string name="preferences_data_choices">Donadas collectadas</string>
<!-- Preference for data collection -->
<string name="preferences_data_collection">Culhida de donadas</string>
<!-- Preference linking to the privacy notice -->
<string name="preferences_privacy_link">Politica de confidencialitat</string>
<!-- Preference category for developer tools -->
<string name="developer_tools_category">Aisinas pels desvolopaires</string>
<!-- Preference for developers -->
<string name="preferences_remote_debugging">Desbugatge distant per USB</string>
<!-- Preference title for switch preference to show search suggestions -->
<string name="preferences_show_search_suggestions">Mostrar las suggestions de recèrca</string>
<!-- Preference title for switch preference to show voice search button -->
<string name="preferences_show_voice_search">Mostrar la recèrca a la votz</string>
<!-- Preference title for switch preference to show search suggestions also in private mode -->
<string name="preferences_show_search_suggestions_in_private">Mostrar en navegacion privada</string>
<!-- Preference title for switch preference to suggest bookmarks when searching -->
<string name="preferences_search_bookmarks">Cercar dins los marcapaginas</string>
<!-- Preference for account settings -->
@ -170,6 +245,8 @@
<!-- Account Preferences -->
<!-- Preference for triggering sync -->
<string name="preferences_sync_now">Sincronizar ara</string>
<!-- Preference category for sync -->
<string name="preferences_sync_category">Causir qué sincronizar</string>
<!-- Preference for syncing history -->
<string name="preferences_sync_history">Istoric</string>
<!-- Preference for syncing bookmarks -->
@ -177,6 +254,8 @@
<!-- Preference for syncing logins -->
<string name="preferences_sync_logins">Identificants</string>
<!-- Preference for syncing tabs -->
<string name="preferences_sync_tabs_2">Onglets dobèrts</string>
<!-- Preference for signing out -->
<string name="preferences_sign_out">Desconnexion</string>
<!-- Preference displays and allows changing current FxA device name -->
@ -191,6 +270,11 @@
<!-- Label summary showing never synced -->
<string name="sync_never_synced_summary">Darrièra sincr. : pas jamai</string>
<!-- Text for displaying the default device name.
The first parameter is the application name, the second is the device manufacturer name
and the third is the device model. -->
<string name="default_device_name_2">%1$s sus %2$s %3$s</string>
<!-- Send Tab -->
<!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
<string name="fxa_received_tab_channel_name">Onglets recebuts</string>
@ -208,21 +292,57 @@
<string name="preferences_tracking_protection">Proteccion contra lo seguiment</string>
<!-- Preference for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions">Excepcions</string>
<!-- Preference description for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions_description">La proteccion contra lo seguiment es desactivada per aquestes sites</string>
<!-- Button in Exceptions Preference to turn on tracking protection for all sites (remove all exceptions) -->
<string name="preferences_tracking_protection_exceptions_turn_on_for_all">Activar per totes los sites</string>
<!-- Text displayed when there are no exceptions, with learn more link that brings users to a tracking protection SUMO page -->
<string name="exceptions_empty_message_learn_more_link">Ne saber mai</string>
<!-- Preference switch for Telemetry -->
<string name="preferences_telemetry">Telemetria</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Donadas marketing</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">Experimentacions</string>
<!-- Preference switch for crash reporter -->
<string name="preferences_crash_reporter">Raportador de plantatge</string>
<!-- Preference switch for Mozilla location service -->
<string name="preferences_mozilla_location_service">Servici de localizacion de 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">Rapòrt de santat de %s</string>
<!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">Activar la sincronizacion</string>
<!-- Preference for account login -->
<string name="preferences_sync_sign_in">Connexion</string>
<!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">Suprimir lo compte</string>
<!-- Button to open camera for pairing -->
<string name="pair_open_camera">Dobrir la camèra</string>
<!-- Button to cancel pairing -->
<string name="pair_cancel">Anullar</string>
<!-- Toolbar Preferences -->
<!-- Preference for using top toolbar -->
<string name="preference_top_toolbar">Naut</string>
<!-- Preference for using bottom toolbar -->
<string name="preference_bottom_toolbar">Bas</string>
<!-- Theme Preferences -->
<!-- Preference for using light theme -->
<string name="preference_light_theme">Clar</string>
<!-- Preference for using dark theme -->
<string name="preference_dark_theme">Fosc</string>
<!-- Preference for using using dark or light theme automatically set by battery -->
<string name="preference_auto_battery_theme">Definit per lestalviador de batariá</string>
<!-- Preference for using following device theme -->
<string name="preference_follow_device_theme">Segon lo tèma del periferic</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">Sessions</string>
@ -242,12 +362,16 @@
<string name="library_desktop_bookmarks_unfiled">Autres marcapaginas</string>
<!-- Option in Library to open History page -->
<string name="library_history">Istoric</string>
<!-- Option in Library to open Synced Tabs page -->
<string name="library_synced_tabs">Onglets sincronizats</string>
<!-- Option in Library to open Reading List -->
<string name="library_reading_list">Lista de lectura</string>
<!-- Menu Item Label for Search in Library -->
<string name="library_search">Recercar</string>
<!-- Settings Page Title -->
<string name="settings_title">Paramètres</string>
<!-- Content description (not visible, for screen readers etc.): "Menu icon for items on a history item" -->
<string name="content_description_history_menu">Menú dels elements de listoric</string>
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Tampar</string>
@ -260,10 +384,40 @@
<string name="tabs_header_private_tabs_title">Onglets privats</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_tab">Apondre un onlget</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_private_tab">Dobrir onglet privat</string>
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
<string name="tab_drawer_fab_content">Privat</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">Onglets dobèrts</string>
<!-- Text shown in the menu for saving tabs to a collection -->
<string name="tab_tray_menu_item_save">Salvar a la colleccion</string>
<!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Partejar totes los onglets</string>
<!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Tampar totes los onglets</string>
<!-- Shortcut action to open new tab -->
<string name="tab_tray_menu_open_new_tab">Onglet novèl</string>
<!-- Shortcut action to open the home screen -->
<string name="tab_tray_menu_home">Acuèlh</string>
<!-- Shortcut action to toggle private mode -->
<string name="tab_tray_menu_toggle">Bascular de mòde donglets</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">Suprimir longlet de la colleccion</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
<string name="close_tab">Tampar longlet</string>
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
<string name="close_tab_title">Tampar longlet %s</string>
<!-- Content description (not visible, for screen readers etc.): Opens the open tabs menu when pressed -->
<string name="open_tabs_menu">Dobrir lo menú dels onglets</string>
<!-- Open tabs menu item to close all tabs -->
<string name="tabs_menu_close_all_tabs">Tampar totes los onglets</string>
<!-- Open tabs menu item to share all tabs -->
<string name="tabs_menu_share_tabs">Partejar los onglets</string>
<!-- Open tabs menu item to save tabs to collection -->
<string name="tabs_menu_save_to_collection1">Enregistrar los onglets dins la colleccion</string>
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
<string name="tab_menu">Menú de longlet</string>
<!-- Tab menu item to share the tab -->
<string name="tab_share">Partejar aqueste onglet</string>
<!-- Button in the current session menu. Deletes the session when pressed -->
@ -273,9 +427,20 @@
<!-- Button in the current session menu. Opens the share menu when pressed -->
<string name="current_session_share">Partejar</string>
<!-- Content description (not visible, for screen readers etc.): Title icon for current session menu -->
<string name="current_session_image">Imatge de la session actuala</string>
<!-- Button to save the current set of tabs into a collection -->
<string name="save_to_collection">Enregistrar dins una colleccion</string>
<!-- Text for the menu button to delete a collection -->
<string name="collection_delete">Suprimir la colleccion</string>
<!-- Text for the button to open tabs of the selected collection -->
<string name="collection_open_tabs">Onglets dobèrts</string>
<!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Suprimir</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (mòde privat)</string>
<!-- History -->
<!-- Text for the button to clear all history -->
<string name="history_delete_all">Escafar listoric</string>
@ -287,8 +452,19 @@
<string name="history_delete_single_item_snackbar">%1$s suprimit</string>
<!-- Text for positive action to delete history in deleting history dialog -->
<string name="history_clear_dialog">Escafar</string>
<!-- History overflow menu copy button -->
<string name="history_menu_copy_button">Copiar</string>
<!-- History overflow menu share button -->
<string name="history_menu_share_button">Partejar</string>
<!-- History overflow menu open in new tab button -->
<string name="history_menu_open_in_new_tab_button">Dobrir dins un onglet novèl</string>
<!-- History overflow menu open in private tab button -->
<string name="history_menu_open_in_private_tab_button">Dobrir en navigacion privada</string>
<!-- Text for the button to delete a single history item -->
<string name="history_delete_item">Suprimir</string>
<!-- History multi select title in app bar
The first parameter is the number of bookmarks selected -->
<string name="history_multi_select_title">%1$d seleccionats</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">Suprimir %1$d elements</string>
@ -301,35 +477,114 @@
<!-- Text for the header that groups the history older than the last month -->
<string name="history_older">Mai ancian</string>
<!-- Text shown when no history exists -->
<string name="history_empty_message">Cap distoric</string>
<!-- Crashes -->
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
<string name="tab_crash_title_2">%1$s a pas pogut cargar aquesta pagina.</string>
<!-- Description text displayed on the tab crash page -->
<string name="tab_crash_description">Podètz ensajar de restablir o de tampar longlet seguent.</string>
<!-- Send crash report checkbox text on the tab crash page -->
<string name="tab_crash_send_report">Enviar un senhalament de bug a Mozilla</string>
<!-- Close tab button text on the tab crash page -->
<string name="tab_crash_close">Tampar longlet</string>
<!-- Restore tab button text on the tab crash page -->
<string name="tab_crash_restore">Restablir longlet</string>
<!-- Content Description for session item menu button -->
<string name="content_description_session_menu">Opcions de session</string>
<!-- Content Description for session item share button -->
<string name="content_description_session_share">Partejar la session</string>
<!-- Bookmarks -->
<!-- Content description for bookmarks library menu -->
<string name="bookmark_menu_content_description">Menú dels marcapaginas</string>
<!-- Screen title for editing bookmarks -->
<string name="bookmark_edit">Modificar lo marcapagina</string>
<!-- Screen title for selecting a bookmarks folder -->
<string name="bookmark_select_folder">Seleccionar un dossièr</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
<string name="bookmark_delete_folder_confirmation_dialog">Volètz vertadièrament suprimir aqueste dorsièr ?</string>
<!-- Snackbar title shown after a folder has been deleted. This first parameter is the name of the deleted folder -->
<string name="bookmark_delete_folder_snackbar">%1$s suprimit</string>
<!-- Screen title for adding a bookmarks folder -->
<string name="bookmark_add_folder">Apondre un dossièr</string>
<!-- deprecated: Snackbar title shown after a bookmark has been created. -->
<string name="bookmark_created_snackbar">Marcapagina creat.</string>
<!-- Snackbar title shown after a bookmark has been created. -->
<string name="bookmark_saved_snackbar">Marcapagina apondut!</string>
<!-- Snackbar edit button shown after a bookmark has been created. -->
<string name="edit_bookmark_snackbar_action">MODIFICAR</string>
<!-- Bookmark overflow menu edit button -->
<string name="bookmark_menu_edit_button">Modificar</string>
<!-- Bookmark overflow menu select button -->
<string name="bookmark_menu_select_button">Seleccionar</string>
<!-- Bookmark overflow menu copy button -->
<string name="bookmark_menu_copy_button">Copiar</string>
<!-- Bookmark overflow menu share button -->
<string name="bookmark_menu_share_button">Partejar</string>
<!-- Bookmark overflow menu open in new tab button -->
<string name="bookmark_menu_open_in_new_tab_button">Dobrir dins un onglet novèl</string>
<!-- Bookmark overflow menu open in private tab button -->
<string name="bookmark_menu_open_in_private_tab_button">Dobrir en navigacion privada</string>
<!-- Bookmark overflow menu delete button -->
<string name="bookmark_menu_delete_button">Suprimir</string>
<!--Bookmark overflow menu save button -->
<string name="bookmark_menu_save_button">Enregistrar</string>
<!-- Bookmark multi select title in app bar
The first parameter is the number of bookmarks selected -->
<string name="bookmarks_multi_select_title">%1$d seleccionats</string>
<!-- Bookmark editing screen title -->
<string name="edit_bookmark_fragment_title">Modificar lo marcapagina</string>
<!-- Bookmark folder editing screen title -->
<string name="edit_bookmark_folder_fragment_title">Modificar lo dossièr</string>
<!-- Bookmark URL editing field label -->
<string name="bookmark_url_label">URL</string>
<!-- Bookmark FOLDER editing field label -->
<string name="bookmark_folder_label">DOSSIÈR</string>
<!-- Bookmark NAME editing field label -->
<string name="bookmark_name_label">NOM</string>
<!-- Bookmark add folder screen title -->
<string name="bookmark_add_folder_fragment_label">Apondre un dossièr</string>
<!-- Bookmark select folder screen title -->
<string name="bookmark_select_folder_fragment_label">Seleccionar un dossièr</string>
<!-- Bookmark editing error missing title -->
<string name="bookmark_empty_title_error">Deu aver un títol</string>
<!-- Bookmark editing error missing or improper URL -->
<string name="bookmark_invalid_url_error">URL invalida</string>
<!-- Bookmark screen message for empty bookmarks folder -->
<string name="bookmarks_empty_message">I a pas cap de marcapagina aquí</string>
<!-- Bookmark snackbar message on deletion
The first parameter is the host part of the URL of the bookmark deleted, if any -->
<string name="bookmark_deletion_snackbar_message">%1$s suprimit</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
<string name="bookmark_deletion_multiple_snackbar_message_2">Marcapagina suprimit</string>
<!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">ANULLAR</string>
<!-- Site Permissions -->
<!-- Site permissions preferences header -->
<string name="permissions_header">Permissions</string>
<!-- Button label that take the user to the Android App setting -->
<string name="phone_feature_go_to_settings">Anar als paramètres</string>
<!-- Label that indicates that this option it the recommended one -->
<string name="phone_feature_recommended">Recomandat</string>
<!-- button that allows editing site permissions settings -->
<string name="quick_settings_sheet_manage_site_permissions">Gerir las autorizacions de site</string>
<!-- Button label for clearing all the information of site permissions-->
<string name="clear_permissions">Escafar las permissions</string>
<!-- Button label for clearing a site permission-->
<string name="clear_permission">Escafar la permission</string>
<!-- Button label for clearing all the information on all sites-->
<string name="clear_permissions_on_all_sites">Escafar las permissions de totes los sites</string>
<!-- Preference for altering video and audio autoplay for all websites -->
<string name="preference_browser_feature_autoplay">Lectura automatica</string>
<!-- Preference for altering the camera access for all websites -->
<string name="preference_phone_feature_camera">Camèra</string>
<!-- Preference for altering the microphone access for all websites -->
@ -339,11 +594,49 @@
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Notificacion</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Demandar per autorizar</string>
<!-- Label that indicates that a permission must be blocked -->
<string name="preference_option_phone_feature_blocked">Blocat</string>
<!-- Label that indicates that a permission must be allowed -->
<string name="preference_option_phone_feature_allowed">Autorizat</string>
<!--Label that indicates a permission is by the Android OS-->
<string name="phone_feature_blocked_by_android">Blocat per Android</string>
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
<string name="preference_exceptions">Excepcions</string>
<!-- Summary of tracking protection preference if tracking protection is set to on -->
<string name="tracking_protection_on">Activada</string>
<!-- Summary of tracking protection preference if tracking protection is set to off -->
<string name="tracking_protection_off">Desactivada</string>
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Autorizar làudio e la vidèo</string>
<!-- Collections -->
<!-- Collections header on home fragment -->
<string name="collections_header">Colleccions</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Menú de colleccion</string>
<!-- Title for the "name collection" step of the collection creator -->
<string name="create_collection_name_collection">Nom de la colleccion</string>
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
<string name="create_collection_tabs_saved">Onglets enregistrats!</string>
<!-- Text shown in snackbar when one tab has been saved in a collection -->
<string name="create_collection_tab_saved">Onglet enregistrat!</string>
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
<string name="create_collection_close">Tampar</string>
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
<string name="create_collection_save">Enregistrar</string>
<!-- Snackbar action to view the collection the user just created or updated -->
<string name="create_collection_view">Veire</string>
<!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections-->
<string name="create_collection_default_name">Colleccion %d</string>
<!-- Share -->
<!-- Share screen header -->
<string name="share_header">Enviar e partejar</string>
<!-- Share screen header -->
<string name="share_header_2">Partejar</string>
<!-- Content description (not visible, for screen readers etc.):
@ -353,19 +646,39 @@
<string name="share_link_subheader">Partejar un ligam</string>
<!-- Sub-header in the dialog to share a link to another sync device -->
<string name="share_device_subheader">Enviar al periferic</string>
<!-- Sub-header in the dialog to share a link to an app from the full list -->
<string name="share_link_all_apps_subheader">Totas las accions</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">Utilizats fa res</string>
<!-- An option from the share dialog to sign into sync -->
<string name="sync_sign_in">Se connectar a Sync</string>
<!-- An option from the share dialog to send link to all other sync devices -->
<string name="sync_send_to_all">Enviar a totes los periferics</string>
<!-- An option from the share dialog to reconnect to sync -->
<string name="sync_reconnect">Tornar connectar a Sync</string>
<!-- Text displayed when sync is offline and cannot be accessed -->
<string name="sync_offline">Fòra linha</string>
<!-- An option to connect additional devices -->
<string name="sync_connect_device">Connectar un periferic mai</string>
<!-- Confirmation dialog button -->
<string name="sync_confirmation_button">Comprés!</string>
<!-- Add new device screen title -->
<string name="sync_add_new_device_title">Enviar al periferic</string>
<!-- Text for the warning message on the Add new device screen -->
<string name="sync_add_new_device_message">Cap de periferic pas connectat</string>
<!-- Notification action to open Fenix and resume the current browsing session. -->
<string name="notification_pbm_action_open">Dobrir</string>
<!-- Text shown in snackbar when user deletes a tab -->
<string name="snackbar_tab_deleted">Onglet suprimit</string>
<!-- Text shown in snackbar when user deletes all tabs -->
<string name="snackbar_tabs_deleted">Onglets suprimits</string>
<!-- Text shown in snackbar when user closes a tab -->
<string name="snackbar_tab_closed">Onglet tampat</string>
<!-- Text shown in snackbar when user closes all tabs -->
<string name="snackbar_tabs_closed">Onglets tampats</string>
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
<string name="snackbar_deleted_undo">ANULLAR</string>
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_confirm">Confirmar</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
@ -375,6 +688,9 @@
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
<string name="tab_collection_dialog_negative">Anullar</string>
<!-- Message for copying the URL via long press on the toolbar -->
<string name="url_copied">URL copiada</string>
<!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">Onglets dobèrts</string>
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
@ -400,31 +716,332 @@
<!-- Text for the allow button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_allow">Suprimir</string>
<!-- Onboarding -->
<!-- Text for onboarding welcome message
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_header">La benvenguda a %s !</string>
<!-- text for the Firefox Accounts section header -->
<string name="onboarding_fxa_section_header">Avètz ja un compte ?</string>
<!-- text for the Firefox Preview feature section header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_feature_section_header">Descobrissètz %s</string>
<!-- text for the "What's New" onboarding card header -->
<string name="onboarding_whats_new_header1">Descobrissètz las novetats</string>
<!-- text for the button to confirm automatic sign-in -->
<string name="onboarding_firefox_account_auto_signin_confirm">Òc, connectatz-me</string>
<!-- text for the automatic sign-in button while signing in is in process -->
<string name="onboarding_firefox_account_signing_in">Connexion…</string>
<!-- text for the button to manually sign into Firefox account. The word "Firefox" should not be translated -->
<string name="onboarding_firefox_account_sign_in">Se connectar a 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">Demorar desconnectat</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">Estandard (per defaut)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">Estricte (recomandat)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">Estricte</string>
<!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">Dobrir los paramètres</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
<string name="onboarding_close">Tampar</string>
<!-- text for the button to finish onboarding -->
<string name="onboarding_finish">Començar de navegar</string>
<!-- Onboarding theme -->
<!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">Causissètz vòstre tèma</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">Automatic</string>
<!-- Theme setting for dark mode -->
<string name="onboarding_theme_dark_title">Tèma fosc</string>
<!-- Theme setting for light mode -->
<string name="onboarding_theme_light_title">Tèma clar</string>
<!-- Text shown in snackbar when multiple tabs have been sent to device -->
<string name="sync_sent_tabs_snackbar">Onglets enviats!</string>
<!-- Text shown in snackbar when one tab has been sent to device -->
<string name="sync_sent_tab_snackbar">Onglet enviat!</string>
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">Se desconectar</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
<string name="sign_out_cancel">Anullar</string>
<!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">Paramètres de proteccion</string>
<!-- Preference title for enhanced tracking protection settings -->
<string name="preference_enhanced_tracking_protection">Proteccion contra lo seguiment renfortida</string>
<!-- Title for the description of enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_title">Navegatz sens èsser seguit</string>
<!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Ne saber mai</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom">Personalizada</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">Cookies</string>
<!-- Preference for enhanced tracking protection for the custom protection settings for tracking content -->
<string name="preference_enhanced_tracking_protection_custom_tracking_content">Contengut utilizat pel seguiment</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_1">Dins totes los onglets</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_2">Sonque en navegacion privada</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_3">Sonque dins os onglets personalizats</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom_cryptominers">Minaires de criptomonedas</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom_fingerprinters">Generadors demprentas numericas</string>
<string name="enhanced_tracking_protection_blocked">Blocat</string>
<!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings -->
<string name="enhanced_tracking_protection_allowed">Autorizat</string>
<!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_title">Traçadors de malhums socials</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">Cookies de seguiment entre sites</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Minaires de criptomonedas</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Generadors demprentas numericas</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Contengut utilizat pel seguiment</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">Quand lescut es violet, %s a blocat de traçadors sus aqueste site. Tocatz aquí per ne saber mai.</string>
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
<string name="etp_panel_on">Las proteccions son activadas per aqueste site</string>
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
<string name="etp_panel_off">Las proteccions son desactivadas per aqueste site</string>
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
<string name="enhanced_tracking_protection_exceptions">La proteccion renfortida contra lo seguiment es desactivada per aquestes sites</string>
<!-- Content description (not visible, for screen readers etc.): Navigate
back from ETP details (Ex: Tracking content) -->
<string name="etp_back_button_content_description">Tornar</string>
<!-- About page Your rights link text -->
<string name="about_your_rights">Vòstres dreches</string>
<!-- About page link text to open open source licenses screen -->
<string name="about_open_source_licenses">Bibliotècas liuras quutilizam</string>
<!-- About page link text to open what's new link -->
<string name="about_whats_new">Ques nòu dins %s</string>
<!-- About page link text to open support link -->
<string name="about_support">Assisténcia</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
<string name="about_crashes">Plantatges</string>
<!-- About page link text to open licensing information link -->
<string name="about_licensing_information">Entresenhas sus la licéncia</string>
<!-- Content description of the tab counter toolbar button when one tab is open -->
<string name="tab_counter_content_description_one_tab">1 onglet</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 onglets</string>
<!-- Browser long press popup menu -->
<!-- Copy the current url -->
<string name="browser_toolbar_long_press_popup_copy">Copiar</string>
<!-- Paste & go the text in the clipboard. '&amp;' is replaced with the ampersand symbol: & -->
<string name="browser_toolbar_long_press_popup_paste_and_go">Pegar e anar</string>
<!-- Paste the text in the clipboard -->
<string name="browser_toolbar_long_press_popup_paste">Pegar</string>
<!-- Snackbar message shown after an URL has been copied to clipboard. -->
<string name="browser_toolbar_url_copied_to_clipboard_snackbar">URL copiada dins lo quichapapièrs.</string>
<!-- Title text for the Add To Homescreen dialog -->
<string name="add_to_homescreen_title">Apondre a lecran dacuèlh</string>
<!-- Cancel button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_cancel">Anullar</string>
<!-- Add button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_add">Apondre</string>
<!-- Continue to website button text for the first-time Add to Homescreen dialog -->
<string name="add_to_homescreen_continue">Contunhar cap al site web</string>
<!-- Placeholder text for the TextView in the Add to Homescreen dialog -->
<string name="add_to_homescreen_text_placeholder">Nom de lacorchi</string>
<!-- Preference for managing the settings for logins and passwords in Fenix -->
<string name="preferences_passwords_logins_and_passwords">Identificants e senhals</string>
<!-- Preference for managing the saving of logins and passwords in Fenix -->
<string name="preferences_passwords_save_logins">Salvar los identificants e senhals</string>
<!-- Preference option for asking to save passwords in Fenix -->
<string name="preferences_passwords_save_logins_ask_to_save">Demandar per salvar</string>
<!-- Preference option for never saving passwords in Fenix -->
<string name="preferences_passwords_save_logins_never_save">Salvar pas jamai</string>
<!-- Preference for autofilling saved logins in Fenix -->
<string name="preferences_passwords_autofill">Emplenament automatic</string>
<!-- Preference for syncing saved logins in Fenix -->
<string name="preferences_passwords_sync_logins">Sincronizar los identificants</string>
<!-- Syncing saved logins in Fenix is on -->
<string name="preferences_passwords_sync_logins_on">Activat</string>
<!-- Syncing saved logins in Fenix is off -->
<string name="preferences_passwords_sync_logins_off">Desactivat</string>
<!-- Syncing saved logins in Fenix needs reconnect to sync -->
<string name="preferences_passwords_sync_logins_reconnect">Se reconnectar</string>
<!-- Syncing saved logins in Fenix needs login -->
<string name="preferences_passwords_sync_logins_sign_in">Se connectar a Sync</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">Identificants salvats</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Per ne saber mai sus Sync.</string>
<!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Excepcions</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Recercar didentificants</string>
<!-- Option to sort logins list A-Z, alphabetically -->
<string name="preferences_passwords_saved_logins_alphabetically">Òrdre alfabetic</string>
<!-- Option to sort logins list by most recently used -->
<string name="preferences_passwords_saved_logins_recently_used">Utilizats recentament</string>
<!-- The header for the site that a login is for -->
<string name="preferences_passwords_saved_logins_site">Site</string>
<!-- The header for the username for a login -->
<string name="preferences_passwords_saved_logins_username">Nom dutilizaire</string>
<!-- The header for the password for a login -->
<string name="preferences_passwords_saved_logins_password">Senhal</string>
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
<string name="preferences_passwords_saved_logins_enter_pin">Tornatz picar lo PIN</string>
<!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning">Aquesta connexion es pas segura. Los identificant picats aquí poirián èsser divulgats.</string>
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning_learn_more">Ne saber mai</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) -->
<string name="logins_doorhanger_save">Volètz que %s enregistre aqueste identificant ?</string>
<!-- Positive confirmation that Fenix should save the new or updated login -->
<string name="logins_doorhanger_save_confirmation">Enregistrar</string>
<!-- Negative confirmation that Fenix should not save the new or updated login -->
<string name="logins_doorhanger_save_dont_save">Enregistrar pas</string>
<!-- Shown in snackbar to tell user that the password has been copied -->
<string name="logins_password_copied">Senhal copiat al quichapapièrs</string>
<!-- Shown in snackbar to tell user that the username has been copied -->
<string name="logins_username_copied">Nom dutilizaire copiat al quichapapièrs</string>
<!-- Shown in snackbar to tell user that the site has been copied -->
<string name="logins_site_copied">Site copiat al quichapapièrs</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">Copiar lo senhal</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">Copiar lo nom dutilizaire</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Copiar lo site</string>
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
<string name="saved_login_reveal_password">Mostrar lo senhal</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">Amagar lo senhal</string>
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">Mai tard</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">O configurar ara</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">Nom (A-Z)</string>
<!-- Saved logins sorting strategy menu item -by last used- (if selected, it will sort saved logins by last used) -->
<string name="saved_logins_sort_strategy_last_used">Darrièra utilizacion</string>
<!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">Apondre un motor de recèrca</string>
<!-- Title of the Edit search engine screen -->
<string name="search_engine_edit_custom_search_engine_title">Modificar lo motor de recèrca</string>
<!-- Content description (not visible, for screen readers etc.): Title for the button to add a search engine in the action bar -->
<string name="search_engine_add_button_content_description">Apondre</string>
<!-- Content description (not visible, for screen readers etc.): Title for the button to save a search engine in the action bar -->
<string name="search_engine_add_custom_search_engine_edit_button_content_description">Enregistrar</string>
<!-- Text for the menu button to edit a search engine -->
<string name="search_engine_edit">Modificar</string>
<!-- Text for the menu button to delete a search engine -->
<string name="search_engine_delete">Suprimir</string>
<!-- Text for the button to create a custom search engine on the Add search engine screen -->
<string name="search_add_custom_engine_label_other">Autre</string>
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
<string name="search_add_custom_engine_name_hint">Nom</string>
<!-- Text for the button to learn more about adding a custom search engine -->
<string name="search_add_custom_engine_learn_more_label">Ne saber mai</string>
<!-- Accessibility description for the 'Learn more' link -->
<string name="search_add_custom_engine_learn_more_description">Ligam per ne saber mai</string>
<!-- Text shown when a user leaves the search string field empty -->
<string name="search_add_custom_engine_error_empty_search_string">Picatz una cadena de recèrca</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">Error de connexion a « %s »</string>
<!-- Text shown when a user creates a new search engine -->
<string name="search_add_custom_engine_success_message">%s creat</string>
<!-- Text shown when a user successfully edits a custom search engine -->
<string name="search_edit_custom_engine_success_message">%s enregistrat</string>
<!-- Text shown when a user successfully deletes a custom search engine -->
<string name="search_delete_search_engine_success_message">%s : supression realizada</string>
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">Mesa a jorn de %s…</string>
<!-- Text on the enabled button. Placeholder replaced with app name-->
<string name="migration_update_app_button">Aviar %s</string>
<!-- Accessibility description text for a completed migration item -->
<string name="migration_icon_description">La migracion a acabat</string>
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
<string name="migration_text_passwords">Senhals</string>
<!-- Heading for the instructions to allow a permission -->
<string name="phone_feature_blocked_intro">Per lautorizar :</string>
<!-- First step for the allowing a permission -->
<string name="phone_feature_blocked_step_settings">1. Anar als paramètres Android</string>
<!-- Second step for the allowing a permission -->
<string name="phone_feature_blocked_step_permissions"><![CDATA[2. Tocar <b>Permissions</b>]]></string>
<!-- Third step for the allowing a permission (Fore example: Camera) -->
<string name="phone_feature_blocked_step_feature"><![CDATA[3. Bascular <b>%1$s</b> sus ACTIVAT]]></string>
<!-- Label that indicates a site is using a secure connection -->
<string name="quick_settings_sheet_secure_connection">Connexion segura</string>
<!-- Label that indicates a site is using a insecure connection -->
<string name="quick_settings_sheet_insecure_connection">Connexion pas segura</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for all sites-->
<string name="confirm_clear_permissions_on_all_sites">Volètz vertadièrament suprimir totas las autorizacions per totes los sites ?</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for a site-->
<string name="confirm_clear_permissions_site">Volètz vertadièrament suprimir totas las autorizacions per aqueste site ?</string>
<!-- Confirmation message for a dialog confirming if the user wants to set default value a permission for a site-->
<string name="confirm_clear_permission_site">Volètz vertadièrament suprimir aquesta autorizacion per aqueste site ?</string>
<!-- label shown when there are not site exceptions to show in the site exception settings -->
<string name="no_site_exceptions">Cap dexcepcions de site</string>
<!-- Label for the Pocket default top site -->
<string name="pocket_top_articles">Articles principals</string>
<!-- Bookmark deletion confirmation -->
<string name="bookmark_deletion_confirmation">Sètz segur que volètz suprimir aqueste marcapagina ?</string>
<!-- Browser menu button that adds a top site to the home fragment -->
<string name="browser_menu_add_to_top_sites">Apondre als sites populars</string>
<!-- text shown before the issuer name to indicate who its verified by, parameter is the name of
the certificate authority that verified the ticket-->
<string name="certificate_info_verified_by">Verificat per : %1$s</string>
<!-- Login overflow menu delete button -->
<string name="login_menu_delete_button">Suprimir</string>
<!-- Login overflow menu edit button -->
<string name="login_menu_edit_button">Modificar</string>
<!-- Message in delete confirmation dialog for logins -->
<string name="login_deletion_confirmation">Sètz segur que volètz suprimir aqueste identificant ?</string>
<!-- Positive action of a dialog asking to delete -->
<string name="dialog_delete_positive">Suprimir</string>
</resources>
<!-- The saved login options menu description. -->
<string name="login_options_menu">Opcions de lidentificant</string>
<!-- The button description to discard changes to an edited login. -->
<string name="discard_changes">Anullar las modificacions</string>
<!-- The page title for editing a saved login. -->
<string name="edit">Modificar</string>
<!-- The error message in edit login view when password field is blank. -->
<string name="saved_login_password_required">Senhal requesit</string>
<!-- Voice search button content description -->
<string name="voice_search_content_description">Recèrca a la votz</string>
<!-- Voice search prompt description displayed after the user presses the voice search button -->
<string name="voice_search_explainer">Parlatz ara</string>
<!-- Synced Tabs -->
<!-- Text displayed when user is not logged into a Firefox Account -->
<string name="synced_tabs_connect_to_sync_account">Connectatz-vos amb un compte Firefox</string>
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">Se connectar a Sync</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Òc, plan comprés</string>
</resources>

View File

@ -398,7 +398,7 @@
<!-- Pairing Feature strings -->
<!-- Instructions on how to access pairing -->
<string name="pair_instructions_2"><![CDATA[Отсканируйте QR-код, показанный на <b>firefox.com/pair</b>]]></string>
<string name="pair_instructions_2"><![CDATA[Отсканируйте QR-код на <b>firefox.com/pair</b>]]></string>
<!-- Button to open camera for pairing -->
<string name="pair_open_camera">Открыть камеру</string>
<!-- Button to cancel pairing -->
@ -955,7 +955,7 @@
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_not_installed">Firefox Nightly переехал</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description_preview_not_installed">Это приложение больше не будет получать обновлений безопасности. Получите новый Nightly и прекратите использование этого приложения.
<string name="tip_firefox_preview_moved_description_preview_not_installed">Это приложение больше не будет получать обновлений безопасности. Загрузите новый Nightly и прекратите использование этого приложения.
\n\nЧтобы переместить ваши закладки, логины и историю в другое приложение, создайте аккаунт Firefox.</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_not_installed">Получить новый Nightly</string>
@ -1065,11 +1065,11 @@
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar_action">ПОВТОРИТЬ</string>
<!-- Title of QR Pairing Fragment -->
<string name="sync_scan_code">Просканируйте QR-код</string>
<string name="sync_scan_code">Сканирование QR-кода</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>
<string name="sign_in_ready_for_scan">Сканировать QR-код</string>
<!-- Text shown for settings option for sign with pairing -->
<string name="sign_in_with_camera">Войти с распознаванием лица</string>
<!-- Text shown for settings option for sign with email -->

View File

@ -23,6 +23,9 @@
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">1 otvorená karta. Ťuknutím prepnete karty.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">1 otvorených kariet. Ťuknutím prepnete karty.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s vyvíja Mozilla.</string>

View File

@ -8,12 +8,48 @@
<!-- Home Fragment -->
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
<string name="content_description_menu">Pilihan séjén</string>
<!-- Content description (not visible, for screen readers etc.): "Private Browsing" menu button. -->
<string name="content_description_private_browsing_button">Hurungkeun langlangan pribadi</string>
<!-- Content description (not visible, for screen readers etc.): "Private Browsing" menu button. -->
<string name="content_description_disable_private_browsing_button">Pareuman langlangan pribadi</string>
<!-- Placeholder text shown in the search bar before a user enters text -->
<string name="search_hint">Paluruh atawa asupkeun alamat</string>
<!-- No Open Tabs Message Description -->
<string name="no_open_tabs_description">Sakur tab anu muka bakal ditémbongkeun di dieu.</string>
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">Sakur tab pribadi anjeun bakal ditémbongkeun di dieu.</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">1 tab muka. Toél pikeun ngagilir tab.</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s tab muka. Toél pikeun ngagilir tab.</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s dihasilkeun ku Mozilla.</string>
<!-- Private Browsing -->
<!-- Title for private session option -->
<string name="private_browsing_title">Anjeun keur dina rintakan nyamuni</string>
<string name="private_browsing_common_myths">Mitos umum ngeunaan langlangan nyamuni</string>
<!-- Delete session button to erase your history in a private session -->
<string name="private_browsing_delete_session">Hapus rintakan</string>
<!-- Text for the negative button -->
<string name="cfr_neg_button_text">Teu, nuhun</string>
<!-- Text for the positive button -->
<string name="search_widget_cfr_pos_button_text">Tambihkeun widget</string>
<!-- Text for the negative button -->
<string name="search_widget_cfr_neg_button_text">Moal waka</string>
<!-- Home screen icons - Long press shortcuts -->
<!-- Shortcut action to open new tab -->
<string name="home_screen_shortcut_open_new_tab_2">Tab anyar</string>
<!-- Shortcut action to open new private tab -->
<string name="home_screen_shortcut_open_new_private_tab_2">Tab nyamuni anyar</string>
<!-- Heading for the Top Sites block -->
<string name="home_screen_top_sites_heading">Loka kawentar</string>
<!-- Browser Fragment -->
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
<string name="browser_tabs_button">Buka Tab</string>
@ -33,6 +69,8 @@
<!-- Browser menu button that opens the addon manager -->
<string name="browser_menu_add_ons">Émboh</string>
<!-- Text displayed when there are no add-ons to be shown -->
<string name="no_add_ons">Teu aya add-on di dieu</string>
<!-- Browser menu button that sends a user to help articles -->
<string name="browser_menu_help">Pitulung</string>
<!-- Browser menu button that sends a to a the what's new article -->
@ -47,6 +85,8 @@
<string name="browser_menu_add_to_homescreen">Tambahkeun ka layar Tepas</string>
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
<string name="browser_menu_install_on_homescreen">Pasang</string>
<!-- Menu option on the toolbar that takes you to synced tabs page-->
<string name="synced_tabs">Tab singkron</string>
<!-- Browser menu button that opens the find in page menu -->
<string name="browser_menu_find_in_page">Panggihan dina kaca</string>
<!-- Browser menu button that creates a private tab -->
@ -58,6 +98,8 @@
<string name="browser_menu_save_to_collection_2">Simpen kana koléksi</string>
<!-- Browser menu button that open a share menu to share the current site -->
<string name="browser_menu_share">Bagikeun</string>
<!-- Share menu title, displayed when a user is sharing their current site -->
<string name="menu_share_with">Bagikeun sareng…</string>
<!-- Browser menu button shown in custom tabs that opens the current tab in Fenix
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
<string name="browser_menu_open_in_fenix">Buka di %1$s</string>
@ -74,6 +116,9 @@
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
<string name="browser_menu_read_appearance">Pidangan</string>
<!-- Locale Settings Fragment -->
<!-- Content description for tick mark on selected language -->
<string name="a11y_selected_locale_content_description">Basa anu dipilih</string>
<!-- Content description for search icon -->
<string name="a11y_search_icon_content_description">Paluruh</string>
<!-- Placeholder text shown in the search bar before a user enters text -->
@ -142,10 +187,18 @@
<string name="preferences_set_as_default_browser">Jadikeun panyungsi baku</string>
<!-- Preference category for advanced settings -->
<string name="preferences_category_advanced">Terusan</string>
<!-- Preference category for privacy settings -->
<string name="preferences_category_privacy">Salindungan</string>
<!-- Preference category for privacy and security settings -->
<string name="preferences_category_privacy_security">Salindungan jeung kaamanan</string>
<!-- Preference for advanced site permissions -->
<string name="preferences_site_permissions">Idin loka</string>
<!-- Preference for private browsing options -->
<string name="preferences_private_browsing_options">Nyungsi nyamuni</string>
<!-- Preference for opening links in a private tab-->
<string name="preferences_open_links_in_a_private_tab">Buka tutumbu di tab nyamuni</string>
<!-- Preference for allowing screenshots to be taken while in a private tab-->
<string name="preferences_allow_screenshots_in_private_mode">Ngidinan layar dina langlangan nyamuni</string>
<!-- Preference for adding private browsing shortcut -->
<string name="preferences_add_private_browsing_shortcut">Tambahan tarabas nyungsi nyamuni</string>
<!-- Preference for accessibility -->
@ -156,16 +209,34 @@
<string name="preferences_category_account">Akun</string>
<!-- Preference shown on banner to sign into account -->
<string name="preferences_sign_in">Asup</string>
<!-- Preference for changing default theme to dark or light mode -->
<string name="preferences_theme">Téma</string>
<!-- Preference for settings related to visual options -->
<string name="preferences_customize">Sesuaikeun</string>
<!-- Preference description for banner about signing in -->
<string name="preferences_sign_in_description">Singkronkeun markah, jujutan, jeung nu lianna maké Firefox Account anjeun</string>
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
<string name="preferences_account_default_name">Akun Firefox</string>
<!-- Preference text for account title when there was an error syncing FxA -->
<string name="preferences_account_sync_error">Sambungkeun deui pikeun neruskeun nyingkronkeun</string>
<!-- Preference for language -->
<string name="preferences_language">Basa</string>
<!-- Preference for data choices -->
<string name="preferences_data_choices">Pilihan data</string>
<!-- Preference for data collection -->
<string name="preferences_data_collection">Koléksi data</string>
<!-- Preference linking to the privacy notice -->
<string name="preferences_privacy_link">Wawar privasi</string>
<!-- Preference category for developer tools -->
<string name="developer_tools_category">Parabot pamekar</string>
<!-- Preference for developers -->
<string name="preferences_remote_debugging">Debugging ti kajauhan liwat USB</string>
<!-- Preference title for switch preference to show search shortcuts -->
<string name="preferences_show_search_shortcuts">Témbongkeun takulan pamaluruhan</string>
<!-- Preference title for switch preference to show search suggestions -->
<string name="preferences_show_search_suggestions">Témbongkeun anjuran maluruh</string>
<!-- Preference title for switch preference to show voice search button -->
<string name="preferences_show_voice_search">Tampilkeun panyungsi sora</string>
<!-- Preference title for switch preference to show search suggestions also in private mode -->
<string name="preferences_show_search_suggestions_in_private">Témbongkeun dina rintakan nyamuni</string>
@ -203,20 +274,90 @@
<!-- Label indicating that sync is in progress -->
<string name="sync_syncing_in_progress">Nyingkronkeun…</string>
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
<string name="sync_last_synced_summary">Singkronan panungtung: %s</string>
<!-- Label summary showing never synced -->
<string name="sync_never_synced_summary">Singkronan panungtung: acan pernah</string>
<!-- Text for displaying the default device name.
The first parameter is the application name, the second is the device manufacturer name
and the third is the device model. -->
<string name="default_device_name_2">%1$s dina %2$s %3$s</string>
<!-- Send Tab -->
<!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
<string name="fxa_received_tab_channel_name">Tab nu katampa</string>
<!-- The body for these is the URL of the tab received -->
<string name="fxa_tab_received_notification_name">Tab Katampa</string>
<!-- When multiple tabs have been received -->
<string name="fxa_tabs_received_notification_name">Tab Katampa</string>
<!-- %s is the device name -->
<string name="fxa_tab_received_from_notification_name">Tab ti %s</string>
<!-- Advanced Preferences -->
<!-- Preference for tracking protection settings -->
<string name="preferences_tracking_protection_settings">Kilung Palacakan</string>
<!-- Preference switch for tracking protection -->
<string name="preferences_tracking_protection">Kilung Palacakan</string>
<!-- Preference for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions">Iwal</string>
<!-- Preference description for tracking protection exceptions -->
<string name="preferences_tracking_protection_exceptions_description">Kilung Palacakan pikeun ieu loka ayeuna pareum</string>
<!-- Text displayed when there are no exceptions, with learn more link that brings users to a tracking protection SUMO page -->
<string name="exceptions_empty_message_learn_more_link">Lenyepan</string>
<!-- Preference switch for Telemetry -->
<string name="preferences_telemetry">Telemétri</string>
<!-- Preference switch for marketing data collection -->
<string name="preferences_marketing_data">Data pamasaran</string>
<!-- Title for experiments preferences -->
<string name="preference_experiments">Éksperimén</string>
<!-- Summary for experiments preferences -->
<string name="preference_experiments_summary">Ngidinan Mozilla masang sareng ngumpulkeun data kanggo fitur ékspérimén</string>
<!-- Preference switch for crash reporter -->
<string name="preferences_crash_reporter">Laporan karuksakan</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">Laporan kaséhatan %s</string>
<!-- Turn On Sync Preferences -->
<!-- Header of the Turn on Sync preference view -->
<string name="preferences_sync">Hurungkeun Sync</string>
<!-- Preference for pairing -->
<string name="preferences_sync_pair">Pinday sandi papasangan dina Firefox déstop</string>
<!-- Preference for account login -->
<string name="preferences_sync_sign_in">Asup</string>
<!-- Preference for reconnecting to FxA sync -->
<string name="preferences_sync_sign_in_to_reconnect">Asup pikeun nyambungkeun deui</string>
<!-- Preference for removing FxA account -->
<string name="preferences_sync_remove_account">Cabut akun</string>
<!-- Button to open camera for pairing -->
<string name="pair_open_camera">Buka Kaméra</string>
<!-- Button to cancel pairing -->
<string name="pair_cancel">Bolay</string>
<!-- Toolbar Preferences -->
<!-- Preference for using top toolbar -->
<string name="preference_top_toolbar">Luhur</string>
<!-- Preference for using bottom toolbar -->
<string name="preference_bottom_toolbar">Handap</string>
<!-- Theme Preferences -->
<!-- Preference for using light theme -->
<string name="preference_light_theme">Caang</string>
<!-- Preference for using dark theme -->
<string name="preference_dark_theme">Poék</string>
<!-- Preference for using following device theme -->
<string name="preference_follow_device_theme">Turutan téma paranti</string>
<!-- Library -->
<!-- Option in Library to open Sessions page -->
<string name="library_sessions">Sesi</string>
<!-- Option in Library to open Screenshots page -->
<string name="library_screenshots">Téwakan layar</string>
<!-- Option in Library to open Downloads page -->
<string name="library_downloads">Undeuran</string>
<!-- Option in library to open Bookmarks page -->
<string name="library_bookmarks">Markah</string>
<!-- Option in library to open Desktop Bookmarks root page -->
@ -227,16 +368,105 @@
<string name="library_desktop_bookmarks_toolbar">Palang Parabot Markah</string>
<!-- Option in library to open Desktop Bookmarks "unfiled" page -->
<string name="library_desktop_bookmarks_unfiled">Markah Lianna</string>
<!-- Option in Library to open History page -->
<string name="library_history">Jujutan</string>
<!-- Option in Library to open Synced Tabs page -->
<string name="library_synced_tabs">Tab singkron</string>
<!-- Option in Library to open Reading List -->
<string name="library_reading_list">Daptar Bacaeun</string>
<!-- Menu Item Label for Search in Library -->
<string name="library_search">Paluruh</string>
<!-- Settings Page Title -->
<string name="settings_title">Setélan</string>
<!-- Content description (not visible, for screen readers etc.): "Menu icon for items on a history item" -->
<string name="content_description_history_menu">Menu barang jujutan</string>
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
<string name="content_description_close_button">Tutup</string>
<!-- Sessions -->
<!-- Title for the list of tabs -->
<string name="tab_header_label">Buka tab</string>
<!-- Title for the list of tabs in the current private session -->
<string name="tabs_header_private_title">Sesi nyamuni</string>
<!-- Title for the list of tabs in the current private session -->
<string name="tabs_header_private_tabs_title">Tab nyamuni</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_tab">Tambah tab</string>
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_private_tab">Tambah tab nyamuni</string>
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
<string name="tab_drawer_fab_content">Salindungan</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">Buka Tab</string>
<!-- Text shown in the menu for saving tabs to a collection -->
<string name="tab_tray_menu_item_save">Simpen kana koléksi</string>
<!-- Text shown in the menu for sharing all tabs -->
<string name="tab_tray_menu_item_share">Bagikeun sadaya tab</string>
<!-- Text shown in the menu for closing all tabs -->
<string name="tab_tray_menu_item_close">Tutup kabéh tab</string>
<!-- Shortcut action to open new tab -->
<string name="tab_tray_menu_open_new_tab">Tab anyar</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">Cabut tab tina koléksi</string>
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
<string name="close_tab">Tutup tab</string>
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
<string name="close_tab_title">Tutup tab %s</string>
<!-- Content description (not visible, for screen readers etc.): Opens the open tabs menu when pressed -->
<string name="open_tabs_menu">Buka menu tab</string>
<!-- Open tabs menu item to close all tabs -->
<string name="tabs_menu_close_all_tabs">Tutup kabéh tab</string>
<!-- Open tabs menu item to share all tabs -->
<string name="tabs_menu_share_tabs">Bagikeun tab</string>
<!-- Open tabs menu item to save tabs to collection -->
<string name="tabs_menu_save_to_collection1">Simpen tab kana koléksi</string>
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
<string name="tab_menu">Menu tab</string>
<!-- Tab menu item to share the tab -->
<string name="tab_share">Bagikeun tab</string>
<!-- Button in the current session menu. Deletes the session when pressed -->
<string name="current_session_delete">Pupus</string>
<!-- Button in the current session menu. Saves the session when pressed -->
<string name="current_session_save">Teundeun</string>
<!-- Button in the current session menu. Opens the share menu when pressed -->
<string name="current_session_share">Bagikeun</string>
<!-- Content description (not visible, for screen readers etc.): Title icon for current session menu -->
<string name="current_session_image">Gambaran sési kiwari</string>
<!-- Button to save the current set of tabs into a collection -->
<string name="save_to_collection">Simpen kana koléksi</string>
<!-- Text for the menu button to delete a collection -->
<string name="collection_delete">Hapus koléksi</string>
<!-- Text for the menu button to rename a collection -->
<string name="collection_rename">Ganti ngaran koléksi</string>
<!-- Text for the button to open tabs of the selected collection -->
<string name="collection_open_tabs">Buka tab</string>
<!-- Text for the menu button to remove a top site -->
<string name="remove_top_site">Piceun</string>
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
<string name="pwa_site_controls_title_private">%1$s (Mode Nyamuni)</string>
<!-- History -->
<!-- Text for the button to clear all history -->
<string name="history_delete_all">Hapus jujutan</string>
<!-- Text for the dialog to confirm clearing all history -->
<string name="history_delete_all_dialog">Yakin rék meresihan jujutan anjeun?</string>
<!-- Text for the snackbar to confirm that multiple browsing history items has been deleted -->
<string name="history_delete_multiple_items_snackbar">Mupus jujutan</string>
<!-- Text for the snackbar to confirm that a single browsing history item has been deleted. The first parameter is the shortened URL of the deleted history item. -->
<string name="history_delete_single_item_snackbar">Mupus %1$s</string>
<!-- Text for positive action to delete history in deleting history dialog -->
<string name="history_clear_dialog">Beresihan</string>
<!-- History overflow menu copy button -->
<string name="history_menu_copy_button">Tiron</string>
<!-- History overflow menu share button -->
<string name="history_menu_share_button">Bagikeun</string>
<!-- History overflow menu open in new tab button -->
<string name="history_menu_open_in_new_tab_button">Buka dina tab anyar</string>
<!-- History overflow menu open in private tab button -->
<string name="history_menu_open_in_private_tab_button">Buka dina tab nyamuni</string>
<!-- Text for the button to delete a single history item -->
<string name="history_delete_item">Pupus</string>
<!-- History multi select title in app bar
The first parameter is the number of bookmarks selected -->
<string name="history_multi_select_title">%1$d dipilih</string>
@ -244,6 +474,34 @@
is a digit showing the number of items you have selected -->
<string name="history_delete_some">Hapus %1$d item</string>
<!-- Text for the header that groups the history for last 24 hours -->
<string name="history_24_hours">24 jam terakhir</string>
<!-- Text for the header that groups the history the past 7 days -->
<string name="history_7_days">7 dinten kapungkur</string>
<!-- Text for the header that groups the history the past 30 days -->
<string name="history_30_days">30 dinten kapungkur</string>
<!-- Text for the header that groups the history older than the last month -->
<string name="history_older">Lawas</string>
<!-- Text shown when no history exists -->
<string name="history_empty_message">Teu aya jujutan di dieu</string>
<!-- Crashes -->
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
<string name="tab_crash_title_2">Hampura. %1$s teu tiasa nyungsi ieu kaca.</string>
<!-- Send crash report checkbox text on the tab crash page -->
<string name="tab_crash_send_report">Kirim laporan nu ruksak ka Mozilla</string>
<!-- Close tab button text on the tab crash page -->
<string name="tab_crash_close">Tutup tab</string>
<!-- Restore tab button text on the tab crash page -->
<string name="tab_crash_restore">Malikkeun tab</string>
<!-- Content Description for session item menu button -->
<string name="content_description_session_menu">Pilihan sési</string>
<!-- Content Description for session item share button -->
<string name="content_description_session_share">Bagikeun sési</string>
<!-- Bookmarks -->
<!-- Content description for bookmarks library menu -->
<string name="bookmark_menu_content_description">Menu markah</string>
@ -251,6 +509,10 @@
<string name="bookmark_edit">Édit markah</string>
<!-- Screen title for selecting a bookmarks folder -->
<string name="bookmark_select_folder">Pilih map</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
<string name="bookmark_delete_folder_confirmation_dialog">Yakin anjeun rék mupus ieu folder?</string>
<!-- Snackbar title shown after a folder has been deleted. This first parameter is the name of the deleted folder -->
<string name="bookmark_delete_folder_snackbar">Mupus %1$s</string>
<!-- Screen title for adding a bookmarks folder -->
<string name="bookmark_add_folder">Tambah map</string>
<!-- deprecated: Snackbar title shown after a bookmark has been created. -->
@ -301,9 +563,27 @@
<!-- Bookmark screen message for empty bookmarks folder -->
<string name="bookmarks_empty_message">Euweuh markah di dieu</string>
<!-- Bookmark snackbar message on deletion
The first parameter is the host part of the URL of the bookmark deleted, if any -->
<string name="bookmark_deletion_snackbar_message">Mupus %1$s</string>
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
<string name="bookmark_deletion_multiple_snackbar_message_2">Mupus markah</string>
<!-- Bookmark undo button for deletion snackbar action -->
<string name="bookmark_undo_deletion">BEDO</string>
<!-- Site Permissions -->
<!-- Site permissions preferences header -->
<string name="permissions_header">Idin</string>
<!-- Button label that take the user to the Android App setting -->
<string name="phone_feature_go_to_settings">Buka Setélan</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">Sepré sétélan gancang</string>
<!-- Label that indicates that this option it the recommended one -->
<string name="phone_feature_recommended">Disarankeun</string>
<!-- button that allows editing site permissions settings -->
<string name="quick_settings_sheet_manage_site_permissions">Ngatur idin loka</string>
<!-- Button label for clearing all the information of site permissions-->
<string name="clear_permissions">Beresihan idin</string>
<!-- Button label for clearing a site permission-->
@ -311,6 +591,8 @@
<!-- Button label for clearing all the information on all sites-->
<string name="clear_permissions_on_all_sites">Beresihan idin di sadaya loka</string>
<!-- Preference for altering video and audio autoplay for all websites -->
<string name="preference_browser_feature_autoplay">Autoplay</string>
<!-- Preference for altering the camera access for all websites -->
<string name="preference_phone_feature_camera">Kaméra</string>
<!-- Preference for altering the microphone access for all websites -->
@ -319,14 +601,115 @@
<string name="preference_phone_feature_location">Lokasi</string>
<!-- Preference for altering the notification access for all websites -->
<string name="preference_phone_feature_notification">Iber</string>
<!-- Label that indicates that a permission must be asked always -->
<string name="preference_option_phone_feature_ask_to_allow">Nyuhunkeun diidinan</string>
<!-- Label that indicates that a permission must be blocked -->
<string name="preference_option_phone_feature_blocked">Dipeungpeuk</string>
<!-- Label that indicates that a permission must be allowed -->
<string name="preference_option_phone_feature_allowed">Idinan</string>
<!--Label that indicates a permission is by the Android OS-->
<string name="phone_feature_blocked_by_android">Diblokir ku Android</string>
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
<string name="preference_exceptions">Iwal</string>
<!-- Summary of tracking protection preference if tracking protection is set to on -->
<string name="tracking_protection_on">Hurung</string>
<!-- Summary of tracking protection preference if tracking protection is set to off -->
<string name="tracking_protection_off">Pareum</string>
<!-- Label that indicates that all video and audio autoplay is allowed -->
<string name="preference_option_autoplay_allowed2">Ngidinan sora jeung pidéo</string>
<!-- Label that indicates that video and audio autoplay is only allowed over Wi-Fi -->
<string name="preference_option_autoplay_allowed_wifi_only2">Blokir sora jeung pidéo dina data sélulér wungkul</string>
<!-- Subtext that explains 'autoplay on Wi-Fi only' option -->
<string name="preference_option_autoplay_allowed_wifi_subtext">Sora jeung pidéo bakal dimaénkeun dina Wi-Fi</string>
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
<string name="preference_option_autoplay_block_audio2">Blokir sora hungkul</string>
<!-- Label that indicates that all video and audio autoplay is blocked -->
<string name="preference_option_autoplay_blocked3">Blokir sora jueng pidéo</string>
<!-- Summary of delete browsing data on quit preference if it is set to on -->
<string name="delete_browsing_data_quit_on">Hurung</string>
<!-- Summary of delete browsing data on quit preference if it is set to off -->
<string name="delete_browsing_data_quit_off">Pareum</string>
<!-- Collections -->
<!-- Collections header on home fragment -->
<string name="collections_header">Koléksi</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">Menu koléksi</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">Kumpulkeun hal anu penting pikeun anjeun</string>
<!-- 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>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">Pilih Tab</string>
<!-- Title for the "select collection" step of the collection creator -->
<string name="create_collection_select_collection">Pilih koléksi</string>
<!-- Title for the "name collection" step of the collection creator -->
<string name="create_collection_name_collection">Ngaran koléksi</string>
<!-- Button to add new collection for the "select collection" step of the collection creator -->
<string name="create_collection_add_new_collection">Nambihkeun koléksi anyar</string>
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_select_all">Pilih Kabéh</string>
<!-- Button to deselect all tabs in the "select tabs" step of the collection creator -->
<string name="create_collection_deselect_all">Ulah Pilih Kabéh</string>
<!-- Text to prompt users to select the tabs to save in the "select tabs" step of the collection creator -->
<string name="create_collection_save_to_collection_empty">Pilih tab pikeun diteundeun</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 tab dipilih</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 tab dipilih</string>
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
<string name="create_collection_tabs_saved">Tab diteundeun!</string>
<!-- Text shown in snackbar when one tab has been saved in a collection -->
<string name="create_collection_tab_saved">Tab disimpen!</string>
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
<string name="create_collection_close">Tutup</string>
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
<string name="create_collection_save">Teundeun</string>
<!-- Snackbar action to view the collection the user just created or updated -->
<string name="create_collection_view">Témbong</string>
<!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections-->
<string name="create_collection_default_name">Koléksi %d</string>
<!-- Share -->
<!-- Share screen header -->
<string name="share_header">Kirim jeung Bagikeun</string>
<!-- Share screen header -->
<string name="share_header_2">Bagikeun</string>
<!-- Content description (not visible, for screen readers etc.):
"Share" button. Opens the share menu when pressed. -->
<string name="share_button_content_description">Bagikeun</string>
<!-- Sub-header in the dialog to share a link to another app -->
<string name="share_link_subheader">Bagikeun tutumbu</string>
<!-- Sub-header in the dialog to share a link to another sync device -->
<string name="share_device_subheader">Kirim ka parangkat</string>
<!-- Sub-header in the dialog to share a link to an app from the full list -->
<string name="share_link_all_apps_subheader">Sadaya lampah</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">Anyar dianggo</string>
<!-- An option from the share dialog to sign into sync -->
<string name="sync_sign_in">Asup ka Sync</string>
<!-- An option from the share dialog to send link to all other sync devices -->
<string name="sync_send_to_all">Kirim ka sadaya parangkat</string>
<!-- An option from the share dialog to reconnect to sync -->
<string name="sync_reconnect">Sambungkeun deui ka Sync</string>
<!-- Text displayed when sync is offline and cannot be accessed -->
<string name="sync_offline">Luring</string>
<!-- An option to connect additional devices -->
<string name="sync_connect_device">Sambungkeun parangkat séjén</string>
<!-- Confirmation dialog button -->
<string name="sync_confirmation_button">Ngarti</string>
<!-- Add new device screen title -->
<string name="sync_add_new_device_title">Kirim ka parangkat</string>
<!-- Text for the warning message on the Add new device screen -->
<string name="sync_add_new_device_message">Teu aya parangkat nyambung</string>
<!-- Text for the button to connect another device -->
<string name="sync_add_new_device_connect_button">Sambungkeun Parangkat Séjén…</string>
<!-- Notifications -->
<!-- The user visible name of the "notification channel" (Android 8+ feature) for the ongoing notification shown while a browsing session is active. -->
<string name="notification_pbm_channel_name">Rintakan nyungsi nyamuni</string>
@ -338,6 +721,36 @@
<string name="notification_pbm_action_open">Buka</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">Hapus jeung Buka</string>
<!-- Name of the "Powered by Fenix" notification channel. Displayed in the "App notifications" system settings for the app -->
<string name="notification_powered_by_channel_name">Ditanagaan ku</string>
<!-- Text shown in snackbar when user deletes a collection -->
<string name="snackbar_collection_deleted">Mupus koléksi</string>
<!-- Text shown in snackbar when user renames a collection -->
<string name="snackbar_collection_renamed">Koléksi dingaranan</string>
<!-- Text shown in snackbar when user deletes a tab -->
<string name="snackbar_tab_deleted">Mupus tab</string>
<!-- Text shown in snackbar when user deletes all tabs -->
<string name="snackbar_tabs_deleted">Mupus tab</string>
<!-- Text shown in snackbar when user closes a tab -->
<string name="snackbar_tab_closed">Tab ditutup</string>
<!-- Text shown in snackbar when user closes all tabs -->
<string name="snackbar_tabs_closed">Tab ditutup</string>
<!-- Text shown in snackbar when user adds a site to top sites -->
<string name="snackbar_added_to_top_sites">Ditambahkeun kana loka kawentar!</string>
<!-- Text shown in snackbar when user closes a private tab -->
<string name="snackbar_private_tab_closed">Tab nyamuni ditutup</string>
<!-- Text shown in snackbar when user closes all private tabs -->
<string name="snackbar_private_tabs_closed">Tab nyamuni ditutup</string>
<!-- Text shown in snackbar when user deletes all private tabs -->
<string name="snackbar_private_tabs_deleted">Mupus tab nyamuni</string>
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
<string name="snackbar_deleted_undo">BEDO</string>
<!-- Text shown in snackbar when user removes a top site -->
<string name="snackbar_top_site_removed">Loka dipiceun</string>
<!-- Text for action to undo deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_undo">Bedo</string>
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
<string name="a11y_dialog_deleted_confirm">Sahkeun</string>
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it
First parameter is the name of the app, second parameter is the URL or text scanned-->
<string name="qr_scanner_confirmation_dialog_message">Idinan %1$s muka %2$s</string>
@ -345,11 +758,27 @@
<string name="qr_scanner_dialog_positive">IDINAN</string>
<!-- QR code scanner prompt dialog positive option to deny navigation to scanned link -->
<string name="qr_scanner_dialog_negative">HULAG</string>
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
<string name="tab_collection_dialog_message">Anjeun yakin rék mupus %1$s?</string>
<!-- Tab collection deletion prompt dialog option to delete the collection -->
<string name="tab_collection_dialog_positive">Pupus</string>
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
<string name="tab_collection_dialog_negative">Bolay</string>
<!-- Message for copying the URL via long press on the toolbar -->
<string name="url_copied">URL ditiron</string>
<!-- Sample text for accessibility font size -->
<string name="accessibility_text_size_sample_text_1">Ieu mangrupikeun conto téks. Di dieu pikeun nunjukkeun kumaha téks bakal némbongan nalika anjeun ningkatkeun atanapi ngirangan ukuran dina sétélan ieu.</string>
<!-- Title for Accessibility Text Size Scaling Preference -->
<string name="preference_accessibility_font_size_title">Ukuran font</string>
<!-- Title for Accessibility Text Automatic Size Scaling Preference -->
<string name="preference_accessibility_auto_size_2">Ukuran font otomatis</string>
<!-- Title for the Delete browsing data preference -->
<string name="preferences_delete_browsing_data">Hapus data sungsian</string>
<!-- Title for the tabs item in Delete browsing data -->
<string name="preferences_delete_browsing_data_tabs_title_2">Buka tab</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 tab</string>
<!-- Title for the data and history items in Delete browsing data -->
@ -393,8 +822,44 @@
<!-- Text for the allow button for the data deletion dialog -->
<string name="delete_browsing_data_prompt_allow">Pupus</string>
<!-- Text for the snackbar confirmation that the data was deleted -->
<string name="preferences_delete_browsing_data_snackbar">Data panyungsi pupus</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">Mupus data sungsian…</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 Sawangan téh ayeuna Firefox Nightly</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">Manggih Firefox Android Béta</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_installed">Firefox Nightly parantos ngalih</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_installed">Ngalih ka Nightly anyar</string>
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header_preview_not_installed">Firefox Nightly parantos ngalih</string>
<!-- text for firefox preview moving tip button -->
<string name="tip_firefox_preview_moved_button_preview_not_installed">Manggih Nightly anyar</string>
<!-- Onboarding -->
<!-- Text for onboarding welcome message
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_header">Wilujeng sumping di %s!</string>
<!-- text for the Firefox Accounts section header -->
<string name="onboarding_fxa_section_header">Geus boga akun?</string>
<!-- text for the Firefox Preview feature section header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_feature_section_header">Ngenalkeun %s</string>
<!-- text for the "What's New" onboarding card header -->
<string name="onboarding_whats_new_header1">Tingali naon nu anyar</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">Kéngingkeun waleran di dieu</string>
<!-- text for the firefox account onboarding card header
The first parameter is the name of the app (e.g. Firefox Preview) -->
<string name="onboarding_firefox_account_header">Maksimalkeun %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 -->
@ -412,10 +877,65 @@
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
<string name="onboarding_firefox_account_automatic_signin_failed">Gagal asup</string>
<!-- text for the tracking protection onboarding card header -->
<string name="onboarding_tracking_protection_header_2">Salindungan otomatis</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">Baku (bawaan)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">Pereketkeun (pijeujeuh)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_option">Pereketkeun</string>
<!-- text for the private browsing onboarding card header -->
<string name="onboarding_private_browsing_header">Nyungsi nyamuni</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">Buka tab nyamuni sakali: Toél ikon %s.</string>
<!-- text for the private browsing onboarding card description, explaining how to always using private browsing -->
<string name="onboarding_private_browsing_always_description">Unggal buka tab nyamuni: Anyarkeun sétélan langlangan nyamuni anjeun.</string>
<!-- text for the private browsing onbording card button, that launches settings -->
<string name="onboarding_private_browsing_button">Buka setélan</string>
<!-- text for the privacy notice onboarding card header -->
<string name="onboarding_privacy_notice_header">Salindungan anjeun</string>
<!-- Text for the button to read the privacy notice -->
<string name="onboarding_privacy_notice_read_button">Maca wawaran salindungan kami</string>
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
<string name="onboarding_close">Tutup</string>
<!-- text for the button to finish onboarding -->
<string name="onboarding_finish">Mitembeyan nyungsi</string>
<!-- Onboarding theme -->
<!-- text for the theme picker onboarding card header -->
<string name="onboarding_theme_picker_header">Pilih téma anjeun</string>
<!-- Automatic theme setting (will follow device setting) -->
<string name="onboarding_theme_automatic_title">Otomatis</string>
<!-- Theme setting for dark mode -->
<string name="onboarding_theme_dark_title">Téma poék</string>
<!-- Theme setting for light mode -->
<string name="onboarding_theme_light_title">Téma caang</string>
<!-- Text shown in snackbar when multiple tabs have been sent to device -->
<string name="sync_sent_tabs_snackbar">Tab dikirim!</string>
<!-- Text shown in snackbar when one tab has been sent to device -->
<string name="sync_sent_tab_snackbar">Tab dikirim!</string>
<!-- Text shown in snackbar when sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar">Teu tiasa ngirim</string>
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed -->
<string name="sync_sent_tab_error_snackbar_action">COBA DEUI</string>
<!-- Title of QR Pairing Fragment -->
<string name="sync_scan_code">Pinday sandi</string>
<!-- Instructions on how to access pairing -->
<string name="sign_in_instructions"><![CDATA[Dina komputer anjeun buka Firefox terus buka <b>https://firefox.com/pair</b>]]></string>
<!-- Text shown for sign in pairing when ready -->
<string name="sign_in_ready_for_scan">Siap mindai</string>
<!-- Text shown for settings option for sign with pairing -->
<string name="sign_in_with_camera">Asup maké kaméra anjeun</string>
<!-- Text shown for settings option for sign with email -->
<string name="sign_in_with_email">Maké surél wéh</string>
<!-- Text shown in confirmation dialog to sign out of account -->
<string name="sign_out_confirmation_message">Firefox bakal eureun nyingkronkeun jeung akun anjeun, ngan moal mupus sakur data langlangan anjeun dina ieu alat.</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 bakal eureun nyingkronkeun jeung akun anjeun, ngan moal mupus sakur data langlangan anjeun dina ieu parangkat.</string>
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
<string name="sign_out_disconnect">Pegatkeun</string>
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
@ -424,8 +944,16 @@
<!-- Enhanced Tracking Protection -->
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
<string name="etp_settings">Setélan Kilung</string>
<!-- Preference title for enhanced tracking protection settings -->
<string name="preference_enhanced_tracking_protection">Protéksi Palacakan Tingkat Lanjut</string>
<!-- Title for the description of enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_title">Nyungsi bari teu dituturkeun</string>
<!-- Text displayed that links to website about enhanced tracking protection -->
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Lenyepan</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">Baku (bawaan)</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
<string name="preference_enhanced_tracking_protection_strict">Pereketkeun</string>
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies">Réréméh</string>
@ -437,15 +965,62 @@
<string name="preference_enhanced_tracking_protection_custom_cookies_3">Sakabéh réréméh pihak katilu (bisa ngabalukarkeun raramatloka jadi teu bener)</string>
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
<string name="preference_enhanced_tracking_protection_custom_cookies_4">Sakabéh réréméh (bakal ngabalukarkeun raramatloka jadi teu bener)</string>
<!-- Preference for enhanced tracking protection for the custom protection settings for tracking content -->
<string name="preference_enhanced_tracking_protection_custom_tracking_content">Kontén palacak</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_1">Dina sadaya tab</string>
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
<string name="preference_enhanced_tracking_protection_custom_tracking_content_2">Ngan dina tab Nyamuni</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom_cryptominers">Gurandil kripto</string>
<!-- Preference for enhanced tracking protection for the custom protection settings -->
<string name="preference_enhanced_tracking_protection_custom_fingerprinters">Sidik ramo</string>
<string name="enhanced_tracking_protection_blocked">Dipeungpeuk</string>
<!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings -->
<string name="enhanced_tracking_protection_allowed">Idinan</string>
<!-- Category of trackers (social media trackers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_social_media_trackers_title">Palacak Media Sosial</string>
<!-- Category of trackers (cross-site tracking cookies) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_title">Réréméh Palacak Meuntas-Loka</string>
<!-- Description of cross-site tracking cookies that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cookies_description">Meungpeuk réréméh anu dipaké ku maskapé jaringan iklan jeung analitika pikeun ngumpulkeun data langlangan anjeun di loka anu kaanjangan.</string>
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">Gurandil kripto</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">Sidik ramo</string>
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_title">Kontén palacak</string>
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
<string name="etp_tracking_content_description">Eureunan iklan, pidéo, jeung kontén lianna anu ngandung sandi palacak. Bisa mangaruhan fungsionalitas sababaraha raramatloka.</string>
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
<string name="enhanced_tracking_protection_exceptions">Protéksi Palacakan Tingkat Lanjut pareum dina ieu loka</string>
<!-- Content description (not visible, for screen readers etc.): Navigate
back from ETP details (Ex: Tracking content) -->
<string name="etp_back_button_content_description">Mundur</string>
<!-- About page Your rights link text -->
<string name="about_your_rights">Hak anjeun</string>
<!-- About page link text to open what's new link -->
<string name="about_whats_new">Nu anyar di %s</string>
<!-- About page link text to open support link -->
<string name="about_support">Pangrojong</string>
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
<string name="about_crashes">Karuksakan</string>
<!-- About page link text to open privacy notice link -->
<string name="about_privacy_notice">Wawar privasi</string>
<!-- About page link text to open know your rights link -->
<string name="about_know_your_rights">Ieu hak anjeun</string>
<!-- About page link text to open licensing information link -->
<string name="about_licensing_information">Émbaran lisensi</string>
<!-- Content description of the tab counter toolbar button when one tab is open -->
<string name="tab_counter_content_description_one_tab">1 tab</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 tab</string>
<!-- Browser long press popup menu -->
<!-- Copy the current url -->
<string name="browser_toolbar_long_press_popup_copy">Tiron</string>
@ -456,12 +1031,74 @@
<!-- Snackbar message shown after an URL has been copied to clipboard. -->
<string name="browser_toolbar_url_copied_to_clipboard_snackbar">URL ditiron kana papan klip</string>
<!-- Title text for the Add To Homescreen dialog -->
<string name="add_to_homescreen_title">Tambahkeun ka layar Tepas</string>
<!-- Cancel button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_cancel">Bolay</string>
<!-- Add button text for the Add to Homescreen dialog -->
<string name="add_to_homescreen_add">Tambah</string>
<!-- Continue to website button text for the first-time Add to Homescreen dialog -->
<string name="add_to_homescreen_continue">Teruskeun ka loka</string>
<!-- Preference option for asking to save passwords in Fenix -->
<string name="preferences_passwords_save_logins_ask_to_save">Naros keur neundeun</string>
<!-- Preference option for never saving passwords in Fenix -->
<string name="preferences_passwords_save_logins_never_save">Ulah diteundeun</string>
<!-- Syncing saved logins in Fenix is on -->
<string name="preferences_passwords_sync_logins_on">Hurung</string>
<!-- Syncing saved logins in Fenix is off -->
<string name="preferences_passwords_sync_logins_off">Pareum</string>
<!-- Syncing saved logins in Fenix needs reconnect to sync -->
<string name="preferences_passwords_sync_logins_reconnect">Sambungkeun deui</string>
<!-- Syncing saved logins in Fenix needs login -->
<string name="preferences_passwords_sync_logins_sign_in">Asup ka Sync</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins">Asup log kasimpen</string>
<!-- Preference to access list of saved logins -->
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Leuwih jéntré ngeunaan Sync.</string>
<!-- Preference to access list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions">Iwal</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Paluruh login</string>
<!-- Option to sort logins list A-Z, alphabetically -->
<string name="preferences_passwords_saved_logins_alphabetically">Sacara abjad</string>
<!-- Option to sort logins list by most recently used -->
<string name="preferences_passwords_saved_logins_recently_used">Anyar dianggo</string>
<!-- The header for the site that a login is for -->
<string name="preferences_passwords_saved_logins_site">Loka</string>
<!-- The header for the username for a login -->
<string name="preferences_passwords_saved_logins_username">Sandiasma</string>
<!-- The header for the password for a login -->
<string name="preferences_passwords_saved_logins_password">Kecap sandi</string>
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
<string name="logins_insecure_connection_warning_learn_more">Lenyepan</string>
<!-- Positive confirmation that Fenix should save the new or updated login -->
<string name="logins_doorhanger_save_confirmation">Teundeun</string>
<!-- Negative confirmation that Fenix should not save the new or updated login -->
<string name="logins_doorhanger_save_dont_save">Ulah diteundeun</string>
<!-- Shown in snackbar to tell user that the password has been copied -->
<string name="logins_password_copied">Kecap sandi ditiron kana papan klip</string>
<!-- Shown in snackbar to tell user that the username has been copied -->
<string name="logins_username_copied">Sandiasma ditiron kana papan klip</string>
<!-- Shown in snackbar to tell user that the site has been copied -->
<string name="logins_site_copied">Loka ditiron kana papan klip</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a password in logins-->
<string name="saved_logins_copy_password">Niron sandi</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a username in logins -->
<string name="saved_login_copy_username">Niron sandiasma</string>
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
<string name="saved_login_copy_site">Niron loka</string>
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
<string name="saved_login_reveal_password">Témbongkeun sandi</string>
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
<string name="saved_login_hide_password">Sumputkeun sandi</string>
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
<string name="logins_warning_dialog_later">Engké</string>
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
<string name="saved_logins_sort_strategy_alphabetically">Ngaran (A-Z)</string>
<!-- Title of the Add search engine screen -->
<string name="search_engine_add_custom_search_engine_title">Tambah mesin pamaluruh</string>
<!-- Title of the Edit search engine screen -->
@ -506,6 +1143,15 @@
<!-- Title text shown for the migration screen to the new browser. Placeholder replaced with app name -->
<string name="migration_title">Wilujeng sumping ka %s anyar</string>
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
<string name="migration_updating_app_button_text">Mutahirkeun %s…</string>
<!-- Text on the enabled button. Placeholder replaced with app name-->
<string name="migration_update_app_button">Mimitan %s</string>
<!-- Accessibility description text for a completed migration item -->
<string name="migration_icon_description">Migrasi réngsé</string>
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
<string name="migration_text_passwords">Kecap sandi</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for all sites-->
<string name="confirm_clear_permissions_on_all_sites">Yakin rék ngaberesihan sadaya idin di sadaya loka?</string>
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for a site-->
@ -515,4 +1161,23 @@
<!-- Bookmark deletion confirmation -->
<string name="bookmark_deletion_confirmation">Yakin anjeun rék mupus ieu markah?</string>
</resources>
<!-- Browser menu button that adds a top site to the home fragment -->
<string name="browser_menu_add_to_top_sites">Tambahkeun ka loka kawentar</string>
<!-- Login overflow menu delete button -->
<string name="login_menu_delete_button">Pupus</string>
<!-- Login overflow menu edit button -->
<string name="login_menu_edit_button">Édit</string>
<!-- Positive action of a dialog asking to delete -->
<string name="dialog_delete_positive">Pupus</string>
<!-- The saved login options menu description. -->
<string name="login_options_menu">Pilihan asup log</string>
<!-- The page title for editing a saved login. -->
<string name="edit">Édit</string>
<!-- Voice search prompt description displayed after the user presses the voice search button -->
<string name="voice_search_explainer">Nyarios ayeuna</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">Okéh, Ngarti</string>
</resources>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,6 +19,11 @@
<!-- No Private Tabs Message Description -->
<string name="no_private_tabs_description">แท็บส่วนตัวของคุณจะถูกแสดงที่นี่</string>
<!-- Message announced to the user when tab tray is selected with 1 tab -->
<string name="open_tab_tray_single">1 แท็บที่เปิด แตะเพื่อสลับไปยังแท็บ</string>
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
<string name="open_tab_tray_plural">%1$s แท็บที่เปิด แตะเพื่อสลับไปยังแท็บ</string>
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
<string name="about_content">%1$s ผลิตขึ้นโดย Mozilla</string>
@ -693,6 +698,8 @@
<string name="collections_header">ชุดสะสม</string>
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
<string name="collection_menu_button_content_description">เมนูชุดสะสม</string>
<!-- No Open Tabs Message Header -->
<string name="no_collections_header1">รวบรวมสิ่งที่สำคัญสำหรับคุณ</string>
<!-- Title for the "select tabs" step of the collection creator -->
<string name="create_collection_select_tabs">เลือกแท็บ</string>
<!-- Title for the "select collection" step of the collection creator -->
@ -956,6 +963,8 @@
<string name="onboarding_tracking_protection_header_2">ความเป็นส่วนตัวอัตโนมัติ</string>
<!-- text for tracking protection radio button option for standard level of blocking -->
<string name="onboarding_tracking_protection_standard_button_2">มาตรฐาน (ค่าเริ่มต้น)</string>
<!-- text for standard blocking option button description -->
<string name="onboarding_tracking_protection_standard_button_description_2">ปิดกั้นตัวติดตามน้อยลง หน้าเว็บจะโหลดตามปกติ</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
<string name="onboarding_tracking_protection_strict_button">เข้มงวด (แนะนำ)</string>
<!-- text for tracking protection radio button option for strict level of blocking -->
@ -1049,6 +1058,8 @@
<string name="preference_enhanced_tracking_protection_explanation_learn_more">เรียนรู้เพิ่มเติม</string>
<!-- Preference for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_default_1">มาตรฐาน (ค่าเริ่มต้น)</string>
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
<string name="preference_enhanced_tracking_protection_standard_description_3">ปิดกั้นตัวติดตามน้อยลง หน้าเว็บจะโหลดตามปกติ</string>
<!-- Accessibility text for the Standard protection information icon -->
<string name="preference_enhanced_tracking_protection_standard_info_button">สิ่งที่ถูกปิดกั้นโดยการป้องกันการติดตามแบบมาตรฐาน</string>
<!-- Preference for enhanced tracking protection for the strict protection settings -->
@ -1397,6 +1408,10 @@
<!-- Text displayed to ask user to connect another device as no devices found with account -->
<string name="synced_tabs_connect_another_device">เชื่อมต่ออุปกรณ์อื่น</string>
<!-- Text displayed asking user to re-authenticate -->
<string name="synced_tabs_reauth">โปรดรับรอบความถูกต้องอีกครั้ง</string>
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
<string name="synced_tabs_enable_tab_syncing">โปรดเปิดใช้งานซิงค์แท็บ</string>
<!-- Text displayed when user has no tabs that have been synced -->
<string name="synced_tabs_no_tabs">คุณไม่มีแท็บใด ๆ ที่เปิดอยู่ใน Firefox บนอุปกรณ์อื่น ๆ ของคุณ</string>
<!-- Text displayed in the synced tabs screen when a user is not signed in to Firefox Sync describing Synced Tabs -->
@ -1404,6 +1419,9 @@
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
<string name="synced_tabs_sign_in_button">ลงชื่อเข้าใช้เพื่อซิงค์</string>
<!-- Top Sites -->
<!-- Title text displayed in the dialog when top sites limit is reached. -->
<string name="top_sites_max_limit_title">ถึงขีดจำกัดของไซต์เด่นแล้ว</string>
<!-- Confirmation dialog button text when top sites limit is reached. -->
<string name="top_sites_max_limit_confirmation_button">ตกลง เข้าใจแล้ว</string>

View File

@ -13,4 +13,11 @@
<!-- Style the navigation bar -->
<item name="android:navigationBarColor">?foundation</item>
</style>
<style name="BottomSheetPrivate" parent="BottomSheetBasePrivate">
<item name="android:windowLightStatusBar">false</item>
<!-- Style the navigation bar -->
<item name="android:navigationBarColor">?foundation</item>
</style>
</resources>

View File

@ -24,4 +24,30 @@
<item name="android:navigationBarDividerColor">@android:color/transparent</item>
<item name="android:windowLightNavigationBar">false</item>
</style>
<style name="BottomSheetPrivate" parent="BottomSheetBasePrivate">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">?foundation</item>
<item name="android:colorBackground">?foundation</item>
<!-- Style the navigation bar -->
<item name="android:navigationBarDividerColor">@android:color/transparent</item>
<item name="android:windowLightNavigationBar">false</item>
</style>
<style name="BottomSheet" parent="BottomSheetBase">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">?foundation</item>
<item name="android:colorBackground">?foundation</item>
<!-- Style the navigation bar -->
<item name="android:windowLightNavigationBar">@bool/theme_is_light</item>
<item name="android:navigationBarDividerColor">@android:color/transparent</item>
</style>
<style name="TabTrayDialogStyle" parent="TabTrayDialogStyleBase">
<item name="android:navigationBarDividerColor">@android:color/transparent</item>
<item name="android:windowLightNavigationBar">@bool/theme_is_light</item>
<item name="android:navigationBarColor">@color/foundation_normal_theme</item>
</style>
</resources>

View File

@ -464,7 +464,7 @@
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
<string name="add_private_tab">開新隱私瀏覽分頁</string>
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
<string name="tab_drawer_fab_content">隱私</string>
<string name="tab_drawer_fab_content">隱私分頁</string>
<!-- Text shown as the title of the open tab tray -->
<string name="tab_tray_title">開啟分頁</string>
<!-- Text shown in the menu for saving tabs to a collection -->
@ -940,7 +940,7 @@
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
<string name="tip_firefox_preview_moved_header">Firefox Nightly 已接手原 Firefox Preview 功能</string>
<!-- text for firefox preview moving tip description -->
<string name="tip_firefox_preview_moved_description">Firefox Nightly 每天都會更新,當中包含實驗中的新功能,然而這些新功能可能會較不穩定。\n\n若想要有較穩定的使用體驗請下載我們的 Beta 測試版。</string>
<string name="tip_firefox_preview_moved_description">Firefox Nightly 每天都會更新,當中包含實驗中的新功能,然而這些新功能可能會較不穩定。\n\n若想要有較穩定的使用體驗請下載 Beta 測試版。</string>
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
<string name="tip_firefox_preview_moved_button_2">下載 Firefox for Android Beta 測試版</string>
@ -1148,7 +1148,7 @@
<!-- Category of trackers (cryptominers) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_title">加密貨幣採礦程式</string>
<!-- Description of cryptominers that can be blocked by Enhanced Tracking Protection -->
<string name="etp_cryptominers_description">防止有害指令碼使用您的裝置來為數位貨幣「採礦」。</string>
<string name="etp_cryptominers_description">防止有害指令碼使用您的裝置來為數位貨幣「採礦」。</string>
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
<string name="etp_fingerprinters_title">數位指紋追蹤程式</string>
<!-- Description of fingerprinters that can be blocked by Enhanced Tracking Protection -->

View File

@ -185,4 +185,6 @@
<string name="pref_key_search_widget_cfr_manually_dismissed" translatable="false">pref_key_search_widget_cfr_manually_dismissed</string>
<string name="pref_key_is_in_search_widget_experiment" translatable="false">pref_key_is_in_search_widget_experiment</string>
<string name="pref_key_show_search_widget_cfr" translatable="false">pref_key_show_search_widget_cfr</string>
<string name="pref_key_login_exceptions" translatable="false">pref_key_login_exceptions</string>
</resources>

View File

@ -1217,6 +1217,8 @@
<string name="preferences_passwords_exceptions_description_empty">Logins and passwords that are not saved will be shown here.</string>
<!-- Description of list of login exceptions that we never save logins for -->
<string name="preferences_passwords_exceptions_description">Logins and passwords will not be saved for these sites.</string>
<!-- Text on button to remove all saved login exceptions -->
<string name="preferences_passwords_exceptions_remove_all">Delete all exceptions</string>
<!-- Hint for search box in logins list -->
<string name="preferences_passwords_saved_logins_search">Search logins</string>
<!-- Option to sort logins list A-Z, alphabetically -->

View File

@ -20,8 +20,8 @@
<item name="alertDialogStyle">@style/DialogStyleNormal</item>
<item name="alertDialogTheme">@style/DialogStyleNormal</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:splitMotionEvents">false</item>
<item name="bottomSheetDialogTheme">@style/BottomSheet</item>
<item name="mozacInputLayoutErrorTextColor"
tools:ignore="UnusedResources">@color/destructive_normal_theme</item>
@ -153,6 +153,7 @@
<item name="alertDialogTheme">@style/DialogStyleDark</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<item name="bottomSheetDialogTheme">@style/BottomSheetPrivate</item>
<item name="mozacInputLayoutErrorTextColor"
tools:ignore="UnusedResources">@color/destructive_private_theme</item>
@ -542,18 +543,30 @@
<item name="android:textColorHint">@color/search_view_hint_color</item>
</style>
<style name="TabTrayDialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/BottomSheetModal</item>
<!-- <item name="android:textAppearance">@style/TextAppearance.AppCompat</item>-->
<!-- <item name="android:colorBackground">?foundation</item>-->
<style name="BottomSheetPrivate" parent="@style/BottomSheetBasePrivate" />
<!-- <item name="android:windowAnimationStyle">@style/Animation.Design.BottomSheetDialog</item>-->
<style name="BottomSheet" parent="@style/BottomSheetBase" />
<style name="BottomSheetBasePrivate" parent="Theme.MaterialComponents.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:navigationBarColor">@color/foundation_normal_theme</item>
<item name="android:colorBackground">?foundation</item>
</style>
<style name="BottomSheetBase" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:colorBackground">?foundation</item>
</style>
<!-- Tab Tray does not present a private theme, so it needs to be separate from other bottom sheet styles -->
<style name="TabTrayDialogStyleBase" parent="BottomSheetBase">
<item name="bottomSheetStyle">@style/BottomSheetModal</item>
<item name="android:colorBackground">@color/foundation_normal_theme</item>
</style>
<style name="TabTrayDialogStyle" parent="TabTrayDialogStyleBase" />
<!-- Stuff to make the bottom sheet with round top borders -->
<style name="BottomSheetShapeAppearance" parent="ShapeAppearance.MaterialComponents.LargeComponent">
<item name="cornerFamily">rounded</item>

View File

@ -1,54 +1,52 @@
<?xml version="1.0" encoding="utf-8"?><!-- This Source Code Form is subject to the terms of the Mozilla Public
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.preference.Preference
app:iconSpaceReserved="false"
<Preference
android:key="@string/pref_key_sync_now"
android:title="@string/preferences_sync_now" />
android:title="@string/preferences_sync_now"
app:icon="@drawable/mozac_ic_sync" />
<androidx.preference.EditTextPreference
app:iconSpaceReserved="false"
<EditTextPreference
android:key="@string/pref_key_sync_device_name"
android:title="@string/preferences_sync_device_name" />
<androidx.preference.Preference
app:iconSpaceReserved="false"
<Preference
android:key="@string/pref_key_sign_out"
android:title="@string/preferences_sign_out" />
<androidx.preference.PreferenceCategory
<PreferenceCategory
android:key="@string/preferences_sync_category"
android:title="@string/preferences_sync_category"
android:layout="@layout/preference_cat_style">
<androidx.preference.CheckBoxPreference
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/pref_key_sync_bookmarks"
android:layout="@layout/checkbox_left_preference"
android:title="@string/preferences_sync_bookmarks" />
<androidx.preference.CheckBoxPreference
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/pref_key_sync_history"
android:layout="@layout/checkbox_left_preference"
android:title="@string/preferences_sync_history" />
<androidx.preference.CheckBoxPreference
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/pref_key_sync_logins"
android:layout="@layout/checkbox_left_preference"
android:title="@string/preferences_sync_logins" />
<androidx.preference.CheckBoxPreference
<CheckBoxPreference
android:defaultValue="false"
app:isPreferenceVisible="false"
android:key="@string/pref_key_sync_tabs"
android:layout="@layout/checkbox_left_preference"
android:title="@string/preferences_sync_tabs_2"/>
</androidx.preference.PreferenceCategory>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -2,25 +2,26 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.preference.Preference
app:iconSpaceReserved="false"
<Preference
android:key="@string/pref_key_save_logins_settings"
android:summary="@string/preferences_passwords_save_logins_ask_to_save"
android:title="@string/preferences_passwords_save_logins" />
<SwitchPreference
app:iconSpaceReserved="false"
android:defaultValue="true"
android:key="@string/pref_key_autofill_logins"
android:title="@string/preferences_passwords_autofill" />
<androidx.preference.Preference
app:iconSpaceReserved="false"
<Preference
android:key="@string/pref_key_password_sync_logins"
android:summary="@string/preferences_passwords_sync_logins_off"
android:title="@string/preferences_passwords_sync_logins" />
<androidx.preference.Preference
app:iconSpaceReserved="false"
<Preference
android:key="@string/pref_key_saved_logins"
android:title="@string/preferences_passwords_saved_logins" />
</androidx.preference.PreferenceScreen>
<androidx.preference.Preference
android:key="@string/pref_key_login_exceptions"
android:title="@string/preferences_passwords_exceptions"
app:icon="@drawable/ic_internet" />
</PreferenceScreen>

View File

@ -1,47 +0,0 @@
/* 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.addons
import android.content.Intent.ACTION_VIEW
import androidx.core.net.toUri
import kotlinx.android.synthetic.main.fragment_add_on_permissions.*
import mozilla.components.feature.addons.Addon
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.createAddedTestFragmentInNavHostActivity
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.robolectric.Shadows.shadowOf
@RunWith(FenixRobolectricTestRunner::class)
class AddonPermissionsDetailsFragmentTest {
private val addon = Addon(
id = "",
translatableName = mapOf(
Addon.DEFAULT_LOCALE to "Some blank addon"
)
)
@Test
fun `trigger view intent when learn more is clicked`() {
val fragment = createAddedTestFragmentInNavHostActivity {
AddonPermissionsDetailsFragment().apply {
arguments = AddonPermissionsDetailsFragmentArgs(addon).toBundle()
}
}
assertEquals("Some blank addon", fragment.activity?.title)
fragment.learn_more_label.performClick()
val intent = shadowOf(fragment.activity).peekNextStartedActivity()
assertEquals(ACTION_VIEW, intent.action)
assertEquals(
"https://support.mozilla.org/kb/permission-request-messages-firefox-extensions".toUri(),
intent.data
)
}
}

View File

@ -0,0 +1,53 @@
/* 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.addons
import android.view.LayoutInflater
import android.view.View
import androidx.core.net.toUri
import io.mockk.mockk
import io.mockk.verify
import kotlinx.android.synthetic.main.fragment_add_on_permissions.*
import mozilla.components.feature.addons.Addon
import mozilla.components.support.test.robolectric.testContext
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class AddonPermissionsDetailsViewTest {
private lateinit var view: View
private lateinit var interactor: AddonPermissionsDetailsInteractor
private lateinit var permissionsDetailsView: AddonPermissionsDetailsView
private val addon = Addon(
id = "",
translatableName = mapOf(
Addon.DEFAULT_LOCALE to "Some blank addon"
)
)
private val learnMoreUrl =
"https://support.mozilla.org/kb/permission-request-messages-firefox-extensions"
@Before
fun setup() {
view = LayoutInflater.from(testContext).inflate(R.layout.fragment_add_on_permissions, null)
interactor = mockk(relaxed = true)
permissionsDetailsView = AddonPermissionsDetailsView(view, interactor)
}
@Test
fun `clicking learn more opens learn more page in browser`() {
permissionsDetailsView.bind(addon.copy(
rating = null
))
permissionsDetailsView.learn_more_label.performClick()
verify { interactor.openWebsite(learnMoreUrl.toUri()) }
}
}

View File

@ -0,0 +1,81 @@
/* 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.addons
import androidx.navigation.NavController
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.RelaxedMockK
import io.mockk.mockk
import io.mockk.verify
import mozilla.components.feature.addons.Addon
import mozilla.components.feature.addons.ui.AddonsManagerAdapterDelegate
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.addons.AddonsManagementFragmentDirections.Companion.actionAddonsManagementFragmentToInstalledAddonDetails
import org.mozilla.fenix.ext.directionsEq
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class AddonsManagementViewTest {
@RelaxedMockK private lateinit var navController: NavController
@RelaxedMockK private lateinit var showPermissionDialog: (Addon) -> Unit
private lateinit var managementView: AddonsManagerAdapterDelegate
@Before
fun setup() {
MockKAnnotations.init(this)
managementView = AddonsManagementView(navController, showPermissionDialog)
}
@Test
fun `onAddonItemClicked shows installed details if addon is installed`() {
val addon = mockk<Addon> {
every { isInstalled() } returns true
}
managementView.onAddonItemClicked(addon)
verify {
navController.navigate(
directionsEq(actionAddonsManagementFragmentToInstalledAddonDetails(addon))
)
}
}
@Test
fun `onAddonItemClicked shows details if addon is not installed`() {
val addon = mockk<Addon> {
every { isInstalled() } returns false
}
managementView.onAddonItemClicked(addon)
val expected = AddonsManagementFragmentDirections.actionAddonsManagementFragmentToAddonDetailsFragment(addon)
verify {
navController.navigate(directionsEq(expected))
}
}
@Test
fun `onInstallAddonButtonClicked shows permission dialog`() {
val addon = mockk<Addon>()
managementView.onInstallAddonButtonClicked(addon)
verify { showPermissionDialog(addon) }
}
@Test
fun `onNotYetSupportedSectionClicked shows not yet supported fragment`() {
val addons = listOf<Addon>(mockk(), mockk())
managementView.onNotYetSupportedSectionClicked(addons)
val expected = AddonsManagementFragmentDirections.actionAddonsManagementFragmentToNotYetSupportedAddonFragment(
addons.toTypedArray()
)
verify {
navController.navigate(directionsEq(expected))
}
}
}

View File

@ -6,7 +6,6 @@ package org.mozilla.fenix.components.toolbar
import android.content.Intent
import androidx.navigation.NavController
import androidx.navigation.NavDirections
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import io.mockk.MockKAnnotations
import io.mockk.Runs
@ -32,6 +31,7 @@ import mozilla.components.browser.state.state.ReaderState
import mozilla.components.browser.state.state.createTab
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.EngineView
import mozilla.components.concept.engine.prompt.ShareData
import mozilla.components.feature.search.SearchUseCases
import mozilla.components.feature.session.SessionFeature
import mozilla.components.feature.session.SessionUseCases
@ -46,6 +46,7 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BrowserAnimator
import org.mozilla.fenix.browser.BrowserFragmentDirections
@ -61,6 +62,7 @@ import org.mozilla.fenix.components.TopSiteStorage
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.directionsEq
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.toTab
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@ -384,12 +386,20 @@ class DefaultBrowserToolbarControllerTest {
val item = ToolbarMenu.Item.Share
every { currentSession.url } returns "https://mozilla.org"
every { currentSession.title } returns "Mozilla"
val controller = createController(scope = this)
controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SHARE)) }
verify { navController.navigate(any<NavDirections>()) }
verify {
navController.navigate(
directionsEq(NavGraphDirections.actionGlobalShareFragment(
data = arrayOf(ShareData(url = "https://mozilla.org", title = "Mozilla")),
showPage = true
))
)
}
}
@Test

View File

@ -56,16 +56,6 @@ class FragmentTest {
confirmVerified(mockFragment)
}
@Test
fun `Test nav fun with ID, directions, and extras`() {
every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockExtras)) } just Runs
mockFragment.nav(mockId, navDirections, mockExtras)
verify { (NavHostFragment.findNavController(mockFragment).currentDestination) }
verify { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockExtras)) }
confirmVerified(mockFragment)
}
@Test
fun `Test nav fun with ID, directions, and options`() {
every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockOptions)) } just Runs

View File

@ -0,0 +1,21 @@
package org.mozilla.fenix.ext
import androidx.navigation.NavDirections
import io.mockk.Matcher
import io.mockk.MockKMatcherScope
import io.mockk.internalSubstitute
import mozilla.components.support.ktx.android.os.contentEquals
/**
* Verify that an equal [NavDirections] object was passed in a MockK verify call.
*/
fun MockKMatcherScope.directionsEq(value: NavDirections) = match(EqNavDirectionsMatcher(value))
private data class EqNavDirectionsMatcher(private val value: NavDirections) : Matcher<NavDirections> {
override fun match(arg: NavDirections?): Boolean =
value.actionId == arg?.actionId && value.arguments contentEquals arg.arguments
override fun substitute(map: Map<Any, Any>) =
copy(value = value.internalSubstitute(map))
}

View File

@ -4,12 +4,10 @@
package org.mozilla.fenix.ext
import android.os.Bundle
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.NavDirections
import androidx.navigation.NavOptions
import androidx.navigation.Navigator.Extras
import io.mockk.MockKAnnotations
import io.mockk.Runs
import io.mockk.confirmVerified
@ -29,9 +27,7 @@ class NavControllerTest {
@MockK(relaxUnitFun = true) private lateinit var navController: NavController
@MockK private lateinit var navDirections: NavDirections
@MockK private lateinit var mockDestination: NavDestination
@MockK private lateinit var mockExtras: Extras
@MockK private lateinit var mockOptions: NavOptions
@MockK private lateinit var mockBundle: Bundle
@Before
fun setUp() {
@ -51,13 +47,6 @@ class NavControllerTest {
verify { navController.navigate(navDirections, null) }
}
@Test
fun `Nav with id, directions, and extras args`() {
navController.nav(currentDestId, navDirections, mockExtras)
verify { navController.currentDestination }
verify { navController.navigate(navDirections, mockExtras) }
}
@Test
fun `Nav with id, directions, and options args`() {
navController.nav(currentDestId, navDirections, mockOptions)
@ -65,23 +54,6 @@ class NavControllerTest {
verify { navController.navigate(navDirections, mockOptions) }
}
@Test
fun `Nav with id, directions, options, and extras args`() {
every { navDirections.actionId } returns 5
every { navDirections.arguments } returns mockBundle
navController.nav(currentDestId, navDirections, mockOptions, mockExtras)
verify { navController.currentDestination }
verify { navController.navigate(5, mockBundle, mockOptions, mockExtras) }
}
@Test
fun `Nav with id, destId, bundle, options, and extras args`() {
navController.nav(currentDestId, 5, mockBundle, mockOptions, mockExtras)
verify { navController.currentDestination }
verify { navController.navigate(5, mockBundle, mockOptions, mockExtras) }
}
@Test
fun `Test error response for id exception in-block`() {
navController.nav(7, navDirections)
@ -90,15 +62,6 @@ class NavControllerTest {
confirmVerified(navController)
}
@Test
fun `Test error response for null current destination`() {
every { navController.currentDestination } returns null
navController.nav(7, navDirections, mockExtras)
verify { navController.currentDestination }
verify { Sentry.capture("Fragment id null did not match expected 7") }
confirmVerified(navController)
}
@Test
fun `Test record id exception fun`() {
val actual = 7

View File

@ -0,0 +1,59 @@
/* 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.home.sessioncontrol.viewholders
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.view.isVisible
import io.mockk.mockk
import io.mockk.verify
import kotlinx.android.synthetic.main.no_collections_message.view.*
import mozilla.components.support.test.robolectric.testContext
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor
@RunWith(FenixRobolectricTestRunner::class)
class NoCollectionsMessageViewHolderTest {
private lateinit var view: View
private lateinit var interactor: CollectionInteractor
@Before
fun setup() {
val appCompatContext = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(appCompatContext)
.inflate(NoCollectionsMessageViewHolder.LAYOUT_ID, null)
interactor = mockk(relaxed = true)
}
@Test
fun `hide button when hasNormalTabsOpened is false`() {
NoCollectionsMessageViewHolder(view, interactor, hasNormalTabsOpened = false)
assertFalse(view.add_tabs_to_collections_button.isVisible)
}
@Test
fun `show button when hasNormalTabsOpened is true`() {
NoCollectionsMessageViewHolder(view, interactor, hasNormalTabsOpened = true)
assertTrue(view.add_tabs_to_collections_button.isVisible)
}
@Test
fun `call interactor on click`() {
NoCollectionsMessageViewHolder(view, interactor, hasNormalTabsOpened = true)
view.add_tabs_to_collections_button.performClick()
verify { interactor.onAddTabsToCollectionTapped() }
}
}

View File

@ -0,0 +1,46 @@
/* 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.home.sessioncontrol.viewholders
import android.view.LayoutInflater
import android.view.View
import io.mockk.mockk
import kotlinx.android.synthetic.main.component_top_sites.view.*
import mozilla.components.feature.top.sites.TopSite
import mozilla.components.support.test.robolectric.testContext
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
@RunWith(FenixRobolectricTestRunner::class)
class TopSiteViewHolderTest {
private lateinit var view: View
private lateinit var interactor: TopSiteInteractor
@Before
fun setup() {
view = LayoutInflater.from(testContext)
.inflate(TopSiteViewHolder.LAYOUT_ID, null)
interactor = mockk()
}
@Test
fun `binds list of top sites`() {
TopSiteViewHolder(view, interactor).bind(listOf(
object : TopSite {
override val id = 1L
override val isDefault = true
override val title = "Pocket"
override val url = "https://getpocket.com"
}
))
assertEquals(1, view.top_sites_list.adapter!!.itemCount)
}
}

View File

@ -0,0 +1,56 @@
/* 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.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.view.LayoutInflater
import android.view.View
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_private_browsing.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingPrivacyBrowsingViewHolderTest {
private lateinit var view: View
private lateinit var interactor: OnboardingInteractor
@Before
fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
view = LayoutInflater.from(testContext)
.inflate(OnboardingPrivateBrowsingViewHolder.LAYOUT_ID, null)
interactor = mockk(relaxed = true)
every {
any<Resources.Theme>().resolveAttribute(R.attr.onboardingSelected)
} returns R.color.onboarding_illustration_selected_normal_theme
}
@After
fun teardown() {
unmockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
}
@Test
fun `call interactor on click`() {
OnboardingPrivateBrowsingViewHolder(view, interactor)
view.open_settings_button.performClick()
verify { interactor.onOpenSettingsClicked() }
}
}

View File

@ -0,0 +1,56 @@
/* 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.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.view.LayoutInflater
import android.view.View
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_privacy_notice.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingPrivacyNoticeViewHolderTest {
private lateinit var view: View
private lateinit var interactor: OnboardingInteractor
@Before
fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
view = LayoutInflater.from(testContext)
.inflate(OnboardingPrivacyNoticeViewHolder.LAYOUT_ID, null)
interactor = mockk(relaxed = true)
every {
any<Resources.Theme>().resolveAttribute(R.attr.onboardingSelected)
} returns R.color.onboarding_illustration_selected_normal_theme
}
@After
fun teardown() {
unmockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
}
@Test
fun `call interactor on click`() {
OnboardingPrivacyNoticeViewHolder(view, interactor)
view.read_button.performClick()
verify { interactor.onReadPrivacyNoticeClicked() }
}
}

View File

@ -0,0 +1,54 @@
/* 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.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.view.LayoutInflater
import android.view.View
import io.mockk.every
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import kotlinx.android.synthetic.main.onboarding_tracking_protection.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingTrackingProtectionViewHolderTest {
private lateinit var view: View
@Before
fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
view = LayoutInflater.from(testContext)
.inflate(OnboardingTrackingProtectionViewHolder.LAYOUT_ID, null)
every {
any<Resources.Theme>().resolveAttribute(R.attr.onboardingSelected)
} returns R.color.onboarding_illustration_selected_normal_theme
}
@After
fun teardown() {
unmockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
}
@Test
fun `sets description text`() {
OnboardingTrackingProtectionViewHolder(view)
assertEquals(
"Privacy and security settings block trackers, malware, and companies that follow you.",
view.description_text.text
)
}
}

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