mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-01 19:18:28 -04:00
i18n: cut down terms and sync
port 1.5
(cherry picked from commit bf408f8d00)
This commit is contained in:
@@ -103,19 +103,18 @@ var authValidateCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
var result sharedpam.LockscreenPamValidation
|
||||
if path != "" {
|
||||
if !filepath.IsAbs(path) {
|
||||
result = sharedpam.LockscreenPamValidation{
|
||||
Path: path,
|
||||
MissingModules: []string{},
|
||||
Warnings: []string{},
|
||||
Errors: []string{"--path must be an absolute file path"},
|
||||
}
|
||||
} else {
|
||||
result = sharedpam.ValidateLockscreenPamPath(path)
|
||||
}
|
||||
} else {
|
||||
switch {
|
||||
case service != "":
|
||||
result = sharedpam.ValidateLockscreenPamService(service)
|
||||
case !filepath.IsAbs(path):
|
||||
result = sharedpam.LockscreenPamValidation{
|
||||
Path: path,
|
||||
MissingModules: []string{},
|
||||
Warnings: []string{},
|
||||
Errors: []string{"--path must be an absolute file path"},
|
||||
}
|
||||
default:
|
||||
result = sharedpam.ValidateLockscreenPamPath(path)
|
||||
}
|
||||
|
||||
if asJSON {
|
||||
|
||||
@@ -592,8 +592,6 @@ func buildManagedLockscreenPamContent(baseDirs []string, readFile func(string) (
|
||||
return b.String(), nil
|
||||
}
|
||||
|
||||
// lockscreenPamCandidateServices are the services surfaced by list-services:
|
||||
// the standalone entry points plus the shared auth blocks users may pin.
|
||||
var lockscreenPamCandidateServices = []string{
|
||||
"login",
|
||||
"system-auth",
|
||||
@@ -603,7 +601,6 @@ var lockscreenPamCandidateServices = []string{
|
||||
"base-auth",
|
||||
}
|
||||
|
||||
// LockscreenPamServiceInfo describes one candidate lock-screen PAM service.
|
||||
type LockscreenPamServiceInfo struct {
|
||||
Name string `json:"name"`
|
||||
Dir string `json:"dir"`
|
||||
@@ -613,8 +610,6 @@ type LockscreenPamServiceInfo struct {
|
||||
InlineU2f bool `json:"inlineU2f"`
|
||||
}
|
||||
|
||||
// LockscreenPamValidation is the result of validating a PAM service file for
|
||||
// use as the DMS lock-screen password stack.
|
||||
type LockscreenPamValidation struct {
|
||||
Valid bool `json:"valid"`
|
||||
Path string `json:"path"`
|
||||
@@ -743,8 +738,7 @@ func (r lockscreenPamResolver) analyzeInto(path string, filterType string, stack
|
||||
return nil
|
||||
}
|
||||
|
||||
// ListLockscreenPamServices enumerates the candidate lock-screen services that
|
||||
// exist on this system, earlier base dir winning per name (libpam precedence).
|
||||
// Earlier base dir wins per name (libpam precedence).
|
||||
func ListLockscreenPamServices() []LockscreenPamServiceInfo {
|
||||
return listLockscreenPamServices(lockscreenPamBaseDirs, os.ReadFile)
|
||||
}
|
||||
@@ -772,14 +766,10 @@ func listLockscreenPamServices(baseDirs []string, readFile func(string) ([]byte,
|
||||
return out
|
||||
}
|
||||
|
||||
// ValidateLockscreenPamService validates a named service resolved across the
|
||||
// system PAM base dirs.
|
||||
func ValidateLockscreenPamService(name string) LockscreenPamValidation {
|
||||
return validateLockscreenPam(name, "", defaultValidateDeps())
|
||||
}
|
||||
|
||||
// ValidateLockscreenPamPath validates an arbitrary absolute PAM file, which may
|
||||
// live outside the standard base dirs.
|
||||
func ValidateLockscreenPamPath(path string) LockscreenPamValidation {
|
||||
return validateLockscreenPam("", path, defaultValidateDeps())
|
||||
}
|
||||
|
||||
@@ -19,62 +19,39 @@ Item {
|
||||
|
||||
function greeterFingerprintDescription() {
|
||||
if (SettingsData.greeterPamExternallyManaged)
|
||||
return I18n.tr("greetd PAM is externally managed. DMS will not change fingerprint auth; configure it yourself.");
|
||||
return "greetd PAM is externally managed";
|
||||
if (SettingsData.greeterFingerprintSource === "pam")
|
||||
return I18n.tr("PAM already provides fingerprint auth. Enable this to show it at login.", "greeter fingerprint login setting");
|
||||
|
||||
const source = SettingsData.greeterFingerprintSource;
|
||||
const reason = SettingsData.greeterFingerprintReason;
|
||||
|
||||
if (source === "pam") {
|
||||
switch (reason) {
|
||||
case "configured_externally":
|
||||
return SettingsData.greeterEnableFprint ? I18n.tr("Enabled. PAM already provides fingerprint auth.") : I18n.tr("PAM already provides fingerprint auth. Enable this to show it at login.");
|
||||
case "missing_enrollment":
|
||||
return SettingsData.greeterEnableFprint ? I18n.tr("Enabled. PAM provides fingerprint auth, but no prints are enrolled yet.") : I18n.tr("PAM provides fingerprint auth, but no prints are enrolled yet.");
|
||||
case "missing_reader":
|
||||
return I18n.tr("PAM provides fingerprint auth, but no reader was detected.");
|
||||
default:
|
||||
return I18n.tr("PAM provides fingerprint auth, but availability could not be confirmed.");
|
||||
}
|
||||
}
|
||||
|
||||
switch (reason) {
|
||||
switch (SettingsData.greeterFingerprintReason) {
|
||||
case "ready":
|
||||
return SettingsData.greeterEnableFprint ? I18n.tr("Authentication changes apply automatically. Fingerprint-only login may not unlock Keyring.") : I18n.tr("Only affects DMS-managed PAM. If greetd already includes pam_fprintd, fingerprint stays enabled.");
|
||||
return I18n.tr("Authentication changes apply automatically.", "greeter auth setting description");
|
||||
case "missing_enrollment":
|
||||
if (SettingsData.greeterEnableFprint)
|
||||
return I18n.tr("Enabled, but no prints are enrolled yet. Enroll fingerprints and run Sync.");
|
||||
return I18n.tr("Fingerprint reader detected, but no prints are enrolled yet. You can enable this now and run Sync later.");
|
||||
return I18n.tr("Fingerprint reader detected, but no prints are enrolled yet. You can enable this now and run Sync later.", "greeter fingerprint login setting");
|
||||
case "missing_reader":
|
||||
return SettingsData.greeterEnableFprint ? I18n.tr("Enabled, but no fingerprint reader was detected.") : I18n.tr("No fingerprint reader detected.");
|
||||
return I18n.tr("No fingerprint reader detected.", "fingerprint setting status");
|
||||
case "missing_pam_support":
|
||||
return I18n.tr("Not available — install fprintd and pam_fprintd, or configure greetd PAM.");
|
||||
return I18n.tr("Not available — install fprintd and pam_fprintd, or configure greetd PAM.", "greeter fingerprint login setting");
|
||||
default:
|
||||
return SettingsData.greeterEnableFprint ? I18n.tr("Enabled, but fingerprint availability could not be confirmed.") : I18n.tr("Fingerprint availability could not be confirmed.");
|
||||
return I18n.tr("Fingerprint availability could not be confirmed.", "fingerprint setting status");
|
||||
}
|
||||
}
|
||||
|
||||
function greeterU2fDescription() {
|
||||
if (SettingsData.greeterPamExternallyManaged)
|
||||
return I18n.tr("greetd PAM is externally managed. DMS will not change security-key auth; configure it yourself.");
|
||||
return "greetd PAM is externally managed";
|
||||
if (SettingsData.greeterU2fSource === "pam")
|
||||
return I18n.tr("PAM already provides security-key auth. Enable this to show it at login.", "greeter security key login setting");
|
||||
|
||||
const source = SettingsData.greeterU2fSource;
|
||||
const reason = SettingsData.greeterU2fReason;
|
||||
|
||||
if (source === "pam") {
|
||||
return SettingsData.greeterEnableU2f ? I18n.tr("Enabled. PAM already provides security-key auth.") : I18n.tr("PAM already provides security-key auth. Enable this to show it at login.");
|
||||
}
|
||||
|
||||
switch (reason) {
|
||||
switch (SettingsData.greeterU2fReason) {
|
||||
case "ready":
|
||||
return SettingsData.greeterEnableU2f ? I18n.tr("Authentication changes apply automatically.") : I18n.tr("Available.");
|
||||
return I18n.tr("Authentication changes apply automatically.", "greeter auth setting description");
|
||||
case "missing_key_registration":
|
||||
if (SettingsData.greeterEnableU2f)
|
||||
return I18n.tr("Enabled, but no registered security key was found yet. Register a key and run Sync.");
|
||||
return I18n.tr("Security-key support was detected, but no registered key was found yet. You can enable this now and register one later.");
|
||||
return I18n.tr("Security-key support was detected, but no registered key was found yet. You can enable this now and register one later.", "security key setting status");
|
||||
case "missing_pam_support":
|
||||
return I18n.tr("Not available — install or configure pam_u2f, or configure greetd PAM.");
|
||||
return I18n.tr("Not available — install or configure pam_u2f, or configure greetd PAM.", "greeter security key login setting");
|
||||
default:
|
||||
return SettingsData.greeterEnableU2f ? I18n.tr("Enabled, but security-key availability could not be confirmed.") : I18n.tr("Security-key availability could not be confirmed.");
|
||||
return I18n.tr("Security-key availability could not be confirmed.", "security key setting status");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,10 +485,10 @@ Item {
|
||||
SettingsToggleRow {
|
||||
settingKey: "greeterPamExternallyManaged"
|
||||
tags: ["greeter", "pam", "managed", "external", "greetd", "auth"]
|
||||
text: I18n.tr("Manage greetd PAM automatically")
|
||||
description: SettingsData.greeterPamExternallyManaged ? I18n.tr("DMS never touches /etc/pam.d/greetd; any existing DMS block is removed on next sync. Configure fingerprint and security-key auth yourself.") : I18n.tr("DMS writes its managed block into /etc/pam.d/greetd during sync.")
|
||||
checked: !SettingsData.greeterPamExternallyManaged
|
||||
onToggled: checked => SettingsData.set("greeterPamExternallyManaged", !checked)
|
||||
text: "greetd PAM is externally managed"
|
||||
description: "DMS removes its managed block from /etc/pam.d/greetd and stops writing to it"
|
||||
checked: SettingsData.greeterPamExternallyManaged
|
||||
onToggled: checked => SettingsData.set("greeterPamExternallyManaged", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import qs.Common
|
||||
import qs.Modals.FileBrowser
|
||||
@@ -21,30 +20,21 @@ Item {
|
||||
property string authPendingApplyPath: ""
|
||||
property bool authShowCustom: false
|
||||
|
||||
readonly property string authAutoLabel: I18n.tr("Auto (recommended)")
|
||||
readonly property string authCustomLabel: I18n.tr("Custom…")
|
||||
readonly property string authAutoLabel: I18n.tr("Auto", "automatic PAM authentication source option")
|
||||
readonly property string authCustomLabel: I18n.tr("Custom...", "custom PAM authentication source option")
|
||||
|
||||
function authServiceLabel(service) {
|
||||
const label = service.name.split("-").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join("-");
|
||||
return service.dir === "/etc/pam.d" ? label : label + " (" + service.dir + ")";
|
||||
}
|
||||
|
||||
readonly property var authOptions: {
|
||||
var opts = [authAutoLabel];
|
||||
for (var i = 0; i < authServices.length; i++)
|
||||
opts.push(authServiceLabel(authServices[i]));
|
||||
opts.push(authCustomLabel);
|
||||
return opts;
|
||||
}
|
||||
readonly property var authOptions: [authAutoLabel, ...authServices.map(s => authServiceLabel(s)), authCustomLabel]
|
||||
|
||||
readonly property string authCurrentValue: {
|
||||
if (SettingsData.lockPamPath === "")
|
||||
return authAutoLabel;
|
||||
for (var i = 0; i < authServices.length; i++) {
|
||||
if (authServices[i].path === SettingsData.lockPamPath)
|
||||
return authServiceLabel(authServices[i]);
|
||||
}
|
||||
return authCustomLabel;
|
||||
const svc = authServices.find(s => s.path === SettingsData.lockPamPath);
|
||||
return svc ? authServiceLabel(svc) : authCustomLabel;
|
||||
}
|
||||
|
||||
function refreshAuthServices() {
|
||||
@@ -61,14 +51,8 @@ Item {
|
||||
}
|
||||
|
||||
function validateAndApplyAuthSource(path) {
|
||||
if (!path || path === "")
|
||||
if (!path)
|
||||
return;
|
||||
if (!path.startsWith("/")) {
|
||||
root.authValidateOk = false;
|
||||
root.authValidateWarn = false;
|
||||
root.authValidateMessage = I18n.tr("Not a valid path");
|
||||
return;
|
||||
}
|
||||
root.authPendingApplyPath = path;
|
||||
root.authValidateMessage = "";
|
||||
root.authValidateOk = false;
|
||||
@@ -81,32 +65,28 @@ Item {
|
||||
function lockFingerprintDescription() {
|
||||
switch (SettingsData.lockFingerprintReason) {
|
||||
case "ready":
|
||||
return SettingsData.enableFprint ? I18n.tr("Authentication changes apply automatically.") : I18n.tr("Use fingerprint authentication for the lock screen.");
|
||||
return I18n.tr("Use fingerprint authentication for the lock screen.", "lock screen fingerprint setting");
|
||||
case "missing_enrollment":
|
||||
if (SettingsData.enableFprint)
|
||||
return I18n.tr("Enabled, but no prints are enrolled yet. Authentication changes apply automatically once you enroll fingerprints.");
|
||||
return I18n.tr("Fingerprint reader detected, but no prints are enrolled yet. You can enable this now and enroll later.");
|
||||
return I18n.tr("Fingerprint reader detected, but no prints are enrolled yet. You can enable this now and enroll later.", "lock screen fingerprint setting");
|
||||
case "missing_reader":
|
||||
return SettingsData.enableFprint ? I18n.tr("Enabled, but no fingerprint reader was detected.") : I18n.tr("No fingerprint reader detected.");
|
||||
return I18n.tr("No fingerprint reader detected.", "fingerprint setting status");
|
||||
case "missing_pam_support":
|
||||
return I18n.tr("Not available — install fprintd and pam_fprintd.");
|
||||
return I18n.tr("Not available — install fprintd and pam_fprintd.", "lock screen fingerprint setting");
|
||||
default:
|
||||
return SettingsData.enableFprint ? I18n.tr("Enabled, but fingerprint availability could not be confirmed.") : I18n.tr("Fingerprint availability could not be confirmed.");
|
||||
return I18n.tr("Fingerprint availability could not be confirmed.", "fingerprint setting status");
|
||||
}
|
||||
}
|
||||
|
||||
function lockU2fDescription() {
|
||||
switch (SettingsData.lockU2fReason) {
|
||||
case "ready":
|
||||
return SettingsData.enableU2f ? I18n.tr("Authentication changes apply automatically.") : I18n.tr("Use a security key for lock screen authentication.", "lock screen U2F security key setting");
|
||||
return I18n.tr("Use a security key for lock screen authentication.", "lock screen U2F security key setting");
|
||||
case "missing_key_registration":
|
||||
if (SettingsData.enableU2f)
|
||||
return I18n.tr("Enabled, but no registered security key was found yet. Authentication changes apply automatically once your key is registered or your U2F config is updated.");
|
||||
return I18n.tr("Security-key support was detected, but no registered key was found yet. You can enable this now and register one later.");
|
||||
return I18n.tr("Security-key support was detected, but no registered key was found yet. You can enable this now and register one later.", "security key setting status");
|
||||
case "missing_pam_support":
|
||||
return I18n.tr("Not available — install or configure pam_u2f.");
|
||||
return I18n.tr("Not available — install or configure pam_u2f.", "lock screen security key setting");
|
||||
default:
|
||||
return SettingsData.enableU2f ? I18n.tr("Enabled, but security-key availability could not be confirmed.") : I18n.tr("Security-key availability could not be confirmed.");
|
||||
return I18n.tr("Security-key availability could not be confirmed.", "security key setting status");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,38 +152,31 @@ Item {
|
||||
|
||||
onExited: exitCode => {
|
||||
root.authValidateRunning = false;
|
||||
var data = null;
|
||||
root.authValidateOk = false;
|
||||
root.authValidateWarn = false;
|
||||
|
||||
let data = null;
|
||||
try {
|
||||
data = JSON.parse(authValidateProcess.collected);
|
||||
} catch (e) {
|
||||
data = null;
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
if (!data) {
|
||||
root.authValidateOk = false;
|
||||
root.authValidateWarn = false;
|
||||
root.authValidateMessage = I18n.tr("Could not run validation. Ensure DMS is installed and dms is in PATH.");
|
||||
root.authValidateMessage = "validation failed — is dms in PATH?";
|
||||
return;
|
||||
}
|
||||
if (data.valid) {
|
||||
SettingsData.set("lockPamPath", root.authPendingApplyPath);
|
||||
SettingsData.set("lockPamInlineFprint", data.inlineFingerprint === true);
|
||||
SettingsData.set("lockPamInlineU2f", data.inlineU2f === true);
|
||||
const warns = Array.isArray(data.warnings) ? data.warnings : [];
|
||||
root.authValidateOk = true;
|
||||
root.authValidateWarn = warns.length > 0;
|
||||
root.authValidateMessage = warns.length > 0 ? (I18n.tr("Applied with warnings:") + "\n" + warns.join("\n")) : I18n.tr("Applied successfully.");
|
||||
} else {
|
||||
root.authValidateOk = false;
|
||||
root.authValidateWarn = false;
|
||||
if (!data.valid) {
|
||||
const errs = Array.isArray(data.errors) ? data.errors : [];
|
||||
const missing = Array.isArray(data.missingModules) ? data.missingModules : [];
|
||||
var msg = I18n.tr("Invalid — not applied.");
|
||||
if (errs.length > 0)
|
||||
msg = msg + "\n" + errs.join("\n");
|
||||
if (missing.length > 0)
|
||||
msg = msg + "\n" + I18n.tr("Missing modules: ") + missing.join(", ");
|
||||
root.authValidateMessage = msg;
|
||||
root.authValidateMessage = ["not applied:", ...errs].join("\n");
|
||||
return;
|
||||
}
|
||||
|
||||
SettingsData.set("lockPamPath", root.authPendingApplyPath);
|
||||
SettingsData.set("lockPamInlineFprint", data.inlineFingerprint === true);
|
||||
SettingsData.set("lockPamInlineU2f", data.inlineU2f === true);
|
||||
const warns = Array.isArray(data.warnings) ? data.warnings : [];
|
||||
root.authValidateOk = true;
|
||||
root.authValidateWarn = warns.length > 0;
|
||||
root.authValidateMessage = warns.length > 0 ? ["applied with warnings:", ...warns].join("\n") : "applied";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,22 +326,14 @@ Item {
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "key"
|
||||
title: I18n.tr("Authentication Source")
|
||||
title: "Authentication Source"
|
||||
settingKey: "lockAuthSource"
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Auto resolves the system auth stack automatically. Picking a source pins the lock screen to that PAM file.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
settingKey: "lockPamPath"
|
||||
tags: ["lock", "screen", "pam", "authentication", "source", "service"]
|
||||
text: I18n.tr("Authentication Source")
|
||||
description: SettingsData.lockPamPath !== "" ? I18n.tr("Pinned to ") + SettingsData.lockPamPath : I18n.tr("Which PAM service the lock screen uses to authenticate")
|
||||
text: "Authentication Source"
|
||||
description: SettingsData.lockPamPath !== "" ? SettingsData.lockPamPath : "Which PAM service the lock screen uses to authenticate"
|
||||
options: root.authOptions
|
||||
currentValue: root.authCurrentValue
|
||||
onValueChanged: value => {
|
||||
@@ -382,43 +347,30 @@ Item {
|
||||
return;
|
||||
}
|
||||
root.authShowCustom = false;
|
||||
var svc = root.authServices.find(s => root.authServiceLabel(s) === value);
|
||||
const svc = root.authServices.find(s => root.authServiceLabel(s) === value);
|
||||
if (svc)
|
||||
root.validateAndApplyAuthSource(svc.path);
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
visible: root.authShowCustom || root.authCurrentValue === root.authCustomLabel
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Enter the absolute path to a PAM service file, then validate and apply.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
DankTextField {
|
||||
id: customPamField
|
||||
width: parent.width - validatePamButton.width - Theme.spacingS
|
||||
placeholderText: "/etc/pam.d/my-service"
|
||||
text: SettingsData.lockPamPath
|
||||
backgroundColor: Theme.surfaceContainerHighest
|
||||
}
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
|
||||
DankTextField {
|
||||
id: customPamField
|
||||
width: parent.width - validatePamButton.width - Theme.spacingS
|
||||
placeholderText: "/etc/pam.d/my-service"
|
||||
text: SettingsData.lockPamPath
|
||||
backgroundColor: Theme.surfaceContainerHighest
|
||||
}
|
||||
|
||||
DankButton {
|
||||
id: validatePamButton
|
||||
text: I18n.tr("Validate & Apply")
|
||||
enabled: !root.authValidateRunning && customPamField.text.trim() !== ""
|
||||
onClicked: root.validateAndApplyAuthSource(customPamField.text.trim())
|
||||
}
|
||||
DankButton {
|
||||
id: validatePamButton
|
||||
text: I18n.tr("Apply Changes", "validate and apply custom PAM authentication source")
|
||||
enabled: !root.authValidateRunning && customPamField.text.trim() !== ""
|
||||
onClicked: root.validateAndApplyAuthSource(customPamField.text.trim())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -444,7 +396,7 @@ Item {
|
||||
|
||||
StyledText {
|
||||
visible: (SettingsData.lockPamInlineFprint && SettingsData.enableFprint) || (SettingsData.lockPamInlineU2f && SettingsData.enableU2f)
|
||||
text: I18n.tr("The chosen PAM stack already prompts for fingerprint or security key, so DMS's separate prompts are suppressed to avoid a double prompt.")
|
||||
text: "The pinned PAM stack already prompts for fingerprint or security key, so DMS skips its own prompts"
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.warning
|
||||
width: parent.width
|
||||
|
||||
+212
-308
File diff suppressed because it is too large
Load Diff
@@ -777,7 +777,7 @@
|
||||
"Authenticate": "صادِق"
|
||||
},
|
||||
"Authenticated!": {
|
||||
"Authenticated!": ""
|
||||
"Authenticated!": "تم التحقق بنجاح!"
|
||||
},
|
||||
"Authenticating...": {
|
||||
"Authenticating...": "جاري المصادقة..."
|
||||
@@ -804,13 +804,13 @@
|
||||
"Authentication error - try again": "خطأ في المصادقة - حاول مرة أخرى"
|
||||
},
|
||||
"Authentication failed - attempt %1 of %2": {
|
||||
"Authentication failed - attempt %1 of %2": ""
|
||||
"Authentication failed - attempt %1 of %2": "فشل التحقق من الهوية - المحاولة %1 من %2"
|
||||
},
|
||||
"Authentication failed - lockout can occur": {
|
||||
"Authentication failed - lockout can occur": ""
|
||||
"Authentication failed - lockout can occur": "فشل التحقق - قد يؤدي ذلك إلى قفل حسابك"
|
||||
},
|
||||
"Authentication failed - try again": {
|
||||
"Authentication failed - try again": ""
|
||||
"Authentication failed - try again": "فشل التحقق - يرجى المحاولة مرة أخرى"
|
||||
},
|
||||
"Authentication failed, please try again": {
|
||||
"Authentication failed, please try again": "فشل التحقق، أعد المحاولة"
|
||||
@@ -987,13 +987,13 @@
|
||||
"Available.": "متاح."
|
||||
},
|
||||
"Awaiting fingerprint authentication": {
|
||||
"Awaiting fingerprint authentication": ""
|
||||
"Awaiting fingerprint authentication": "بانتظار التحقق ببصمة الإصبع"
|
||||
},
|
||||
"Awaiting fingerprint or security key authentication": {
|
||||
"Awaiting fingerprint or security key authentication": ""
|
||||
"Awaiting fingerprint or security key authentication": "بانتظار التحقق ببصمة الإصبع أو مفتاح الأمان"
|
||||
},
|
||||
"Awaiting security key authentication": {
|
||||
"Awaiting security key authentication": ""
|
||||
"Awaiting security key authentication": "بانتظار التحقق بمفتاح الأمان"
|
||||
},
|
||||
"BSSID": {
|
||||
"BSSID": "BSSID"
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"Custom command and terminal params are split on whitespace; paths with spaces will break.": "يتم فصل الأمر المخصص ومعلمات الجهاز على المسافات البيضاء؛ المسارات التي تحتوي على مسافات ستتسبب في خطأ."
|
||||
},
|
||||
"Custom interval in minutes (minimum 5)": {
|
||||
"Custom interval in minutes (minimum 5)": ""
|
||||
"Custom interval in minutes (minimum 5)": "الفترة الزمنية المخصصة بالدقائق (الحد الأدنى 5)"
|
||||
},
|
||||
"Custom open-trash command": {
|
||||
"Custom open-trash command": "أمر مخصص لفتح المهملات"
|
||||
@@ -3435,7 +3435,7 @@
|
||||
"Flags": "الأعلام"
|
||||
},
|
||||
"Flatpak": {
|
||||
"Flatpak": ""
|
||||
"Flatpak": "Flatpak"
|
||||
},
|
||||
"Flipped": {
|
||||
"Flipped": "معكوس"
|
||||
@@ -3852,7 +3852,7 @@
|
||||
"Groups": "المجموعات"
|
||||
},
|
||||
"H": {
|
||||
"H": ""
|
||||
"H": "H"
|
||||
},
|
||||
"HDR (EDID)": {
|
||||
"HDR (EDID)": "HDR (EDID)"
|
||||
@@ -4149,22 +4149,22 @@
|
||||
"Ignore Completely": "تجاهل تمامًا"
|
||||
},
|
||||
"Ignore package": {
|
||||
"Ignore package": ""
|
||||
"Ignore package": "تجاهل البرنامج"
|
||||
},
|
||||
"Ignore this package": {
|
||||
"Ignore this package": ""
|
||||
"Ignore this package": "تجاهل هذا التطبيق"
|
||||
},
|
||||
"Ignored (%1)": {
|
||||
"Ignored (%1)": ""
|
||||
"Ignored (%1)": "تم تجاهله (%1)"
|
||||
},
|
||||
"Ignored Packages": {
|
||||
"Ignored Packages": ""
|
||||
"Ignored Packages": "التطبيقات المتجاهلة"
|
||||
},
|
||||
"Ignored packages are hidden from the updater and skipped by 'Update All'.": {
|
||||
"Ignored packages are hidden from the updater and skipped by 'Update All'.": ""
|
||||
"Ignored packages are hidden from the updater and skipped by 'Update All'.": "يتم إخفاء التطبيقات المتجاهلة من أداة التحديث ويتخطاها خيار \"تحديث الكل\"."
|
||||
},
|
||||
"Ignored packages only apply to the built-in updater. Your custom command controls its own exclusions.": {
|
||||
"Ignored packages only apply to the built-in updater. Your custom command controls its own exclusions.": ""
|
||||
"Ignored packages only apply to the built-in updater. Your custom command controls its own exclusions.": "تنطبق التطبيقات المتجاهلة فقط على أداة التحديث المدمجة. يتحكم أمرك المخصص في الاستثناءات الخاصة به."
|
||||
},
|
||||
"Image": {
|
||||
"Image": "صورة"
|
||||
@@ -4347,7 +4347,7 @@
|
||||
"Invalid configuration": "تكوين غير صالح"
|
||||
},
|
||||
"Invalid package name — letters, digits and @._+:- only.": {
|
||||
"Invalid package name — letters, digits and @._+:- only.": ""
|
||||
"Invalid package name — letters, digits and @._+:- only.": "اسم التطبيق غير صالح — يُسمح فقط بالأحرف، والأرقام، والرموز التالية: @._+:-"
|
||||
},
|
||||
"Invalid password for %1": {
|
||||
"Invalid password for %1": "كلمة مرور غير صالحة لـ %1"
|
||||
@@ -5451,7 +5451,7 @@
|
||||
"No output devices found": "لم يتم العثور على أجهزة إخراج"
|
||||
},
|
||||
"No packages ignored. Add one here or hover an update in the popout and click the hide button.": {
|
||||
"No packages ignored. Add one here or hover an update in the popout and click the hide button.": ""
|
||||
"No packages ignored. Add one here or hover an update in the popout and click the hide button.": "لا توجد تطبيقات متجاهلة. أضف تطبيقًا هنا، أو مرر مؤشر الفأرة فوق التحديث في النافذة المنبثقة وانقر على زر الإخفاء."
|
||||
},
|
||||
"No peers found": {
|
||||
"No peers found": "لم يتم العثور على أقران"
|
||||
@@ -5937,7 +5937,7 @@
|
||||
"PIN": "PIN"
|
||||
},
|
||||
"Package name (e.g., docker)": {
|
||||
"Package name (e.g., docker)": ""
|
||||
"Package name (e.g., docker)": "اسم التطبيق (مثال: docker)"
|
||||
},
|
||||
"Pad": {
|
||||
"Pad": "وسادة"
|
||||
@@ -7812,7 +7812,7 @@
|
||||
"Status": "الحالة"
|
||||
},
|
||||
"Stop ignoring %1": {
|
||||
"Stop ignoring %1": ""
|
||||
"Stop ignoring %1": "إلغاء تجاهل %1"
|
||||
},
|
||||
"Stopped": {
|
||||
"Stopped": "متوقف"
|
||||
@@ -8910,7 +8910,7 @@
|
||||
"Votes": "الأصوات"
|
||||
},
|
||||
"W": {
|
||||
"W": ""
|
||||
"W": "W"
|
||||
},
|
||||
"WPA/WPA2": {
|
||||
"WPA/WPA2": "WPA/WPA2"
|
||||
@@ -9213,16 +9213,16 @@
|
||||
"by %1": "بواسطة %1"
|
||||
},
|
||||
"checked %1d ago": {
|
||||
"checked %1d ago": ""
|
||||
"checked %1d ago": "تم الفحص قبل %1 من الأيام"
|
||||
},
|
||||
"checked %1h ago": {
|
||||
"checked %1h ago": ""
|
||||
"checked %1h ago": "تم الفحص قبل %1 من الساعات"
|
||||
},
|
||||
"checked %1m ago": {
|
||||
"checked %1m ago": ""
|
||||
"checked %1m ago": "تم الفحص قبل %1 من الدقائق"
|
||||
},
|
||||
"checked just now": {
|
||||
"checked just now": ""
|
||||
"checked just now": "تم الفحص الآن"
|
||||
},
|
||||
"days": {
|
||||
"days": "أيام"
|
||||
|
||||
@@ -777,7 +777,7 @@
|
||||
"Authenticate": "Authentifizieren"
|
||||
},
|
||||
"Authenticated!": {
|
||||
"Authenticated!": ""
|
||||
"Authenticated!": "Authentifiziert!"
|
||||
},
|
||||
"Authenticating...": {
|
||||
"Authenticating...": "Authentifizierung..."
|
||||
@@ -804,13 +804,13 @@
|
||||
"Authentication error - try again": "Authentifizierungsfehler - erneut versuchen"
|
||||
},
|
||||
"Authentication failed - attempt %1 of %2": {
|
||||
"Authentication failed - attempt %1 of %2": ""
|
||||
"Authentication failed - attempt %1 of %2": "Authentifizierung fehlgeschlagen - Versuch %1 von %2"
|
||||
},
|
||||
"Authentication failed - lockout can occur": {
|
||||
"Authentication failed - lockout can occur": ""
|
||||
"Authentication failed - lockout can occur": "Authentifizierung fehlgeschlagen - Sperrung kann erfolgen"
|
||||
},
|
||||
"Authentication failed - try again": {
|
||||
"Authentication failed - try again": ""
|
||||
"Authentication failed - try again": "Authentifizierung fehlgeschlagen - erneut versuchen"
|
||||
},
|
||||
"Authentication failed, please try again": {
|
||||
"Authentication failed, please try again": "Authentifizierung nicht erfolgreich, bitte nochmals probieren"
|
||||
@@ -987,13 +987,13 @@
|
||||
"Available.": "Verfügbar."
|
||||
},
|
||||
"Awaiting fingerprint authentication": {
|
||||
"Awaiting fingerprint authentication": ""
|
||||
"Awaiting fingerprint authentication": "Warten auf Fingerabdruck-Authentifizierung"
|
||||
},
|
||||
"Awaiting fingerprint or security key authentication": {
|
||||
"Awaiting fingerprint or security key authentication": ""
|
||||
"Awaiting fingerprint or security key authentication": "Warten auf Fingerabdruck- oder Sicherheitsschlüssel-Authentifizierung"
|
||||
},
|
||||
"Awaiting security key authentication": {
|
||||
"Awaiting security key authentication": ""
|
||||
"Awaiting security key authentication": "Warten auf Sicherheitsschlüssel-Authentifizierung"
|
||||
},
|
||||
"BSSID": {
|
||||
"BSSID": "BSSID"
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"Custom command and terminal params are split on whitespace; paths with spaces will break.": "Benutzerdefinierte Befehle und Terminalparameter werden an Leerzeichen getrennt; Pfade mit Leerzeichen funktionieren nicht."
|
||||
},
|
||||
"Custom interval in minutes (minimum 5)": {
|
||||
"Custom interval in minutes (minimum 5)": ""
|
||||
"Custom interval in minutes (minimum 5)": "Benutzerdefiniertes Intervall in Minuten (Minimum 5)"
|
||||
},
|
||||
"Custom open-trash command": {
|
||||
"Custom open-trash command": "Benutzerdefinierter Befehl zum Öffnen des Papierkorbs"
|
||||
@@ -3435,7 +3435,7 @@
|
||||
"Flags": "Flags"
|
||||
},
|
||||
"Flatpak": {
|
||||
"Flatpak": ""
|
||||
"Flatpak": "Flatpak"
|
||||
},
|
||||
"Flipped": {
|
||||
"Flipped": "Gespiegelt"
|
||||
@@ -3852,7 +3852,7 @@
|
||||
"Groups": "Gruppen"
|
||||
},
|
||||
"H": {
|
||||
"H": ""
|
||||
"H": "H"
|
||||
},
|
||||
"HDR (EDID)": {
|
||||
"HDR (EDID)": "HDR (EDID)"
|
||||
@@ -4149,22 +4149,22 @@
|
||||
"Ignore Completely": "Vollständig ignorieren"
|
||||
},
|
||||
"Ignore package": {
|
||||
"Ignore package": ""
|
||||
"Ignore package": "Paket ignorieren"
|
||||
},
|
||||
"Ignore this package": {
|
||||
"Ignore this package": ""
|
||||
"Ignore this package": "Dieses Paket ignorieren"
|
||||
},
|
||||
"Ignored (%1)": {
|
||||
"Ignored (%1)": ""
|
||||
"Ignored (%1)": "Ignoriert (%1)"
|
||||
},
|
||||
"Ignored Packages": {
|
||||
"Ignored Packages": ""
|
||||
"Ignored Packages": "Ignorierte Pakete"
|
||||
},
|
||||
"Ignored packages are hidden from the updater and skipped by 'Update All'.": {
|
||||
"Ignored packages are hidden from the updater and skipped by 'Update All'.": ""
|
||||
"Ignored packages are hidden from the updater and skipped by 'Update All'.": "Ignorierte Pakete werden im Updater ausgeblendet und bei \"Alle aktualisieren\" übersprungen."
|
||||
},
|
||||
"Ignored packages only apply to the built-in updater. Your custom command controls its own exclusions.": {
|
||||
"Ignored packages only apply to the built-in updater. Your custom command controls its own exclusions.": ""
|
||||
"Ignored packages only apply to the built-in updater. Your custom command controls its own exclusions.": "Ignorierte Pakete gelten nur für den integrierten Updater. Ihr benutzerdefinierter Befehl steuert seine eigenen Ausschlüsse."
|
||||
},
|
||||
"Image": {
|
||||
"Image": "Bild"
|
||||
@@ -4347,7 +4347,7 @@
|
||||
"Invalid configuration": "Invalide Konfiguration"
|
||||
},
|
||||
"Invalid package name — letters, digits and @._+:- only.": {
|
||||
"Invalid package name — letters, digits and @._+:- only.": ""
|
||||
"Invalid package name — letters, digits and @._+:- only.": "Ungültiger Paketname — nur Buchstaben, Ziffern und @._+:- zulässig."
|
||||
},
|
||||
"Invalid password for %1": {
|
||||
"Invalid password for %1": "Ungültiges Passwort für %1"
|
||||
@@ -5451,7 +5451,7 @@
|
||||
"No output devices found": "Keine Ausgabegeräte gefunden"
|
||||
},
|
||||
"No packages ignored. Add one here or hover an update in the popout and click the hide button.": {
|
||||
"No packages ignored. Add one here or hover an update in the popout and click the hide button.": ""
|
||||
"No packages ignored. Add one here or hover an update in the popout and click the hide button.": "Keine Pakete ignoriert. Fügen Sie hier eines hinzu oder bewegen Sie den Mauszeiger über ein Update im Popout und klicken Sie auf die Schaltfläche Ausblenden."
|
||||
},
|
||||
"No peers found": {
|
||||
"No peers found": "Keine Peers gefunden"
|
||||
@@ -5937,7 +5937,7 @@
|
||||
"PIN": "PIN"
|
||||
},
|
||||
"Package name (e.g., docker)": {
|
||||
"Package name (e.g., docker)": ""
|
||||
"Package name (e.g., docker)": "Paketname (z. B. docker)"
|
||||
},
|
||||
"Pad": {
|
||||
"Pad": "Auffüllen"
|
||||
@@ -7812,7 +7812,7 @@
|
||||
"Status": "Status"
|
||||
},
|
||||
"Stop ignoring %1": {
|
||||
"Stop ignoring %1": ""
|
||||
"Stop ignoring %1": "Ignorieren von %1 beenden"
|
||||
},
|
||||
"Stopped": {
|
||||
"Stopped": "Gestoppt"
|
||||
@@ -8910,7 +8910,7 @@
|
||||
"Votes": "Stimmen"
|
||||
},
|
||||
"W": {
|
||||
"W": ""
|
||||
"W": "W"
|
||||
},
|
||||
"WPA/WPA2": {
|
||||
"WPA/WPA2": "WPA/WPA2"
|
||||
@@ -9213,16 +9213,16 @@
|
||||
"by %1": "von %1"
|
||||
},
|
||||
"checked %1d ago": {
|
||||
"checked %1d ago": ""
|
||||
"checked %1d ago": "vor %1 T geprüft"
|
||||
},
|
||||
"checked %1h ago": {
|
||||
"checked %1h ago": ""
|
||||
"checked %1h ago": "vor %1 Std. geprüft"
|
||||
},
|
||||
"checked %1m ago": {
|
||||
"checked %1m ago": ""
|
||||
"checked %1m ago": "vor %1 Min. geprüft"
|
||||
},
|
||||
"checked just now": {
|
||||
"checked just now": ""
|
||||
"checked just now": "gerade eben geprüft"
|
||||
},
|
||||
"days": {
|
||||
"days": "Tage"
|
||||
|
||||
@@ -4645,14 +4645,12 @@
|
||||
"login",
|
||||
"pam",
|
||||
"password",
|
||||
"pinned",
|
||||
"screen",
|
||||
"security",
|
||||
"service",
|
||||
"source"
|
||||
],
|
||||
"icon": "key",
|
||||
"description": "Pinned to "
|
||||
"icon": "key"
|
||||
},
|
||||
{
|
||||
"section": "lockPamPath",
|
||||
@@ -4665,13 +4663,11 @@
|
||||
"login",
|
||||
"pam",
|
||||
"password",
|
||||
"pinned",
|
||||
"screen",
|
||||
"security",
|
||||
"service",
|
||||
"source"
|
||||
],
|
||||
"description": "Pinned to "
|
||||
]
|
||||
},
|
||||
{
|
||||
"section": "lockScreenVideoCycling",
|
||||
@@ -7994,56 +7990,19 @@
|
||||
"auth",
|
||||
"authentication",
|
||||
"block",
|
||||
"configure",
|
||||
"display manager",
|
||||
"existing",
|
||||
"external",
|
||||
"fingerprint",
|
||||
"greetd",
|
||||
"greeter",
|
||||
"login",
|
||||
"managed",
|
||||
"never",
|
||||
"next",
|
||||
"pam",
|
||||
"removed",
|
||||
"security",
|
||||
"sync",
|
||||
"touches",
|
||||
"yourself"
|
||||
"removes",
|
||||
"stops",
|
||||
"writing"
|
||||
],
|
||||
"icon": "fingerprint",
|
||||
"description": "DMS never touches /etc/pam.d/greetd; any existing DMS block is removed on next sync. Configure fingerprint and security-key auth yourself."
|
||||
},
|
||||
{
|
||||
"section": "greeterPamExternallyManaged",
|
||||
"label": "Manage greetd PAM automatically",
|
||||
"tabIndex": 31,
|
||||
"category": "Greeter",
|
||||
"keywords": [
|
||||
"auth",
|
||||
"automatically",
|
||||
"block",
|
||||
"configure",
|
||||
"display manager",
|
||||
"existing",
|
||||
"external",
|
||||
"fingerprint",
|
||||
"greetd",
|
||||
"greeter",
|
||||
"login",
|
||||
"manage",
|
||||
"managed",
|
||||
"never",
|
||||
"next",
|
||||
"pam",
|
||||
"removed",
|
||||
"security",
|
||||
"sync",
|
||||
"touches",
|
||||
"yourself"
|
||||
],
|
||||
"description": "DMS never touches /etc/pam.d/greetd; any existing DMS block is removed on next sync. Configure fingerprint and security-key auth yourself."
|
||||
"description": "DMS removes its managed block from /etc/pam.d/greetd and stops writing to it"
|
||||
},
|
||||
{
|
||||
"section": "greeterRememberLastSession",
|
||||
@@ -8081,6 +8040,28 @@
|
||||
],
|
||||
"description": "Pre-fill the last successful username on the greeter"
|
||||
},
|
||||
{
|
||||
"section": "greeterPamExternallyManaged",
|
||||
"label": "greetd PAM is externally managed",
|
||||
"tabIndex": 31,
|
||||
"category": "Greeter",
|
||||
"keywords": [
|
||||
"auth",
|
||||
"block",
|
||||
"display manager",
|
||||
"external",
|
||||
"externally",
|
||||
"greetd",
|
||||
"greeter",
|
||||
"login",
|
||||
"managed",
|
||||
"pam",
|
||||
"removes",
|
||||
"stops",
|
||||
"writing"
|
||||
],
|
||||
"description": "DMS removes its managed block from /etc/pam.d/greetd and stops writing to it"
|
||||
},
|
||||
{
|
||||
"section": "muxType",
|
||||
"label": "Multiplexer",
|
||||
|
||||
@@ -1528,7 +1528,7 @@
|
||||
{
|
||||
"term": "Apply Changes",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "validate and apply custom PAM authentication source",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -1836,14 +1836,7 @@
|
||||
{
|
||||
"term": "Authentication changes apply automatically.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Authentication changes apply automatically. Fingerprint-only login may not unlock Keyring.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "greeter auth setting description",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -1913,7 +1906,7 @@
|
||||
{
|
||||
"term": "Auto",
|
||||
"translation": "",
|
||||
"context": "calendar backend option | theme category option",
|
||||
"context": "automatic PAM authentication source option | calendar backend option | theme category option",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -2281,13 +2274,6 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Available.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Awaiting fingerprint authentication",
|
||||
"translation": "",
|
||||
@@ -4993,7 +4979,7 @@
|
||||
{
|
||||
"term": "Custom...",
|
||||
"translation": "",
|
||||
"context": "date format option",
|
||||
"context": "custom PAM authentication source option | date format option",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -6551,76 +6537,6 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but fingerprint availability could not be confirmed.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but no fingerprint reader was detected.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but no prints are enrolled yet. Authentication changes apply automatically once you enroll fingerprints.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but no prints are enrolled yet. Enroll fingerprints and run Sync.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but no registered security key was found yet. Authentication changes apply automatically once your key is registered or your U2F config is updated.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but no registered security key was found yet. Register a key and run Sync.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled, but security-key availability could not be confirmed.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled. PAM already provides fingerprint auth.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled. PAM already provides security-key auth.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabled. PAM provides fingerprint auth, but no prints are enrolled yet.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Enabling WiFi...",
|
||||
"translation": "",
|
||||
@@ -7800,7 +7716,7 @@
|
||||
{
|
||||
"term": "Fingerprint availability could not be confirmed.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "fingerprint setting status",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -7821,14 +7737,14 @@
|
||||
{
|
||||
"term": "Fingerprint reader detected, but no prints are enrolled yet. You can enable this now and enroll later.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "lock screen fingerprint setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Fingerprint reader detected, but no prints are enrolled yet. You can enable this now and run Sync later.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "greeter fingerprint login setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -12392,7 +12308,7 @@
|
||||
{
|
||||
"term": "No fingerprint reader detected.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "fingerprint setting status",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -12833,28 +12749,28 @@
|
||||
{
|
||||
"term": "Not available — install fprintd and pam_fprintd, or configure greetd PAM.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "greeter fingerprint login setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Not available — install fprintd and pam_fprintd.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "lock screen fingerprint setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Not available — install or configure pam_u2f, or configure greetd PAM.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "greeter security key login setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Not available — install or configure pam_u2f.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "lock screen security key setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -13166,13 +13082,6 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Only affects DMS-managed PAM. If greetd already includes pam_fprintd, fingerprint stays enabled.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Only on Battery",
|
||||
"translation": "",
|
||||
@@ -13603,35 +13512,14 @@
|
||||
{
|
||||
"term": "PAM already provides fingerprint auth. Enable this to show it at login.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "greeter fingerprint login setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "PAM already provides security-key auth. Enable this to show it at login.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "PAM provides fingerprint auth, but availability could not be confirmed.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "PAM provides fingerprint auth, but no prints are enrolled yet.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "PAM provides fingerprint auth, but no reader was detected.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "greeter security key login setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -16228,14 +16116,14 @@
|
||||
{
|
||||
"term": "Security-key availability could not be confirmed.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "security key setting status",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Security-key support was detected, but no registered key was found yet. You can enable this now and register one later.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "security key setting status",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -19987,7 +19875,7 @@
|
||||
{
|
||||
"term": "Use fingerprint authentication for the lock screen.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "lock screen fingerprint setting",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user