Copione merged onto master
commit
111b68bf5b
|
@ -593,8 +593,6 @@ dependencies {
|
|||
testImplementation 'org.apache.maven:maven-ant-tasks:2.1.3'
|
||||
implementation Deps.mozilla_support_rusthttp
|
||||
|
||||
testImplementation Deps.mockito_core
|
||||
androidTestImplementation Deps.mockito_android
|
||||
testImplementation Deps.mockk
|
||||
|
||||
// For the initial release of Glean 19, we require consumer applications to
|
||||
|
|
|
@ -728,6 +728,34 @@ preferences:
|
|||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
open_links_in_app:
|
||||
type: string_list
|
||||
description: >
|
||||
Whether or not the user has the open links in apps feature enabled.
|
||||
default: false
|
||||
send_in_pings:
|
||||
- metrics
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/11118
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/11446
|
||||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
theme:
|
||||
type: string_list
|
||||
description: >
|
||||
The theme the user has enabled. "light," "dark," "system," or "battery"
|
||||
default: "system" for API 28+, else "light"
|
||||
send_in_pings:
|
||||
- metrics
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/11118
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/11446
|
||||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
|
||||
search.default_engine:
|
||||
code:
|
||||
|
@ -1756,15 +1784,17 @@ tracking_protection:
|
|||
etp_setting_changed:
|
||||
type: event
|
||||
description: |
|
||||
A user changed their tracking protection level setting to either strict or
|
||||
standard.
|
||||
A user changed their tracking protection level setting to either strict,
|
||||
standard, or custom.
|
||||
extra_keys:
|
||||
etp_setting:
|
||||
description: "The new setting for ETP: strict, standard"
|
||||
description: "The new setting for ETP: strict, standard, custom"
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/5312
|
||||
- https://github.com/mozilla-mobile/fenix/issues/11063
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
|
||||
- https://github.com/mozilla-mobile/fenix/pull/11383
|
||||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
|
|
|
@ -68,6 +68,7 @@ class SettingsBasicsTest {
|
|||
}.openSettings {
|
||||
verifyBasicsHeading()
|
||||
verifySearchEngineButton()
|
||||
verifyDefaultBrowserItem()
|
||||
// drill down to submenu
|
||||
}.openSearchSubMenu {
|
||||
verifyDefaultSearchEngineHeader()
|
||||
|
@ -86,10 +87,6 @@ class SettingsBasicsTest {
|
|||
verifyAutomaticFontSizingMenuItems()
|
||||
}.goBack {
|
||||
// drill down to submenu
|
||||
}.openDefaultBrowserSubMenu {
|
||||
// verify item: set as default browser (duplicates, verify child of recyclerview)
|
||||
// Verify label: Open links in private tab
|
||||
}.goBack {
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -213,11 +210,9 @@ class SettingsBasicsTest {
|
|||
homeScreen {
|
||||
}.openThreeDotMenu {
|
||||
}.openSettings {
|
||||
}.openDefaultBrowserSubMenu {
|
||||
verifyDefaultBrowserIsDisabled()
|
||||
verifyDefaultBrowserIsDisaled()
|
||||
clickDefaultBrowserSwitch()
|
||||
verifyAndroidDefaultAppsMenuAppears()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -169,6 +169,7 @@ class SettingsPrivacyTest {
|
|||
}.openLoginsAndPasswordSubMenu {
|
||||
verifyDefaultView()
|
||||
verifyDefaultValueSyncLogins()
|
||||
verifyDefaultValueAutofillLogins()
|
||||
}.openSavedLogins {
|
||||
verifySavedLoginsView()
|
||||
tapSetupLater()
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.test.espresso.contrib.RecyclerViewActions
|
|||
import androidx.test.espresso.ViewInteraction
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.intent.Intents.intended
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers.toPackage
|
||||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
import androidx.test.espresso.matcher.ViewMatchers.Visibility
|
||||
|
@ -34,6 +35,7 @@ import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
|||
import org.mozilla.fenix.helpers.TestHelper.scrollToElementByText
|
||||
import org.mozilla.fenix.helpers.assertIsEnabled
|
||||
import org.mozilla.fenix.helpers.click
|
||||
import org.mozilla.fenix.ui.robots.SettingsRobot.Companion.DEFAULT_APPS_SETTINGS_ACTION
|
||||
|
||||
/**
|
||||
* Implementation of Robot Pattern for the settings menu.
|
||||
|
@ -48,6 +50,10 @@ class SettingsRobot {
|
|||
fun verifyThemeSelected() = assertThemeSelected()
|
||||
fun verifyAccessibilityButton() = assertAccessibilityButton()
|
||||
fun verifySetAsDefaultBrowserButton() = assertSetAsDefaultBrowserButton()
|
||||
fun verifyDefaultBrowserItem() = assertDefaultBrowserItem()
|
||||
fun verifyDefaultBrowserIsDisaled() = assertDefaultBrowserIsDisabled()
|
||||
fun clickDefaultBrowserSwitch() = toggleDefaultBrowserSwitch()
|
||||
fun verifyAndroidDefaultAppsMenuAppears() = assertAndroidDefaultAppsMenuAppears()
|
||||
|
||||
// PRIVACY SECTION
|
||||
fun verifyPrivacyHeading() = assertPrivacyHeading()
|
||||
|
@ -128,15 +134,6 @@ class SettingsRobot {
|
|||
return SettingsSubMenuAccessibilityRobot.Transition()
|
||||
}
|
||||
|
||||
fun openDefaultBrowserSubMenu(interact: SettingsSubMenuDefaultBrowserRobot.() -> Unit): SettingsSubMenuDefaultBrowserRobot.Transition {
|
||||
|
||||
fun defaultBrowserButton() = onView(withText("Set as default browser"))
|
||||
defaultBrowserButton().click()
|
||||
|
||||
SettingsSubMenuDefaultBrowserRobot().interact()
|
||||
return SettingsSubMenuDefaultBrowserRobot.Transition()
|
||||
}
|
||||
|
||||
fun openEnhancedTrackingProtectionSubMenu(interact: SettingsSubMenuEnhancedTrackingProtectionRobot.() -> Unit): SettingsSubMenuEnhancedTrackingProtectionRobot.Transition {
|
||||
fun enhancedTrackingProtectionButton() =
|
||||
onView(withText("Enhanced Tracking Protection"))
|
||||
|
@ -208,6 +205,10 @@ class SettingsRobot {
|
|||
return SettingsSubMenuDataCollectionRobot.Transition()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val DEFAULT_APPS_SETTINGS_ACTION = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS"
|
||||
}
|
||||
}
|
||||
|
||||
private fun assertSettingsView() {
|
||||
|
@ -241,6 +242,31 @@ private fun assertSetAsDefaultBrowserButton() =
|
|||
onView(withText("Set as default browser"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
||||
private fun assertDefaultBrowserIsDisabled() {
|
||||
onView(withId(R.id.switch_widget))
|
||||
.check(matches(ViewMatchers.isNotChecked()))
|
||||
}
|
||||
|
||||
private fun toggleDefaultBrowserSwitch() {
|
||||
onView(
|
||||
CoreMatchers.allOf(
|
||||
ViewMatchers.withParent(CoreMatchers.not(withId(R.id.navigationToolbar))),
|
||||
withText("Set as default browser")
|
||||
)
|
||||
)
|
||||
.perform(ViewActions.click())
|
||||
}
|
||||
|
||||
private fun assertAndroidDefaultAppsMenuAppears() {
|
||||
intended(IntentMatchers.hasAction(DEFAULT_APPS_SETTINGS_ACTION))
|
||||
}
|
||||
|
||||
private fun assertDefaultBrowserItem() {
|
||||
mDevice.wait(Until.findObject(By.text("Set as default browser")), waitingTime)
|
||||
onView(withText("Set as default browser"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
// PRIVACY SECTION
|
||||
private fun assertPrivacyHeading() {
|
||||
onView(withText("Privacy and security"))
|
||||
|
|
|
@ -1,72 +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/. */
|
||||
|
||||
@file:Suppress("TooManyFunctions")
|
||||
|
||||
package org.mozilla.fenix.ui.robots
|
||||
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.intent.Intents.intended
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers.hasAction
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isNotChecked
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withParent
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
import org.hamcrest.CoreMatchers.allOf
|
||||
import org.hamcrest.CoreMatchers.not
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ui.robots.SettingsSubMenuDefaultBrowserRobot.Companion.DEFAULT_APPS_SETTINGS_ACTION
|
||||
|
||||
/**
|
||||
* Implementation of Robot Pattern for the settings DefaultBrowser sub menu.
|
||||
*/
|
||||
class SettingsSubMenuDefaultBrowserRobot {
|
||||
|
||||
companion object {
|
||||
const val DEFAULT_APPS_SETTINGS_ACTION = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS"
|
||||
}
|
||||
|
||||
fun verifyDefaultBrowserIsDisabled() = assertDefaultBrowserIsDisabled()
|
||||
fun clickDefaultBrowserSwitch() = toggleDefaultBrowserSwitch()
|
||||
fun verifyAndroidDefaultAppsMenuAppears() = assertAndroidDefaultAppsMenuAppears()
|
||||
|
||||
class Transition {
|
||||
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||
|
||||
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||
mDevice.waitForIdle()
|
||||
goBackButton().perform(click())
|
||||
|
||||
SettingsRobot().interact()
|
||||
return SettingsRobot.Transition()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun assertDefaultBrowserIsDisabled() {
|
||||
onView(withId(R.id.switch_widget))
|
||||
.check(matches(isNotChecked()))
|
||||
}
|
||||
|
||||
fun toggleDefaultBrowserSwitch() {
|
||||
onView(
|
||||
allOf(
|
||||
withParent(not(withId(R.id.navigationToolbar))),
|
||||
withText("Set as default browser")
|
||||
)
|
||||
)
|
||||
.perform(click())
|
||||
}
|
||||
|
||||
private fun assertAndroidDefaultAppsMenuAppears() {
|
||||
intended(hasAction(DEFAULT_APPS_SETTINGS_ACTION))
|
||||
}
|
||||
|
||||
private fun goBackButton() =
|
||||
onView(allOf(withContentDescription("Navigate up")))
|
|
@ -38,7 +38,9 @@ class SettingsSubMenuLoginsAndPasswordRobot {
|
|||
mDevice.waitNotNull(Until.findObjects(By.text("On")), TestAssetHelper.waitingTime)
|
||||
}
|
||||
|
||||
fun verifyDefaultValueSyncLogins() = asserDefaultValueSyncLogins()
|
||||
fun verifyDefaultValueAutofillLogins() = assertDefaultValueAutofillLogins()
|
||||
|
||||
fun verifyDefaultValueSyncLogins() = assertDefaultValueSyncLogins()
|
||||
|
||||
class Transition {
|
||||
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||
|
@ -87,5 +89,8 @@ private fun goBackButton() =
|
|||
private fun assertDefaultView() = onView(ViewMatchers.withText("Sync logins"))
|
||||
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
|
||||
private fun asserDefaultValueSyncLogins() = onView(ViewMatchers.withText("Sign in to Sync"))
|
||||
private fun assertDefaultValueAutofillLogins() = onView(ViewMatchers.withText("Autofill"))
|
||||
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
|
||||
private fun assertDefaultValueSyncLogins() = onView(ViewMatchers.withText("Sign in to Sync"))
|
||||
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
|
|
|
@ -10,7 +10,6 @@ import mozilla.components.concept.storage.LoginsStorage
|
|||
import mozilla.components.lib.crash.handler.CrashHandlerService
|
||||
import mozilla.components.service.sync.logins.GeckoLoginStorageDelegate
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.mozilla.geckoview.GeckoRuntime
|
||||
import org.mozilla.geckoview.GeckoRuntimeSettings
|
||||
|
@ -56,11 +55,7 @@ object GeckoProvider {
|
|||
}
|
||||
|
||||
val geckoRuntime = GeckoRuntime.create(context, runtimeSettings)
|
||||
// As a quick fix for #8967 we are conflating "should autofill" with "should save logins"
|
||||
val loginStorageDelegate = GeckoLoginStorageDelegate(
|
||||
storage,
|
||||
{ context.settings().shouldPromptToSaveLogins }
|
||||
)
|
||||
val loginStorageDelegate = GeckoLoginStorageDelegate(storage, { true })
|
||||
geckoRuntime.loginStorageDelegate = GeckoLoginDelegateWrapper(loginStorageDelegate)
|
||||
|
||||
return geckoRuntime
|
||||
|
|
|
@ -24,7 +24,6 @@ enum class BrowserDirection(@IdRes val fragmentId: Int) {
|
|||
FromExceptions(R.id.exceptionsFragment),
|
||||
FromAbout(R.id.aboutFragment),
|
||||
FromTrackingProtection(R.id.trackingProtectionFragment),
|
||||
FromDefaultBrowserSettingsFragment(R.id.defaultBrowserSettingsFragment),
|
||||
FromSavedLoginsFragment(R.id.savedLoginsFragment),
|
||||
FromAddNewDeviceFragment(R.id.addNewDeviceFragment),
|
||||
FromAddSearchEngineFragment(R.id.addSearchEngineFragment),
|
||||
|
|
|
@ -20,11 +20,6 @@ object FeatureFlags {
|
|||
*/
|
||||
const val asFeatureSyncDisabled = false
|
||||
|
||||
/**
|
||||
* Enables dynamic bottom toolbar
|
||||
*/
|
||||
val dynamicBottomToolbar = Config.channel.isNightlyOrDebug
|
||||
|
||||
/**
|
||||
* Integration of push support provided by `feature-push` component into the Gecko engine.
|
||||
*
|
||||
|
|
|
@ -276,7 +276,7 @@ open class FenixApplication : LocaleAwareApplication() {
|
|||
return GlobalScope.async(Dispatchers.IO) {
|
||||
// ... but RustHttpConfig.setClient() and RustLog.enable() can be called later.
|
||||
RustHttpConfig.setClient(lazy { components.core.client })
|
||||
RustLog.enable()
|
||||
RustLog.enable(components.analytics.crashReporter)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,10 +32,13 @@ import mozilla.components.browser.search.SearchEngine
|
|||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.browser.state.state.WebExtensionState
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.browser.tabstray.BrowserTabsTray
|
||||
import mozilla.components.concept.engine.EngineView
|
||||
import mozilla.components.concept.tabstray.TabsTray
|
||||
import mozilla.components.feature.contextmenu.ext.DefaultSelectionActionDelegate
|
||||
import mozilla.components.feature.contextmenu.DefaultSelectionActionDelegate
|
||||
import mozilla.components.feature.search.BrowserStoreSearchAdapter
|
||||
import mozilla.components.feature.search.SearchAdapter
|
||||
import mozilla.components.service.fxa.sync.SyncReason
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import mozilla.components.support.ktx.android.arch.lifecycle.addObservers
|
||||
|
@ -63,6 +66,7 @@ import org.mozilla.fenix.home.HomeFragmentDirections
|
|||
import org.mozilla.fenix.home.intent.CrashReporterIntentProcessor
|
||||
import org.mozilla.fenix.home.intent.DeepLinkIntentProcessor
|
||||
import org.mozilla.fenix.home.intent.OpenBrowserIntentProcessor
|
||||
import org.mozilla.fenix.home.intent.OpenSpecificTabIntentProcessor
|
||||
import org.mozilla.fenix.home.intent.SpeechProcessingIntentProcessor
|
||||
import org.mozilla.fenix.home.intent.StartSearchIntentProcessor
|
||||
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentDirections
|
||||
|
@ -70,7 +74,6 @@ import org.mozilla.fenix.library.history.HistoryFragmentDirections
|
|||
import org.mozilla.fenix.perf.Performance
|
||||
import org.mozilla.fenix.perf.StartupTimeline
|
||||
import org.mozilla.fenix.search.SearchFragmentDirections
|
||||
import org.mozilla.fenix.settings.DefaultBrowserSettingsFragmentDirections
|
||||
import org.mozilla.fenix.settings.SettingsFragmentDirections
|
||||
import org.mozilla.fenix.settings.TrackingProtectionFragmentDirections
|
||||
import org.mozilla.fenix.settings.about.AboutFragmentDirections
|
||||
|
@ -119,7 +122,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|||
SpeechProcessingIntentProcessor(this, components.analytics.metrics),
|
||||
StartSearchIntentProcessor(components.analytics.metrics),
|
||||
DeepLinkIntentProcessor(this),
|
||||
OpenBrowserIntentProcessor(this, ::getIntentSessionId)
|
||||
OpenBrowserIntentProcessor(this, ::getIntentSessionId),
|
||||
OpenSpecificTabIntentProcessor(this)
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -225,8 +229,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|||
): View? = when (name) {
|
||||
EngineView::class.java.name -> components.core.engine.createView(context, attrs).apply {
|
||||
selectionActionDelegate = DefaultSelectionActionDelegate(
|
||||
store = components.core.store,
|
||||
context = context,
|
||||
getSearchAdapter(components.core.store),
|
||||
resources = context.resources,
|
||||
appName = getString(R.string.app_name)
|
||||
) {
|
||||
share(it)
|
||||
|
@ -268,6 +272,9 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|||
super.onUserLeaveHint()
|
||||
}
|
||||
|
||||
protected open fun getSearchAdapter(store: BrowserStore): SearchAdapter =
|
||||
BrowserStoreSearchAdapter(store)
|
||||
|
||||
protected open fun getBreadcrumbMessage(destination: NavDestination): String {
|
||||
val fragmentName = resources.getResourceEntryName(destination.id)
|
||||
return "Changing to fragment $fragmentName, isCustomTab: false"
|
||||
|
@ -382,8 +389,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|||
AboutFragmentDirections.actionGlobalBrowser(customTabSessionId)
|
||||
BrowserDirection.FromTrackingProtection ->
|
||||
TrackingProtectionFragmentDirections.actionGlobalBrowser(customTabSessionId)
|
||||
BrowserDirection.FromDefaultBrowserSettingsFragment ->
|
||||
DefaultBrowserSettingsFragmentDirections.actionGlobalBrowser(customTabSessionId)
|
||||
BrowserDirection.FromSavedLoginsFragment ->
|
||||
SavedLoginsAuthFragmentDirections.actionGlobalBrowser(customTabSessionId)
|
||||
BrowserDirection.FromAddNewDeviceFragment ->
|
||||
|
|
|
@ -32,7 +32,7 @@ class IntentReceiverActivity : Activity() {
|
|||
// The intent property is nullable, but the rest of the code below
|
||||
// assumes it is not. If it's null, then we make a new one and open
|
||||
// the HomeActivity.
|
||||
val intent = intent?.let { Intent(intent) } ?: Intent()
|
||||
val intent = intent?.let { Intent(it) } ?: Intent()
|
||||
intent.stripUnwantedFlags()
|
||||
processIntent(intent)
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.os.Build
|
|||
import android.os.StrictMode
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import kotlin.collections.HashSet
|
||||
|
||||
/**
|
||||
* Manages strict mode settings for the application.
|
||||
|
@ -23,7 +24,8 @@ object StrictModeManager {
|
|||
val threadPolicy = StrictMode.ThreadPolicy.Builder()
|
||||
.detectAll()
|
||||
.penaltyLog()
|
||||
if (setPenaltyDialog) {
|
||||
if (setPenaltyDialog &&
|
||||
!strictModeExceptionList.contains(Build.MANUFACTURER)) {
|
||||
threadPolicy.penaltyDialog()
|
||||
}
|
||||
StrictMode.setThreadPolicy(threadPolicy.build())
|
||||
|
@ -61,4 +63,19 @@ object StrictModeManager {
|
|||
}
|
||||
}, false)
|
||||
}
|
||||
|
||||
/**
|
||||
* There are certain manufacturers that have custom font classes for the OS systems.
|
||||
* These classes violates the [StrictMode] policies on startup. As a workaround, we create
|
||||
* an exception list for these manufacturers so that dialogs do not show up on start up.
|
||||
* To add a new manufacturer to the list, log "Build.MANUFACTURER" from the device to get the
|
||||
* exact name of the manufacturer.
|
||||
*/
|
||||
private val strictModeExceptionList = HashSet<String>().also {
|
||||
it.add(MANUFACTURE_HUAWEI)
|
||||
it.add(MANUFACTURE_ONE_PLUS)
|
||||
}
|
||||
|
||||
private const val MANUFACTURE_HUAWEI: String = "HUAWEI"
|
||||
private const val MANUFACTURE_ONE_PLUS: String = "OnePlus"
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||
import kotlinx.android.synthetic.main.fragment_add_ons_management.*
|
||||
import kotlinx.android.synthetic.main.fragment_add_ons_management.view.*
|
||||
import kotlinx.android.synthetic.main.overlay_add_on_progress.view.*
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -35,6 +34,7 @@ import org.mozilla.fenix.ext.getRootView
|
|||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
import java.util.concurrent.CancellationException
|
||||
|
||||
/**
|
||||
* Fragment use for managing add-ons.
|
||||
|
@ -46,7 +46,6 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
|
|||
* Whether or not an add-on installation is in progress.
|
||||
*/
|
||||
private var isInstallationInProgress = false
|
||||
private var scope: CoroutineScope? = null
|
||||
private var adapter: AddonsManagerAdapter? = null
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
@ -244,7 +243,7 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
|
|||
|
||||
isInstallationInProgress = true
|
||||
|
||||
requireContext().components.addonManager.installAddon(
|
||||
val installOperation = requireContext().components.addonManager.installAddon(
|
||||
addon,
|
||||
onSuccess = {
|
||||
runIfFragmentIsAttached {
|
||||
|
@ -254,21 +253,33 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
|
|||
showInstallationDialog(it)
|
||||
}
|
||||
},
|
||||
onError = { _, _ ->
|
||||
onError = { _, e ->
|
||||
this@AddonsManagementFragment.view?.let { view ->
|
||||
val rootView = activity?.getRootView() ?: view
|
||||
showSnackBar(
|
||||
rootView,
|
||||
getString(
|
||||
R.string.mozac_feature_addons_failed_to_install,
|
||||
addon.translatedName
|
||||
// No need to display an error message if installation was cancelled by the user.
|
||||
if (e !is CancellationException) {
|
||||
val rootView = activity?.getRootView() ?: view
|
||||
showSnackBar(
|
||||
rootView,
|
||||
getString(
|
||||
R.string.mozac_feature_addons_failed_to_install,
|
||||
addon.translatedName
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
addonProgressOverlay?.visibility = View.GONE
|
||||
isInstallationInProgress = false
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
addonProgressOverlay.cancel_button.setOnClickListener {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
// Hide the installation progress overlay once cancellation is successful.
|
||||
if (installOperation.cancel().await()) {
|
||||
addonProgressOverlay.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun announceForAccessibility(announcementText: CharSequence) {
|
||||
|
|
|
@ -96,6 +96,7 @@ import org.mozilla.fenix.ext.settings
|
|||
import org.mozilla.fenix.home.SharedViewModel
|
||||
import org.mozilla.fenix.tabtray.TabTrayDialogFragment
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
import org.mozilla.fenix.utils.allowUndo
|
||||
import org.mozilla.fenix.wifi.SitePermissionsWifiIntegration
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
|
@ -218,6 +219,32 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
sharedViewModel = sharedViewModel,
|
||||
onTabCounterClicked = {
|
||||
TabTrayDialogFragment.show(parentFragmentManager)
|
||||
},
|
||||
onCloseTab = {
|
||||
val snapshot = sessionManager.createSessionSnapshot(it)
|
||||
val state = snapshot.engineSession?.saveState()
|
||||
val isSelected =
|
||||
it.id == context.components.core.store.state.selectedTabId ?: false
|
||||
|
||||
val snackbarMessage = if (snapshot.session.private) {
|
||||
requireContext().getString(R.string.snackbar_private_tab_closed)
|
||||
} else {
|
||||
requireContext().getString(R.string.snackbar_tab_closed)
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.allowUndo(
|
||||
requireView(),
|
||||
snackbarMessage,
|
||||
requireContext().getString(R.string.snackbar_deleted_undo),
|
||||
{
|
||||
sessionManager.add(
|
||||
snapshot.session,
|
||||
isSelected,
|
||||
engineSessionState = state
|
||||
)
|
||||
},
|
||||
operation = { }
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -611,21 +638,15 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
}
|
||||
|
||||
private fun initializeEngineView(toolbarHeight: Int) {
|
||||
if (FeatureFlags.dynamicBottomToolbar) {
|
||||
engineView.setDynamicToolbarMaxHeight(toolbarHeight)
|
||||
engineView.setDynamicToolbarMaxHeight(toolbarHeight)
|
||||
|
||||
val behavior = if (requireContext().settings().shouldUseBottomToolbar) {
|
||||
EngineViewBottomBehavior(context, null)
|
||||
} else {
|
||||
SwipeRefreshScrollingViewBehavior(requireContext(), null, engineView, browserToolbarView)
|
||||
}
|
||||
|
||||
(swipeRefresh.layoutParams as CoordinatorLayout.LayoutParams).behavior = behavior
|
||||
val behavior = if (requireContext().settings().shouldUseBottomToolbar) {
|
||||
EngineViewBottomBehavior(context, null)
|
||||
} else {
|
||||
if (!requireContext().settings().shouldUseBottomToolbar) {
|
||||
engineView.setDynamicToolbarMaxHeight(toolbarHeight)
|
||||
}
|
||||
SwipeRefreshScrollingViewBehavior(requireContext(), null, engineView, browserToolbarView)
|
||||
}
|
||||
|
||||
(swipeRefresh.layoutParams as CoordinatorLayout.LayoutParams).behavior = behavior
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -771,35 +792,12 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
|
||||
protected abstract fun navToTrackingProtectionPanel(session: Session)
|
||||
|
||||
/**
|
||||
* Returns the top and bottom margins.
|
||||
*/
|
||||
private fun getEngineMargins(): Pair<Int, Int> =
|
||||
if (context?.settings()?.shouldUseBottomToolbar == true) {
|
||||
val toolbarSize = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
|
||||
0 to toolbarSize
|
||||
} else {
|
||||
0 to 0
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the layout [android.view.Gravity] for the quick settings and ETP dialog.
|
||||
*/
|
||||
protected fun getAppropriateLayoutGravity(): Int =
|
||||
if (context?.settings()?.shouldUseBottomToolbar == true) Gravity.BOTTOM else Gravity.TOP
|
||||
|
||||
protected fun updateLayoutMargins(inFullScreen: Boolean) {
|
||||
view?.swipeRefresh?.apply {
|
||||
val (topMargin, bottomMargin) = if (inFullScreen) 0 to 0 else getEngineMargins()
|
||||
(layoutParams as CoordinatorLayout.LayoutParams).setMargins(
|
||||
0,
|
||||
topMargin,
|
||||
0,
|
||||
bottomMargin
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the site permissions rules based on user settings.
|
||||
*/
|
||||
|
@ -942,25 +940,18 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
activity?.enterToImmersiveMode()
|
||||
browserToolbarView.view.visibility = View.GONE
|
||||
|
||||
if (FeatureFlags.dynamicBottomToolbar) {
|
||||
engineView.setDynamicToolbarMaxHeight(0)
|
||||
browserToolbarView.expand()
|
||||
// Without this, fullscreen has a margin at the top.
|
||||
engineView.setVerticalClipping(0)
|
||||
}
|
||||
engineView.setDynamicToolbarMaxHeight(0)
|
||||
browserToolbarView.expand()
|
||||
// Without this, fullscreen has a margin at the top.
|
||||
engineView.setVerticalClipping(0)
|
||||
} else {
|
||||
activity?.exitImmersiveModeIfNeeded()
|
||||
(activity as? HomeActivity)?.let { activity ->
|
||||
activity.themeManager.applyStatusBarTheme(activity)
|
||||
}
|
||||
browserToolbarView.view.visibility = View.VISIBLE
|
||||
if (FeatureFlags.dynamicBottomToolbar) {
|
||||
val toolbarHeight = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
|
||||
engineView.setDynamicToolbarMaxHeight(toolbarHeight)
|
||||
}
|
||||
}
|
||||
if (!FeatureFlags.dynamicBottomToolbar) {
|
||||
updateLayoutMargins(inFullScreen)
|
||||
val toolbarHeight = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
|
||||
engineView.setDynamicToolbarMaxHeight(toolbarHeight)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,8 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
@ -17,6 +18,8 @@ import kotlinx.android.synthetic.main.fragment_browser.*
|
|||
import kotlinx.android.synthetic.main.fragment_browser.view.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.state.selector.findTab
|
||||
import mozilla.components.browser.toolbar.BrowserToolbar
|
||||
import mozilla.components.feature.app.links.AppLinksUseCases
|
||||
import mozilla.components.feature.contextmenu.ContextMenuCandidate
|
||||
import mozilla.components.feature.readerview.ReaderViewFeature
|
||||
|
@ -27,7 +30,6 @@ import mozilla.components.feature.tab.collections.TabCollection
|
|||
import mozilla.components.feature.tabs.WindowFeature
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.addons.runIfFragmentIsAttached
|
||||
|
@ -52,6 +54,8 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
|||
private val windowFeature = ViewBoundFeatureWrapper<WindowFeature>()
|
||||
private val searchFeature = ViewBoundFeatureWrapper<SearchFeature>()
|
||||
|
||||
private var readerModeAvailable = false
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
|
@ -68,17 +72,40 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
|||
val components = context.components
|
||||
|
||||
return super.initializeUI(view)?.also {
|
||||
val readerModeAction =
|
||||
BrowserToolbar.ToggleButton(
|
||||
image = ContextCompat.getDrawable(requireContext(), R.drawable.ic_readermode)!!,
|
||||
imageSelected =
|
||||
AppCompatResources.getDrawable(requireContext(), R.drawable.ic_readermode_selected)!!,
|
||||
contentDescription = requireContext().getString(R.string.browser_menu_read),
|
||||
contentDescriptionSelected = requireContext().getString(R.string.browser_menu_read_close),
|
||||
visible = {
|
||||
readerModeAvailable
|
||||
},
|
||||
selected = getSessionById()?.let {
|
||||
activity?.components?.core?.store?.state?.findTab(it.id)?.readerState?.active
|
||||
} ?: false,
|
||||
listener = browserInteractor::onReaderModePressed
|
||||
)
|
||||
|
||||
browserToolbarView.view.addPageAction(readerModeAction)
|
||||
|
||||
readerViewFeature.set(
|
||||
feature = ReaderViewFeature(
|
||||
context,
|
||||
components.core.engine,
|
||||
components.core.store,
|
||||
view.readerViewControlsBar
|
||||
) { available, _ ->
|
||||
) { available, active ->
|
||||
if (available) {
|
||||
components.analytics.metrics.track(Event.ReaderModeAvailable)
|
||||
}
|
||||
|
||||
readerModeAvailable = available
|
||||
readerModeAction.setSelected(active)
|
||||
|
||||
runIfFragmentIsAttached {
|
||||
browserToolbarView.view.invalidateActions()
|
||||
browserToolbarView.toolbarIntegration.invalidateMenu()
|
||||
}
|
||||
},
|
||||
|
@ -120,8 +147,7 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
|||
) {
|
||||
browserToolbarView.view
|
||||
}
|
||||
session?.register(toolbarSessionObserver, this, autoPause = true)
|
||||
updateEngineBottomMargin()
|
||||
session?.register(toolbarSessionObserver, viewLifecycleOwner, autoPause = true)
|
||||
|
||||
if (settings.shouldShowFirstTimePwaFragment) {
|
||||
session?.register(
|
||||
|
@ -147,26 +173,6 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private fun updateEngineBottomMargin() {
|
||||
if (!FeatureFlags.dynamicBottomToolbar) {
|
||||
val browserEngine = swipeRefresh.layoutParams as CoordinatorLayout.LayoutParams
|
||||
|
||||
browserEngine.bottomMargin = if (requireContext().settings().shouldUseBottomToolbar) {
|
||||
requireContext().resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
|
||||
} else {
|
||||
0
|
||||
}
|
||||
}
|
||||
|
||||
val toolbarSessionObserver = TrackingProtectionOverlay(
|
||||
context = requireContext(),
|
||||
settings = requireContext().settings()
|
||||
) {
|
||||
browserToolbarView.view
|
||||
}
|
||||
getSessionById()?.register(toolbarSessionObserver, this, autoPause = true)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
getSessionById()?.let {
|
||||
|
|
|
@ -97,7 +97,7 @@ class Analytics(
|
|||
}
|
||||
}
|
||||
|
||||
private fun isSentryEnabled() = !BuildConfig.SENTRY_TOKEN.isNullOrEmpty()
|
||||
fun isSentryEnabled() = !BuildConfig.SENTRY_TOKEN.isNullOrEmpty()
|
||||
|
||||
private fun getSentryProjectUrl(): String? {
|
||||
val baseUrl = "https://sentry.prod.mozaws.net/operations"
|
||||
|
|
|
@ -47,9 +47,9 @@ class Components(private val context: Context) {
|
|||
val useCases by lazy {
|
||||
UseCases(
|
||||
context,
|
||||
core.engine,
|
||||
core.sessionManager,
|
||||
core.store,
|
||||
core.engine.settings,
|
||||
search.searchEngineManager,
|
||||
core.webAppShortcutManager,
|
||||
core.thumbnailStorage
|
||||
|
|
|
@ -76,7 +76,8 @@ class Core(private val context: Context) {
|
|||
automaticFontSizeAdjustment = context.settings().shouldUseAutoSize,
|
||||
fontInflationEnabled = context.settings().shouldUseAutoSize,
|
||||
suspendMediaWhenInactive = false,
|
||||
forceUserScalableContent = context.settings().forceEnableZoom
|
||||
forceUserScalableContent = context.settings().forceEnableZoom,
|
||||
loginAutofillEnabled = context.settings().shouldAutofillLogins
|
||||
)
|
||||
|
||||
GeckoEngine(
|
||||
|
|
|
@ -17,7 +17,6 @@ import com.google.android.material.snackbar.BaseTransientBottomBar
|
|||
import com.google.android.material.snackbar.ContentViewCallback
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlinx.android.synthetic.main.fenix_snackbar.view.*
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.increaseTapArea
|
||||
import org.mozilla.fenix.ext.settings
|
||||
|
@ -137,7 +136,7 @@ class FenixSnackbar private constructor(
|
|||
// can't intelligently position the snackbar on the upper most view.
|
||||
// Ideally we should not pass ContentFrameLayout in, but it's the only
|
||||
// way to display snackbars through a fragment transition.
|
||||
(!FeatureFlags.dynamicBottomToolbar || view is ContentFrameLayout)
|
||||
view is ContentFrameLayout
|
||||
) {
|
||||
toolbarHeight
|
||||
} else {
|
||||
|
|
|
@ -10,7 +10,7 @@ import mozilla.components.browser.session.SessionManager
|
|||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.browser.thumbnails.ThumbnailsUseCases
|
||||
import mozilla.components.browser.thumbnails.storage.ThumbnailStorage
|
||||
import mozilla.components.concept.engine.Settings
|
||||
import mozilla.components.concept.engine.Engine
|
||||
import mozilla.components.feature.app.links.AppLinksUseCases
|
||||
import mozilla.components.feature.contextmenu.ContextMenuUseCases
|
||||
import mozilla.components.feature.downloads.DownloadsUseCases
|
||||
|
@ -29,9 +29,9 @@ import org.mozilla.fenix.utils.Mockable
|
|||
@Mockable
|
||||
class UseCases(
|
||||
private val context: Context,
|
||||
private val engine: Engine,
|
||||
private val sessionManager: SessionManager,
|
||||
private val store: BrowserStore,
|
||||
private val engineSettings: Settings,
|
||||
private val searchEngineManager: SearchEngineManager,
|
||||
private val shortcutManager: WebAppShortcutManager,
|
||||
private val thumbnailStorage: ThumbnailStorage
|
||||
|
@ -64,7 +64,7 @@ class UseCases(
|
|||
/**
|
||||
* Use cases that provide settings management.
|
||||
*/
|
||||
val settingsUseCases by lazy { SettingsUseCases(engineSettings, sessionManager) }
|
||||
val settingsUseCases by lazy { SettingsUseCases(engine, sessionManager) }
|
||||
|
||||
val appLinksUseCases by lazy { AppLinksUseCases(context.applicationContext) }
|
||||
|
||||
|
|
|
@ -590,56 +590,7 @@ class GleanMetricsService(private val context: Context) : MetricsService {
|
|||
}
|
||||
|
||||
internal fun setStartupMetrics() {
|
||||
|
||||
// We purposefully make all of our preferences the string_list format to make data analysis
|
||||
// simpler. While it makes things like booleans a bit more complicated, it means all our
|
||||
// preferences can be analyzed with the same dashboard and compared.
|
||||
Preferences.apply {
|
||||
showSearchSuggestions.set(context.settings().shouldShowSearchSuggestions.toStringList())
|
||||
remoteDebugging.set(context.settings().isRemoteDebuggingEnabled.toStringList())
|
||||
telemetry.set(context.settings().isTelemetryEnabled.toStringList())
|
||||
searchBookmarks.set(context.settings().shouldShowBookmarkSuggestions.toStringList())
|
||||
showClipboardSuggestions.set(context.settings().shouldShowClipboardSuggestions.toStringList())
|
||||
showSearchShortcuts.set(context.settings().shouldShowSearchShortcuts.toStringList())
|
||||
openLinksInAPrivateTab.set(context.settings().openLinksInAPrivateTab.toStringList())
|
||||
searchSuggestionsPrivate.set(context.settings().shouldShowSearchSuggestionsInPrivate.toStringList())
|
||||
|
||||
val isLoggedIn =
|
||||
context.components.backgroundServices.accountManager.accountProfile() != null
|
||||
sync.set(isLoggedIn.toStringList())
|
||||
|
||||
val syncedItems = SyncEnginesStorage(context).getStatus().entries.filter {
|
||||
it.value
|
||||
}.map { it.key.nativeName }
|
||||
|
||||
syncItems.set(syncedItems)
|
||||
|
||||
val etpSelection =
|
||||
if (!context.settings().shouldUseTrackingProtection) {
|
||||
""
|
||||
} else if (context.settings().useStandardTrackingProtection) {
|
||||
"standard"
|
||||
} else if (context.settings().useStrictTrackingProtection) {
|
||||
"strict"
|
||||
} else if (context.settings().useCustomTrackingProtection) {
|
||||
"custom"
|
||||
} else {
|
||||
""
|
||||
}
|
||||
|
||||
trackingProtection.set(listOf(etpSelection))
|
||||
|
||||
val accessibilitySelection = mutableListOf<String>()
|
||||
|
||||
if (context.settings().switchServiceIsEnabled) { accessibilitySelection.add("switch") }
|
||||
|
||||
if (context.settings().touchExplorationIsEnabled) {
|
||||
accessibilitySelection.add("touch exploration")
|
||||
}
|
||||
|
||||
accessibilityServices.set(accessibilitySelection.toList())
|
||||
}
|
||||
|
||||
setPreferenceMetrics()
|
||||
Metrics.apply {
|
||||
defaultBrowser.set(BrowsersCache.all(context).isDefaultBrowser)
|
||||
MozillaProductDetector.getMozillaBrowserDefault(context)?.also {
|
||||
|
@ -685,6 +636,85 @@ class GleanMetricsService(private val context: Context) : MetricsService {
|
|||
installationPing.checkAndSend()
|
||||
}
|
||||
|
||||
private fun setPreferenceMetrics() {
|
||||
// We purposefully make all of our preferences the string_list format to make data analysis
|
||||
// simpler. While it makes things like booleans a bit more complicated, it means all our
|
||||
// preferences can be analyzed with the same dashboard and compared.
|
||||
Preferences.apply {
|
||||
showSearchSuggestions.set(context.settings().shouldShowSearchSuggestions.toStringList())
|
||||
remoteDebugging.set(context.settings().isRemoteDebuggingEnabled.toStringList())
|
||||
telemetry.set(context.settings().isTelemetryEnabled.toStringList())
|
||||
searchBookmarks.set(context.settings().shouldShowBookmarkSuggestions.toStringList())
|
||||
showClipboardSuggestions.set(context.settings().shouldShowClipboardSuggestions.toStringList())
|
||||
showSearchShortcuts.set(context.settings().shouldShowSearchShortcuts.toStringList())
|
||||
openLinksInAPrivateTab.set(context.settings().openLinksInAPrivateTab.toStringList())
|
||||
searchSuggestionsPrivate.set(context.settings().shouldShowSearchSuggestionsInPrivate.toStringList())
|
||||
showVoiceSearch.set(context.settings().shouldShowVoiceSearch.toStringList())
|
||||
openLinksInApp.set(context.settings().openLinksInExternalApp.toStringList())
|
||||
|
||||
val isLoggedIn =
|
||||
context.components.backgroundServices.accountManager.accountProfile() != null
|
||||
sync.set(isLoggedIn.toStringList())
|
||||
|
||||
val syncedItems = SyncEnginesStorage(context).getStatus().entries.filter {
|
||||
it.value
|
||||
}.map { it.key.nativeName }
|
||||
|
||||
syncItems.set(syncedItems)
|
||||
|
||||
val toolbarPositionSelection =
|
||||
if (context.settings().shouldUseFixedTopToolbar) {
|
||||
"fixed_top"
|
||||
} else if (context.settings().shouldUseBottomToolbar) {
|
||||
"bottom"
|
||||
} else {
|
||||
"top"
|
||||
}
|
||||
|
||||
toolbarPosition.set(listOf(toolbarPositionSelection))
|
||||
|
||||
val etpSelection =
|
||||
if (!context.settings().shouldUseTrackingProtection) {
|
||||
""
|
||||
} else if (context.settings().useStandardTrackingProtection) {
|
||||
"standard"
|
||||
} else if (context.settings().useStrictTrackingProtection) {
|
||||
"strict"
|
||||
} else if (context.settings().useCustomTrackingProtection) {
|
||||
"custom"
|
||||
} else {
|
||||
""
|
||||
}
|
||||
|
||||
trackingProtection.set(listOf(etpSelection))
|
||||
|
||||
val accessibilitySelection = mutableListOf<String>()
|
||||
|
||||
if (context.settings().switchServiceIsEnabled) { accessibilitySelection.add("switch") }
|
||||
|
||||
if (context.settings().touchExplorationIsEnabled) {
|
||||
accessibilitySelection.add("touch exploration")
|
||||
}
|
||||
|
||||
accessibilityServices.set(accessibilitySelection.toList())
|
||||
|
||||
val themeSelection =
|
||||
if (context.settings().shouldUseLightTheme) {
|
||||
"light"
|
||||
} else if (context.settings().shouldUseDarkTheme) {
|
||||
"dark"
|
||||
} else if (context.settings().shouldFollowDeviceTheme) {
|
||||
"system"
|
||||
} else if (context.settings().shouldUseAutoBatteryTheme) {
|
||||
"battery"
|
||||
} else {
|
||||
""
|
||||
}
|
||||
|
||||
theme.set(listOf(themeSelection))
|
||||
}
|
||||
}
|
||||
|
||||
override fun stop() {
|
||||
Glean.setUploadEnabled(false)
|
||||
}
|
||||
|
|
|
@ -243,7 +243,7 @@ sealed class Event {
|
|||
}
|
||||
|
||||
data class TrackingProtectionSettingChanged(val setting: Setting) : Event() {
|
||||
enum class Setting { STRICT, STANDARD }
|
||||
enum class Setting { STRICT, STANDARD, CUSTOM }
|
||||
|
||||
override val extras: Map<TrackingProtection.etpSettingChangedKeys, String>?
|
||||
get() = hashMapOf(TrackingProtection.etpSettingChangedKeys.etpSetting to setting.name)
|
||||
|
|
|
@ -12,6 +12,10 @@ open class BrowserInteractor(
|
|||
browserToolbarController.handleTabCounterClick()
|
||||
}
|
||||
|
||||
override fun onTabCounterMenuItemTapped(item: TabCounterMenuItem) {
|
||||
browserToolbarController.handleTabCounterItemInteraction(item)
|
||||
}
|
||||
|
||||
override fun onBrowserToolbarPaste(text: String) {
|
||||
browserToolbarController.handleToolbarPaste(text)
|
||||
}
|
||||
|
@ -35,4 +39,8 @@ open class BrowserInteractor(
|
|||
override fun onScrolled(offset: Int) {
|
||||
browserToolbarController.handleScroll(offset)
|
||||
}
|
||||
|
||||
override fun onReaderModePressed(enabled: Boolean) {
|
||||
browserToolbarController.handleReaderModePressed(enabled)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,11 +22,13 @@ import mozilla.components.browser.state.selector.findTab
|
|||
import mozilla.components.concept.engine.EngineView
|
||||
import mozilla.components.concept.engine.prompt.ShareData
|
||||
import mozilla.components.support.ktx.kotlin.isUrl
|
||||
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.BrowserAnimator.Companion.getToolbarNavOptions
|
||||
import org.mozilla.fenix.browser.BrowserFragmentDirections
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
||||
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
|
@ -37,6 +39,7 @@ import org.mozilla.fenix.ext.components
|
|||
import org.mozilla.fenix.ext.getRootView
|
||||
import org.mozilla.fenix.ext.nav
|
||||
import org.mozilla.fenix.ext.navigateSafe
|
||||
import org.mozilla.fenix.ext.sessionsOfType
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.home.SharedViewModel
|
||||
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
|
||||
|
@ -52,10 +55,12 @@ interface BrowserToolbarController {
|
|||
fun handleToolbarItemInteraction(item: ToolbarMenu.Item)
|
||||
fun handleToolbarClick()
|
||||
fun handleTabCounterClick()
|
||||
fun handleTabCounterItemInteraction(item: TabCounterMenuItem)
|
||||
fun handleBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>)
|
||||
fun handleReaderModePressed(enabled: Boolean)
|
||||
}
|
||||
|
||||
@Suppress("LargeClass")
|
||||
@SuppressWarnings("LargeClass", "TooManyFunctions")
|
||||
class DefaultBrowserToolbarController(
|
||||
private val activity: Activity,
|
||||
private val navController: NavController,
|
||||
|
@ -72,7 +77,8 @@ class DefaultBrowserToolbarController(
|
|||
private val tabCollectionStorage: TabCollectionStorage,
|
||||
private val topSiteStorage: TopSiteStorage,
|
||||
private val sharedViewModel: SharedViewModel,
|
||||
private val onTabCounterClicked: () -> Unit
|
||||
private val onTabCounterClicked: () -> Unit,
|
||||
private val onCloseTab: (Session) -> Unit
|
||||
) : BrowserToolbarController {
|
||||
|
||||
private val currentSession
|
||||
|
@ -97,12 +103,12 @@ class DefaultBrowserToolbarController(
|
|||
|
||||
override fun handleToolbarPasteAndGo(text: String) {
|
||||
if (text.isUrl()) {
|
||||
activity.components.core.sessionManager.selectedSession?.searchTerms = ""
|
||||
sessionManager.selectedSession?.searchTerms = ""
|
||||
activity.components.useCases.sessionUseCases.loadUrl.invoke(text)
|
||||
return
|
||||
}
|
||||
|
||||
activity.components.core.sessionManager.selectedSession?.searchTerms = text
|
||||
sessionManager.selectedSession?.searchTerms = text
|
||||
activity.components.useCases.searchUseCases.defaultSearch.invoke(text)
|
||||
}
|
||||
|
||||
|
@ -124,6 +130,37 @@ class DefaultBrowserToolbarController(
|
|||
onTabCounterClicked.invoke()
|
||||
}
|
||||
|
||||
override fun handleReaderModePressed(enabled: Boolean) {
|
||||
if (enabled) {
|
||||
readerModeController.showReaderView()
|
||||
} else {
|
||||
readerModeController.hideReaderView()
|
||||
}
|
||||
}
|
||||
|
||||
override fun handleTabCounterItemInteraction(item: TabCounterMenuItem) {
|
||||
when (item) {
|
||||
is TabCounterMenuItem.CloseTab -> {
|
||||
sessionManager.selectedSession?.let {
|
||||
// When closing the last tab we must show the undo snackbar in the home fragment
|
||||
if (sessionManager.sessionsOfType(it.private).count() == 1) {
|
||||
// The tab tray always returns to normal mode so do that here too
|
||||
(activity as HomeActivity).browsingModeManager.mode = BrowsingMode.Normal
|
||||
navController.navigate(BrowserFragmentDirections.actionGlobalHome(it.id))
|
||||
} else {
|
||||
onCloseTab.invoke(it)
|
||||
activity.components.useCases.tabsUseCases.removeTab.invoke(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
is TabCounterMenuItem.NewTab -> {
|
||||
(activity as HomeActivity).browsingModeManager.mode =
|
||||
BrowsingMode.fromBoolean(item.isPrivate)
|
||||
navController.popBackStack(R.id.homeFragment, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun handleBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) {
|
||||
lowPrioHighlightItems.forEach {
|
||||
when (it) {
|
||||
|
@ -245,7 +282,7 @@ class DefaultBrowserToolbarController(
|
|||
|
||||
// Strip the CustomTabConfig to turn this Session into a regular tab and then select it
|
||||
customTabSession!!.customTabConfig = null
|
||||
activity.components.core.sessionManager.select(customTabSession)
|
||||
sessionManager.select(customTabSession)
|
||||
|
||||
// Switch to the actual browser which should now display our new selected session
|
||||
activity.startActivity(openInFenixIntent)
|
||||
|
|
|
@ -34,7 +34,6 @@ import mozilla.components.browser.toolbar.behavior.BrowserToolbarBottomBehavior
|
|||
import mozilla.components.browser.toolbar.display.DisplayToolbar
|
||||
import mozilla.components.support.ktx.android.util.dpToFloat
|
||||
import mozilla.components.support.utils.URLStringUtils
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.customtabs.CustomTabToolbarIntegration
|
||||
|
@ -50,8 +49,10 @@ interface BrowserToolbarViewInteractor {
|
|||
fun onBrowserToolbarClicked()
|
||||
fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item)
|
||||
fun onTabCounterClicked()
|
||||
fun onTabCounterMenuItemTapped(item: TabCounterMenuItem)
|
||||
fun onBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>)
|
||||
fun onScrolled(offset: Int)
|
||||
fun onReaderModePressed(enabled: Boolean)
|
||||
}
|
||||
@SuppressWarnings("LargeClass")
|
||||
class BrowserToolbarView(
|
||||
|
@ -259,7 +260,7 @@ class BrowserToolbarView(
|
|||
}
|
||||
|
||||
fun expand() {
|
||||
if (settings.shouldUseBottomToolbar && FeatureFlags.dynamicBottomToolbar) {
|
||||
if (settings.shouldUseBottomToolbar) {
|
||||
(view.layoutParams as CoordinatorLayout.LayoutParams).apply {
|
||||
(behavior as BrowserToolbarBottomBehavior).forceExpand(view)
|
||||
}
|
||||
|
@ -274,7 +275,7 @@ class BrowserToolbarView(
|
|||
*/
|
||||
fun setScrollFlags(shouldDisableScroll: Boolean = false) {
|
||||
if (view.context.settings().shouldUseBottomToolbar) {
|
||||
if (FeatureFlags.dynamicBottomToolbar && view.layoutParams is CoordinatorLayout.LayoutParams) {
|
||||
if (view.layoutParams is CoordinatorLayout.LayoutParams) {
|
||||
(view.layoutParams as CoordinatorLayout.LayoutParams).apply {
|
||||
behavior = BrowserToolbarBottomBehavior(view.context, null)
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ import mozilla.components.browser.menu.BrowserMenuHighlight
|
|||
import mozilla.components.browser.menu.WebExtensionBrowserMenuBuilder
|
||||
import mozilla.components.browser.menu.item.BrowserMenuDivider
|
||||
import mozilla.components.browser.menu.item.BrowserMenuHighlightableItem
|
||||
import mozilla.components.browser.menu.item.BrowserMenuHighlightableSwitch
|
||||
import mozilla.components.browser.menu.item.BrowserMenuImageSwitch
|
||||
import mozilla.components.browser.menu.item.BrowserMenuImageText
|
||||
import mozilla.components.browser.menu.item.BrowserMenuItemToolbar
|
||||
|
@ -143,9 +142,6 @@ class DefaultToolbarMenu(
|
|||
if (canInstall() && installToHomescreen.isHighlighted()) {
|
||||
lowPrioHighlightItems.add(ToolbarMenu.Item.InstallToHomeScreen)
|
||||
}
|
||||
if (shouldShowReaderMode() && readerMode.isHighlighted()) {
|
||||
lowPrioHighlightItems.add(ToolbarMenu.Item.ReaderMode(false))
|
||||
}
|
||||
if (shouldShowOpenInApp() && openInApp.isHighlighted()) {
|
||||
lowPrioHighlightItems.add(ToolbarMenu.Item.OpenInApp)
|
||||
}
|
||||
|
@ -161,10 +157,6 @@ class DefaultToolbarMenu(
|
|||
session != null && context.components.useCases.webAppUseCases.isPinningSupported() &&
|
||||
context.components.useCases.webAppUseCases.isInstallable()
|
||||
|
||||
private fun shouldShowReaderMode(): Boolean = session?.let {
|
||||
store.state.findTab(it.id)?.readerState?.readerable
|
||||
} ?: false
|
||||
|
||||
private fun shouldShowOpenInApp(): Boolean = session?.let { session ->
|
||||
val appLink = context.components.useCases.appLinksUseCases.appLinkRedirect
|
||||
appLink(session.url).hasExternalApp()
|
||||
|
@ -196,7 +188,6 @@ class DefaultToolbarMenu(
|
|||
if (shouldShowSaveToCollection) saveToCollection else null,
|
||||
desktopMode,
|
||||
openInApp.apply { visible = ::shouldShowOpenInApp },
|
||||
readerMode.apply { visible = ::shouldShowReaderMode },
|
||||
readerAppearance.apply { visible = ::shouldShowReaderAppearance },
|
||||
BrowserMenuDivider(),
|
||||
menuToolbar
|
||||
|
@ -256,7 +247,7 @@ class DefaultToolbarMenu(
|
|||
|
||||
private val syncedTabs = BrowserMenuImageText(
|
||||
label = context.getString(R.string.synced_tabs),
|
||||
imageResource = R.drawable.ic_tab_collection,
|
||||
imageResource = R.drawable.ic_synced_tabs,
|
||||
iconTintColorResource = primaryTextColor()
|
||||
) {
|
||||
onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs)
|
||||
|
@ -301,23 +292,6 @@ class DefaultToolbarMenu(
|
|||
onItemTapped.invoke(ToolbarMenu.Item.Quit)
|
||||
}
|
||||
|
||||
private val readerMode = BrowserMenuHighlightableSwitch(
|
||||
label = context.getString(R.string.browser_menu_read),
|
||||
startImageResource = R.drawable.ic_readermode,
|
||||
initialState = {
|
||||
session?.let {
|
||||
store.state.findTab(it.id)?.readerState?.active
|
||||
} ?: false
|
||||
},
|
||||
highlight = BrowserMenuHighlight.LowPriority(
|
||||
label = context.getString(R.string.browser_menu_read),
|
||||
notificationTint = getColor(context, R.color.whats_new_notification_color)
|
||||
),
|
||||
isHighlighted = { !context.settings().readerModeOpened }
|
||||
) { checked ->
|
||||
onItemTapped.invoke(ToolbarMenu.Item.ReaderMode(checked))
|
||||
}
|
||||
|
||||
private val readerAppearance = BrowserMenuImageText(
|
||||
label = context.getString(R.string.browser_menu_read_appearance),
|
||||
imageResource = R.drawable.ic_readermode_appearance,
|
||||
|
|
|
@ -34,11 +34,22 @@ open class TabCounter @JvmOverloads constructor(
|
|||
TypedValue.COMPLEX_UNIT_DIP, TWO_DIGIT_PADDING, context.resources.displayMetrics
|
||||
).toInt()
|
||||
counter_text.setPadding(0, shiftThreeDp, shiftThreeDp, 0)
|
||||
updateContentDescription(0)
|
||||
|
||||
animationSet = createAnimatorSet()
|
||||
}
|
||||
|
||||
private fun updateContentDescription(count: Int) {
|
||||
counter_root.contentDescription = if (count == 1) {
|
||||
context?.getString(R.string.open_tab_tray_single)
|
||||
} else {
|
||||
context?.getString(R.string.open_tab_tray_plural, count.toString())
|
||||
}
|
||||
}
|
||||
|
||||
fun setCountWithAnimation(count: Int) {
|
||||
updateContentDescription(count)
|
||||
|
||||
// Don't animate from initial state.
|
||||
if (this.count == 0) {
|
||||
setCount(count)
|
||||
|
@ -69,6 +80,7 @@ open class TabCounter @JvmOverloads constructor(
|
|||
}
|
||||
|
||||
fun setCount(count: Int) {
|
||||
updateContentDescription(count)
|
||||
adjustTextSize(count)
|
||||
|
||||
counter_text.text = formatForDisplay(count)
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package org.mozilla.fenix.components.toolbar
|
||||
|
||||
sealed class TabCounterMenuItem {
|
||||
object CloseTab : TabCounterMenuItem()
|
||||
class NewTab(val isPrivate: Boolean) : TabCounterMenuItem()
|
||||
}
|
|
@ -8,11 +8,16 @@ import android.content.Context
|
|||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import mozilla.components.browser.menu.BrowserMenu
|
||||
import mozilla.components.browser.menu.BrowserMenuBuilder
|
||||
import mozilla.components.browser.menu.item.BrowserMenuDivider
|
||||
import mozilla.components.browser.menu.item.BrowserMenuImageText
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.concept.toolbar.Toolbar
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.sessionsOfType
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
|
@ -21,6 +26,7 @@ import java.lang.ref.WeakReference
|
|||
class TabCounterToolbarButton(
|
||||
private val sessionManager: SessionManager,
|
||||
private val isPrivate: Boolean,
|
||||
private val onItemTapped: (TabCounterMenuItem) -> Unit = {},
|
||||
private val showTabs: () -> Unit
|
||||
) : Toolbar.Action {
|
||||
private var reference: WeakReference<TabCounter> = WeakReference<TabCounter>(null)
|
||||
|
@ -34,12 +40,11 @@ class TabCounterToolbarButton(
|
|||
showTabs.invoke()
|
||||
}
|
||||
|
||||
val count = sessionManager.sessions.count {
|
||||
it.private == isPrivate
|
||||
setOnLongClickListener {
|
||||
getTabContextMenu(it.context).show(it)
|
||||
true
|
||||
}
|
||||
|
||||
contentDescription = getDescriptionForTabCount(context, count)
|
||||
|
||||
addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
|
||||
override fun onViewAttachedToWindow(v: View?) {
|
||||
setCount(sessionManager.sessionsOfType(private = isPrivate).count())
|
||||
|
@ -66,16 +71,40 @@ class TabCounterToolbarButton(
|
|||
val count = sessionManager.sessionsOfType(private = isPrivate).count()
|
||||
|
||||
reference.get()?.let {
|
||||
it.contentDescription = getDescriptionForTabCount(it.context, count)
|
||||
it.setCountWithAnimation(count)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getDescriptionForTabCount(context: Context?, count: Int): String? {
|
||||
return if (count > 1) context?.getString(
|
||||
R.string.tab_counter_content_description_multi_tab,
|
||||
count
|
||||
) else context?.getString(R.string.tab_counter_content_description_one_tab)
|
||||
private fun getTabContextMenu(context: Context): BrowserMenu {
|
||||
val primaryTextColor = ThemeManager.resolveAttribute(R.attr.primaryText, context)
|
||||
val menuItems = listOf(
|
||||
BrowserMenuImageText(
|
||||
label = context.getString(R.string.close_tab),
|
||||
imageResource = R.drawable.ic_close,
|
||||
iconTintColorResource = primaryTextColor,
|
||||
textColorResource = primaryTextColor
|
||||
) {
|
||||
onItemTapped(TabCounterMenuItem.CloseTab)
|
||||
},
|
||||
BrowserMenuDivider(),
|
||||
BrowserMenuImageText(
|
||||
label = context.getString(R.string.browser_menu_new_tab),
|
||||
imageResource = R.drawable.ic_new,
|
||||
iconTintColorResource = primaryTextColor,
|
||||
textColorResource = primaryTextColor
|
||||
) {
|
||||
onItemTapped(TabCounterMenuItem.NewTab(false))
|
||||
},
|
||||
BrowserMenuImageText(
|
||||
label = context.getString(R.string.home_screen_shortcut_open_new_private_tab_2),
|
||||
imageResource = R.drawable.ic_private_browsing,
|
||||
iconTintColorResource = primaryTextColor,
|
||||
textColorResource = primaryTextColor
|
||||
) {
|
||||
onItemTapped(TabCounterMenuItem.NewTab(true))
|
||||
}
|
||||
)
|
||||
return BrowserMenuBuilder(menuItems).build(context)
|
||||
}
|
||||
|
||||
private val sessionManagerObserver = object : SessionManager.Observer {
|
||||
|
|
|
@ -132,7 +132,10 @@ class DefaultToolbarIntegration(
|
|||
)
|
||||
}
|
||||
|
||||
val tabsAction = TabCounterToolbarButton(sessionManager, isPrivate) {
|
||||
val onTabCounterMenuItemTapped = { item: TabCounterMenuItem ->
|
||||
interactor.onTabCounterMenuItemTapped(item)
|
||||
}
|
||||
val tabsAction = TabCounterToolbarButton(sessionManager, isPrivate, onTabCounterMenuItemTapped) {
|
||||
toolbar.hideKeyboard()
|
||||
interactor.onTabCounterClicked()
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@ import mozilla.components.browser.toolbar.display.DisplayToolbar
|
|||
import mozilla.components.feature.customtabs.CustomTabsToolbarFeature
|
||||
import mozilla.components.support.base.feature.LifecycleAwareFeature
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.toolbar.ToolbarMenu
|
||||
import org.mozilla.fenix.ext.settings
|
||||
|
@ -34,13 +33,11 @@ class CustomTabsIntegration(
|
|||
// Remove toolbar shadow
|
||||
toolbar.elevation = 0f
|
||||
|
||||
if (!FeatureFlags.dynamicBottomToolbar) {
|
||||
// Reduce margin height of EngineView from the top for the toolbar
|
||||
engineLayout.run {
|
||||
(layoutParams as ViewGroup.MarginLayoutParams).apply {
|
||||
val toolbarHeight = resources.getDimension(R.dimen.browser_toolbar_height).toInt()
|
||||
setMargins(0, toolbarHeight, 0, 0)
|
||||
}
|
||||
// Reduce margin height of EngineView from the top for the toolbar
|
||||
engineLayout.run {
|
||||
(layoutParams as ViewGroup.MarginLayoutParams).apply {
|
||||
val toolbarHeight = resources.getDimension(R.dimen.browser_toolbar_height).toInt()
|
||||
setMargins(0, toolbarHeight, 0, 0)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,15 +4,19 @@
|
|||
|
||||
package org.mozilla.fenix.customtabs
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.navigation.NavDestination
|
||||
import androidx.navigation.NavDirections
|
||||
import mozilla.components.browser.session.runWithSession
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.concept.engine.manifest.WebAppManifestParser
|
||||
import mozilla.components.feature.intent.ext.getSessionId
|
||||
import mozilla.components.feature.pwa.ext.getWebAppManifest
|
||||
import mozilla.components.feature.search.SearchAdapter
|
||||
import mozilla.components.support.utils.SafeIntent
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.IntentReceiverActivity
|
||||
import org.mozilla.fenix.NavGraphDirections
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -24,6 +28,12 @@ import java.security.InvalidParameterException
|
|||
*/
|
||||
open class ExternalAppBrowserActivity : HomeActivity() {
|
||||
|
||||
private val openInFenixIntent by lazy {
|
||||
Intent(this, IntentReceiverActivity::class.java).apply {
|
||||
action = Intent.ACTION_VIEW
|
||||
}
|
||||
}
|
||||
|
||||
final override fun getBreadcrumbMessage(destination: NavDestination): String {
|
||||
val fragmentName = resources.getResourceEntryName(destination.id)
|
||||
return "Changing to fragment $fragmentName, isCustomTab: true"
|
||||
|
@ -57,6 +67,19 @@ open class ExternalAppBrowserActivity : HomeActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun getSearchAdapter(store: BrowserStore): SearchAdapter {
|
||||
val baseAdapter = super.getSearchAdapter(store)
|
||||
return object : SearchAdapter {
|
||||
|
||||
override fun sendSearch(isPrivate: Boolean, text: String) {
|
||||
baseAdapter.sendSearch(isPrivate, text)
|
||||
startActivity(openInFenixIntent)
|
||||
}
|
||||
|
||||
override fun isPrivateSession() = baseAdapter.isPrivateSession()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ import mozilla.components.support.base.feature.UserInteractionHandler
|
|||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||
import mozilla.components.support.ktx.android.arch.lifecycle.addObservers
|
||||
import org.mozilla.fenix.BuildConfig
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.BaseBrowserFragment
|
||||
import org.mozilla.fenix.browser.CustomTabContextMenuCandidate
|
||||
|
@ -106,7 +105,6 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
|
|||
trustedScopes
|
||||
) { toolbarVisible ->
|
||||
if (!toolbarVisible) { engineView.setDynamicToolbarMaxHeight(0) }
|
||||
if (!FeatureFlags.dynamicBottomToolbar) { updateLayoutMargins(inFullScreen = !toolbarVisible) }
|
||||
},
|
||||
owner = this,
|
||||
view = toolbar
|
||||
|
|
|
@ -12,7 +12,6 @@ import kotlinx.android.synthetic.main.download_dialog_layout.view.*
|
|||
import mozilla.components.browser.state.state.content.DownloadState
|
||||
import mozilla.components.feature.downloads.AbstractFetchDownloadService
|
||||
import mozilla.components.feature.downloads.toMegabyteString
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.metrics
|
||||
|
@ -47,7 +46,7 @@ class DynamicDownloadDialog(
|
|||
private fun setupDownloadDialog(view: View) {
|
||||
if (downloadState == null) return
|
||||
view.apply {
|
||||
if (FeatureFlags.dynamicBottomToolbar && layoutParams is CoordinatorLayout.LayoutParams) {
|
||||
if (layoutParams is CoordinatorLayout.LayoutParams) {
|
||||
(layoutParams as CoordinatorLayout.LayoutParams).apply {
|
||||
|
||||
behavior =
|
||||
|
@ -126,10 +125,8 @@ class DynamicDownloadDialog(
|
|||
fun show() {
|
||||
view.visibility = View.VISIBLE
|
||||
|
||||
if (FeatureFlags.dynamicBottomToolbar) {
|
||||
(view.layoutParams as CoordinatorLayout.LayoutParams).apply {
|
||||
(behavior as DynamicDownloadDialogBehavior).forceExpand(view)
|
||||
}
|
||||
(view.layoutParams as CoordinatorLayout.LayoutParams).apply {
|
||||
(behavior as DynamicDownloadDialogBehavior).forceExpand(view)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,26 +5,17 @@
|
|||
package org.mozilla.fenix.ext
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.Intent.ACTION_SEND
|
||||
import android.content.Intent.EXTRA_SUBJECT
|
||||
import android.content.Intent.EXTRA_TEXT
|
||||
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
import android.view.ContextThemeWrapper
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import mozilla.components.browser.search.SearchEngineManager
|
||||
import mozilla.components.support.base.log.Log
|
||||
import mozilla.components.support.base.log.Log.Priority.WARN
|
||||
import mozilla.components.support.locale.LocaleManager
|
||||
import org.mozilla.fenix.BuildConfig
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.FenixApplication
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.Components
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.settings.advanced.getSelectedLocale
|
||||
|
@ -65,35 +56,6 @@ fun Context.asFragmentActivity() = (this as? ContextThemeWrapper)?.baseContext a
|
|||
fun Context.getPreferenceKey(@StringRes resourceId: Int): String =
|
||||
resources.getString(resourceId)
|
||||
|
||||
/**
|
||||
* Shares content via [ACTION_SEND] intent.
|
||||
*
|
||||
* @param text the data to be shared [EXTRA_TEXT]
|
||||
* @param subject of the intent [EXTRA_TEXT]
|
||||
* @return true it is able to share false otherwise.
|
||||
*/
|
||||
@Deprecated("We are replacing the system share sheet with a custom version. See: [ShareFragment]")
|
||||
fun Context.share(text: String, subject: String = ""): Boolean {
|
||||
return try {
|
||||
val intent = Intent(ACTION_SEND).apply {
|
||||
type = "text/plain"
|
||||
putExtra(EXTRA_SUBJECT, subject)
|
||||
putExtra(EXTRA_TEXT, text)
|
||||
flags = FLAG_ACTIVITY_NEW_TASK
|
||||
}
|
||||
|
||||
val shareIntent = Intent.createChooser(intent, getString(R.string.menu_share_with)).apply {
|
||||
flags = FLAG_ACTIVITY_NEW_TASK
|
||||
}
|
||||
|
||||
startActivity(shareIntent)
|
||||
true
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
Log.log(WARN, message = "No activity to share to found", throwable = e, tag = "Reference-Browser")
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Root View with an activity context
|
||||
*
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
@file:Suppress("NOTHING_TO_INLINE")
|
||||
|
||||
package org.mozilla.fenix.ext
|
||||
|
||||
import android.util.Log
|
||||
|
@ -12,7 +14,6 @@ import org.mozilla.fenix.Config
|
|||
*
|
||||
* Meant to be used for logs that should not be visible in the production app.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun logDebug(tag: String, message: String) {
|
||||
if (Config.channel.isDebug) Log.d(tag, message)
|
||||
}
|
||||
|
@ -22,7 +23,6 @@ inline fun logDebug(tag: String, message: String) {
|
|||
*
|
||||
* Meant to be used for logs that should not be visible in the production app.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun logWarn(tag: String, message: String) {
|
||||
if (Config.channel.isDebug) Log.w(tag, message)
|
||||
}
|
||||
|
@ -32,7 +32,6 @@ inline fun logWarn(tag: String, message: String) {
|
|||
*
|
||||
* Meant to be used for logs that should not be visible in the production app.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun logWarn(tag: String, message: String, err: Throwable) {
|
||||
if (Config.channel.isDebug) Log.w(tag, message, err)
|
||||
}
|
||||
|
@ -42,7 +41,6 @@ inline fun logWarn(tag: String, message: String, err: Throwable) {
|
|||
*
|
||||
* Meant to be used for logs that should not be visible in the production app.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun logErr(tag: String, message: String, err: Throwable) {
|
||||
if (Config.channel.isDebug) Log.e(tag, message, err)
|
||||
}
|
||||
|
|
|
@ -11,8 +11,12 @@ import androidx.navigation.NavDirections
|
|||
import androidx.navigation.NavOptions
|
||||
import androidx.navigation.Navigator
|
||||
import io.sentry.Sentry
|
||||
import org.mozilla.fenix.BuildConfig
|
||||
import org.mozilla.fenix.components.isSentryEnabled
|
||||
|
||||
/**
|
||||
* Navigate from the fragment with [id] using the given [directions].
|
||||
* If the id doesn't match the current destination, an error is recorded.
|
||||
*/
|
||||
fun NavController.nav(@IdRes id: Int?, directions: NavDirections, navOptions: NavOptions? = null) {
|
||||
if (id == null || this.currentDestination?.id == id) {
|
||||
this.navigate(directions, navOptions)
|
||||
|
@ -55,7 +59,7 @@ fun NavController.alreadyOnDestination(@IdRes destId: Int?): Boolean {
|
|||
}
|
||||
|
||||
fun recordIdException(actual: Int?, expected: Int?) {
|
||||
if (!BuildConfig.SENTRY_TOKEN.isNullOrEmpty()) {
|
||||
if (isSentryEnabled()) {
|
||||
Sentry.capture("Fragment id $actual did not match expected $expected")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,10 +15,7 @@ fun View.increaseTapArea(extraDps: Int) {
|
|||
parent.post {
|
||||
val touchRect = Rect()
|
||||
getHitRect(touchRect)
|
||||
touchRect.top -= dips
|
||||
touchRect.left -= dips
|
||||
touchRect.right += dips
|
||||
touchRect.bottom += dips
|
||||
touchRect.inset(-dips, -dips)
|
||||
parent.touchDelegate = TouchDelegate(touchRect, this)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import androidx.lifecycle.Observer
|
|||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE
|
||||
|
@ -49,6 +50,9 @@ import kotlinx.coroutines.delay
|
|||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import mozilla.appservices.places.BookmarkRoot
|
||||
import mozilla.components.browser.menu.BrowserMenu
|
||||
import mozilla.components.browser.menu.BrowserMenuBuilder
|
||||
import mozilla.components.browser.menu.item.BrowserMenuImageText
|
||||
import mozilla.components.browser.menu.view.MenuButton
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
|
@ -95,6 +99,7 @@ import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
|
|||
import org.mozilla.fenix.tabtray.TabTrayDialogFragment
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
import org.mozilla.fenix.utils.FragmentPreDrawManager
|
||||
import org.mozilla.fenix.utils.allowUndo
|
||||
import org.mozilla.fenix.whatsnew.WhatsNew
|
||||
import java.lang.ref.WeakReference
|
||||
import kotlin.math.abs
|
||||
|
@ -106,6 +111,8 @@ class HomeFragment : Fragment() {
|
|||
ViewModelProvider.AndroidViewModelFactory(requireActivity().application)
|
||||
}
|
||||
|
||||
private val args by navArgs<HomeFragmentArgs>()
|
||||
|
||||
private val snackbarAnchorView: View?
|
||||
get() {
|
||||
return if (requireContext().settings().shouldUseBottomToolbar) {
|
||||
|
@ -148,7 +155,7 @@ class HomeFragment : Fragment() {
|
|||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
postponeEnterTransition()
|
||||
StrictMode.allowThreadDiskReads().resetAfter {
|
||||
lifecycleScope.launch(IO) {
|
||||
if (!onboarding.userHasBeenOnboarded()) {
|
||||
requireComponents.analytics.metrics.track(Event.OpenedAppFirstRun)
|
||||
}
|
||||
|
@ -306,6 +313,10 @@ class HomeFragment : Fragment() {
|
|||
}
|
||||
|
||||
createHomeMenu(requireContext(), WeakReference(view.menuButton))
|
||||
view.tab_button.setOnLongClickListener {
|
||||
createTabCounterMenu(requireContext()).show(view.tab_button)
|
||||
true
|
||||
}
|
||||
|
||||
view.menuButton.setColorFilter(
|
||||
ContextCompat.getColor(
|
||||
|
@ -453,7 +464,40 @@ class HomeFragment : Fragment() {
|
|||
if (browsingModeManager.mode == BrowsingMode.Private) {
|
||||
activity?.window?.setBackgroundDrawableResource(R.drawable.private_home_background_gradient)
|
||||
}
|
||||
|
||||
hideToolbar()
|
||||
|
||||
args.sessionToDelete?.also {
|
||||
sessionManager.findSessionById(it)?.let { session ->
|
||||
val snapshot = sessionManager.createSessionSnapshot(session)
|
||||
val state = snapshot.engineSession?.saveState()
|
||||
val isSelected =
|
||||
session.id == requireComponents.core.store.state.selectedTabId ?: false
|
||||
|
||||
val snackbarMessage = if (snapshot.session.private) {
|
||||
requireContext().getString(R.string.snackbar_private_tab_closed)
|
||||
} else {
|
||||
requireContext().getString(R.string.snackbar_tab_closed)
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.allowUndo(
|
||||
requireView(),
|
||||
snackbarMessage,
|
||||
requireContext().getString(R.string.snackbar_deleted_undo),
|
||||
{
|
||||
sessionManager.add(
|
||||
snapshot.session,
|
||||
isSelected,
|
||||
engineSessionState = state
|
||||
)
|
||||
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToBrowserFragment(null))
|
||||
},
|
||||
operation = { },
|
||||
anchorView = snackbarAnchorView
|
||||
)
|
||||
requireComponents.useCases.tabsUseCases.removeTab.invoke(session)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
@ -545,6 +589,31 @@ class HomeFragment : Fragment() {
|
|||
)
|
||||
}
|
||||
|
||||
private fun createTabCounterMenu(context: Context): BrowserMenu {
|
||||
val primaryTextColor = ThemeManager.resolveAttribute(R.attr.primaryText, context)
|
||||
val isPrivate = (activity as HomeActivity).browsingModeManager.mode == BrowsingMode.Private
|
||||
val menuItems = listOf(
|
||||
BrowserMenuImageText(
|
||||
label = context.getString(if (isPrivate) {
|
||||
R.string.browser_menu_new_tab
|
||||
} else {
|
||||
R.string.home_screen_shortcut_open_new_private_tab_2
|
||||
}),
|
||||
imageResource = if (isPrivate) {
|
||||
R.drawable.ic_new
|
||||
} else {
|
||||
R.drawable.ic_private_browsing
|
||||
},
|
||||
iconTintColorResource = primaryTextColor,
|
||||
textColorResource = primaryTextColor
|
||||
) {
|
||||
(activity as HomeActivity).browsingModeManager.mode =
|
||||
BrowsingMode.fromBoolean(!isPrivate)
|
||||
}
|
||||
)
|
||||
return BrowserMenuBuilder(menuItems).build(context)
|
||||
}
|
||||
|
||||
@SuppressWarnings("ComplexMethod", "LongMethod")
|
||||
private fun createHomeMenu(context: Context, menuButtonView: WeakReference<MenuButton>) =
|
||||
HomeMenu(
|
||||
|
|
|
@ -99,7 +99,7 @@ class HomeMenu(
|
|||
|
||||
val bookmarksItem = BrowserMenuImageText(
|
||||
context.getString(R.string.library_bookmarks),
|
||||
R.drawable.ic_bookmark_outline,
|
||||
R.drawable.ic_bookmark_filled,
|
||||
primaryTextColor
|
||||
) {
|
||||
onItemTapped.invoke(Item.Bookmarks)
|
||||
|
@ -131,7 +131,7 @@ class HomeMenu(
|
|||
|
||||
val syncedTabsItem = BrowserMenuImageText(
|
||||
context.getString(R.string.library_synced_tabs),
|
||||
R.drawable.ic_tab_collection,
|
||||
R.drawable.ic_synced_tabs,
|
||||
primaryTextColor
|
||||
) {
|
||||
onItemTapped.invoke(Item.SyncedTabs)
|
||||
|
@ -156,15 +156,16 @@ class HomeMenu(
|
|||
if (shouldUseBottomToolbar) {
|
||||
listOfNotNull(
|
||||
accountAuthItem,
|
||||
helpItem,
|
||||
whatsNewItem,
|
||||
BrowserMenuDivider(),
|
||||
bookmarksItem,
|
||||
addons,
|
||||
BrowserMenuDivider(),
|
||||
historyItem,
|
||||
bookmarksItem,
|
||||
if (FeatureFlags.syncedTabs) syncedTabsItem else null,
|
||||
BrowserMenuDivider(),
|
||||
addons,
|
||||
settingsItem,
|
||||
helpItem,
|
||||
if (Settings.getInstance(context).shouldDeleteBrowsingDataOnQuit) quitItem else null
|
||||
).also { items ->
|
||||
items.getHighlight()?.let { onHighlightPresent(it) }
|
||||
|
@ -172,16 +173,17 @@ class HomeMenu(
|
|||
} else {
|
||||
listOfNotNull(
|
||||
if (Settings.getInstance(context).shouldDeleteBrowsingDataOnQuit) quitItem else null,
|
||||
helpItem,
|
||||
settingsItem,
|
||||
addons,
|
||||
accountAuthItem,
|
||||
BrowserMenuDivider(),
|
||||
if (FeatureFlags.syncedTabs) syncedTabsItem else null,
|
||||
bookmarksItem,
|
||||
historyItem,
|
||||
if (FeatureFlags.syncedTabs) syncedTabsItem else null,
|
||||
BrowserMenuDivider(),
|
||||
whatsNewItem
|
||||
addons,
|
||||
BrowserMenuDivider(),
|
||||
whatsNewItem,
|
||||
helpItem,
|
||||
accountAuthItem
|
||||
).also { items ->
|
||||
items.getHighlight()?.let { onHighlightPresent(it) }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
/* 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.intent
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.navigation.NavController
|
||||
import mozilla.components.feature.media.service.AbstractMediaService
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
||||
/**
|
||||
* When the media notification is clicked we need to switch to the tab where the audio/video is
|
||||
* playing. This intent has the following informations:
|
||||
* action - [AbstractMediaService.Companion.ACTION_SWITCH_TAB]
|
||||
* extra string for the tab id - [AbstractMediaService.Companion.EXTRA_TAB_ID]
|
||||
*/
|
||||
class OpenSpecificTabIntentProcessor(
|
||||
private val activity: HomeActivity
|
||||
) : HomeIntentProcessor {
|
||||
|
||||
override fun process(intent: Intent, navController: NavController, out: Intent): Boolean {
|
||||
if (intent.action == AbstractMediaService.Companion.ACTION_SWITCH_TAB) {
|
||||
val sessionManager = activity.components.core.sessionManager
|
||||
val sessionId = intent.extras?.getString(AbstractMediaService.Companion.EXTRA_TAB_ID)
|
||||
val session = sessionId?.let { sessionManager.findSessionById(it) }
|
||||
if (session != null) {
|
||||
sessionManager.select(session)
|
||||
activity.openToBrowser(BrowserDirection.FromGlobal)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
|
@ -80,7 +80,7 @@ class OnboardingTrackingProtectionViewHolder(view: View) : RecyclerView.ViewHold
|
|||
strictTrackingProtection.performClick()
|
||||
}
|
||||
val strictTitle =
|
||||
view.context.getString(R.string.onboarding_tracking_protection_strict_button)
|
||||
view.context.getString(R.string.onboarding_tracking_protection_strict_option)
|
||||
val strictSummary =
|
||||
view.context.getString(R.string.onboarding_tracking_protection_strict_button_description_2)
|
||||
contentDescription = "$strictTitle. $strictSummary"
|
||||
|
|
|
@ -10,6 +10,8 @@ import android.content.ClipData
|
|||
import android.content.ClipboardManager
|
||||
import android.content.res.Resources
|
||||
import androidx.navigation.NavController
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import mozilla.components.concept.engine.prompt.ShareData
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
|
@ -25,6 +27,7 @@ interface HistoryController {
|
|||
fun handleDeleteSome(items: Set<HistoryItem>)
|
||||
fun handleCopyUrl(item: HistoryItem)
|
||||
fun handleShare(item: HistoryItem)
|
||||
fun handleRequestSync()
|
||||
}
|
||||
|
||||
class DefaultHistoryController(
|
||||
|
@ -33,16 +36,21 @@ class DefaultHistoryController(
|
|||
private val resources: Resources,
|
||||
private val snackbar: FenixSnackbar,
|
||||
private val clipboardManager: ClipboardManager,
|
||||
private val scope: CoroutineScope,
|
||||
private val openToBrowser: (item: HistoryItem, mode: BrowsingMode?) -> Unit,
|
||||
private val displayDeleteAll: () -> Unit,
|
||||
private val invalidateOptionsMenu: () -> Unit,
|
||||
private val deleteHistoryItems: (Set<HistoryItem>) -> Unit
|
||||
private val deleteHistoryItems: (Set<HistoryItem>) -> Unit,
|
||||
private val syncHistory: suspend () -> Unit
|
||||
) : HistoryController {
|
||||
override fun handleOpen(item: HistoryItem, mode: BrowsingMode?) {
|
||||
openToBrowser(item, mode)
|
||||
}
|
||||
|
||||
override fun handleSelect(item: HistoryItem) {
|
||||
if (store.state.mode === HistoryFragmentState.Mode.Syncing) {
|
||||
return
|
||||
}
|
||||
store.dispatch(HistoryFragmentAction.AddItemForRemoval(item))
|
||||
}
|
||||
|
||||
|
@ -87,4 +95,12 @@ class DefaultHistoryController(
|
|||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun handleRequestSync() {
|
||||
scope.launch {
|
||||
store.dispatch(HistoryFragmentAction.StartSync)
|
||||
syncHistory.invoke()
|
||||
store.dispatch(HistoryFragmentAction.FinishSync)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|||
import kotlinx.coroutines.launch
|
||||
import mozilla.components.concept.engine.prompt.ShareData
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
import mozilla.components.service.fxa.sync.SyncReason
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
|
@ -72,10 +73,12 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
|
|||
isDisplayedWithBrowserToolbar = false
|
||||
),
|
||||
activity?.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager,
|
||||
lifecycleScope,
|
||||
::openItem,
|
||||
::displayDeleteAllDialog,
|
||||
::invalidateOptionsMenu,
|
||||
::deleteHistoryItems
|
||||
::deleteHistoryItems,
|
||||
::syncHistory
|
||||
)
|
||||
historyInteractor = HistoryInteractor(
|
||||
historyController
|
||||
|
@ -268,4 +271,10 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
|
|||
)
|
||||
nav(R.id.historyFragment, directions)
|
||||
}
|
||||
|
||||
private suspend fun syncHistory() {
|
||||
val accountManager = requireComponents.backgroundServices.accountManager
|
||||
accountManager.syncNowAsync(SyncReason.User).await()
|
||||
viewModel.invalidate()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,8 @@ sealed class HistoryFragmentAction : Action {
|
|||
data class RemoveItemForRemoval(val item: HistoryItem) : HistoryFragmentAction()
|
||||
object EnterDeletionMode : HistoryFragmentAction()
|
||||
object ExitDeletionMode : HistoryFragmentAction()
|
||||
object StartSync : HistoryFragmentAction()
|
||||
object FinishSync : HistoryFragmentAction()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -45,6 +47,7 @@ data class HistoryFragmentState(val items: List<HistoryItem>, val mode: Mode) :
|
|||
|
||||
object Normal : Mode()
|
||||
object Deleting : Mode()
|
||||
object Syncing : Mode()
|
||||
data class Editing(override val selectedItems: Set<HistoryItem>) : Mode()
|
||||
}
|
||||
}
|
||||
|
@ -72,5 +75,7 @@ private fun historyStateReducer(
|
|||
is HistoryFragmentAction.ExitEditMode -> state.copy(mode = HistoryFragmentState.Mode.Normal)
|
||||
is HistoryFragmentAction.EnterDeletionMode -> state.copy(mode = HistoryFragmentState.Mode.Deleting)
|
||||
is HistoryFragmentAction.ExitDeletionMode -> state.copy(mode = HistoryFragmentState.Mode.Normal)
|
||||
is HistoryFragmentAction.StartSync -> state.copy(mode = HistoryFragmentState.Mode.Syncing)
|
||||
is HistoryFragmentAction.FinishSync -> state.copy(mode = HistoryFragmentState.Mode.Normal)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,4 +57,8 @@ class HistoryInteractor(
|
|||
override fun onDeleteSome(items: Set<HistoryItem>) {
|
||||
historyController.handleDeleteSome(items)
|
||||
}
|
||||
|
||||
override fun onRequestSync() {
|
||||
historyController.handleRequestSync()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import mozilla.components.support.base.feature.UserInteractionHandler
|
|||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.library.LibraryPageView
|
||||
import org.mozilla.fenix.library.SelectionInteractor
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
|
||||
/**
|
||||
* Interface for the HistoryViewInteractor. This interface is implemented by objects that want
|
||||
|
@ -71,6 +72,11 @@ interface HistoryViewInteractor : SelectionInteractor<HistoryItem> {
|
|||
* @param items the history items to delete
|
||||
*/
|
||||
fun onDeleteSome(items: Set<HistoryItem>)
|
||||
|
||||
/**
|
||||
* Called when the user requests a sync of the history
|
||||
*/
|
||||
fun onRequestSync()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -97,12 +103,23 @@ class HistoryView(
|
|||
adapter = historyAdapter
|
||||
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
||||
}
|
||||
|
||||
val primaryTextColor =
|
||||
ThemeManager.resolveAttribute(R.attr.primaryText, context)
|
||||
view.swipe_refresh.setColorSchemeColors(primaryTextColor)
|
||||
view.swipe_refresh.setOnRefreshListener {
|
||||
interactor.onRequestSync()
|
||||
view.history_list.scrollToPosition(0)
|
||||
}
|
||||
}
|
||||
|
||||
fun update(state: HistoryFragmentState) {
|
||||
val oldMode = mode
|
||||
|
||||
view.progress_bar.isVisible = state.mode === HistoryFragmentState.Mode.Deleting
|
||||
view.swipe_refresh.isRefreshing = state.mode === HistoryFragmentState.Mode.Syncing
|
||||
view.swipe_refresh.isEnabled =
|
||||
state.mode === HistoryFragmentState.Mode.Normal || state.mode === HistoryFragmentState.Mode.Syncing
|
||||
items = state.items
|
||||
mode = state.mode
|
||||
|
||||
|
|
|
@ -1,73 +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.settings
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Build.VERSION.SDK_INT
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.getPreferenceKey
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
|
||||
/**
|
||||
* Lets the user control their default browser preferences
|
||||
*/
|
||||
class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
|
||||
val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey)
|
||||
|
||||
preferenceMakeDefaultBrowser?.onPreferenceClickListener =
|
||||
getClickListenerForMakeDefaultBrowser()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
showToolbar(getString(R.string.preferences_set_as_default_browser))
|
||||
|
||||
updatePreferences()
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.default_browser_preferences, rootKey)
|
||||
updatePreferences()
|
||||
}
|
||||
|
||||
private fun updatePreferences() {
|
||||
findPreference<DefaultBrowserPreference>(getPreferenceKey(R.string.pref_key_make_default_browser))
|
||||
?.updateSwitch()
|
||||
}
|
||||
|
||||
private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
|
||||
return if (SDK_INT >= Build.VERSION_CODES.N) {
|
||||
Preference.OnPreferenceClickListener {
|
||||
val intent = Intent(ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
|
||||
startActivity(intent)
|
||||
true
|
||||
}
|
||||
} else {
|
||||
Preference.OnPreferenceClickListener {
|
||||
(activity as HomeActivity).openToBrowserAndLoad(
|
||||
searchTermOrURL = SupportUtils.getSumoURLForTopic(
|
||||
requireContext(),
|
||||
SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
|
||||
),
|
||||
newTab = true,
|
||||
from = BrowserDirection.FromDefaultBrowserSettingsFragment
|
||||
)
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,8 +8,10 @@ import android.content.ActivityNotFoundException
|
|||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.provider.Settings
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
|
@ -114,6 +116,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.preferences, rootKey)
|
||||
updateMakeDefaultBrowserPreference()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
@ -173,6 +176,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
requireComponents.backgroundServices.accountManager.accountProfile()
|
||||
)
|
||||
}
|
||||
|
||||
updateMakeDefaultBrowserPreference()
|
||||
}
|
||||
|
||||
@Suppress("ComplexMethod", "LongMethod")
|
||||
|
@ -208,9 +213,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
requireContext().metrics.track(Event.AddonsOpenInSettings)
|
||||
SettingsFragmentDirections.actionSettingsFragmentToAddonsFragment()
|
||||
}
|
||||
resources.getString(R.string.pref_key_make_default_browser) -> {
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
|
||||
}
|
||||
resources.getString(R.string.pref_key_data_choices) -> {
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
|
||||
}
|
||||
|
@ -289,9 +291,11 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
private fun setupPreferences() {
|
||||
val leakKey = getPreferenceKey(R.string.pref_key_leakcanary)
|
||||
val debuggingKey = getPreferenceKey(R.string.pref_key_remote_debugging)
|
||||
val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
|
||||
|
||||
val preferenceLeakCanary = findPreference<Preference>(leakKey)
|
||||
val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey)
|
||||
val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey)
|
||||
|
||||
if (!Config.channel.isReleased) {
|
||||
preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue ->
|
||||
|
@ -308,6 +312,9 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
true
|
||||
}
|
||||
|
||||
preferenceMakeDefaultBrowser?.onPreferenceClickListener =
|
||||
getClickListenerForMakeDefaultBrowser()
|
||||
|
||||
val preferenceFxAOverride =
|
||||
findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_fxa_server))
|
||||
val preferenceSyncOverride =
|
||||
|
@ -335,6 +342,33 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
)?.isVisible = requireContext().settings().showSecretDebugMenuThisSession
|
||||
}
|
||||
|
||||
private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
Preference.OnPreferenceClickListener {
|
||||
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
|
||||
startActivity(intent)
|
||||
true
|
||||
}
|
||||
} else {
|
||||
Preference.OnPreferenceClickListener {
|
||||
(activity as HomeActivity).openToBrowserAndLoad(
|
||||
searchTermOrURL = SupportUtils.getSumoURLForTopic(
|
||||
requireContext(),
|
||||
SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
|
||||
),
|
||||
newTab = true,
|
||||
from = BrowserDirection.FromSettings
|
||||
)
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateMakeDefaultBrowserPreference() {
|
||||
findPreference<DefaultBrowserPreference>(getPreferenceKey(R.string.pref_key_make_default_browser))
|
||||
?.updateSwitch()
|
||||
}
|
||||
|
||||
private fun navigateFromSettings(directions: NavDirections) {
|
||||
view?.findNavController()?.let { navController ->
|
||||
if (navController.currentDestination?.id == R.id.settingsFragment) {
|
||||
|
|
|
@ -111,8 +111,9 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() {
|
|||
Event.TrackingProtectionSettingChanged.Setting.STANDARD
|
||||
TrackingProtectionMode.STRICT ->
|
||||
Event.TrackingProtectionSettingChanged.Setting.STRICT
|
||||
TrackingProtectionMode.CUSTOM -> null
|
||||
}?.let { setting ->
|
||||
TrackingProtectionMode.CUSTOM ->
|
||||
Event.TrackingProtectionSettingChanged.Setting.CUSTOM
|
||||
}.let { setting ->
|
||||
metrics.track(Event.TrackingProtectionSettingChanged(setting))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,30 +7,24 @@ package org.mozilla.fenix.settings.logins
|
|||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.InputType
|
||||
import android.text.TextWatcher
|
||||
import android.util.Log
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.inputLayoutPassword
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.inputLayoutUsername
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.hostnameText
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.usernameText
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.passwordText
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.clearUsernameTextButton
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.clearPasswordTextButton
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.revealPasswordButton
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.android.synthetic.main.fragment_edit_login.*
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import mozilla.components.concept.storage.Login
|
||||
import mozilla.components.service.sync.logins.InvalidRecordException
|
||||
|
@ -38,7 +32,6 @@ import mozilla.components.service.sync.logins.LoginsStorageException
|
|||
import mozilla.components.service.sync.logins.NoSuchRecordException
|
||||
import mozilla.components.support.ktx.android.view.hideKeyboard
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.components.StoreProvider
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -55,10 +48,12 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
private lateinit var savedLoginsStore: LoginsFragmentStore
|
||||
fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this)
|
||||
|
||||
private lateinit var oldLogin: SavedLogin
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
|
||||
oldLogin = args.savedLoginItem
|
||||
savedLoginsStore = StoreProvider.get(this) {
|
||||
LoginsFragmentStore(
|
||||
LoginsListState(
|
||||
|
@ -82,12 +77,16 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
hostnameText.isFocusable = false
|
||||
|
||||
usernameText.text = args.savedLoginItem.username.toEditable()
|
||||
passwordText.text = args.savedLoginItem.password!!.toEditable()
|
||||
passwordText.text = args.savedLoginItem.password.toEditable()
|
||||
|
||||
// TODO: extend PasswordTransformationMethod() to change bullets to asterisks
|
||||
passwordText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
|
||||
passwordText.compoundDrawablePadding =
|
||||
requireContext().resources
|
||||
.getDimensionPixelOffset(R.dimen.saved_logins_end_icon_drawable_padding)
|
||||
|
||||
setUpClickListeners()
|
||||
setUpTextListeners()
|
||||
}
|
||||
|
||||
private fun setUpClickListeners() {
|
||||
|
@ -96,18 +95,100 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
usernameText.isCursorVisible = true
|
||||
usernameText.hasFocus()
|
||||
inputLayoutUsername.hasFocus()
|
||||
it.isEnabled = false
|
||||
}
|
||||
clearPasswordTextButton.setOnClickListener {
|
||||
passwordText.text?.clear()
|
||||
passwordText.isCursorVisible = true
|
||||
passwordText.hasFocus()
|
||||
inputLayoutPassword.hasFocus()
|
||||
it.isEnabled = false
|
||||
}
|
||||
revealPasswordButton.setOnClickListener {
|
||||
togglePasswordReveal()
|
||||
}
|
||||
|
||||
var firstClick = true
|
||||
passwordText.setOnClickListener {
|
||||
togglePasswordReveal()
|
||||
if (firstClick) {
|
||||
togglePasswordReveal()
|
||||
firstClick = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setUpTextListeners() {
|
||||
val frag = view?.findViewById<View>(R.id.editLoginFragment)
|
||||
frag?.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus ->
|
||||
if (hasFocus) {
|
||||
view?.hideKeyboard()
|
||||
}
|
||||
}
|
||||
|
||||
editLoginLayout.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus ->
|
||||
if (!hasFocus) {
|
||||
view?.hideKeyboard()
|
||||
}
|
||||
}
|
||||
|
||||
usernameText.addTextChangedListener(object : TextWatcher {
|
||||
override fun afterTextChanged(u: Editable?) {
|
||||
if (u.toString() == oldLogin.username) {
|
||||
inputLayoutUsername.error = null
|
||||
inputLayoutUsername.errorIconDrawable = null
|
||||
} else {
|
||||
clearUsernameTextButton.isEnabled = true
|
||||
// setDupeError() TODO in #10173
|
||||
}
|
||||
}
|
||||
|
||||
override fun beforeTextChanged(u: CharSequence?, start: Int, count: Int, after: Int) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
override fun onTextChanged(u: CharSequence?, start: Int, before: Int, count: Int) {
|
||||
// NOOP
|
||||
}
|
||||
})
|
||||
|
||||
passwordText.addTextChangedListener(object : TextWatcher {
|
||||
override fun afterTextChanged(p: Editable?) {
|
||||
when {
|
||||
p.toString().isEmpty() -> {
|
||||
clearPasswordTextButton.isEnabled = false
|
||||
setPasswordError()
|
||||
}
|
||||
p.toString() == oldLogin.password -> {
|
||||
inputLayoutPassword.error = null
|
||||
inputLayoutPassword.errorIconDrawable = null
|
||||
clearPasswordTextButton.isEnabled = true
|
||||
}
|
||||
else -> {
|
||||
inputLayoutPassword.error = null
|
||||
inputLayoutPassword.errorIconDrawable = null
|
||||
clearPasswordTextButton.isEnabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun beforeTextChanged(p: CharSequence?, start: Int, count: Int, after: Int) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
override fun onTextChanged(p: CharSequence?, start: Int, before: Int, count: Int) {
|
||||
// NOOP
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun setPasswordError() {
|
||||
inputLayoutPassword?.let { layout ->
|
||||
layout.error = context?.getString(R.string.saved_login_password_required)
|
||||
layout.setErrorIconDrawable(R.drawable.mozac_ic_warning)
|
||||
|
||||
layout.errorIconDrawable?.setTint(
|
||||
ContextCompat.getColor(requireContext(), R.color.design_default_color_error)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -126,26 +207,26 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.save_login_button -> {
|
||||
view?.hideKeyboard()
|
||||
try {
|
||||
if (!passwordText.text.isNullOrBlank()) {
|
||||
if (!passwordText.text.isNullOrBlank()) {
|
||||
try {
|
||||
attemptSaveAndExit()
|
||||
} else {
|
||||
view?.let {
|
||||
FenixSnackbar.make(
|
||||
view = it,
|
||||
duration = Snackbar.LENGTH_SHORT,
|
||||
isDisplayedWithBrowserToolbar = false
|
||||
).setText(getString(R.string.saved_login_password_required)).show()
|
||||
} catch (loginException: LoginsStorageException) {
|
||||
when (loginException) {
|
||||
is NoSuchRecordException,
|
||||
is InvalidRecordException -> {
|
||||
Log.e(
|
||||
"Edit login",
|
||||
"Failed to save edited login.",
|
||||
loginException
|
||||
)
|
||||
}
|
||||
else -> Log.e(
|
||||
"Edit login",
|
||||
"Failed to save edited login.",
|
||||
loginException
|
||||
)
|
||||
}
|
||||
}
|
||||
} catch (loginException: LoginsStorageException) {
|
||||
when (loginException) {
|
||||
is NoSuchRecordException,
|
||||
is InvalidRecordException -> {
|
||||
Log.e("Edit login", "Failed to save edited login.", loginException)
|
||||
}
|
||||
else -> Log.e("Edit login", "Failed to save edited login.", loginException)
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
|
@ -158,9 +239,11 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
var saveLoginJob: Deferred<Unit>? = null
|
||||
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||
saveLoginJob = async {
|
||||
val oldLogin = requireContext().components.core.passwordsStorage.get(args.savedLoginItem.guid)
|
||||
val oldLogin =
|
||||
requireContext().components.core.passwordsStorage.get(args.savedLoginItem.guid)
|
||||
|
||||
// Update requires a Login type, which needs at least one of httpRealm or formActionOrigin
|
||||
// Update requires a Login type, which needs at least one of
|
||||
// httpRealm or formActionOrigin
|
||||
val loginToSave = Login(
|
||||
guid = oldLogin?.guid,
|
||||
origin = oldLogin?.origin!!,
|
||||
|
|
|
@ -24,7 +24,7 @@ data class SavedLogin(
|
|||
val guid: String,
|
||||
val origin: String,
|
||||
val username: String,
|
||||
val password: String?,
|
||||
val password: String,
|
||||
val timeLastUsed: Long
|
||||
) : Parcelable
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ import mozilla.components.concept.sync.AuthType
|
|||
import mozilla.components.concept.sync.OAuthAccount
|
||||
import mozilla.components.service.fxa.SyncEngine
|
||||
import mozilla.components.service.fxa.manager.SyncEnginesStorage
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -112,11 +113,17 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
|
||||
val autofillPreferenceKey = getPreferenceKey(R.string.pref_key_autofill_logins)
|
||||
findPreference<SwitchPreference>(autofillPreferenceKey)?.apply {
|
||||
isEnabled = context.settings().shouldPromptToSaveLogins
|
||||
isChecked =
|
||||
context.settings().shouldAutofillLogins && context.settings().shouldPromptToSaveLogins
|
||||
onPreferenceChangeListener =
|
||||
SharedPreferenceUpdater()
|
||||
// The ability to toggle autofill on the engine is only available in Nightly currently
|
||||
// See https://github.com/mozilla-mobile/fenix/issues/11320
|
||||
isVisible = Config.channel.isNightlyOrDebug
|
||||
isChecked = context.settings().shouldAutofillLogins
|
||||
onPreferenceChangeListener = object : SharedPreferenceUpdater() {
|
||||
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
|
||||
context?.components?.core?.engine?.settings?.loginAutofillEnabled =
|
||||
newValue as Boolean
|
||||
return super.onPreferenceChange(preference, newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val savedLoginsKey = getPreferenceKey(R.string.pref_key_saved_logins)
|
||||
|
|
|
@ -18,7 +18,7 @@ import androidx.lifecycle.AndroidViewModel
|
|||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import mozilla.components.concept.sync.DeviceCapability
|
||||
import mozilla.components.feature.share.RecentAppsStorage
|
||||
|
@ -38,6 +38,8 @@ class ShareViewModel(application: Application) : AndroidViewModel(application) {
|
|||
private val fxaAccountManager = application.components.backgroundServices.accountManager
|
||||
@VisibleForTesting
|
||||
internal var recentAppsStorage = RecentAppsStorage(application.applicationContext)
|
||||
@VisibleForTesting
|
||||
internal var ioDispatcher = Dispatchers.IO
|
||||
|
||||
private val devicesListLiveData = MutableLiveData<List<SyncShareOption>>(emptyList())
|
||||
private val appsListLiveData = MutableLiveData<List<AppShareOption>>(emptyList())
|
||||
|
@ -49,7 +51,7 @@ class ShareViewModel(application: Application) : AndroidViewModel(application) {
|
|||
override fun onAvailable(network: Network?) = reloadDevices(network)
|
||||
|
||||
private fun reloadDevices(network: Network?) {
|
||||
viewModelScope.launch(IO) {
|
||||
viewModelScope.launch(ioDispatcher) {
|
||||
fxaAccountManager.authenticatedAccount()
|
||||
?.deviceConstellation()
|
||||
?.refreshDevicesAsync()
|
||||
|
@ -83,7 +85,7 @@ class ShareViewModel(application: Application) : AndroidViewModel(application) {
|
|||
connectivityManager?.registerNetworkCallback(networkRequest, networkCallback)
|
||||
|
||||
// Start preparing the data as soon as we have a valid Context
|
||||
viewModelScope.launch(IO) {
|
||||
viewModelScope.launch(ioDispatcher) {
|
||||
val shareIntent = Intent(Intent.ACTION_SEND).apply {
|
||||
type = "text/plain"
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
|
@ -98,7 +100,7 @@ class ShareViewModel(application: Application) : AndroidViewModel(application) {
|
|||
appsListLiveData.postValue(apps)
|
||||
}
|
||||
|
||||
viewModelScope.launch(IO) {
|
||||
viewModelScope.launch(ioDispatcher) {
|
||||
val devices = buildDeviceList(fxaAccountManager)
|
||||
devicesListLiveData.postValue(devices)
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ class SyncedTabsLayout @JvmOverloads constructor(
|
|||
|
||||
synced_tabs_list.visibility = View.GONE
|
||||
sync_tabs_status.visibility = View.VISIBLE
|
||||
synced_tabs_pull_to_refresh.isEnabled = false
|
||||
}
|
||||
|
||||
override fun displaySyncedTabs(syncedTabs: List<SyncedDeviceTabs>) {
|
||||
|
|
|
@ -23,26 +23,63 @@ import mozilla.components.browser.state.selector.normalTabs
|
|||
import mozilla.components.browser.state.selector.privateTabs
|
||||
import mozilla.components.browser.state.state.BrowserState
|
||||
import mozilla.components.concept.engine.prompt.ShareData
|
||||
import mozilla.components.concept.tabstray.Tab
|
||||
import mozilla.components.feature.tabs.tabstray.TabsFeature
|
||||
import mozilla.components.feature.tab.collections.TabCollection
|
||||
import mozilla.components.feature.tabs.TabsUseCases
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.sessionsOfType
|
||||
import org.mozilla.fenix.utils.allowUndo
|
||||
import org.mozilla.fenix.components.TabCollectionStorage
|
||||
|
||||
@SuppressWarnings("TooManyFunctions")
|
||||
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
||||
class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
||||
private val tabsFeature = ViewBoundFeatureWrapper<TabsFeature>()
|
||||
private var _tabTrayView: TabTrayView? = null
|
||||
private val tabTrayView: TabTrayView
|
||||
get() = _tabTrayView!!
|
||||
|
||||
private val collectionStorageObserver = object : TabCollectionStorage.Observer {
|
||||
override fun onCollectionCreated(title: String, sessions: List<Session>) {
|
||||
showCollectionSnackbar()
|
||||
}
|
||||
|
||||
override fun onTabsAdded(tabCollection: TabCollection, sessions: List<Session>) {
|
||||
showCollectionSnackbar()
|
||||
}
|
||||
}
|
||||
|
||||
private val selectTabUseCase = object : TabsUseCases.SelectTabUseCase {
|
||||
override fun invoke(tabId: String) {
|
||||
requireComponents.useCases.tabsUseCases.selectTab(tabId)
|
||||
navigateToBrowser()
|
||||
}
|
||||
|
||||
override fun invoke(session: Session) {
|
||||
requireComponents.useCases.tabsUseCases.selectTab(session)
|
||||
navigateToBrowser()
|
||||
}
|
||||
}
|
||||
|
||||
private val removeTabUseCase = object : TabsUseCases.RemoveTabUseCase {
|
||||
override fun invoke(sessionId: String) {
|
||||
showUndoSnackbarForTab(sessionId)
|
||||
requireComponents.useCases.tabsUseCases.removeTab(sessionId)
|
||||
}
|
||||
|
||||
override fun invoke(session: Session) {
|
||||
showUndoSnackbarForTab(session.id)
|
||||
requireComponents.useCases.tabsUseCases.removeTab(session)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setStyle(STYLE_NO_TITLE, R.style.TabTrayDialogStyle)
|
||||
|
@ -57,7 +94,10 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
|||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
|
||||
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
val isLandscape = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
tabTrayView.setTopOffset(isLandscape)
|
||||
|
||||
if (isLandscape) {
|
||||
tabTrayView.expand()
|
||||
}
|
||||
}
|
||||
|
@ -77,13 +117,14 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
|||
TabsFeature(
|
||||
tabTrayView.view.tabsTray,
|
||||
view.context.components.core.store,
|
||||
view.context.components.useCases.tabsUseCases,
|
||||
selectTabUseCase,
|
||||
removeTabUseCase,
|
||||
view.context.components.useCases.thumbnailUseCases,
|
||||
{ it.content.private == isPrivate },
|
||||
{ }
|
||||
),
|
||||
viewLifecycleOwner,
|
||||
view
|
||||
owner = viewLifecycleOwner,
|
||||
view = view
|
||||
)
|
||||
|
||||
tabLayout.setOnClickListener {
|
||||
|
@ -110,20 +151,15 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_tabTrayView = null
|
||||
}
|
||||
|
||||
override fun onTabClosed(tab: Tab) {
|
||||
private fun showUndoSnackbarForTab(sessionId: String) {
|
||||
val sessionManager = view?.context?.components?.core?.sessionManager
|
||||
val snapshot = sessionManager
|
||||
?.findSessionById(tab.id)?.let {
|
||||
?.findSessionById(sessionId)?.let {
|
||||
sessionManager.createSessionSnapshot(it)
|
||||
} ?: return
|
||||
|
||||
val state = snapshot.engineSession?.saveState()
|
||||
val isSelected = tab.id == requireComponents.core.store.state.selectedTabId ?: false
|
||||
val isSelected = sessionId == requireComponents.core.store.state.selectedTabId ?: false
|
||||
|
||||
val snackbarMessage = if (snapshot.session.private) {
|
||||
getString(R.string.snackbar_private_tab_closed)
|
||||
|
@ -145,7 +181,12 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onTabSelected(tab: Tab) {
|
||||
override fun onDestroyView() {
|
||||
_tabTrayView = null
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
fun navigateToBrowser() {
|
||||
dismissAllowingStateLoss()
|
||||
if (findNavController().currentDestination?.id == R.id.browserFragment) return
|
||||
if (!findNavController().popBackStack(R.id.browserFragment, false)) {
|
||||
|
@ -182,6 +223,9 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
|||
|
||||
if (navController.currentDestination?.id == R.id.collectionCreationFragment) return
|
||||
|
||||
// Only register the observer right before moving to collection creation
|
||||
registerCollectionStorageObserver()
|
||||
|
||||
val directions = TabTrayDialogFragmentDirections.actionGlobalCollectionCreationFragment(
|
||||
tabIds = tabIds,
|
||||
saveCollectionStep = step,
|
||||
|
@ -252,11 +296,37 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), TabTrayInteractor {
|
|||
}
|
||||
}
|
||||
|
||||
private fun registerCollectionStorageObserver() {
|
||||
requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this)
|
||||
}
|
||||
|
||||
private fun showCollectionSnackbar() {
|
||||
view.let {
|
||||
val snackbar = FenixSnackbar
|
||||
.make(
|
||||
duration = FenixSnackbar.LENGTH_LONG,
|
||||
isDisplayedWithBrowserToolbar = true,
|
||||
view = (view as View)
|
||||
)
|
||||
.setText(requireContext().getString(R.string.create_collection_tabs_saved))
|
||||
.setAction(requireContext().getString(R.string.create_collection_view)) {
|
||||
dismissAllowingStateLoss()
|
||||
findNavController().navigate(TabTrayDialogFragmentDirections.actionGlobalHome())
|
||||
}
|
||||
|
||||
snackbar.view.elevation = ELEVATION
|
||||
snackbar.show()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val ELEVATION = 80f
|
||||
private const val FRAGMENT_TAG = "tabTrayDialogFragment"
|
||||
|
||||
fun show(fragmentManager: FragmentManager) {
|
||||
// If we've killed the fragmentManager. Let's not try to show the tabs tray.
|
||||
if (fragmentManager.isDestroyed) { return }
|
||||
|
||||
// We want to make sure we don't accidentally show the dialog twice if
|
||||
// a user somehow manages to trigger `show()` twice before we present the dialog.
|
||||
if (fragmentManager.findFragmentByTag(FRAGMENT_TAG) == null) {
|
||||
|
|
|
@ -14,7 +14,6 @@ import androidx.core.view.isVisible
|
|||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import kotlinx.android.extensions.LayoutContainer
|
||||
import kotlinx.android.synthetic.main.component_tabstray.*
|
||||
import kotlinx.android.synthetic.main.component_tabstray.view.*
|
||||
import kotlinx.android.synthetic.main.component_tabstray_fab.view.*
|
||||
import mozilla.components.browser.menu.BrowserMenuBuilder
|
||||
|
@ -24,14 +23,10 @@ import mozilla.components.browser.state.selector.privateTabs
|
|||
import mozilla.components.browser.state.state.BrowserState
|
||||
import mozilla.components.browser.state.state.TabSessionState
|
||||
import mozilla.components.browser.tabstray.BrowserTabsTray
|
||||
import mozilla.components.concept.tabstray.Tab
|
||||
import mozilla.components.concept.tabstray.TabsTray
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
||||
interface TabTrayInteractor {
|
||||
fun onTabClosed(tab: Tab)
|
||||
fun onTabSelected(tab: Tab)
|
||||
fun onNewTabTapped(private: Boolean)
|
||||
fun onTabTrayDismissed()
|
||||
fun onShareTabsClicked(private: Boolean)
|
||||
|
@ -47,7 +42,7 @@ class TabTrayView(
|
|||
isPrivate: Boolean,
|
||||
startingInLandscape: Boolean,
|
||||
private val filterTabs: ((TabSessionState) -> Boolean) -> Unit
|
||||
) : LayoutContainer, TabsTray.Observer, TabLayout.OnTabSelectedListener {
|
||||
) : LayoutContainer, TabLayout.OnTabSelectedListener {
|
||||
val fabView = LayoutInflater.from(container.context)
|
||||
.inflate(R.layout.component_tabstray_fab, container, true)
|
||||
|
||||
|
@ -109,7 +104,7 @@ class TabTrayView(
|
|||
expand()
|
||||
}
|
||||
|
||||
behavior.setExpandedOffset(view.context.resources.getDimension(R.dimen.tab_tray_top_offset).toInt())
|
||||
setTopOffset(startingInLandscape)
|
||||
|
||||
(view.tabsTray as? BrowserTabsTray)?.also { tray ->
|
||||
TabsTouchHelper(tray.tabsAdapter).attachToRecyclerView(tray)
|
||||
|
@ -150,18 +145,12 @@ class TabTrayView(
|
|||
fabView.new_tab_button.setOnClickListener {
|
||||
interactor.onNewTabTapped(isPrivateModeSelected)
|
||||
}
|
||||
|
||||
tabsTray.register(this, view)
|
||||
}
|
||||
|
||||
fun expand() {
|
||||
behavior.state = BottomSheetBehavior.STATE_EXPANDED
|
||||
}
|
||||
|
||||
override fun onTabSelected(tab: Tab) {
|
||||
interactor.onTabSelected(tab)
|
||||
}
|
||||
|
||||
override fun onTabSelected(tab: TabLayout.Tab?) {
|
||||
// We need a better way to determine which tab was selected.
|
||||
val filter: (TabSessionState) -> Boolean = when (tab?.position) {
|
||||
|
@ -175,6 +164,9 @@ class TabTrayView(
|
|||
updateState(view.context.components.core.store.state)
|
||||
}
|
||||
|
||||
override fun onTabReselected(tab: TabLayout.Tab?) { /*noop*/ }
|
||||
override fun onTabUnselected(tab: TabLayout.Tab?) { /*noop*/ }
|
||||
|
||||
fun updateState(state: BrowserState) {
|
||||
view.let {
|
||||
val hasNoTabs = if (isPrivateModeSelected) {
|
||||
|
@ -197,13 +189,7 @@ class TabTrayView(
|
|||
}
|
||||
}
|
||||
|
||||
override fun onTabClosed(tab: Tab) {
|
||||
interactor.onTabClosed(tab)
|
||||
}
|
||||
override fun onTabReselected(tab: TabLayout.Tab?) { /*noop*/ }
|
||||
override fun onTabUnselected(tab: TabLayout.Tab?) { /*noop*/ }
|
||||
|
||||
fun toggleFabText(private: Boolean) {
|
||||
private fun toggleFabText(private: Boolean) {
|
||||
if (private) {
|
||||
fabView.new_tab_button.extend()
|
||||
fabView.new_tab_button.contentDescription = view.context.resources.getString(R.string.add_private_tab)
|
||||
|
@ -213,6 +199,16 @@ class TabTrayView(
|
|||
}
|
||||
}
|
||||
|
||||
fun setTopOffset(landscape: Boolean) {
|
||||
val topOffset = if (landscape) {
|
||||
0
|
||||
} else {
|
||||
view.context.resources.getDimension(R.dimen.tab_tray_top_offset).toInt()
|
||||
}
|
||||
|
||||
behavior.setExpandedOffset(topOffset)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val DEFAULT_TAB_ID = 0
|
||||
private const val PRIVATE_TAB_ID = 1
|
||||
|
|
|
@ -17,6 +17,7 @@ import android.view.View
|
|||
import android.widget.RemoteViews
|
||||
import androidx.annotation.Dimension
|
||||
import androidx.annotation.Dimension.DP
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
|
@ -27,7 +28,6 @@ import org.mozilla.fenix.home.intent.StartSearchIntentProcessor
|
|||
import org.mozilla.fenix.widget.VoiceSearchActivity
|
||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_PROCESSING
|
||||
|
||||
@Suppress("TooManyFunctions")
|
||||
class SearchWidgetProvider : AppWidgetProvider() {
|
||||
// Implementation note:
|
||||
// This class name (SearchWidgetProvider) and package name (org.mozilla.gecko.search) should
|
||||
|
@ -79,31 +79,9 @@ class SearchWidgetProvider : AppWidgetProvider() {
|
|||
appWidgetManager.updateAppWidget(appWidgetId, views)
|
||||
}
|
||||
|
||||
private fun getLayoutSize(@Dimension(unit = DP) dp: Int) = when {
|
||||
dp >= DP_LARGE -> SearchWidgetProviderSize.LARGE
|
||||
dp >= DP_MEDIUM -> SearchWidgetProviderSize.MEDIUM
|
||||
dp >= DP_SMALL -> SearchWidgetProviderSize.SMALL
|
||||
dp >= DP_EXTRA_SMALL -> SearchWidgetProviderSize.EXTRA_SMALL_V2
|
||||
else -> SearchWidgetProviderSize.EXTRA_SMALL_V1
|
||||
}
|
||||
|
||||
private fun getLayout(size: SearchWidgetProviderSize, showMic: Boolean) = when (size) {
|
||||
SearchWidgetProviderSize.LARGE -> R.layout.search_widget_large
|
||||
SearchWidgetProviderSize.MEDIUM -> R.layout.search_widget_medium
|
||||
SearchWidgetProviderSize.SMALL -> {
|
||||
if (showMic) R.layout.search_widget_small
|
||||
else R.layout.search_widget_small_no_mic
|
||||
}
|
||||
SearchWidgetProviderSize.EXTRA_SMALL_V2 -> R.layout.search_widget_extra_small_v2
|
||||
SearchWidgetProviderSize.EXTRA_SMALL_V1 -> R.layout.search_widget_extra_small_v1
|
||||
}
|
||||
|
||||
private fun getText(layout: SearchWidgetProviderSize, context: Context) = when (layout) {
|
||||
SearchWidgetProviderSize.MEDIUM -> context.getString(R.string.search_widget_text_short)
|
||||
SearchWidgetProviderSize.LARGE -> context.getString(R.string.search_widget_text_long)
|
||||
else -> null
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds pending intent that opens the browser and starts a new text search.
|
||||
*/
|
||||
private fun createTextSearchIntent(context: Context): PendingIntent {
|
||||
return Intent(context, IntentReceiverActivity::class.java)
|
||||
.let { intent ->
|
||||
|
@ -114,6 +92,9 @@ class SearchWidgetProvider : AppWidgetProvider() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds pending intent that starts a new voice search.
|
||||
*/
|
||||
private fun createVoiceSearchIntent(context: Context): PendingIntent? {
|
||||
val voiceIntent = Intent(context, VoiceSearchActivity::class.java).apply {
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||
|
@ -156,7 +137,7 @@ class SearchWidgetProvider : AppWidgetProvider() {
|
|||
// Unlike "small" widget, "medium" and "large" sizes do not have separate layouts
|
||||
// that exclude the microphone icon, which is why we must hide it accordingly here.
|
||||
if (voiceSearchIntent == null) {
|
||||
this.setViewVisibility(R.id.button_search_widget_voice, View.GONE)
|
||||
setViewVisibility(R.id.button_search_widget_voice, View.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -187,6 +168,40 @@ class SearchWidgetProvider : AppWidgetProvider() {
|
|||
private const val DP_LARGE = 256
|
||||
private const val REQUEST_CODE_NEW_TAB = 0
|
||||
private const val REQUEST_CODE_VOICE = 1
|
||||
|
||||
@VisibleForTesting
|
||||
internal fun getLayoutSize(@Dimension(unit = DP) dp: Int) = when {
|
||||
dp >= DP_LARGE -> SearchWidgetProviderSize.LARGE
|
||||
dp >= DP_MEDIUM -> SearchWidgetProviderSize.MEDIUM
|
||||
dp >= DP_SMALL -> SearchWidgetProviderSize.SMALL
|
||||
dp >= DP_EXTRA_SMALL -> SearchWidgetProviderSize.EXTRA_SMALL_V2
|
||||
else -> SearchWidgetProviderSize.EXTRA_SMALL_V1
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the layout resource to use for the search widget.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
internal fun getLayout(size: SearchWidgetProviderSize, showMic: Boolean) = when (size) {
|
||||
SearchWidgetProviderSize.LARGE -> R.layout.search_widget_large
|
||||
SearchWidgetProviderSize.MEDIUM -> R.layout.search_widget_medium
|
||||
SearchWidgetProviderSize.SMALL -> {
|
||||
if (showMic) R.layout.search_widget_small
|
||||
else R.layout.search_widget_small_no_mic
|
||||
}
|
||||
SearchWidgetProviderSize.EXTRA_SMALL_V2 -> R.layout.search_widget_extra_small_v2
|
||||
SearchWidgetProviderSize.EXTRA_SMALL_V1 -> R.layout.search_widget_extra_small_v1
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the text to place in the search widget
|
||||
*/
|
||||
@VisibleForTesting
|
||||
internal fun getText(layout: SearchWidgetProviderSize, context: Context) = when (layout) {
|
||||
SearchWidgetProviderSize.MEDIUM -> context.getString(R.string.search_widget_text_short)
|
||||
SearchWidgetProviderSize.LARGE -> context.getString(R.string.search_widget_text_long)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<?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/. -->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="true"
|
||||
android:color="?primaryText" />
|
||||
<item android:state_enabled="false"
|
||||
android:color="@android:color/transparent" />
|
||||
</selector>
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M16.7 21H7.3A3.3 3.3 0 0 1 4 17.7V6.3C4 4.5 5.5 3 7.3 3h9.4C18.5 3 20 4.5 20 6.3v11.4c0 1.8-1.5 3.3-3.3 3.3zM7.3 5C6.6 5 6 5.6 6 6.3v11.4c0 0.7 0.6 1.3 1.3 1.3h9.4c0.7 0 1.3-0.6 1.3-1.3V6.3c0-0.7-0.6-1.3-1.3-1.3H7.3zM15 8H9a0.5 0.5 0 0 1 0-1h6a0.5 0.5 0 0 1 0 1zm0 3H9a0.5 0.5 0 0 1 0-1h6a0.5 0.5 0 0 1 0 1zm0 3H9a0.5 0.5 0 0 1 0-1h6a0.5 0.5 0 0 1 0 1zm-3.4 3H9a0.5 0.5 0 0 1 0-1h2.6a0.5 0.5 0 0 1 0 1z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:type="linear"
|
||||
android:startX="24"
|
||||
android:startY="0"
|
||||
android:endX="0"
|
||||
android:endY="24"
|
||||
android:startColor="?readerModeStartGradient"
|
||||
android:endColor="?readerModeEndGradient"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="m14.5,12.833v-7.5a0.836,0.836 0,0 0,-0.833 -0.833h-10.834a0.836,0.836 0,0 0,-0.833 0.833v7.5a0.836,0.836 0,0 0,0.833 0.834h10.834a0.836,0.836 0,0 0,0.833 -0.834zM12,12h-8.333v-5.833h8.333zM13.25,10.333a0.417,0.417 0,0 1,-0.417 -0.416v-1.667a0.417,0.417 0,0 1,0.834 0v1.667a0.417,0.417 0,0 1,-0.417 0.416z"
|
||||
android:fillColor="?primaryText"/>
|
||||
<path
|
||||
android:pathData="m21.375,17.833h-1.042v-7.033a1.259,1.259 0,0 0,-1.217 -1.3h-3.783v1.667h3.334v5h-8.334v-1.667h-1.666v3.333h-1.042c-0.345,0 -0.625,0.373 -0.625,0.834s0.28,0.833 0.625,0.833h13.75c0.345,0 0.625,-0.372 0.625,-0.833s-0.28,-0.834 -0.625,-0.834zM17,18.667h-5v-0.834h5z"
|
||||
android:fillColor="?primaryText"/>
|
||||
</vector>
|
|
@ -5,6 +5,6 @@
|
|||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="@android:color/white" />
|
||||
<stroke android:width="1dp" android:color="?toolbarDivider" />
|
||||
<solid android:color="@color/top_site_background" />
|
||||
<stroke android:width="1dp" android:color="@color/top_site_border" />
|
||||
</shape>
|
|
@ -33,9 +33,16 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/history_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:listitem="@layout/history_list_item"/>
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
android:id="@+id/top_sites_list"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
tools:listitem="@layout/top_site_item" />
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="72dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:layout_marginTop="12dp" >
|
||||
android:layout_marginTop="12dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hostnameHeaderText"
|
||||
|
@ -125,7 +127,7 @@
|
|||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:cursorVisible="true"
|
||||
android:textCursorDrawable="?primaryText"
|
||||
android:textCursorDrawable="@null"
|
||||
app:backgroundTint="?primaryText"
|
||||
tools:ignore="Autofill"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
@ -135,9 +137,9 @@
|
|||
android:layout_width="48dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:background="@null"
|
||||
android:contentDescription="@string/saved_login_copy_username"
|
||||
app:tint="?android:colorAccent"
|
||||
app:tint="@color/saved_login_clear_edit_text_tint"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/inputLayoutUsername"
|
||||
app:srcCompat="@drawable/ic_clear" />
|
||||
|
@ -186,6 +188,7 @@
|
|||
android:colorControlActivated="?primaryText"
|
||||
android:colorControlHighlight="?primaryText"
|
||||
android:cursorVisible="true"
|
||||
android:textCursorDrawable="@null"
|
||||
android:ellipsize="end"
|
||||
android:focusable="true"
|
||||
android:fontFamily="sans-serif"
|
||||
|
@ -195,7 +198,6 @@
|
|||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:textColor="?primaryText"
|
||||
android:textCursorDrawable="?primaryText"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="normal"
|
||||
app:backgroundTint="?primaryText"
|
||||
|
@ -207,9 +209,9 @@
|
|||
android:layout_width="48dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="3dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:background="@null"
|
||||
android:contentDescription="@string/saved_login_reveal_password"
|
||||
app:tint="?android:colorAccent"
|
||||
app:tint="?primaryText"
|
||||
app:layout_constraintEnd_toStartOf="@id/clearPasswordTextButton"
|
||||
app:layout_constraintTop_toTopOf="@id/inputLayoutPassword"
|
||||
app:srcCompat="@drawable/mozac_ic_password_reveal" />
|
||||
|
@ -218,9 +220,9 @@
|
|||
android:id="@+id/clearPasswordTextButton"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="30dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:background="@null"
|
||||
android:contentDescription="@string/saved_logins_copy_password"
|
||||
app:tint="?android:colorAccent"
|
||||
app:tint="@color/saved_login_clear_edit_text_tint"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/revealPasswordButton"
|
||||
app:srcCompat="@drawable/ic_clear" />
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
android:layout_height="40dp"
|
||||
android:layout_marginStart="28dp"
|
||||
android:layout_marginTop="56dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:clickable="false"
|
||||
android:contentDescription="@string/app_name"
|
||||
|
|
|
@ -124,7 +124,6 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="30dp"
|
||||
android:gravity="center_vertical"
|
||||
android:inputType="textPassword|text"
|
||||
android:letterSpacing="0.01"
|
||||
android:lineSpacingExtra="8sp"
|
||||
android:layout_marginTop="2dp"
|
||||
|
@ -142,7 +141,7 @@
|
|||
android:layout_width="48dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginBottom="2dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:background="@null"
|
||||
android:contentDescription="@string/saved_login_reveal_password"
|
||||
app:layout_constraintBottom_toBottomOf="@id/passwordText"
|
||||
app:layout_constraintEnd_toStartOf="@id/copyPassword"
|
||||
|
@ -153,7 +152,7 @@
|
|||
android:id="@+id/copyPassword"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="30dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:background="@null"
|
||||
android:contentDescription="@string/saved_logins_copy_password"
|
||||
app:layout_constraintBottom_toBottomOf="@id/revealPasswordButton"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
@ -7,5 +7,4 @@
|
|||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/tabLayout"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:clipToPadding="false" />
|
||||
android:layout_width="match_parent" />
|
||||
|
|
|
@ -9,16 +9,34 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:elevation="1dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/add_ons_overlay_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="start|center_vertical"
|
||||
android:padding="16dp"
|
||||
android:text="@string/mozac_add_on_install_progress_caption"
|
||||
app:drawableStartCompat="@drawable/mozac_ic_extensions_black" />
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/add_ons_overlay_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="start|center_vertical"
|
||||
android:padding="16dp"
|
||||
android:text="@string/mozac_add_on_install_progress_caption"
|
||||
app:drawableStartCompat="@drawable/mozac_ic_extensions_black" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel_button"
|
||||
style="?android:attr/borderlessButtonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/add_ons_overlay_text"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:text="@string/mozac_feature_addons_install_addon_dialog_cancel"
|
||||
android:textAllCaps="false" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
|
|
@ -71,21 +71,34 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/recentAppsContainer"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/appsList"
|
||||
<!-- Having the RecyclerView inside a RelativeLayout means
|
||||
the RecyclerView will load all items at once and never recycle.
|
||||
This is a conscious choice since we use HorizontalScrollView to scroll all
|
||||
children horizontally and so prevent scrolling in the RecyclerViews. -->
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/share_all_apps_list_margin"
|
||||
android:clipToPadding="false"
|
||||
android:minHeight="@dimen/share_list_min_height"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/recentAppsContainer"
|
||||
app:layout_constraintTop_toBottomOf="@id/apps_link_header"
|
||||
app:spanCount="2" />
|
||||
app:layout_constraintTop_toBottomOf="@id/apps_link_header">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/appsList"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/share_all_apps_list_margin"
|
||||
android:clipToPadding="false"
|
||||
android:minHeight="@dimen/share_list_min_height"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:spanCount="2" />
|
||||
</RelativeLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</HorizontalScrollView>
|
||||
|
||||
|
|
|
@ -8,8 +8,7 @@
|
|||
android:id="@+id/top_site_item"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="16dp">
|
||||
android:padding="8dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/favicon_wrapper"
|
||||
|
@ -37,7 +36,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:textColor="?primaryText"
|
||||
android:textColor="@color/top_site_title_text"
|
||||
android:textSize="10sp"
|
||||
android:layout_marginTop="8dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
|
|
@ -8,6 +8,6 @@
|
|||
android:id="@+id/confirm_add_folder_button"
|
||||
android:icon="@drawable/mozac_ic_check"
|
||||
app:iconTint="?primaryText"
|
||||
android:title="@string/bookmark_add_folder"
|
||||
android:title="@string/bookmark_menu_save_button"
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
||||
|
|
|
@ -8,6 +8,6 @@
|
|||
android:id="@+id/add_folder_button"
|
||||
android:icon="@drawable/ic_new"
|
||||
app:iconTint="?primaryText"
|
||||
android:title="@string/bookmark_select_folder"
|
||||
android:title="@string/bookmark_add_folder"
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
||||
|
|
|
@ -66,6 +66,11 @@
|
|||
app:destination="@id/browserFragment"
|
||||
app:exitAnim="@anim/zoom_in_fade"
|
||||
app:popEnterAnim="@anim/zoom_out_fade" />
|
||||
<argument
|
||||
android:name="session_to_delete"
|
||||
app:argType="string"
|
||||
app:nullable="true"
|
||||
android:defaultValue="@null" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
|
@ -446,13 +451,6 @@
|
|||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right"
|
||||
app:destination="@id/deleteBrowsingDataOnQuitFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_defaultBrowserSettingsFragment"
|
||||
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/defaultBrowserSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_localeSettingsFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
|
@ -709,9 +707,6 @@
|
|||
<fragment
|
||||
android:id="@+id/addNewDeviceFragment"
|
||||
android:name="org.mozilla.fenix.share.AddNewDeviceFragment" />
|
||||
<fragment
|
||||
android:id="@+id/defaultBrowserSettingsFragment"
|
||||
android:name="org.mozilla.fenix.settings.DefaultBrowserSettingsFragment"/>
|
||||
<fragment
|
||||
android:id="@+id/addSearchEngineFragment"
|
||||
android:name="org.mozilla.fenix.settings.search.AddSearchEngineFragment" />
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"v": "5.5.5",
|
||||
"v": "5.6.5",
|
||||
"fr": 30,
|
||||
"ip": 0,
|
||||
"op": 17,
|
||||
|
@ -48,8 +48,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -348,8 +348,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -783,7 +783,7 @@
|
|||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
9.75,
|
||||
9.998,
|
||||
12,
|
||||
0
|
||||
],
|
||||
|
@ -801,8 +801,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -1158,7 +1158,7 @@
|
|||
{
|
||||
"t": 17,
|
||||
"s": [
|
||||
100
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@ -1190,8 +1190,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"v": "5.5.5",
|
||||
"v": "5.6.5",
|
||||
"fr": 30,
|
||||
"ip": 0,
|
||||
"op": 17,
|
||||
"w": 24,
|
||||
"h": 24,
|
||||
"nm": "Shield - Final for export (updated colours - Amy)",
|
||||
"nm": "Shield - Final 24x24 (on Light)",
|
||||
"ddd": 0,
|
||||
"assets": [],
|
||||
"layers": [
|
||||
|
@ -48,8 +48,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -348,8 +348,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -705,8 +705,8 @@
|
|||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
6,
|
||||
7
|
||||
6.035,
|
||||
7.01
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
|
@ -783,7 +783,7 @@
|
|||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
9.75,
|
||||
9.998,
|
||||
12,
|
||||
0
|
||||
],
|
||||
|
@ -801,8 +801,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -1190,8 +1190,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -1444,35 +1444,35 @@
|
|||
],
|
||||
"v": [
|
||||
[
|
||||
-4,
|
||||
-3.953,
|
||||
-4.3
|
||||
],
|
||||
[
|
||||
-4,
|
||||
-3.953,
|
||||
-1
|
||||
],
|
||||
[
|
||||
-2.513,
|
||||
-2.466,
|
||||
3.382
|
||||
],
|
||||
[
|
||||
0,
|
||||
0.047,
|
||||
4.987
|
||||
],
|
||||
[
|
||||
2.512,
|
||||
2.559,
|
||||
3.382
|
||||
],
|
||||
[
|
||||
4,
|
||||
4.047,
|
||||
-1
|
||||
],
|
||||
[
|
||||
4,
|
||||
4.047,
|
||||
-4.3
|
||||
],
|
||||
[
|
||||
0,
|
||||
0.047,
|
||||
-4.985
|
||||
]
|
||||
],
|
||||
|
@ -1519,8 +1519,8 @@
|
|||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
6,
|
||||
7
|
||||
6.026,
|
||||
7.035
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
|
@ -1579,4 +1579,4 @@
|
|||
}
|
||||
],
|
||||
"markers": []
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"v": "5.5.5",
|
||||
"v": "5.6.5",
|
||||
"fr": 30,
|
||||
"ip": 0,
|
||||
"op": 17,
|
||||
|
@ -48,8 +48,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -348,8 +348,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -783,7 +783,7 @@
|
|||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
9.75,
|
||||
9.998,
|
||||
12,
|
||||
0
|
||||
],
|
||||
|
@ -801,8 +801,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
@ -1158,7 +1158,7 @@
|
|||
{
|
||||
"t": 17,
|
||||
"s": [
|
||||
100
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@ -1190,8 +1190,8 @@
|
|||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
150,
|
||||
150,
|
||||
133.5,
|
||||
133.5,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<string name="no_open_tabs_description">Equi van amosase les llingüetes abiertes.</string>
|
||||
|
||||
<!-- No Private Tabs Message Description -->
|
||||
<string name="no_private_tabs_description">Les llingüetes privaes van amosase equí.</string>
|
||||
<string name="no_private_tabs_description">Equi van amosase les llingüetes abiertes.</string>
|
||||
|
||||
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
|
||||
<string name="about_content">%1$s ta producíu por Mozilla.</string>
|
||||
|
@ -99,8 +99,6 @@
|
|||
<string name="browser_menu_new_tab">Llingüeta nueva</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Guardar nuna coleición</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Informar d\'un problema col sitiu</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Compartir</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -114,7 +112,7 @@
|
|||
<!-- 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">Cola potencia de %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">Mou de llector</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Abrir nuna aplicación</string>
|
||||
|
@ -344,6 +342,9 @@
|
|||
<!-- Header of the Turn on Sync preference view -->
|
||||
<string name="preferences_sync">Activación de Sync</string>
|
||||
|
||||
<!-- Pairing Feature strings -->
|
||||
<!-- Instructions on how to access pairing -->
|
||||
<string name="pair_instructions_2"><![CDATA[Escania\'l códigu QR que s\'amuesa en <b>firefox.com/pair</b>]]></string>
|
||||
<!-- Button to open camera for pairing -->
|
||||
<string name="pair_open_camera">Abrir la cámara</string>
|
||||
<!-- Button to cancel pairing -->
|
||||
|
@ -399,6 +400,16 @@
|
|||
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Amestar una llingüeta</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">En privao</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Guardar nuna coleición</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Compartir toles llingüetes</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Zarrar toles llingüetes</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Llingüeta nueva</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
<string name="close_tab">Zarrar la llingüeta</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
||||
|
@ -433,6 +444,9 @@
|
|||
<!-- Text for the menu button to remove a top site -->
|
||||
<string name="remove_top_site">Desaniciar</string>
|
||||
|
||||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (en privao)</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Desaniciar l\'historial</string>
|
||||
|
@ -822,20 +836,11 @@
|
|||
<string name="onboarding_firefox_account_sync_is_on">La sincronización ta activada</string>
|
||||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Fallu al aniciar sesión</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Proteición</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 ayuda a impidir que los sitios web te rastrexen en llinia.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Estándar</string>
|
||||
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Bloquia dellos rastrexadores pero permite que les páxines carguen normalmente</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header_2">Privacidá automática</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Estricta (aconséyase)</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Bloquia más rastrexadores pa más proteición y rindimientu pero podría causar que dalgunos sitios nun funcionen afayadizamente</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 -->
|
||||
|
@ -918,28 +923,14 @@
|
|||
<string name="preference_enhanced_tracking_protection_explanation">Curia los tos datos. %s protéxite de la mayoría de rastrexadores comunes que siguen lo que faes en llinia.</string>
|
||||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Deprender más</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Estándar</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Estándar (aconséyase)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Les páxines van cargar de forma nomal pero blóquiense dellos rastrexadores.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Qué se bloquia coles proteición estándar escontra\'l rastrexu</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Estricta</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Estricta (por defeutu)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">La proteición ye mayor y el rindimientu ameyora pero dalgunos sitios quiciabes nun carguen afayadizamente.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Estricta (aconséyase)</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Lo que la proteición estricta escontra\'l rastrexu bloquia</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Personalizar</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Escueyes los rastrexadores y scripts a bloquiar</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Lo que la proteición personalizada escontra\'l rastrexu bloquia</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -989,8 +980,6 @@
|
|||
<string name="etp_tracking_content_title">Conteníu que rastrexa</string>
|
||||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Para la carga d\'anuncios, vídeos y otru conteníu esternu que contenga códigu que rastrexe. Quiciabes afeute a la funcionalidá de dalgunos sitios web.</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 bloquia los rastrexadores d\'esti sitiu cuando l\'escudu ta moráu. Tócalu pa ver qué se bloquia.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">ACTIVÓSE nesti sitiu</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -50,8 +50,6 @@
|
|||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Захаваць у калекцыі</string>
|
||||
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Паведаміць аб праблеме з сайтам</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Падзяліцца</string>
|
||||
|
||||
|
@ -131,6 +129,20 @@
|
|||
<string name="preferences_privacy_link">Паведамленне аб прыватнасці</string>
|
||||
<!-- Preference category for developer tools -->
|
||||
<string name="developer_tools_category">Прылады распрацоўшчыка</string>
|
||||
<!-- Preference title for switch preference to show search suggestions -->
|
||||
<string name="preferences_show_search_suggestions">Паказваць пошукавыя прапановы</string>
|
||||
<!-- Preference title for switch preference to show voice search button -->
|
||||
<string name="preferences_show_voice_search">Паказваць галасавы пошук</string>
|
||||
<!-- Preference title for switch preference to show search suggestions also in private mode -->
|
||||
<string name="preferences_show_search_suggestions_in_private">Паказаць у прыватных сеансах</string>
|
||||
<!-- Preference title for switch preference to show a clipboard suggestion when searching -->
|
||||
<string name="preferences_show_clipboard_suggestions">Паказваць прапановы з буфера абмену</string>
|
||||
<!-- Preference title for switch preference to suggest browsing history when searching -->
|
||||
<string name="preferences_search_browsing_history">Пошук у гісторыі аглядання</string>
|
||||
<!-- Preference title for switch preference to suggest bookmarks when searching -->
|
||||
<string name="preferences_search_bookmarks">Пошук у закладках</string>
|
||||
<!-- Preference for account settings -->
|
||||
<string name="preferences_account_settings">Налады ўліковага запісу</string>
|
||||
<!-- Preference for add_ons -->
|
||||
<string name="preferences_addons">Дадаткі</string>
|
||||
|
||||
|
@ -185,6 +197,12 @@
|
|||
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Дадаць картку</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 closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Закрыць усе карткі</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 -->
|
||||
|
@ -220,4 +238,17 @@
|
|||
<!-- Text for the menu button to remove a top site -->
|
||||
<string name="remove_top_site">Выдаліць</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</string>
|
||||
<!-- Text for the button to clear selected history items. The first parameter
|
||||
is a digit showing the number of items you have selected -->
|
||||
<string name="history_delete_some">Выдаліць %1$d элементаў</string>
|
||||
<!-- Text for the header that groups the history for last 24 hours -->
|
||||
<string name="history_24_hours">Апошнія 24 гадзіны</string>
|
||||
<!-- Text for the header that groups the history the past 7 days -->
|
||||
<string name="history_7_days">Апошнія 7 дзён</string>
|
||||
<!-- Text for the header that groups the history the past 30 days -->
|
||||
<string name="history_30_days">Апошнія 30 дзён</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -104,8 +104,6 @@
|
|||
<string name="browser_menu_new_tab">Pestanya nova</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Desa a la col·lecció</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Informa d’un problema amb el lloc</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Comparteix</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -120,8 +118,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">Funciona amb el %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">Vista 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">Tanca la vista de lectura</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Obre en una aplicació</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -451,6 +451,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Pestanyes privades</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Afegeix una pestanya</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Afegeix una pestanya privada</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Privada</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Pestanyes obertes</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Desa a la col·lecció</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Comparteix totes les pestanyes</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Tanca totes les pestanyes</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Pestanya nova</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Vés a la pantalla d’inici</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Canvia el mode de pestanyes</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">Elimina la pestanya de la col·lecció</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -716,6 +734,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Desa</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Mostra</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">Col·lecció %d</string>
|
||||
|
||||
|
@ -948,20 +969,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">No s’ha pogut iniciar la sessió</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Protegiu-vos</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Privadesa automàtica</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">El %s impedeix que els llocs web us facin el seguiment mentre navegueu.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Els paràmetres de privadesa i de seguretat bloquen els elements de seguiment, el programari maliciós i les empreses que us fan el seguiment.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Estàndard</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Estàndard (per defecte)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Es bloquen menys elements de seguiment, però les pàgines es carregaran amb normalitat</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Es bloquen menys elements de seguiment. Les pàgines es carregaran amb normalitat.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Estricta (recomanat)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Estricta</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Es bloquen més elements de seguiment i, per tant, millora la protecció i el rendiment, però pot fer que alguns llocs no funcionin correctament</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Bloca més elements de seguiment, anuncis i finestres emergents. Les pàgines es carreguen més ràpidament, però és possible que algunes característiques no funcionin.</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 -->
|
||||
|
@ -1048,31 +1069,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Més informació</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Estàndard</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Estàndard (recomanat)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Estàndard (per defecte)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Equilibri entre protecció i rendiment.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Les pàgines es carregaran amb normalitat, però es blocaran menys elements de seguiment.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Es bloquen menys elements de seguiment. Les pàgines es carregaran amb normalitat.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Què es bloca en la protecció contra el seguiment estàndard</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Estricta</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Estricta (per defecte)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Més protecció i millor rendiment, però pot fer que alguns llocs no funcionin correctament.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Estricta (recomanat)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Més protecció, però pot fer que alguns llocs o algun contingut no funcionin correctament.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Bloca més elements de seguiment, anuncis i finestres emergents. Les pàgines es carreguen més ràpidament, però és possible que algunes característiques no funcionin.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Què es bloca en la protecció contra el seguiment estricta</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Personalitzada</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Trieu quins elements de seguiment i scripts cal blocar</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Trieu quins elements de seguiment i scripts cal blocar.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Què es bloca en la protecció contra el seguiment personalitzada</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1123,7 +1134,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Impedeix que es carreguin anuncis, vídeos i altre contingut que contenen codi de seguiment. Pot afectar la funcionalitat del lloc web.</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">Quan l’escut és de color lila, vol dir que el %s està blocant elements de seguiment en aquest lloc. Toqueu-lo per veure què s’ha blocat.</string>
|
||||
<string name="etp_onboarding_cfr_message">Quan l’escut és de color lila, el %s està blocant els elements de seguiment del lloc. Toqueu per obtenir més informació.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">S’han activat les proteccions per a aquest lloc</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -108,8 +108,6 @@
|
|||
<string name="browser_menu_new_tab">K’ak’a’ ruwi’</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Tiyak pa mol</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Tiya\' rutzijol ruk\'ayewal ri ruxaq</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Tikomonïx</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -124,8 +122,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">B\'anon ruma %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">Sik\'inem tz\'etoj</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Titz\'apïx rutz\'etik sik\'inïk</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Tijaq pa Chokoy</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -463,6 +463,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Ichinan taq ruwi\'</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Titz\'aqatisäx ruwi\'</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Titz\'aqatisäx ichinan ruwi\'</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Ichinan</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Kejaq taq Ruwi\'</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Tiyak pa mol</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Kekomonïx ronojel taq ruwi\'</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Titz\'apïx ronojel ri taq ruwi\'</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">K\'ak\'a\' ruwi\'</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Tib\'e pa tikirib\'äl</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Tik\'ex rik\'in ruwi\' rub\'anikil</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">Tiyuj ruwi\' pa molb\'äl</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -734,6 +752,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Tiyak</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Titz\'et</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">Mol %d</string>
|
||||
|
||||
|
@ -972,21 +993,20 @@
|
|||
<string name="onboarding_firefox_account_automatic_signin_failed">Xsach toq xtikirisäx molojri\'ïl</string>
|
||||
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Tachajij awi\'</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Ichinanem pa ruyonil</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 kato\'on richin ye\'aq\'ät ri ajk\'amaya\'l ruxaq yatkojqaj pa k\'amab\'ey.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Ri runuk\'ulem ichinanem chuqa\' jikomal yekiq\'ät ri ojqanela\', itzel taq kema\' chuqa\' ri ajk\'aymoloj yatkojqaj.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Pa rub\'eyal</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Junaman (k\'o wi)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Jub\'a\' ojqanela\' ke\'aq\'ata\' po taya\' q\'ij chi ütz yesamäj ri taq ruxaq</string>
|
||||
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Yeruq\'ät jub\'a\' ojqanela\'. Ütz xkesamajïx ri taq ruxaq.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">K\'atzinel (chilab\'en)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Nimaläj</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">K\'ïy ojqanela\' keq\'at richin jun ütz chajinïk chuqa\' rub\'eyal nisamäj, xa xe chi rik\'in jub\'a\' jujun taq ruxaq man xkesamäj ta ütz</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Ke\'aq\'ata\' k\'ïy ojqanela\', taq rutzijol chuqa\' elenel taq tzuwäch. Anin xkesamajitäj ri taq ruxaq, xa xe chi yatikïr ye\'asäch jujun taq rusamajib\'al.</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 -->
|
||||
|
@ -1075,32 +1095,22 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Tetamäx ch\'aqa\' chik</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Pa rub\'eyal</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Relik (chilab\'en)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Junaman (k\'o wi)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Junaman richin chajinïk chuqa\' rub\'eyal nisamäj.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Xkesamäj ri taq ruxaq achi\'el rub\'anon, xa xe chi man k\'ïy ta taq ojqanela\' xkeq\'at.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Yeruq\'ät jub\'a\' ojqanela\'. Ütz xkesamajïx ri taq ruxaq.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Achike ri q\'aton ruma ri relik ruchajixik ojqanem</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Nimaläj</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Nimaläj (K\'o wi)</string>
|
||||
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">K\'ïy chajinïk chuwäch ojqanem chuqa\' ütz rub\'eyal nisamäj, xa xe chi jujun taq ruxaq rik\'in jub\'a\' man xkesamäj ta ütz.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">K\'atzinel (chilab\'en)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Nïm chajinem, xa xe chi nub\'än chi jujun taq ruxaq o rupam man yesamäj ta.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Ke\'aq\'ata\' k\'ïy ojqanela\', taq rutzijol chuqa\' elenel taq tzuwäch. Anin xkesamajitäj ri taq ruxaq, xa xe chi yatikïr ye\'asäch jujun taq rusamajib\'al.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Achike ri q\'aton ruma ri ruchajixik ojqanem k\'o</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Ichinan</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Ke\'acha\' achike taq ojqanela\' chuqa\' kiskrip nawajo\' ye\'aq\'ät</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Ke\'acha\' achike taq ojqanela\' chuqa\' kiskrip nawajo\' ye\'aq\'ät.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Achike ri q\'aton ruma ri chijun ruchajixik ojqanem</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1152,7 +1162,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Ke\'aq\'ata\' ri taq eltzijol man e k\'o ta chupam, taq silowäch chuqa\' taq rupam kik\'wan taq rub\'itz\'ib\' ojqanem. Nitikïr yerutz\'ila\' jujun taq rusamaj ajk\'amaya\'l ruxaq.</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 yeruq\'ät ojqanela\' pa ri ruxaq ri\' toq tuq\' ri pokob\'. Tacha\' richin nitz\'et achike ruq\'aton.</string>
|
||||
<string name="etp_onboarding_cfr_message">Toq xtatz\'ët ri tuq\' pokob\', %s xeruq\'ät ojqanela\' pa jun ruxaq k\'amaya\'l. Tapitz\'a\' richin ch\'aqa\' chik retamab\'al.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">TZIJÏL ri chajinïk pa re ruxaq re\'</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -20,16 +20,25 @@
|
|||
<!-- No Open Tabs Message Description -->
|
||||
<string name="no_open_tabs_description">Tady se zobrazí vaše otevřené panely.</string>
|
||||
|
||||
<!-- No Private Tabs Message Description -->
|
||||
<string name="no_private_tabs_description">Tady se zobrazí vaše anonymní panely.</string>
|
||||
|
||||
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
|
||||
<string name="about_content">Autorem aplikace %1$s je Mozilla.</string>
|
||||
|
||||
<!-- Private Browsing -->
|
||||
<!-- Title for private session option -->
|
||||
<string name="private_browsing_title">Používáte anonymní prohlížení</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 vymaže vaši historii vyhledávání a stránek navštívených v anonymním panelu po jeho zavření nebo ukončení aplikace. S touto funkcí nejste na internetu zcela neviditelní a např. poskytovatel připojení k internetu může stále zjistit, které stránky navštěvujete. Vaše aktivita na internetu ale zůstane utajena před dalšími uživateli tohoto zařízení.</string>
|
||||
<string name="private_browsing_common_myths">
|
||||
Časté omyly o fungování anonymního prohlížení
|
||||
</string>
|
||||
<!-- Delete session button to erase your history in a private session -->
|
||||
<string name="private_browsing_delete_session">Odstranit relaci</string>
|
||||
|
||||
<!-- Private mode shortcut "contextual feature recommender" (CFR) -->
|
||||
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
|
||||
<!-- Text for the main message -->
|
||||
<string name="cfr_message">Přidejte si zkratku k otevření anonymního prohlížení na plochu.</string>
|
||||
<!-- Text for the positive button -->
|
||||
|
@ -37,6 +46,14 @@
|
|||
<!-- Text for the negative button -->
|
||||
<string name="cfr_neg_button_text">Ne, děkuji</string>
|
||||
|
||||
<!-- Search widget "contextual feature recommendation" (CFR) -->
|
||||
<!-- Text for the main message. 'Firefox' intentionally hardcoded here.-->
|
||||
<string name="search_widget_cfr_message">Otevřete Firefox rychleji. Přidejte si widget na domovskou obrazovku.</string>
|
||||
<!-- Text for the positive button -->
|
||||
<string name="search_widget_cfr_pos_button_text">Přidat widget</string>
|
||||
<!-- Text for the negative button -->
|
||||
<string name="search_widget_cfr_neg_button_text">Teď ne</string>
|
||||
|
||||
<!-- Home screen icons - Long press shortcuts -->
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="home_screen_shortcut_open_new_tab_2">Nový panel</string>
|
||||
|
@ -79,6 +96,8 @@
|
|||
<string name="browser_menu_add_to_homescreen">Přidat na plochu</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">Nainstalovat</string>
|
||||
<!-- Menu option on the toolbar that takes you to synced tabs page-->
|
||||
<string name="synced_tabs">Synchronizované panely</string>
|
||||
<!-- Browser menu button that opens the find in page menu -->
|
||||
<string name="browser_menu_find_in_page">Najít na stránce</string>
|
||||
<!-- Browser menu button that creates a private tab -->
|
||||
|
@ -87,8 +106,6 @@
|
|||
<string name="browser_menu_new_tab">Nový panel</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Uložit do sbírky</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Nahlásit chybu stránky</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Sdílet</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -105,8 +122,10 @@
|
|||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="browser_menu_powered_by2">Používá %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">Zobrazení čtečky</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Zavřít zobrazení čtečky</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Otevřít v aplikaci</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -249,6 +268,8 @@
|
|||
<string name="preferences_show_search_shortcuts">Zobrazit zkratky vyhledávání</string>
|
||||
<!-- Preference title for switch preference to show search suggestions -->
|
||||
<string name="preferences_show_search_suggestions">Našeptávat vyhledávání</string>
|
||||
<!-- Preference title for switch preference to show voice search button -->
|
||||
<string name="preferences_show_voice_search">Zobrazit hlasové vyhledávání</string>
|
||||
<!-- Preference title for switch preference to show search suggestions also in private mode -->
|
||||
<string name="preferences_show_search_suggestions_in_private">Našeptávat také v anonymním prohlížení</string>
|
||||
<!-- Preference title for switch preference to show a clipboard suggestion when searching -->
|
||||
|
@ -277,6 +298,8 @@
|
|||
<string name="preferences_sync_bookmarks">Záložky</string>
|
||||
<!-- Preference for syncing logins -->
|
||||
<string name="preferences_sync_logins">Přihlašovací údaje</string>
|
||||
<!-- Preference for syncing tabs -->
|
||||
<string name="preferences_sync_tabs">Panely</string>
|
||||
<!-- Preference for signing out -->
|
||||
<string name="preferences_sign_out">Odhlásit</string>
|
||||
<!-- Preference displays and allows changing current FxA device name -->
|
||||
|
@ -372,7 +395,7 @@
|
|||
|
||||
<!-- Pairing Feature strings -->
|
||||
<!-- Instructions on how to access pairing -->
|
||||
<string name="pair_instructions"><![CDATA[Pro zobrazení QR kódu navštivte ve Firefoxu na svém počítači stránku <b>firefox.com/pair</b>.]]></string>
|
||||
<string name="pair_instructions_2"><![CDATA[Naskenujte QR kód zobrazený na <b>firefox.com/pair</b>]]></string>
|
||||
<!-- Button to open camera for pairing -->
|
||||
<string name="pair_open_camera">Otevřít fotoaparát</string>
|
||||
<!-- Button to cancel pairing -->
|
||||
|
@ -413,6 +436,8 @@
|
|||
<string name="library_desktop_bookmarks_unfiled">Ostatní záložky</string>
|
||||
<!-- Option in Library to open History page -->
|
||||
<string name="library_history">Historie</string>
|
||||
<!-- Option in Library to open Synced Tabs page -->
|
||||
<string name="library_synced_tabs">Synchronizované panely</string>
|
||||
<!-- Option in Library to open Reading List -->
|
||||
<string name="library_reading_list">Seznam ke čtení</string>
|
||||
<!-- Menu Item Label for Search in Library -->
|
||||
|
@ -433,6 +458,26 @@
|
|||
<string name="tabs_header_private_tabs_title">Anonymní panely</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Přidat panel</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Přidat anonymní panel</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Anonymní</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Otevřené panely</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Uložit do sbírky</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Sdílet všechny panely</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Zavřít všechny panely</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nový panel</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Domů</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Přepnout režim panelů</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">Odstranit panel ze sbírky</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
<string name="close_tab">Zavřít panel</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
||||
|
@ -476,11 +521,18 @@
|
|||
<!-- Text for the menu button to remove a top site -->
|
||||
<string name="remove_top_site">Odebrat</string>
|
||||
|
||||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (anonymní režim)</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Vymazat historii</string>
|
||||
<!-- Text for the dialog to confirm clearing all history -->
|
||||
<string name="history_delete_all_dialog">Opravdu chcete vymazat historii vašeho prohlížení?</string>
|
||||
<!-- Text for the snackbar to confirm that multiple browsing history items has been deleted -->
|
||||
<string name="history_delete_multiple_items_snackbar">Historie byla smazána</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">Položka %1$s odstraněna</string>
|
||||
<!-- Text for positive action to delete history in deleting history dialog -->
|
||||
<string name="history_clear_dialog">Vymazat</string>
|
||||
<!-- History overflow menu copy button -->
|
||||
|
@ -536,6 +588,10 @@
|
|||
<string name="bookmark_edit">Upravit záložku</string>
|
||||
<!-- Screen title for selecting a bookmarks folder -->
|
||||
<string name="bookmark_select_folder">Vybrat složku</string>
|
||||
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
|
||||
<string name="bookmark_delete_folder_confirmation_dialog">Opravdu chcete smazat tuto složku?</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">Složka %1$s smazána</string>
|
||||
<!-- Screen title for adding a bookmarks folder -->
|
||||
<string name="bookmark_add_folder">Přidat složku</string>
|
||||
<!-- deprecated: Snackbar title shown after a bookmark has been created. -->
|
||||
|
@ -590,6 +646,8 @@
|
|||
The first parameter is the host part of the URL of the bookmark deleted, if any -->
|
||||
<string name="bookmark_deletion_snackbar_message">Záložka odstraněna: %1$s</string>
|
||||
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_2">Záložky smazány</string>
|
||||
<!-- Bookmark undo button for deletion snackbar action -->
|
||||
<string name="bookmark_undo_deletion">ZPĚT</string>
|
||||
|
||||
|
@ -693,6 +751,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Uložit</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Zobrazit</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">Sbírka č. %d</string>
|
||||
|
||||
|
@ -771,7 +832,7 @@
|
|||
<!-- Text shown in snackbar when user closes all private tabs -->
|
||||
<string name="snackbar_private_tabs_closed">Anonymní panely zavřeny</string>
|
||||
<!-- Text shown in snackbar when user deletes all private tabs -->
|
||||
<string name="snackbar_private_tabs_deleted">Soukromé panely smazány</string>
|
||||
<string name="snackbar_private_tabs_deleted">Anonymní panely smazány</string>
|
||||
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
|
||||
<string name="snackbar_deleted_undo">ZPĚT</string>
|
||||
<!-- Text shown in snackbar when user removes a top site -->
|
||||
|
@ -806,15 +867,14 @@
|
|||
<string name="preference_accessibility_font_size_title">Velikost písma</string>
|
||||
|
||||
<!-- Title for Accessibility Text Automatic Size Scaling Preference -->
|
||||
<string name="preference_accessibility_auto_size">Automatická velikost písma</string>
|
||||
|
||||
<string name="preference_accessibility_auto_size_2">Automatická velikost písma</string>
|
||||
<!-- Summary for Accessibility Text Automatic Size Scaling Preference -->
|
||||
<string name="preference_accessibility_auto_size_summary">Zrušte tuto volbu, pokud nechcete, aby se velikost písma řídila nastavením systému Android.</string>
|
||||
|
||||
<!-- Title for the Delete browsing data preference -->
|
||||
<string name="preferences_delete_browsing_data">Smazat soukromá data</string>
|
||||
<!-- Title for the tabs item in Delete browsing data -->
|
||||
<string name="preferences_delete_browsing_data_tabs_title">Otevřené panely</string>
|
||||
<string name="preferences_delete_browsing_data_tabs_title_2">Otevřené panely</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">Počet panelů: %d</string>
|
||||
<!-- Title for the data and history items in Delete browsing data -->
|
||||
|
@ -865,6 +925,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">Mazání soukromých dat…</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 je nyní Firefox Nightly</string>
|
||||
|
||||
<!-- text for firefox preview moving tip button. "Mozilla Firefox Browser" is intentionally hardcoded -->
|
||||
<string name="tip_firefox_preview_moved_button">Stáhněte si prohlížeč Mozilla Firefox</string>
|
||||
|
||||
<!-- text for firefox preview moving tip header. "Firefox Nightly" is intentionally hardcoded -->
|
||||
<string name="tip_firefox_preview_moved_header_preview_installed">Firefox Nightly se mění</string>
|
||||
<!-- text for firefox preview moving tip description -->
|
||||
<string name="tip_firefox_preview_moved_description_preview_installed">Tato aplikace už nebude nadále dostávat bezpečnostní aktualizace. Přestaňte ji prosím používat a nainstalujete si novou Nightly.
|
||||
\n\nPro přesun svých záložek, přihlašovacích údajů a historie prohlížení si prosím založte účet Firefoxu.</string>
|
||||
<!-- text for firefox preview moving tip button -->
|
||||
<string name="tip_firefox_preview_moved_button_preview_installed">Používejte novou 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 se mění</string>
|
||||
<!-- text for firefox preview moving tip description -->
|
||||
<string name="tip_firefox_preview_moved_description_preview_not_installed">Tato aplikace už nebude nadále dostávat bezpečnostní aktualizace. Přestaňte ji prosím používat a stáhněte si novou Nightly.
|
||||
\n\nPro přesun svých záložek, přihlašovacích údajů a historie prohlížení si prosím založte účet Firefoxu.</string>
|
||||
<!-- text for firefox preview moving tip button -->
|
||||
<string name="tip_firefox_preview_moved_button_preview_not_installed">Stáhněte si novou Nightly</string>
|
||||
|
||||
<!-- Onboarding -->
|
||||
<!-- Text for onboarding welcome message
|
||||
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||
|
@ -901,18 +984,17 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Přihlášení selhalo</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Chraňte se</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 brání stránkám, aby vás sledovaly online.</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Automatické soukromí</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Standardní</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Standardní (výchozí)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Blokuje méně sledovacích prvků, díky čemuž umožňuje, aby se některé stránky načítaly správně</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Blokuje méně sledovacích prvků. Stránky se načítají běžným způsobem.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Striktní (doporučeno)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Přísná</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Blokuje více sledovacích prvků pro vaši ochranu a lepší výkon, ale může rozbít některé stránky</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Blokuje více sledovacích prvků, reklam a vyskakovacích oken. Zrychlí i načítání stránek, ale může omezit jejich fungování.</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 -->
|
||||
|
@ -998,31 +1080,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Zjistit více</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Standardní</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Standardní (doporučeno)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Standardní (výchozí)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Vyvážená ochrana a výkon.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Stránky se načítají normálně s výjimkou některých sledovacích prvků.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Blokuje méně sledovacích prvků. Stránky se načítají běžným způsobem.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Co blokuje běžné nastavení ochrany proti sledování</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Přísná</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Přísná (výchozí)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Silnější ochrana, která zlepšuje rychlost načítání stránek. Může ale omezit jejich fungování.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Přísná (doporučeno)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Silnější ochrana. Může omezit fungování některých stránek.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Blokuje více sledovacích prvků, reklam a vyskakovacích oken. Zrychlí i načítání stránek, ale může omezit jejich fungování.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Co blokuje přísné nastavení ochrany proti sledování</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Vlastní</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Vyberte sledovací prvky a skripty, které chcete blokovat</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Vyberte sledovací prvky a skripty, které chcete blokovat.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Co blokuje vlastní nastavení ochrany proti sledování</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1071,8 +1143,6 @@
|
|||
<string name="etp_tracking_content_title">Sledující obsah</string>
|
||||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Blokuje načítání reklam, videí a dalšího obsahu, který obsahuje sledující kód. To může ovlivnit fungování některých webových stránek.</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">Pokud je ikona štítu fialová, znamená to, že %s na stránce blokuje nějaké sledovací prvky. Klepnutím na ikonu zobrazíte jejich seznam.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Ochrana je na tomto serveru zapnuta</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
@ -1094,6 +1164,8 @@
|
|||
|
||||
<!-- About page link text to open support link -->
|
||||
<string name="about_support">Podpora</string>
|
||||
<!-- About page link text to list of past crashes (like about:crashes on desktop) -->
|
||||
<string name="about_crashes">Pády</string>
|
||||
<!-- About page link text to open privacy notice link -->
|
||||
<string name="about_privacy_notice">Zásady ochrany osobních údajů</string>
|
||||
<!-- About page link text to open know your rights link -->
|
||||
|
@ -1323,8 +1395,21 @@
|
|||
<string name="certificate_info_verified_by">Ověřil: %1$s</string>
|
||||
<!-- Login overflow menu delete button -->
|
||||
<string name="login_menu_delete_button">Odstranit</string>
|
||||
<!-- Login overflow menu edit button -->
|
||||
<string name="login_menu_edit_button">Upravit</string>
|
||||
<!-- Message in delete confirmation dialog for logins -->
|
||||
<string name="login_deletion_confirmation">Opravdu chcete tyto přihlašovací údaje odstranit?</string>
|
||||
<!-- Positive action of a dialog asking to delete -->
|
||||
<string name="dialog_delete_positive">Odstranit</string>
|
||||
<!-- The button description to discard changes to an edited login. -->
|
||||
<string name="discard_changes">Zahodit změny</string>
|
||||
<!-- The page title for editing a saved login. -->
|
||||
<string name="edit">Upravit</string>
|
||||
<!-- Voice search button content description -->
|
||||
<string name="voice_search_content_description">Hlasové vyhledávání</string>
|
||||
<!-- Voice search prompt description displayed after the user presses the voice search button -->
|
||||
<string name="voice_search_explainer">Nyní mluvte</string>
|
||||
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<string name="synced_tabs_connect_another_device">Připojte další zařízení.</string>
|
||||
</resources>
|
||||
|
|
|
@ -104,8 +104,6 @@
|
|||
<string name="browser_menu_new_tab">Tab newydd</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Cadw i gasgliad</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Pryder am wefan</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Rhannu</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -119,8 +117,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">Grym %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">Golwg darllen</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Cau’r golwg darllenydd</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Agor yn yr Ap</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -448,6 +448,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Tabiau preifat</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Ychwanegu tab</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Ychwanegu tab preifat</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Preifat</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Agor Tabiau</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Cadw i gasgliad</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Rhannu pob tab</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Cau pob tab</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Tab newydd</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Mynd adref</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Toglo’r modd tab</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">Tynnu tab o’r casgliad</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -713,6 +731,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Cadw</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Golwg</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">Casgliad %d</string>
|
||||
|
||||
|
@ -943,20 +964,20 @@
|
|||
<string name="onboarding_firefox_account_automatic_signin_failed">Wedi methu mewngofnodi</string>
|
||||
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Diogelwch eich hun</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Preifatrwydd awtomatig</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">Mae %s yn helpu i atal gwefannau rhag eich tracio ar-lein.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Mae gosodiadau preifatrwydd a diogelwch yn rhwystro tracwyr, meddalwedd faleisus, a chwmnïau sy’n eich dilyn.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Safonol</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Safonol (rhagosodedig)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Yn rhwystro llai o dracwyr ond yn caniatáu i dudalennau lwytho’n arferol</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Yn rhwystro llai o dracwyr. Bydd tudalennau’n llwytho’n arferol.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Llym (argymell)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Llym</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Yn rhwystro mwy o dracwyr ar gyfer gwell amddiffyniad a pherfformiad, ond gall achosi i rai gwefannau beidio â gweithio’n iawn</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Yn rhwystro rhagor o dracwyr, hysbysebion, a llamlenni. Mae tudalennau’n llwytho’n gyflymach, ond efallai na fydd rhywfaint o’u hymarferoldeb yn gweithio.</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 -->
|
||||
|
@ -1043,31 +1064,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Dysgu rhagor</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Safonol</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Safon (argymell)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Safonol (rhagosodedig)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Cytbwys ar gyfer diogelu a pherfformiad.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Bydd tudalennau’n llwytho fel arfer, ond yn rhwystro llai o dracwyr.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Yn rhwystro llai o dracwyr. Bydd tudalennau’n llwytho’n arferol.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Beth sydd wedi’i rwystro gan ddiogelu tracio safonol</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Llym</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Llym (Rhagosodedig)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Diogelwch tracio cryfach a pherfformiad cyflymach, ond efallai na fydd rhai gwefannau’n gweithio’n iawn.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Llym (argymell)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Diogelwch cryfach, ond gall achosi i rai gwefannau neu gynnwys dorri.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Yn rhwystro rhagor o dracwyr, hysbysebion, a llamlenni. Mae tudalennau’n llwytho’n gyflymach, ond efallai na fydd rhywfaint o’u hymarferoldeb yn gweithio.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Beth sydd wedi’i rwystro gan ddiogelu tracio llym</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Cyfaddas</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Dewis pa dracwyr a sgriptiau i’w rhwystro</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Dewiswch pa dracwyr a sgriptiau i’w rhwystro.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Beth sydd wedi’i rwystro gan ddiogelu tracio cyfaddas</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1118,7 +1129,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Yn rhwystro hysbysebion, fideos, a chynnwys allanol arall rhag llwytho’r hyn sy’n cynnwys cod tracio. Gall effeithio ar rywfaint o ymarferoldeb gwefan.</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">Mae %s yn rhwystro tracwyr ar y wefan hon pan fydd y darian yn biws. Tapiwch ef i weld beth sydd wedi’i rwystro.</string>
|
||||
<string name="etp_onboarding_cfr_message">Bob tro mae’r darian yn biws, mae %s wedi rhwystro tracwyr ar wefan. Tapiwch am ragor o wybodaeth.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Mae diogelu YMLAEN ar gyfer y wefan hon</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -108,8 +108,6 @@
|
|||
<string name="browser_menu_new_tab">Neuer Tab</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">In Sammlung speichern</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Website-Problem melden</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Teilen</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -125,8 +123,10 @@
|
|||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="browser_menu_powered_by2">Bereitgestellt von %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">Leseansicht</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Leseansicht schließen</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Mit App öffnen</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -459,6 +459,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Private Tabs</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Tab hinzufügen</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Privaten Tab hinzufügen</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">Offene Tabs</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">In Sammlung speichern</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Alle Tabs teilen</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Alle Tabs schließen</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Neuer Tab</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Zum Startbildschirm gehen</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Tab-Modus umschalten</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">Tab aus Sammlung entfernen</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -741,6 +759,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Speichern</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Ansehen</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">Sammlung %d</string>
|
||||
|
||||
|
@ -978,20 +999,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Anmeldung fehlgeschlagen</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Schützen Sie sich</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Automatischer Datenschutz</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 verhindert, dass Websites Sie online verfolgen.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Datenschutz- und Sicherheitseinstellungen blockieren Tracker, Schadsoftware und Unternehmen, die Sie verfolgen.</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">Blockiert weniger Tracker, ermöglicht jedoch das normale Laden von Seiten</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Blockiert weniger Tracker. Seiten werden normal geladen.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Streng (empfohlen)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Streng</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Blockiert mehr Tracker für besseren Schutz und Leistung, kann jedoch dazu führen, dass einige Websites nicht ordnungsgemäß funktionieren</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Blockiert mehr Tracker, Anzeigen und Pop-ups. Seiten werden schneller geladen, aber einige Funktionen funktionieren möglicherweise nicht.</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 -->
|
||||
|
@ -1078,31 +1099,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Weitere Informationen</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 (empfohlen)</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">Ausgewogen für Schutz und Leistung.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Die Seiten werden normal geladen, aber weniger Tracker blockiert.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Blockiert weniger Tracker. Seiten werden normal geladen.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Was wird durch den Standard-Tracking-Schutz blockiert?</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Streng</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Streng (Standard)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Stärkerer Tracking-Schutz und schnellere Leistung, aber einige Websites funktionieren möglicherweise nicht richtig.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Streng (empfohlen)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Stärkerer Schutz, kann jedoch dazu führen, dass einige Inhalte nicht funktionieren.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Blockiert mehr Tracker, Anzeigen und Pop-ups. Seiten werden schneller geladen, aber einige Funktionen funktionieren möglicherweise nicht.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Was wird durch den strengen Tracking-Schutz blockiert?</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Benutzerdefiniert</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Wählen Sie, welche Art von Skripten zur Aktivitätenverfolgung und sonstige Inhalte blockiert werden</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Wählen Sie, welche Art von Skripten zur Aktivitätenverfolgung und sonstige Inhalte blockiert werden.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Was wird durch den benutzerdefinierten Tracking-Schutz blockiert?</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1152,7 +1163,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Verhindert das Laden von Werbung, Videos und anderen Inhalten, die Skripte zur Aktivitätenverfolgung enthalten. Kann einige Funktionen der Website beeinträchtigen.</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 blockiert Tracker auf dieser Website, wenn der Schild violett ist. Tippen Sie darauf, um zu sehen, was blockiert wird.</string>
|
||||
<string name="etp_onboarding_cfr_message">Immer wenn der Schild lila ist, hat %s Tracker auf einer Website blockiert. Antippen, um weitere Informationen zu erhalten.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Der Schutz für diese Website ist aktiviert</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -106,8 +106,6 @@
|
|||
<string name="browser_menu_new_tab">Nowy rejtarik</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Do zběrki składowaś</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Sedłowy problem k wěsći daś</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Źěliś</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -121,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">Spěchowany wót %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">Cytański naglěd</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Cytański naglěd zacyniś</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">W nałoženju wócyniś</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -450,6 +450,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Priwatne rejtariki</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Rejtarik pśidaś</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Priwatny rejtarik pśidaś</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Priwatny</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Wócynjone rejtariki</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Do zběrki składowaś</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Wšykne rejtariki źěliś</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Wšykne rejtariki zacyniś</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nowy rejtarik</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">K startowej wobrazowce</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Rejtarikowy modus pśešaltowaś</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">Rejtaŕk ze zběrki wótwónoźeś</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -716,6 +734,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Składowaś</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Pokazaś</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">Zběrka %d</string>
|
||||
|
||||
|
@ -945,20 +966,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Pśizjawjenje njejo se raźiło</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Šćitajśo se</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Awtomatiska priwatnosć</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 tomu zajźujo, až websedła wam online slěduju.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Nastajenja priwatnosći a wěstoty pśeslědowaki, škódnu softwaru a pśedewześa blokěruju, kótarež wam slěduju.</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">Blokěrujo mjenjej pśeslědowakow, ale zmóžnja bokam se normalnje zacytaś</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Blokěrujo mjenjej pśeslědowakow. Boki se normalnje zacytaju.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Striktny (dopórucony)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Striktny</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Blokěrujo wěcej pśeslědowakow za lěpšy šćit a lěpše wugbaśe, ale móžo zawinowaś, až někotare sedła pšawje njefunkcioněruju</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Blokěrujo wěcej pśeslědowakow, wabjenja a wuskokujucych woknow. Boki se malsnjej spěšnje zacytaju, ale někotare funkcije snaź njefunkcioněruju.</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 -->
|
||||
|
@ -1046,31 +1067,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Dalšne informacije</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 (dopórucony)</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">Wuwažony za šćit a wugbaśe.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Boki se normalnje zacytaju, ale blokěrujo se mjenjej pśeslědowakow.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Blokěrujo mjenjej pśeslědowakow. Boki se normalnje zacytaju.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Co se pśez standardny slědowański šćit blokěrujo?</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Striktny</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Striktny (standard)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Mócnjejšy slědowański šćit a malsnjejše wugbaśe, ale někotare sedła snaź pórědnje njefunlcioněruju.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Striktny (dopórucony)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Mócnjejšy šćit, ale móžo zawinowaś, až někotare sedła abo wopśimjeśe wěcej njefunkcioněruju.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Blokěrujo wěcej pśeslědowakow, wabjenja a wuskokujucych woknow. Boki se malsnjej spěšnje zacytaju, ale někotare funkcije snaź njefunkcioněruju.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Co se pśez striktny slědowański šćit blokěrujo?</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Swójski</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Wubjeŕśo, kótare pśeslědowaki a skripty maju se blokěrowaś</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Wubjeŕśo, kótare pśeslědowaki a skripty maju se blokěrowaś.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Co se pśez swójski slědowański šćit blokěrujo?</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1123,7 +1134,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Zaźujo zacytanjeju wabjenja, wideo a drugego wopśimjeśa, kótarež slědowański kod wopśimuju. Móžo někotare funkcije websedłow kazyś.</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 pśeslědowaki na toś tom sedle blokěrujo, gaž šćit jo wioletny. Pótusniśo, aby wiźeł, co se blokěrujo.</string>
|
||||
<string name="etp_onboarding_cfr_message">Kuždy raz, gaž šćit jo wioletny, jo %s pśeslědowaki na sedle zablokěrował. Pótusniśo za dalšne informacije.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Šćit jo zmóžnjony za toś to sedło</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
<!-- Private Browsing -->
|
||||
<!-- Title for private session option -->
|
||||
<string name="private_browsing_title">Είστε σε ιδιωτική συνεδρία</string>
|
||||
<string name="private_browsing_common_myths">Κοινοί μύθοι σχετικά με την ιδιωτική περιήγηση</string>
|
||||
<!-- Delete session button to erase your history in a private session -->
|
||||
<string name="private_browsing_delete_session">Διαγραφή συνεδρίας</string>
|
||||
|
||||
|
@ -38,6 +39,8 @@
|
|||
<!-- Text for the negative button -->
|
||||
<string name="cfr_neg_button_text">Όχι, ευχαριστώ</string>
|
||||
|
||||
<!-- Text for the positive button -->
|
||||
<string name="search_widget_cfr_pos_button_text">Προσθήκη widget</string>
|
||||
<!-- Text for the negative button -->
|
||||
<string name="search_widget_cfr_neg_button_text">Όχι τώρα</string>
|
||||
|
||||
|
@ -116,6 +119,10 @@
|
|||
<!-- 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>
|
||||
|
@ -138,6 +145,16 @@
|
|||
<string name="search_shortcuts_search_with">Αναζήτηση με</string>
|
||||
<!-- Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with_2">Αυτή τη φορά, αναζήτηση με:</string>
|
||||
<!-- Button in the search view that lets a user navigate to the site in their clipboard -->
|
||||
<string name="awesomebar_clipboard_title">Συμπλήρωση συνδέσμου από το πρόχειρο</string>
|
||||
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
|
||||
<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_site_permissions">Δικαιώματα ιστοσελίδων</string>
|
||||
<!-- Preference for private browsing options -->
|
||||
<string name="preferences_private_browsing_options">Ιδιωτική περιήγηση</string>
|
||||
<!-- Preference for opening links in a private tab-->
|
||||
<string name="preferences_open_links_in_a_private_tab">Άνοιγμα συνδέσμων σε ιδιωτική καρτέλα</string>
|
||||
<!-- Preference for accessibility -->
|
||||
<string name="preferences_accessibility">Προσβασιμότητα</string>
|
||||
<!-- Preference category for account information -->
|
||||
|
@ -265,6 +284,10 @@
|
|||
<!-- Label indicating that sync is in progress -->
|
||||
<string name="sync_syncing_in_progress">Συγχρονισμός…</string>
|
||||
|
||||
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
|
||||
<string name="sync_last_synced_summary">Τελευταίος συγχρονισμός: %s</string>
|
||||
<!-- Label summary showing never synced -->
|
||||
<string name="sync_never_synced_summary">Τελευταίος συγχρονισμός: ποτέ</string>
|
||||
<!-- Text for displaying the default device name.
|
||||
The first parameter is the application name, the second is the device manufacturer name
|
||||
and the third is the device model. -->
|
||||
|
@ -273,6 +296,10 @@
|
|||
<!-- 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">Ληφθείσες καρτέλες</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>
|
||||
|
||||
|
@ -303,9 +330,14 @@
|
|||
<!-- 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>
|
||||
|
||||
<!-- Pairing Feature strings -->
|
||||
<!-- Instructions on how to access pairing -->
|
||||
<string name="pair_instructions_2"><![CDATA[Σαρώστε το κωδικό QR που εμφανίζεται στο <b>firefox.com/pair</b>]]></string>
|
||||
<!-- Button to open camera for pairing -->
|
||||
<string name="pair_open_camera">Άνοιγμα κάμερας</string>
|
||||
<!-- Button to cancel pairing -->
|
||||
|
@ -392,20 +424,46 @@
|
|||
<string name="current_session_save">Αποθήκευση</string>
|
||||
<!-- Button in the current session menu. Opens the share menu when pressed -->
|
||||
<string name="current_session_share">Κοινή χρήση</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Title icon for current session menu -->
|
||||
<string name="current_session_image">Εικόνα τρέχουσας συνεδρίας</string>
|
||||
<!-- Button to save the current set of tabs into a collection -->
|
||||
<string name="save_to_collection">Αποθήκευση στη συλλογή</string>
|
||||
<!-- Text for the menu button to delete a collection -->
|
||||
<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 -->
|
||||
<string name="remove_top_site">Αφαίρεση</string>
|
||||
|
||||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (Ιδιωτική λειτουργία)</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Διαγραφή ιστορικού</string>
|
||||
<!-- Text for the dialog to confirm clearing all history -->
|
||||
<string name="history_delete_all_dialog">Θέλετε σίγουρα να διαγράψετε το ιστορικό σας;</string>
|
||||
<!-- Text for the snackbar to confirm that multiple browsing history items has been deleted -->
|
||||
<string name="history_delete_multiple_items_snackbar">Το ιστορικό διαγράφηκε</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">Το "%1$s" διαγράφηκε</string>
|
||||
<!-- Text for positive action to delete history in deleting history dialog -->
|
||||
<string name="history_clear_dialog">Απαλοιφή</string>
|
||||
<!-- History overflow menu copy button -->
|
||||
<string name="history_menu_copy_button">Αντιγραφή</string>
|
||||
<!-- History overflow menu share button -->
|
||||
<string name="history_menu_share_button">Κοινή χρήση</string>
|
||||
<!-- History overflow menu open in new tab button -->
|
||||
<string name="history_menu_open_in_new_tab_button">Άνοιγμα σε νέα καρτέλα</string>
|
||||
<!-- History overflow menu open in private tab button -->
|
||||
<string name="history_menu_open_in_private_tab_button">Άνοιγμα σε ιδιωτική καρτέλα</string>
|
||||
<!-- Text for the button to delete a single history item -->
|
||||
<string name="history_delete_item">Διαγραφή</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</string>
|
||||
<!-- Text for the button to clear selected history items. The first parameter
|
||||
is a digit showing the number of items you have selected -->
|
||||
<string name="history_delete_some">Διαγραφή %1$d στοιχείων</string>
|
||||
|
@ -418,16 +476,35 @@
|
|||
<!-- 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>
|
||||
|
||||
<!-- Close tab button text on the tab crash page -->
|
||||
<string name="tab_crash_close">Κλείσιμο καρτέλας</string>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
<!-- Bookmarks -->
|
||||
<!-- Content description for bookmarks library menu -->
|
||||
<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 -->
|
||||
<string name="bookmark_delete_folder_snackbar">Ο φάκελος "%1$s" διαγράφηκε</string>
|
||||
<!-- Screen title for adding a bookmarks folder -->
|
||||
<string name="bookmark_add_folder">Προσθήκη φακέλου</string>
|
||||
<!-- deprecated: Snackbar title shown after a bookmark has been created. -->
|
||||
<string name="bookmark_created_snackbar">Ο σελιδοδείκτης δημιουργήθηκε.</string>
|
||||
<!-- Snackbar title shown after a bookmark has been created. -->
|
||||
<string name="bookmark_saved_snackbar">Ο σελιδοδείκτης αποθηκεύτηκε!</string>
|
||||
<!-- Snackbar edit button shown after a bookmark has been created. -->
|
||||
<string name="edit_bookmark_snackbar_action">ΕΠΕΞΕΡΓΑΣΙΑ</string>
|
||||
<!-- Bookmark overflow menu edit button -->
|
||||
|
@ -569,6 +646,8 @@
|
|||
<!-- text for the button to finish onboarding -->
|
||||
<string name="onboarding_finish">Έναρξη περιήγησης</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>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
|
@ -579,14 +658,31 @@
|
|||
<string name="etp_cryptominers_title">Cryptominers</string>
|
||||
<!-- Category of trackers (fingerprinters) that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_fingerprinters_title">Fingerprinters</string>
|
||||
<!-- Category of trackers (tracking content) that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_title">Περιεχόμενο καταγραφής</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>
|
||||
<!-- Open source licenses page title
|
||||
The first parameter is the app name -->
|
||||
<string name="open_source_licenses_title">%s | Βιβλιοθήκες OSS</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>
|
||||
<!-- About page link text to open a screen with libraries that are used -->
|
||||
<string name="about_other_open_source_libraries">Βιβλιοθήκες που χρησιμοποιούμε</string>
|
||||
|
||||
<!-- Content description of the tab counter toolbar button when one tab is open -->
|
||||
<string name="tab_counter_content_description_one_tab">1 καρτέλα</string>
|
||||
<!-- Content description of the tab counter toolbar button when multiple tabs are open. First parameter will be replaced with the number of tabs (always more than one) -->
|
||||
|
@ -600,6 +696,11 @@
|
|||
<!-- 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">Το URL αντιγράφτηκε στο πρόχειρο</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 -->
|
||||
|
@ -607,12 +708,41 @@
|
|||
<!-- 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 -->
|
||||
<string name="preferences_passwords_save_logins">Αποθήκευση συνδέσεων και κωδικών πρόσβασης</string>
|
||||
<!-- Preference option for asking to save passwords in Fenix -->
|
||||
<string name="preferences_passwords_save_logins_ask_to_save">Ερώτηση για αποθήκευση</string>
|
||||
<!-- Preference option for never saving passwords in Fenix -->
|
||||
<string name="preferences_passwords_save_logins_never_save">Ποτέ αποθήκευση</string>
|
||||
<!-- Preference for autofilling saved logins in Fenix -->
|
||||
<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">Σύνδεση στο Sync</string>
|
||||
<!-- 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">Μάθετε περισσότερα σχετικά με το Sync.</string>
|
||||
<!-- Preference to access list of login exceptions that we never save logins for -->
|
||||
<string name="preferences_passwords_exceptions">Εξαιρέσεις</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 -->
|
||||
|
@ -621,6 +751,28 @@
|
|||
<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>
|
||||
<!-- 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">Θέλετε το %s να αποθηκεύσει αυτή τη σύνδεση;</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>
|
||||
<!-- Positive button to send users to set up a pin of warning dialog if users have no device authentication set up -->
|
||||
|
@ -630,6 +782,9 @@
|
|||
<!-- Saved logins sorting strategy menu item -by last used- (if selected, it will sort saved logins by last used) -->
|
||||
<string name="saved_logins_sort_strategy_last_used">Τελευταία χρήση</string>
|
||||
|
||||
<!-- Content description (not visible, for screen readers etc.): Sort saved logins dropdown menu chevron icon -->
|
||||
<string name="saved_logins_menu_dropdown_chevron_icon_content_description">Ταξινόμηση μενού σύνδεσης</string>
|
||||
|
||||
<!-- Title of the Add search engine screen -->
|
||||
<string name="search_engine_add_custom_search_engine_title">Προσθήκη μηχανής αναζήτησης</string>
|
||||
<!-- Title of the Edit search engine screen -->
|
||||
|
@ -648,4 +803,72 @@
|
|||
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
|
||||
<string name="search_add_custom_engine_name_hint">Όνομα</string>
|
||||
|
||||
</resources>
|
||||
<!-- 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 we aren't able to validate the custom search query. The first parameter is the url of the custom search engine -->
|
||||
<string name="search_add_custom_engine_error_cannot_reach">Σφάλμα σύνδεσης στο “%s”</string>
|
||||
|
||||
<!-- Title text shown for the migration screen to the new browser. Placeholder replaced with app name -->
|
||||
<string name="migration_title">Καλώς ορίσατε στο νέο %s</string>
|
||||
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
|
||||
<string name="migration_updating_app_button_text">Ενημέρωση του %s…</string>
|
||||
<!-- Text on the enabled button. Placeholder replaced with app name-->
|
||||
<string name="migration_update_app_button">Έναρξη του %s</string>
|
||||
<!-- Accessibility description text for a completed migration item -->
|
||||
<string name="migration_icon_description">Η μεταφορά ολοκληρώθηκε</string>
|
||||
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
|
||||
<string name="migration_text_passwords">Κωδικοί πρόσβασης</string>
|
||||
|
||||
<!-- First step for the allowing a permission -->
|
||||
<string name="phone_feature_blocked_step_settings">1. Μεταβείτε στις Ρυθμίσεις Android</string>
|
||||
<!-- Second step for the allowing a permission -->
|
||||
<string name="phone_feature_blocked_step_permissions"><![CDATA[2. Πατήστε το <b>Δικαιώματα</b>]]></string>
|
||||
<!-- Third step for the allowing a permission (Fore example: Camera) -->
|
||||
<string name="phone_feature_blocked_step_feature"><![CDATA[3. Ενεργοποιήστε το <b>%1$s</b>]]></string>
|
||||
|
||||
<!-- Label that indicates a site is using a secure connection -->
|
||||
<string name="quick_settings_sheet_secure_connection">Ασφαλής σύνδεση</string>
|
||||
<!-- Label that indicates a site is using a insecure connection -->
|
||||
<string name="quick_settings_sheet_insecure_connection">Μη ασφαλής σύνδεση</string>
|
||||
<!-- Label for the Pocket default top site -->
|
||||
<string name="pocket_top_articles">Κορυφαία άρθρα</string>
|
||||
<!-- Browser menu button that adds a top site to the home fragment -->
|
||||
<string name="browser_menu_add_to_top_sites">Προσθήκη στις κορυφαίες ιστοσελίδες</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">Επαλήθευση από: %1$s</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 saved login options menu description. -->
|
||||
<string name="login_options_menu">Επιλογές σύνδεσης</string>
|
||||
<!-- The button description to save changes to an edited login. -->
|
||||
<string name="save_changes_to_login">Αποθήκευση αλλαγών στη σύνδεση.</string>
|
||||
<!-- The button description to discard changes to an edited login. -->
|
||||
<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>
|
||||
|
||||
<!-- 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 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>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -96,7 +96,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">Install</string>
|
||||
<!-- Menu option on the toolbar that takes you to synced tabs page-->
|
||||
<string name="synced_tabs">Synced Tabs</string>
|
||||
<string name="synced_tabs">Synced tabs</string>
|
||||
<!-- Browser menu button that opens the find in page menu -->
|
||||
<string name="browser_menu_find_in_page">Find in page</string>
|
||||
<!-- Browser menu button that creates a private tab -->
|
||||
|
@ -105,8 +105,6 @@
|
|||
<string name="browser_menu_new_tab">New tab</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Save to collection</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Report site issue</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Share</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -120,8 +118,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">Powered by %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">Reader view</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Close reader view</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Open in app</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -425,7 +425,7 @@
|
|||
<!-- Option in Library to open History page -->
|
||||
<string name="library_history">History</string>
|
||||
<!-- Option in Library to open Synced Tabs page -->
|
||||
<string name="library_synced_tabs">Synced Tabs</string>
|
||||
<string name="library_synced_tabs">Synced tabs</string>
|
||||
<!-- Option in Library to open Reading List -->
|
||||
<string name="library_reading_list">Reading List</string>
|
||||
<!-- Menu Item Label for Search in Library -->
|
||||
|
@ -446,6 +446,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Private tabs</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">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">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">Private</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Open Tabs</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Save to collection</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Share all tabs</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Close all tabs</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">New tab</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Go home</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Toggle tab mode</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">Remove tab from collection</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -709,6 +727,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Save</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">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">Collection %d</string>
|
||||
|
||||
|
@ -937,20 +958,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Failed to sign-in</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Protect yourself</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Automatic privacy</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 helps stop websites from tracking you online.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Privacy and security settings block trackers, malware, and companies that follow you.</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 (default)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Blocks fewer trackers but allows pages to load normally</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Blocks fewer trackers. Pages will load normally.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Strict (recommended)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Strict</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Blocks more trackers for better protection and performance, but may cause some sites to not work properly</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Blocks more trackers, ads, and popups. Pages load faster, but some functionality might not work.</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 -->
|
||||
|
@ -1037,31 +1058,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Learn more</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 (recommended)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Standard (default)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Balanced for protection and performance.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Pages will load normally, but block fewer trackers.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Blocks fewer trackers. Pages will load normally.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">What’s blocked by standard tracking protection</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Strict</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Strict (Default)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Stronger tracking protection and faster performance, but some sites may not work properly.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Strict (recommended)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Stronger protection, but may cause some sites or content to break.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Blocks more trackers, ads, and popups. Pages load faster, but some functionality might not work.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">What’s blocked by strict tracking protection</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Custom</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Choose which trackers and scripts to block</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Choose which trackers and scripts to block.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">What’s blocked by custom tracking protection</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1111,7 +1122,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Stops outside ads, videos, and other content from loading that contains tracking code. May affect some website functionality.</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 is blocking trackers on this site when the shield is purple. Tap it to see what’s blocked.</string>
|
||||
<string name="etp_onboarding_cfr_message">Every time the shield is purple, %s has blocked trackers on a site. Tap for more info.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Protections are ON for this site</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -95,7 +95,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">Install</string>
|
||||
<!-- Menu option on the toolbar that takes you to synced tabs page-->
|
||||
<string name="synced_tabs">Synchronised Tabs</string>
|
||||
<string name="synced_tabs">Synchronised tabs</string>
|
||||
<!-- Browser menu button that opens the find in page menu -->
|
||||
<string name="browser_menu_find_in_page">Find in page</string>
|
||||
<!-- Browser menu button that creates a private tab -->
|
||||
|
@ -425,7 +425,7 @@
|
|||
<!-- Option in Library to open History page -->
|
||||
<string name="library_history">History</string>
|
||||
<!-- Option in Library to open Synced Tabs page -->
|
||||
<string name="library_synced_tabs">Synchronised Tabs</string>
|
||||
<string name="library_synced_tabs">Synchronised tabs</string>
|
||||
<!-- Option in Library to open Reading List -->
|
||||
<string name="library_reading_list">Reading List</string>
|
||||
<!-- Menu Item Label for Search in Library -->
|
||||
|
|
|
@ -106,8 +106,6 @@
|
|||
<string name="browser_menu_new_tab">Nueva pestaña</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Guardar en la colección</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Informar sobre problema del sitio</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Compartir</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -123,8 +121,10 @@
|
|||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="browser_menu_powered_by2">Desarrollado por %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">Vista 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">Salir de vista de lectura</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Abrir en la aplicación</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -462,6 +462,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Pestañas privadas</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Agregar pestaña</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Agregar pestaña privada</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Privado</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Abrir pestañas</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Guardar en colección</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Compartir todas las pestañas</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Cerrar todas las pestañas</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nueva pestaña</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Ir a inicio</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Alternar modo pestaña</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">Eliminar pestaña de la colección</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -734,6 +752,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Guardar</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Ver</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">Colección %d</string>
|
||||
|
||||
|
@ -966,20 +987,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Falló el inicio de sesión</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Protegete </string>
|
||||
<string name="onboarding_tracking_protection_header_2">Privacidad automática</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 ayuda a evitar que los sitios web te rastreen en línea.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">La configuración de privacidad y seguridad bloquea los rastreadores, los programas malignos y las compañías que te siguen.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Estándar</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Estándar (predeterminado)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Bloquea menos rastreadores pero permite que las páginas se carguen correctamente</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Bloquea menos rastreadores. Las páginas se van a cargar normalmente.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Estricta (recomendada)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Estricto</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Bloquea más rastreadores para una mejor protección y rendimiento, pero es posible que algunos sitios no se carguen correctamente</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Bloquea más rastreadores, anuncios y ventanas emergentes. Las páginas se cargan más rápido, pero podés perder cierta funcionalidad.</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 -->
|
||||
|
@ -1067,31 +1088,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Conocer más</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Estándar</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Estándar (recomendado)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Estándar (predeterminado)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Equilibrado para protección y rendimiento.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Las páginas se van a cargar normalmente, pero bloquean menos rastreadores.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Bloquea menos rastreadores. Las páginas se van a cargar normalmente.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Qué es lo que está bloqueado por la protección de rastreo estándar</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Estricta</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Estricta (predeterminada)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Mayor protección de rastreo y rendimiento más rápido, pero algunos sitios pueden no funcionar correctamente.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Estricto (recomendada)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Mayor protección, pero puede causar que algunos sitios o contenido no se carguen.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Bloquea más rastreadores, anuncios y ventanas emergentes. Las páginas se cargan más rápido, pero podés perder cierta funcionalidad.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Qué es lo que está bloqueado por la protección de rastreo estricta</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Personalizado</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Elegí qué rastreadores y secuencias de comandos querés bloquear</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Elegí qué rastreadores y secuencias de comandos querés bloquear.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Esto es lo que está bloqueado por la protección de rastreo estándar</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1141,7 +1152,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Detiene la carga de anuncios externos, videos y otro contenido que contiene código de rastreo. Puede afectar la funcionalidad del sitio web.</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">Cuando el escudo es morado, %s está bloqueando rastreadores en ese sitio. Tocá para ver qué está bloqueado.</string>
|
||||
<string name="etp_onboarding_cfr_message">Cada vez que ves el escudo morado, %s bloqueó los rastreadores en un sitio. Tocá para más información.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Las protecciones están habilitadas para este sitio</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -108,8 +108,6 @@
|
|||
<string name="browser_menu_new_tab">Nueva pestaña</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Guardar en la colección</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Informar de error en el sitio</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Compartir</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -124,8 +122,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">Desarrollado por %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">Vista 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">Salir de vista de lectura</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Abrir en aplicación</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -456,6 +456,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Pestañas privadas</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Añadir pestaña</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Agregar pestaña privada</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Privada</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Abrir pestañas</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Guardar en colección</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Compartir todas las pestañas</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Cerrar todas las pestañas</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nueva pestaña</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Ir a inicio</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Alternar modo pestaña</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">Eliminar pestaña de la colección</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -736,6 +754,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Guardar</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Ver</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">Colección %d</string>
|
||||
|
||||
|
@ -972,22 +993,22 @@
|
|||
<string name="onboarding_firefox_account_sync_is_on">Sync está activado</string>
|
||||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Error al iniciar sesión</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Protégete a ti mismo</string>
|
||||
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header_2">Privacidad automática</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 ayuda a evitar que los sitios web te rastreen en línea.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">La configuración de privacidad y seguridad bloquea los rastreadores, los programas malignos y las compañías que te siguen.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Estándar</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Estándar (predeterminado)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Bloquea menos rastreadores pero permite que las páginas carguen con normalidad</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Bloquea menos rastreadores. Las páginas se van a cargar normalmente.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Estricta (recomendada)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Estricto</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Bloquea más rastreadores para una mejor protección y rendimiento, pero puede hacer que algunos sitios no funcionen correctamente</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Bloquea más rastreadores, anuncios y ventanas emergentes. Las páginas se cargan más rápido, pero podés perder cierta funcionalidad.</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 -->
|
||||
|
@ -1075,31 +1096,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Más información</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Estándar</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Estándar (recomendada)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Estándar (predeterminado)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Equilibrada para protección y rendimiento.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Las páginas se cargarán normalmente, pero se bloquearán menos rastreadores.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Bloquea menos rastreadores. Las páginas se van a cargar normalmente.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Lo que bloquea la protección de seguimiento estándar</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Estricta</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Estricta (predeterminada)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Mayor protección contra rasteo y mejor rendimiento, pero puede que algunos sitios no funcionen correctamente.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Estricta (recomendada)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Mayor protección, pero puede provocar que algunos sitios o contenido no funcionen.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Bloquea más rastreadores, anuncios y ventanas emergentes. Las páginas se cargan más rápido, pero podés perder cierta funcionalidad.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Lo que bloquea la estricta protección de rastreo</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Personalizar</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Elige qué rastreadores y secuencias de comandos bloquear</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Elegí qué rastreadores y secuencias de comandos querés bloquear.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Lo que bloquea la protección de seguimiento personalizada</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1149,7 +1160,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Bloquea la carga de anuncios externos, videos y contenido que incluye código de seguimiento. Puede afectar a algunas funciones del sitio web.</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">Cuando el escudo es morado, %s está bloqueando rastreadores en ese sitio. Selecciónalo para ver qué ha bloqueado.</string>
|
||||
<string name="etp_onboarding_cfr_message">Cada vez que ves el escudo morado, %s bloqueó los rastreadores en un sitio. Tocá para más información.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Las protecciones están activadas para este sitio</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -106,8 +106,6 @@
|
|||
<string name="browser_menu_new_tab">Fitxa berria</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Gorde bildumara</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Jakinarazi gunearen arazoa</string>
|
||||
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Partekatu</string>
|
||||
|
@ -124,8 +122,10 @@
|
|||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="browser_menu_powered_by2">%1$s nabigatzaileak hornitua</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">Irakurtzeko ikuspegia</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Itxi irakurtzeko ikuspegia</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Ireki aplikazioan</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -458,6 +458,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Fitxa pribatuak</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Gehitu fitxa</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Gehitu fitxa pribatua</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Pribatua</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Irekitako fitxak</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Gorde bildumara</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Partekatu fitxa guztiak</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Itxi fitxa guztiak</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Fitxa berria</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Joan hasierara</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Txandakatu fitxen modua</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">Kendu fitxa bildumatik</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -725,6 +743,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Gorde</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Ikusi</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. bilduma</string>
|
||||
|
||||
|
@ -958,20 +979,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Huts egin du saioa hastean</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Babestu zure burua</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Pribatutasun automatikoa</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">Webguneek zure jarraipena ez egiteko laguntza ematen dizu %s(e)k.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Pribatutasun- eta segurtasun-ezarpenek jarraipen-elementuak, malwarea eta zure jarraipena egiten duten enpresak blokeatzen dituzte.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Oinarrizkoa</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Oinarrizkoa (lehenetsia)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Jarraipen-elementu gutxiago blokeatzen ditu baina orriak normal kargatzea baimentzen du</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Jarraipen-elementu gutxiago blokeatzen ditu. Orriak ohi bezala kargatuko dira.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Zorrotza (gomendatua)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Zorrotza</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Jarraipen-elementu gehiago blokeatzen ditu babes eta errendimendu hoberako baina zenbait gune ondo ez ibiltzea eragin lezake</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Jarraipen-elementu, iragarki eta popup gehiago blokeatzen ditu. Orriak azkarrago kargatzen dira baina zenbait eginbide agian ez dira ondo ibiliko.</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 -->
|
||||
|
@ -1058,31 +1079,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Argibide gehiago</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Oinarrizkoa</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Oinarrizkoa (gomendatua)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Oinarrizkoa (lehenetsia)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Babeserako eta errendimendurako orekatua.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Orriak ohi bezala kargatuko dira baina jarraipen-elementu gutxiago blokeatuko dira.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Jarraipen-elementu gutxiago blokeatzen ditu. Orriak ohi bezala kargatuko dira.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Jarraipenaren oinarrizko babesak blokeatzen duena</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Zorrotza</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Zorrotza (lehenetsia)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Jarraipenaren babes sendoagoa eta errendimendu hobea baina baliteke zenbait gune ondo ez ibiltzea.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Zorrotza (gomendatua)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Babes sendoagoa baina zenbait gune edo eduki apurtzea eragin lezake.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Jarraipen-elementu, iragarki eta popup gehiago blokeatzen ditu. Orriak azkarrago kargatzen dira baina zenbait eginbide agian ez dira ondo ibiliko.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Jarraipenaren babes zorrotzak blokeatzen duena</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Pertsonalizatua</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Aukeratu blokeatu beharreko jarraipen-elementu eta scriptak</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Aukeratu blokeatu beharreko jarraipen-elementu eta scriptak.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Jarraipenaren babes pertsonalizatuak blokeatzen duena</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1132,7 +1143,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Jarraipenerako kodea izan lezaketen kanpoko iragarkiak, bideoak eta bestelako edukia kargatzea eragozten du. Zenbait webguneren eginbideetan eragina izan lezake.</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 jarraipen-elementuak blokeatzen ari da babesaren ikonoa morea denean. Saka ezazu zer blokeatzen den ikusteko.</string>
|
||||
<string name="etp_onboarding_cfr_message">Babesaren ikonoa morea denean, %s(e)k jarraipen-elementuak blokeatu ditu gune batean. Sakatu informazio gehiagorako.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Babesak aktibo daude gune honetarako</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -42,6 +42,11 @@
|
|||
<!-- Text for the negative button -->
|
||||
<string name="cfr_neg_button_text">نه، ممنون!</string>
|
||||
|
||||
<!-- Search widget "contextual feature recommendation" (CFR) -->
|
||||
<!-- Text for the main message. 'Firefox' intentionally hardcoded here.-->
|
||||
<string name="search_widget_cfr_message">سریعتر به Firefox بروید. ویجت را به صفحه اصلی خود اضافه کنید.</string>
|
||||
<!-- Text for the positive button -->
|
||||
<string name="search_widget_cfr_pos_button_text">ویجت را اضافه کنید</string>
|
||||
<!-- Text for the negative button -->
|
||||
<string name="search_widget_cfr_neg_button_text">اکنون نه</string>
|
||||
|
||||
|
@ -87,6 +92,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 -->
|
||||
|
@ -95,8 +102,6 @@
|
|||
<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 opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">گزارش مشکل پایگاه اینترنتی</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 -->
|
||||
|
@ -110,8 +115,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">قدرت گرفته توسط %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">نمای خواننده</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 -->
|
||||
|
@ -281,6 +288,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">زبانهها</string>
|
||||
<!-- Preference for signing out -->
|
||||
<string name="preferences_sign_out">خروج</string>
|
||||
<!-- Preference displays and allows changing current FxA device name -->
|
||||
|
@ -412,6 +421,8 @@
|
|||
<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 -->
|
||||
|
@ -432,6 +443,24 @@
|
|||
<string name="tabs_header_private_tabs_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>
|
||||
<!-- 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 -->
|
||||
|
@ -699,6 +728,9 @@
|
|||
<!-- 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>
|
||||
|
||||
|
@ -928,18 +960,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">ورود شکست خورد</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">از خودت محافظت کن</string>
|
||||
<string name="onboarding_tracking_protection_header_2">حریم خصوصی خودکار</string>
|
||||
<!-- text for the tracking protection card description
|
||||
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||
<string name="onboarding_tracking_protection_description1">%s به شما کمک می کند تا وب سایت ها ردیاب شما را متوقف کنند.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">تنظیمات حریم خصوصی و امنیتی ردیاب ها ، بدافزارها و شرکت هایی که شما را ردیابی می کنند را مسدود می کند.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">استاندارد</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">استاندارد (پیش فرض)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">تعداد کمتر ردیاب را مسدود می کند اما به صفحات اجازه می دهد تا به طور عادی بارگیری شوند</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">تعداد کمتر ردیاب را مسدود می کند. صفحات به صورت عادی بارگیری می شوند.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">سختگیرانه (توصیه میشود)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">شدید</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">ردیاب های بیشتری را برای محافظت و عملکرد بهتر مسدود می کند ، اما ممکن است باعث شود برخی سایت ها به درستی کار نکنند</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">ردگیرها ، تبلیغات و پنجره های بیشتر را مسدود می کند. صفحات سریعتر بارگیری می شوند ، اما برخی از عملکردها ممکن است کار نکند.</string>
|
||||
<!-- text for the toolbar position card header
|
||||
In English this is an idiom for "choose a side as in an argument or fight"
|
||||
but it is ok to make this more literally about "choosing a position in a physical space -->
|
||||
|
@ -1026,31 +1060,21 @@
|
|||
<!-- 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_option">استاندارد</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">استاندارد (توصیه می شود)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">استاندارد (پیش فرض)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">تنظیم شده برای محافظت و کارایی.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">صفحات به طور عادی بارگیری می شوند ، اما تعداد کمتر ردیاب را مسدود می کنند.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">تعداد کمتر ردیاب را مسدود می کند. صفحات به صورت عادی بارگیری می شوند.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">آنچه توسط حفاظت ردیابی استاندارد مسدود شده است</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">سخت گیرانه</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">سختگیرانه (پیش فرض)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">محافظت از ردیابی قوی تر و عملکرد سریع تر ، اما برخی از سایت ها ممکن است به درستی کار نکنند.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">سختگیرانه (توصیه میشود)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">ارائه محافظت قوی تر ممکن است باعث خرابی ها در پایگاه اینترنتی شود.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">ردگیرها ، تبلیغات و پنجره های بیشتر را مسدود می کند. صفحات سریعتر بارگیری می شوند ، اما برخی از عملکردها ممکن است کار نکند.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">آنچه توسط حفاظت ردیابی سختگیرانه مسدود شده است</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">سفارشی</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">کدام ردیاب و اسکریپت را مسدود کنید</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">انتخاب کنید کدام ردیاب و اسکریپت را مسدود کنید.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">آنچه توسط حفاظت ردیابی سفارشی مسدود شده است</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1101,7 +1125,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">از بارگیری که حاوی کد رهگیری است ، خارج از تبلیغات ، فیلم ها و سایر مطالب متوقف می شود. ممکن است بر عملکرد وب سایت تأثیر بگذارد.</string>
|
||||
<!-- Enhanced Tracking Protection Onboarding Message shown in a dialog above the toolbar. The first parameter is the name of the application (For example: Fenix) -->
|
||||
<string name="etp_onboarding_message_2">هنگام محافظت از رنگ بنفش ،%s در حال ردگیری ردیاب ها در این سایت است. روی آن ضربه بزنید تا ببینید چه چیزی مسدود شده است.</string>
|
||||
<string name="etp_onboarding_cfr_message">هربار که سپر بنفش است%s ردگیرها را در یک سایت مسدود کرده است. برای دریافت اطلاعات بیشتر ضربه بزنید.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">محافظت برای این سایت فعال است</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
@ -1386,4 +1410,15 @@
|
|||
<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>
|
||||
|
||||
<!-- Synced Tabs -->
|
||||
<!-- Text displayed when user is not logged into a Firefox Account -->
|
||||
<string name="synced_tabs_connect_to_sync_account">اتصال به حساب فایرفاکس.</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 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>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -96,6 +96,8 @@
|
|||
<string name="browser_menu_add_to_homescreen">Lisää aloitusnäytölle</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">Asenna</string>
|
||||
<!-- Menu option on the toolbar that takes you to synced tabs page-->
|
||||
<string name="synced_tabs">Synkronoidut välilehdet</string>
|
||||
<!-- Browser menu button that opens the find in page menu -->
|
||||
<string name="browser_menu_find_in_page">Etsi sivulta</string>
|
||||
<!-- Browser menu button that creates a private tab -->
|
||||
|
@ -104,8 +106,6 @@
|
|||
<string name="browser_menu_new_tab">Uusi välilehti</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Tallenna kokoelmaan</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Ilmoita sivusto-ongelma</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Jaa</string>
|
||||
|
||||
|
@ -121,8 +121,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">Mahdollistajana %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">Lukunäkymä</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Sulje lukunäkymä</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Avaa sovelluksessa</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -296,6 +298,8 @@
|
|||
<string name="preferences_sync_bookmarks">Kirjanmerkit</string>
|
||||
<!-- Preference for syncing logins -->
|
||||
<string name="preferences_sync_logins">Kirjautumistiedot</string>
|
||||
<!-- Preference for syncing tabs -->
|
||||
<string name="preferences_sync_tabs">Välilehdet</string>
|
||||
<!-- Preference for signing out -->
|
||||
<string name="preferences_sign_out">Kirjaudu ulos</string>
|
||||
<!-- Preference displays and allows changing current FxA device name -->
|
||||
|
@ -430,6 +434,8 @@
|
|||
<string name="library_desktop_bookmarks_unfiled">Muut kirjanmerkit</string>
|
||||
<!-- Option in Library to open History page -->
|
||||
<string name="library_history">Historia</string>
|
||||
<!-- Option in Library to open Synced Tabs page -->
|
||||
<string name="library_synced_tabs">Synkronoidut välilehdet</string>
|
||||
<!-- Option in Library to open Reading List -->
|
||||
<string name="library_reading_list">Lukulista</string>
|
||||
<!-- Menu Item Label for Search in Library -->
|
||||
|
@ -450,6 +456,22 @@
|
|||
<string name="tabs_header_private_tabs_title">Yksityiset välilehdet</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Lisää välilehti</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Lisää yksityinen välilehti</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Yksityinen</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Avoimet välilehdet</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Tallenna kokoelmaan</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Jaa kaikki välilehdet</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Sulje kaikki välilehdet</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Uusi välilehti</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Siirry kotiin</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">Poista välilehti kokoelmasta</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -952,18 +974,13 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Sisäänkirjautuminen epäonnistui</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Suojaa itsesi</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 auttaa estämään verkkosivustoja seuraamasta sinua verkossa.</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Automaattinen yksityisyys</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Tavallinen</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Estää vähemmän seuraimia, mutta sallii sivujen latautumisen normaalisti</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Tavallinen (oletus)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Tiukka (suositeltu)</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Estää enemmän seuraimia paremman suojauksen ja suorituskyvyn saavuttamiseksi, mutta saattaa aiheuttaa ongelmia joidenkin sivujen toimivuudessa</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Tiukka</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 -->
|
||||
|
@ -1051,31 +1068,17 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Lue lisää</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Tavallinen</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Tavallinen (suositeltu)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Tasapainoa suojauksen ja suorituskyvyn välillä.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Sivut latautuvat normaalisti, mutta vähemmän seuraimia estetään.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Tavallinen (oletus)</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Mitä tavallinen seurannan suojaus estää</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Tiukka</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Tiukka (oletus)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Vahvempi seurannan suojaus ja nopeampi suorituskyky, mutta jotkin sivustot eivät välttämättä toimi kunnolla.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Tiukka (suositeltu)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Vahvempi suojaus, mutta jotkin sivustot tai sisällöt voivat rikkoutua.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Mitä tiukka seurannan suojaus estää</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Mukautettu</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Valitse, mitkä seuraimet ja komentosarjat estetään</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Valitse, mitkä seuraimet ja komentosarjat estetään.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Mitä mukautettu seurannan suojaus estää</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1124,8 +1127,6 @@
|
|||
<string name="etp_tracking_content_title">Seurantaan tarkoitettu sisältö</string>
|
||||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Estää lataamasta ulkopuolisia mainoksia, videoita ja muuta sisältöä, joka sisältää seurantakoodin. Voi vaikuttaa joidenkin verkkosivustojen toimimiseen.</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 estää seuraimia tällä sivustolla, kun kilpi on väriltään liila. Napauta kilpeä nähdäksesi mitä estetään.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Suojaukset ovat PÄÄLLÄ tällä sivustolla</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
@ -1412,4 +1413,14 @@
|
|||
<!-- Voice search prompt description displayed after the user presses the voice search button -->
|
||||
<string name="voice_search_explainer">Puhu nyt</string>
|
||||
|
||||
</resources>
|
||||
<!-- Synced Tabs -->
|
||||
<!-- Text displayed when user is not logged into a Firefox Account -->
|
||||
<string name="synced_tabs_connect_to_sync_account">Yhdistä Firefox-tilillä.</string>
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<string name="synced_tabs_connect_another_device">Yhdistä toinen laite.</string>
|
||||
<!-- Text displayed asking user to re-authenticate -->
|
||||
<string name="synced_tabs_reauth">Tunnistaudu uudelleen.</string>
|
||||
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
|
||||
<string name="synced_tabs_enable_tab_syncing">Ota välilehtien synkronointi käyttöön.</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -105,8 +105,6 @@
|
|||
<string name="browser_menu_new_tab">Nouvel onglet</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Enregistrer dans une collection</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Signaler un problème sur ce site</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Partager</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -122,8 +120,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">Fonctionne grâce à %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">Mode lecture</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Quitter le mode lecture</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Ouvrir dans une application</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -458,6 +458,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Onglets privés</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Ajouter un onglet</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Ouvrir un nouvel onglet privé</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Onglet privé</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Onglets ouverts</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Enregistrer dans une collection</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Partager tous les onglets</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Fermer tous les onglets</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nouvel onglet</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Accueil</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Changer de mode d’onglets</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">Supprimer l’onglet de la collection</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -740,6 +758,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Enregistrer</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Afficher</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">Collection %d</string>
|
||||
|
||||
|
@ -981,20 +1002,20 @@ Cependant, il peut être moins stable. Téléchargez la version bêta de notre n
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Échec de connexion</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Protégez-vous</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Respect automatique de la vie privée</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 vous aide à empêcher les sites web de vous suivre en ligne.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Les paramètres de confidentialité et de sécurité bloquent les traqueurs, les logiciels malveillants et les entreprises qui vous pistent.</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 (par défaut)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Bloque moins de traqueurs mais permet aux pages de se charger normalement</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Bloque moins de traqueurs. Les pages se chargent normalement.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Strict (recommandé)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Strict</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Bloque davantage de traqueurs pour une meilleure protection et de meilleures performances, mais peut empêcher certains sites de fonctionner correctement</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Bloque davantage de traqueurs, de publicités et de popups. Les pages se chargent plus rapidement, mais certaines fonctionnalités pourraient ne pas être opérantes.</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 -->
|
||||
|
@ -1081,31 +1102,21 @@ Cependant, il peut être moins stable. Téléchargez la version bêta de notre n
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">En savoir plus</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 (recommandé)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Standard (par défaut)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Équilibré entre la protection et la performance.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Les pages se chargeront normalement, mais bloqueront moins de traqueurs.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Bloque moins de traqueurs. Les pages se chargent normalement.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Ce qui est bloqué par la protection standard contre le pistage</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Stricte</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Stricte (par défaut)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Une protection renforcée contre le pistage et de meilleures performances, mais certains sites peuvent ne pas fonctionner correctement.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Stricte (recommandé)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Protection renforcée, mais certains sites ou contenus peuvent être endommagés.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Bloque davantage de traqueurs, de publicités et de popups. Les pages se chargent plus rapidement, mais certaines fonctionnalités pourraient ne pas être opérantes.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Ce qui est bloqué par la protection stricte contre le pistage</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Personnalisée</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Choisissez les traqueurs et les scripts à bloquer.</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Choisissez les traqueurs et les scripts à bloquer.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Ce qui est bloqué par la protection personnalisée contre le pistage</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1155,7 +1166,7 @@ Cependant, il peut être moins stable. Téléchargez la version bêta de notre n
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Empêche le chargement des publicités, vidéos et autres contenus d’origine externe au site et contenant du code de pistage. Peut affecter certaines fonctionnalités du site.</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 bloque des traqueurs sur ce site quand le bouclier est violet. Appuyez dessus pour voir lesquels.</string>
|
||||
<string name="etp_onboarding_cfr_message">Quand le bouclier est violet, c’est que %s a bloqué des traqueurs sur le site visité. Appuyez pour en savoir plus.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Les protections sont activées pour ce site</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -97,6 +97,8 @@
|
|||
<string name="browser_menu_add_to_homescreen">Tafoegje oan startskerm</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">Ynstallearje</string>
|
||||
<!-- Menu option on the toolbar that takes you to synced tabs page-->
|
||||
<string name="synced_tabs">Syngronisearre ljepblêden</string>
|
||||
<!-- Browser menu button that opens the find in page menu -->
|
||||
<string name="browser_menu_find_in_page">Sykje op side</string>
|
||||
<!-- Browser menu button that creates a private tab -->
|
||||
|
@ -105,8 +107,6 @@
|
|||
<string name="browser_menu_new_tab">Nij ljepblêd</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Yn kolleksje bewarje</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Websiteprobleem melde</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Diele</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -120,8 +120,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">Mooglik makke troch %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êzerwerjefte</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Lêzerwerjefte slute</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Iepenje yn app</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -292,6 +294,8 @@
|
|||
<string name="preferences_sync_bookmarks">Blêdwizers</string>
|
||||
<!-- Preference for syncing logins -->
|
||||
<string name="preferences_sync_logins">Oanmeldingen</string>
|
||||
<!-- Preference for syncing tabs -->
|
||||
<string name="preferences_sync_tabs">Ljepblêden</string>
|
||||
<!-- Preference for signing out -->
|
||||
<string name="preferences_sign_out">Ofmelde</string>
|
||||
<!-- Preference displays and allows changing current FxA device name -->
|
||||
|
@ -423,6 +427,8 @@
|
|||
<string name="library_desktop_bookmarks_unfiled">Oare blêdwizers</string>
|
||||
<!-- Option in Library to open History page -->
|
||||
<string name="library_history">Skiednis</string>
|
||||
<!-- Option in Library to open Synced Tabs page -->
|
||||
<string name="library_synced_tabs">Syngronisearre ljepblêden</string>
|
||||
<!-- Option in Library to open Reading List -->
|
||||
<string name="library_reading_list">Lêslist</string>
|
||||
<!-- Menu Item Label for Search in Library -->
|
||||
|
@ -443,6 +449,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Priveeljepblêden</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Ljepblêd tafoegje</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Priveeljepblêd tafoegje</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Privee</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Iepen ljeplêden</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Yn kolleksje bewarje</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Alle ljepblêden diele</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Alle ljepblêden slute</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nij ljepblêd</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Nei startside</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Ljepblêdmodus wikselje</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">Ljepblêd út kolleksje fuortsmite</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -706,6 +730,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Bewarje</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Werjaan</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">Kolleksjes %d</string>
|
||||
|
||||
|
@ -936,18 +963,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Oanmelden mislearre</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Beskermje josels</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Automatyske privacy</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 helpt foar te kommen dat websites jo online folgje.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Privacy- en befeiligingsynstellingen blokkearje trackers, malware en bedriuwen dy\'t jo folgje.</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Standert</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Standert (standert)</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Blokkearret minder trackers, mar stiet ta dat siden normaal laden wurde</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Blokkearret minder trackers. Siden wurde normaal laden.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Strang (oanrekommandearre)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Strang</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Blokkearret mear trackers foar bettere beskerming en prestaasjes, mar kin derfoar soargje dat guon websites net goed wurkje</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Blokkearret mear trackers, advertinsjes en pop-ups. Siden wurden flugger laden, mar guon funksjes wurkje mooglik net.</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 -->
|
||||
|
@ -1036,31 +1065,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Mear ynfo</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Standert</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Standert (oanrekommandearre)</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Standert (standert)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Balansearre foar beskerming en prestaasjes.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Siden wurde normaal laden, mar der wurde minder trackers blokkearre.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Blokkearret minder trackers. Siden wurde normaal laden.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Wat wurdt blokkearre troch standert beskerming tsjin folgjen</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Strang</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Strang (standert)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Sterkere beskerming tsjin folgjen en fluggere prestaasjes, mar guon websites wurkje mooglik net goed.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Strang (oanrekommandearre)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Strangere beskerming, mar kin derfoar soargje dat guon websites of ynhâld net wurkje.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Blokkearret mear trackers, advertinsjes en pop-ups. Siden wurden flugger laden, mar guon funksjes wurkje mooglik net.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Wat wurdt blokkearre troch strange beskerming tsjin folgjen</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Oanpast</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Kies hokker trackers en scripts jo blokkearje wolle</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Kies hokker trackers en scripts jo blokkearje wolle.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Wat wurdt blokkearre troch oanpaste beskerming tsjin folgjen</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1111,7 +1130,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Foarkomt dat eksterne advertinsjes, fideo’s en oare ynhâld dy\'t folchkoade befettet laden wurde. Kin ynfloed hawwe op de funksjonaliteit fan guon websites.</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 blokkearret trackers op dizze website as it skildsje pears is. Tik dêrop om te sjen wat er blokkearre is.</string>
|
||||
<string name="etp_onboarding_cfr_message">Elke kear as it skyld pears is, hat %s trackers op in website blokkearre. Tik foar mear ynfo.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Beskermingen foar dizze website stean OAN</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
@ -1394,4 +1413,15 @@
|
|||
<string name="voice_search_content_description">Sprutsen sykopdracht</string>
|
||||
<!-- Voice search prompt description displayed after the user presses the voice search button -->
|
||||
<string name="voice_search_explainer">No sprekke</string>
|
||||
|
||||
<!-- Synced Tabs -->
|
||||
<!-- Text displayed when user is not logged into a Firefox Account -->
|
||||
<string name="synced_tabs_connect_to_sync_account">Ferbine mei in Firefox-account.</string>
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<string name="synced_tabs_connect_another_device">In oar apparaat ferbine.</string>
|
||||
<!-- Text displayed asking user to re-authenticate -->
|
||||
<string name="synced_tabs_reauth">Graach opnij autentisearje.</string>
|
||||
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
|
||||
<string name="synced_tabs_enable_tab_syncing">Skeakelje it syngronisearjen fan ljepblêden yn.</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -109,8 +109,6 @@
|
|||
<string name="browser_menu_new_tab">Tendayke pyahu</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Eñongatu mbyatyhápe</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Emomarandu tenda jejavy</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Moherakuã</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -124,8 +122,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">Omboguatáva %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">Moñe’ẽrã rechaha</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Moñe’ẽrã rechahágui ñesẽ</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Embojuruja tembipuru’i</string>
|
||||
|
||||
|
@ -456,6 +456,24 @@
|
|||
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Embojuaju tendayke</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Embojuaju tendayke ñemigua</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Ñemigua</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Embojuruja tendayke</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Eñongatu atyhápe</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Emoherakuã opaite tendayke</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Emboty opaite tendayke</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Tendayke pyahu</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">Eho ñepyrũhápe</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Embojopyru tendayke ayvu</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">Embogue tendayke mbyatypyregua</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -726,6 +744,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Ñongatu</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Hecha</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">Ñembyatyha %d</string>
|
||||
|
||||
|
@ -961,20 +982,13 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Tembiapo ñepyrũ ojavy</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Eñemo’ãke ndetevoi</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 nepytyvõ emboyke hag̃ua ñanduti renda nde rapykuehóvo.</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Ñemigua ijeheguíva</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">Ypykue</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">Ojoko’ive tapykuehoha hákatu omoneĩ kuatiarogue henyhẽvo hekopete</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_2">Ypyguaite (ijypygua)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Mbaretépe (jeroviaháva)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Mbaretépe</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Ejokove tapykuehoha eñemo’ãve ha apopykuaave hag̃ua, hákatu ikatu avei oimeraẽva tenda nahenyhẽi hekopete</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 -->
|
||||
|
@ -1063,31 +1077,17 @@
|
|||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Kuaave</string>
|
||||
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">Ypykue</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">Ypykue (jeroviaháva)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description">Oñembojoja ñemo’ã ha apopykuaa.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Kuatiarogue henyhẽta tapiaguáicha, hákatu ojoko sa’ivéta tapykuehohápe.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_default_1">Ypyguaite (ijypygua)</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Mba’e umi ojokóva tapykuehoha moãha ypyguáva renondépe</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Mbaretépe</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Mbaretépe (Ijypykuéva)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Ñemo’ã tapykuehoha iporãvéva renondépe ha avei apopykuaave, háhatu ikatu heta tenda nomba’poporãmo’ãi.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Mbaretépe (jeroviaháva)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Ñemo’ãve, hákatu ikatu ndahetái tenda térã tetepy nomba’apovéi.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Mba’e umi ojokóva tapykuehoha mo’ãha imbaretéva</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Momba’epyre</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Eiporavo mba’e tapykuehoha ha jehekaha ejokose.</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Eiporavo mba’e tapykuehoha ha jehekaha ejokose.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Mba’e umi ojokóva tapykuehoha mo’ãha ñemomba’epyre</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1138,8 +1138,6 @@
|
|||
<string name="etp_tracking_content_title">Tapykueho retepy</string>
|
||||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Ejoko ñemurã ñemyanyhẽ okayguáva, ta’ãngamýi ha tetepy oguerekóva ayvu rapykuehoha. Ikatu ombyai ñanduti renda rembiapoite.</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">Ta’ãnga pytãũvo %s ojokohína tapykuehoha ko tendápe. Eiporavo ehecha hag̃ua mba’etépa ojoko.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Umi ñemo’ã oñemyandýma ko tendápe g̃uarã</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- App name for private browsing mode, only the "Private" portion should be localized. -->
|
||||
<string name="app_name_private_2">निजी Firefox पूर्वावलोकन</string>
|
||||
<!-- App name for private browsing mode, only the "Private" portion should be localized. -->
|
||||
<string name="app_name_private_3">Firefox Preview (निजी मोड)</string>
|
||||
<!-- Home Fragment -->
|
||||
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
|
||||
<string name="content_description_menu">अधिक विकल्प</string>
|
||||
|
@ -19,6 +15,9 @@
|
|||
<!-- No Open Tabs Message Description -->
|
||||
<string name="no_open_tabs_description">आपके खुले टैब यहां दिखाए जाएंगे।</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>
|
||||
|
@ -26,7 +25,7 @@
|
|||
<!-- Delete session button to erase your history in a private session -->
|
||||
<string name="private_browsing_delete_session">सत्र मिटाएं</string>
|
||||
|
||||
<!-- Private mode shortcut "contextual feature recommender" (CFR) -->
|
||||
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
|
||||
<!-- Text for the main message -->
|
||||
<string name="cfr_message">अपने होम स्क्रीन से निजी टैब खोलने के लिए एक शॉर्टकट जोड़ें।</string>
|
||||
<!-- Text for the positive button -->
|
||||
|
@ -34,6 +33,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>
|
||||
|
@ -85,8 +87,6 @@
|
|||
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">संग्रहण में सहेजें</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">साइट समस्या की रिपोर्ट करें</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">साझा करें</string>
|
||||
|
||||
|
@ -102,7 +102,7 @@
|
|||
<!-- 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">%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">पाठक विचार</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">ऐप में खोलें</string>
|
||||
|
@ -274,6 +274,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">टैब</string>
|
||||
<!-- Preference for signing out -->
|
||||
<string name="preferences_sign_out">साइन आउट करें</string>
|
||||
<!-- Preference displays and allows changing current FxA device name -->
|
||||
|
@ -292,10 +294,11 @@
|
|||
<string name="sync_last_synced_summary">पिछला सिंक: %s</string>
|
||||
<!-- Label summary showing never synced -->
|
||||
<string name="sync_never_synced_summary">पिछला सिंक: कभी नहीं हुआ</string>
|
||||
|
||||
<!-- Text for displaying the default device name.
|
||||
The first parameter is the application name, the second is the device manufacturer name
|
||||
and the third is the device model. -->
|
||||
<string name="default_device_name">%s पर %s %s</string>
|
||||
<string name="default_device_name_2">%2$s %3$s पर %1$s</string>
|
||||
|
||||
<!-- Send Tab -->
|
||||
<!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
|
||||
|
@ -361,9 +364,6 @@
|
|||
<!-- Preference for removing FxA account -->
|
||||
<string name="preferences_sync_remove_account">खाता मिटायें</string>
|
||||
|
||||
<!-- Pairing Feature strings -->
|
||||
<!-- Instructions on how to access pairing -->
|
||||
<string name="pair_instructions"><![CDATA[अपने कंप्यूटर पर अपना QR कोड प्राप्त करने के लिए Firefox में <b> firefox.com/pair </ b> पर जाएं।]]></string>
|
||||
<!-- Button to open camera for pairing -->
|
||||
<string name="pair_open_camera">कैमरा खोले</string>
|
||||
<!-- Button to cancel pairing -->
|
||||
|
@ -409,8 +409,6 @@
|
|||
<string name="library_reading_list">पठन सूची</string>
|
||||
<!-- Menu Item Label for Search in Library -->
|
||||
<string name="library_search">खोजें</string>
|
||||
<!-- Library Page Title -->
|
||||
<string name="library_title">लाइब्रेरी</string>
|
||||
<!-- Settings Page Title -->
|
||||
<string name="settings_title">सेटिंग</string>
|
||||
|
||||
|
@ -428,6 +426,16 @@
|
|||
<string name="tabs_header_private_tabs_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 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.): Close tab button. Closes the current session when pressed -->
|
||||
<string name="close_tab">टैब बंद करें</string>
|
||||
|
||||
|
@ -469,6 +477,10 @@
|
|||
<string name="history_delete_all">इतिहास मिटाएं</string>
|
||||
<!-- Text for the dialog to confirm clearing all history -->
|
||||
<string name="history_delete_all_dialog">क्या आप वाकई अपना इतिहास मिटाना चाहते हैं?</string>
|
||||
<!-- Text for the snackbar to confirm that multiple browsing history items has been deleted -->
|
||||
<string name="history_delete_multiple_items_snackbar">इतिहास मिटा दिया गया</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">%1$s मिटाया गया</string>
|
||||
<!-- Text for positive action to delete history in deleting history dialog -->
|
||||
<string name="history_clear_dialog">साफ करें</string>
|
||||
<!-- History overflow menu copy button -->
|
||||
|
@ -523,6 +535,8 @@
|
|||
<string name="bookmark_edit">बुकमार्क संपादित करें</string>
|
||||
<!-- Screen title for selecting a bookmarks folder -->
|
||||
<string name="bookmark_select_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">%1$s मिटाया गया</string>
|
||||
<!-- Screen title for adding a bookmarks folder -->
|
||||
<string name="bookmark_add_folder">फ़ोल्डर जोड़ें</string>
|
||||
<!-- deprecated: Snackbar title shown after a bookmark has been created. -->
|
||||
|
@ -576,9 +590,9 @@
|
|||
<!-- 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 snackbar message on deleting multiple bookmarks -->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message">चयनित बुकमार्क मिटा रहे है</string>
|
||||
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_2">बुकमार्क मिटा दिए गए</string>
|
||||
<!-- Bookmark undo button for deletion snackbar action -->
|
||||
<string name="bookmark_undo_deletion">पूर्ववत करें</string>
|
||||
|
||||
|
@ -793,13 +807,10 @@
|
|||
<!-- 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">स्वतः फ़ॉन्ट आकार</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">खुले टैब</string>
|
||||
<string name="preferences_delete_browsing_data_tabs_title_2">टैब खोलें</string>
|
||||
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
|
||||
<string name="preferences_delete_browsing_data_tabs_subtitle">%d टैब</string>
|
||||
<!-- Title for the data and history items in Delete browsing data -->
|
||||
|
@ -841,6 +852,12 @@
|
|||
<!-- Text for the snackbar to show the user that the deletion of browsing data is in progress -->
|
||||
<string name="deleting_browsing_data_in_progress">ब्राउज़िंग डेटा मिटा रहे हैं…</string>
|
||||
|
||||
<!-- Tips -->
|
||||
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
|
||||
<string name="tip_firefox_preview_moved_header">Firefox Preview अब Firefox Nightly है</string>
|
||||
<!-- text for firefox preview moving tip button. "Mozilla Firefox Browser" is intentionally hardcoded -->
|
||||
<string name="tip_firefox_preview_moved_button">Mozilla Firefox ब्राउज़र प्राप्त करें</string>
|
||||
|
||||
<!-- Onboarding -->
|
||||
<!-- Text for onboarding welcome message
|
||||
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||
|
@ -869,15 +886,6 @@
|
|||
<string name="onboarding_firefox_account_sync_is_on">सिंक चालू है</string>
|
||||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">लॉगिन करने में असफल</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">अपनी रक्षा कीजिये</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 वेबसाइटों को आपको ऑनलाइन ट्रैक करने से रोकने में मदद करता है।</string>
|
||||
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||
<string name="onboarding_tracking_protection_standard_button">मानक</string>
|
||||
<!-- text for standard blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_standard_button_description">कुछ ट्रैकर्स को ब्लॉक करता है लेकिन पृष्ठों को अक्सर लोड करने की अनुमति देता है</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">सख़्त (अनुशंसित)</string>
|
||||
<!-- text for the toolbar position card header
|
||||
|
@ -898,6 +906,9 @@
|
|||
<!-- Text for the button to read the privacy notice -->
|
||||
<string name="onboarding_privacy_notice_read_button">हमारी गोपनीयता सूचना पढ़ें</string>
|
||||
|
||||
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
|
||||
<string name="onboarding_close">बंद करें</string>
|
||||
|
||||
<!-- text for the button to finish onboarding -->
|
||||
<string name="onboarding_finish">ब्राउजिंग शुरू करें</string>
|
||||
|
||||
|
@ -948,22 +959,10 @@
|
|||
<string name="preference_enhanced_tracking_protection_explanation_title">पीछा किये बिना ब्राउज़ करें</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_option">मानक</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">मानक (अनुशंसित)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">पृष्ठ सामान्यत लोड होंगे, लेकिन कुछ ट्रैकर्स को ब्लॉक करता हैं।</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">मानक ट्रैकिंग सुरक्षा द्वारा क्या ब्लॉक किया गया</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">सख़्त</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">सख़्त (डिफ़ॉल्ट)</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">सख़्त (अनुशंसित)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">मजबूत सुरक्षा, लेकिन कुछ साइटों या सामग्री को नष्ट करने का कारण हो सकता है।</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">सख्त ट्रैकिंग सुरक्षा द्वारा क्या ब्लॉक किया गया</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
|
@ -1064,6 +1063,8 @@
|
|||
<string name="preferences_passwords_saved_logins_enter_pin">अपना PIN पुनः दर्ज करें</string>
|
||||
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
|
||||
<string name="logins_insecure_connection_warning_learn_more">अधिक जानें</string>
|
||||
<!-- Prompt message displayed when Fenix detects a user has entered a password and user decides if Fenix should save it. The first parameter is the name of the application (For example: Fenix) -->
|
||||
<string name="logins_doorhanger_save">आप चाहते हैं कि %s इस लॉगिन को सहेजे?</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 -->
|
||||
|
@ -1135,6 +1136,8 @@
|
|||
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
|
||||
<string name="migration_text_passwords">पासवर्ड</string>
|
||||
|
||||
<!-- Heading for the instructions to allow a permission -->
|
||||
<string name="phone_feature_blocked_intro">इसे अनुमति देने के लिए:</string>
|
||||
<!-- First step for the allowing a permission -->
|
||||
<string name="phone_feature_blocked_step_settings">1. Android सेटिंग में जाएं</string>
|
||||
|
||||
|
@ -1155,8 +1158,14 @@
|
|||
<string name="bookmark_deletion_confirmation">क्या आप वाकई इस बुकमार्क को हटाना चाहते हैं?</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>
|
||||
</resources>
|
||||
|
||||
<!-- The page title for editing a saved login. -->
|
||||
<string name="edit">संपादित करें</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -106,8 +106,6 @@
|
|||
<string name="browser_menu_new_tab">Nowy rajtark</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Do zběrki składować</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Sydłowy problem zdźělić</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Dźělić</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
|
@ -121,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">Spěchowany wot %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">Čitanski napohlad</string>
|
||||
<!-- Browser menu button content description to close reader mode and return the user to the regular browser -->
|
||||
<string name="browser_menu_read_close">Čitanski napohlad začinić</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">W nałoženju wočinić</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -450,6 +450,24 @@
|
|||
<string name="tabs_header_private_tabs_title">Priwatne rajtarki</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_tab">Rajtark přidać</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||
<string name="add_private_tab">Priwatny rajtark přidać</string>
|
||||
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||
<string name="tab_drawer_fab_content">Priwatny</string>
|
||||
<!-- Text shown as the title of the open tab tray -->
|
||||
<string name="tab_tray_title">Wočinjene rajtarki</string>
|
||||
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||
<string name="tab_tray_menu_item_save">Do zběrki składować</string>
|
||||
<!-- Text shown in the menu for sharing all tabs -->
|
||||
<string name="tab_tray_menu_item_share">Wšě rajtarki dźělić</string>
|
||||
<!-- Text shown in the menu for closing all tabs -->
|
||||
<string name="tab_tray_menu_item_close">Wšě rajtarki začinić</string>
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="tab_tray_menu_open_new_tab">Nowy rajtark</string>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<string name="tab_tray_menu_home">K startowej wobrazowce</string>
|
||||
<!-- Shortcut action to toggle private mode -->
|
||||
<string name="tab_tray_menu_toggle">Rejtarkowy modus přepinać</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">Rajtark ze zběrki wotstronić</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||
|
@ -715,6 +733,9 @@
|
|||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||
<string name="create_collection_save">Składować</string>
|
||||
|
||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<string name="create_collection_view">Pokazać</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">Zběrka %d</string>
|
||||
|
||||
|
@ -945,20 +966,20 @@
|
|||
<!-- text to display in the snackbar if automatic sign-in fails. user may try again -->
|
||||
<string name="onboarding_firefox_account_automatic_signin_failed">Přizjewjenje njeje so poradźiło</string>
|
||||
<!-- text for the tracking protection onboarding card header -->
|
||||
<string name="onboarding_tracking_protection_header">Škitajće so</string>
|
||||
<string name="onboarding_tracking_protection_header_2">Awtomatiska priwatnosć</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 tomu zadźěwa, zo websydła wam online slěduja.</string>
|
||||
<string name="onboarding_tracking_protection_description_2">Nastajenja priwatnosće a wěstoty přesćěhowaki, škódnu softwaru a předewzaća blokuja, kotrež wam slěduja.</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">Blokuje mjenje přesćěhowakow, ale zmóžnja stronam so normalnje začitać</string>
|
||||
<string name="onboarding_tracking_protection_standard_button_description_2">Blokuje mjenje přesćěhowakow. Strony so normalnje začitaja.</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_button">Striktny (doporučeny)</string>
|
||||
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||
<string name="onboarding_tracking_protection_strict_option">Striktny</string>
|
||||
<!-- text for strict blocking option button description -->
|
||||
<string name="onboarding_tracking_protection_strict_button_description">Blokuje wjace přesćěhowakow za lěpši škit a wukon, ale móže zawinować, zo někotre sydła prawje njefunguja</string>
|
||||
<string name="onboarding_tracking_protection_strict_button_description_2">Blokuje wjace přesćěhowakow, wabjenja a wuskakowacych woknow. Strony so spěšnišo začitaja, ale někotre funkcije snano njefunguja.</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 -->
|
||||
|
@ -1046,31 +1067,21 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Dalše informacije</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 (doporučeny)</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">Wuwaženy za škit a wukon.</string>
|
||||
<!-- Preference description for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_2">Strony so normalnje začitaja, ale blokuje so mjenje přesćěhowakow.</string>
|
||||
<string name="preference_enhanced_tracking_protection_standard_description_3">Blokuje mjenje přesćěhowakow. Strony so normalnje začitaja.</string>
|
||||
<!-- Accessibility text for the Standard protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_info_button">Što so přez standardny slědowanski škit blokuje?</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">Striktny</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings, default setting -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default">Striktny (standard)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_default_description">Sylniši slědowanski škit a spěšniši wukon, ale někotre sydła snano porjadnje njefunguja.</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_recommended">Striktny (doporučeny)</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_description">Mócniši škit, ale móže zawinować, zo někotre sydła abo wobsa hižo njefunguja.</string>
|
||||
<string name="preference_enhanced_tracking_protection_strict_description_2">Blokuje wjace přesćěhowakow, wabjenja a wuskakowacych woknow. Strony so spěšnišo začitaja, ale někotre funkcije snano njefunguja.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_strict_info_button">Što so přez striktny slědowanski škit blokuje?</string>
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom">Swójski</string>
|
||||
<!-- Preference description for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_description">Wubjerće, kotre přesćěhowaki a skripty maja so blokować</string>
|
||||
<string name="preference_enhanced_tracking_protection_custom_description_2">Wubjerće, kotre přesćěhowaki a skripty maja so blokować.</string>
|
||||
<!-- Accessibility text for the Strict protection information icon -->
|
||||
<string name="preference_enhanced_tracking_protection_custom_info_button">Što so přez swójski slědowanski škit blokuje?</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
|
@ -1120,7 +1131,7 @@
|
|||
<!-- Description of tracking content that can be blocked by Enhanced Tracking Protection -->
|
||||
<string name="etp_tracking_content_description">Zadźěwa začitanju wabjenja, widejow a druheho wobsaha, kotrež slědowanski kod wobsahuja. Móže někotrym funkcijam websydłow wadźić.</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 přesćěhowaki na tutym sydle blokuje, hdyž tarč je wioletna. Podótkńće so toho, zo byšće widźał, što so blokuje.</string>
|
||||
<string name="etp_onboarding_cfr_message">Kóždy raz, hdyž tarč je wioletna, je %s přesćěhowaki na sydle zablokował. Podótkńće za dalše informacije.</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">Škit je zmóžnjeny za tute sydło</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently off for this site -->
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue