diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index d3f723c..e0475e2 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -71,7 +71,7 @@ body: options: - AUR (Arch, CachyOS, EndeavourOS, Manjaro) - Fedora package - - Debian or Kubuntu package + - Debian or Ubuntu package - Built from source - Other validations: @@ -80,8 +80,8 @@ body: id: system attributes: label: System - description: Distribution, desktop and session (Wayland or X11). - placeholder: CachyOS, Plasma 6.4, Wayland + description: Distribution, desktop and its version, and on Hyprland or Niri the lock screen. + placeholder: CachyOS, Hyprland 0.56, hyprlock validations: required: true - type: textarea diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 11109b1..7f9a76d 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -10,7 +10,7 @@ jobs: check: name: build, tests and shellcheck runs-on: ubuntu-latest - # Arch has every Plasma 6 and Qt 6 development package this needs, and the + # Arch has every Qt 6 and KDE Frameworks 6 package this needs, and the # newest OpenCV, which is the one that moved things around. container: archlinux:latest steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ad61ad6..bad4754 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,12 +24,12 @@ jobs: strategy: matrix: include: - # Plasma 6 arrived in Debian with trixie. + # Qt 6 and KDE Frameworks 6 arrived in Debian with trixie. - name: Debian 13 image: debian:trixie codename: trixie suffix: "~deb13" - - name: Kubuntu 26.04 + - name: Ubuntu 26.04 image: ubuntu:26.04 codename: resolute suffix: "~ubuntu26.04" @@ -239,7 +239,7 @@ jobs: - name: Debian 13 image: debian:trixie codename: trixie - - name: Kubuntu 26.04 + - name: Ubuntu 26.04 image: ubuntu:26.04 codename: resolute container: ${{ matrix.image }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 34c8baf..225a46c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ endif() include(GNUInstallDirs) -option(FU_BUILD_AGENT "Build the Plasma agent (bubble, lock screen, set up window)" ON) +option(FU_BUILD_AGENT "Build the agent (bubble, lock screen, set up window)" ON) option(FU_BUILD_PAM "Build the PAM module" ON) option(FU_BUILD_TESTS "Build the tests" ON) @@ -150,7 +150,9 @@ if(FU_BUILD_AGENT) src/agent/bubblewindow.cpp src/agent/bubblecontroller.cpp src/agent/lockcontroller.cpp + src/agent/lockwatcher.cpp src/agent/inputwatcher.cpp + src/agent/wayland.cpp src/agent/enrollcontroller.cpp ) target_include_directories(face-unlock-agent PRIVATE src/agent) diff --git a/README.md b/README.md index b8ac1ba..fcbe56c 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,11 @@

face-unlock

-

Face ID for KDE Plasma.

+

Face ID for Linux.

- Unlock the lock screen, sudo and admin prompts with your face. + Unlock the lock screen, sudo and admin prompts with your face.
+ On KDE Plasma, GNOME, Hyprland and Niri.

@@ -26,7 +27,7 @@

- The bubble above the lock screen: looking, recognised, not recognised + The bubble above the Plasma lock screen: looking, recognised, not recognised

## Install @@ -52,7 +53,7 @@ sudo dnf install face-unlock
-Debian, Kubuntu +Debian, Ubuntu ```bash codename="$(sed -n 's/^VERSION_CODENAME=//p' /etc/os-release)" @@ -66,7 +67,19 @@ sudo apt update && sudo apt install face-unlock
-Needs Plasma 6 on Wayland and a camera. Updates come with your system updates. +Updates come with your system updates. It needs a camera and one of these +desktops, on Wayland: + +| | Lock screen | sudo and admin prompts | Bubble | +|---|---|---|---| +| KDE Plasma 6 | ✅ | ✅ | ✅ above the lock screen too | +| GNOME | ✅ | ✅ | ❌ GNOME does not allow it | +| Hyprland | ✅ with hyprlock or swaylock | ✅ | ✅ once the lock screen is gone | +| Niri | ✅ with swaylock or hyprlock | ✅ | ✅ once the lock screen is gone | + +On Hyprland and Niri, admin prompts and setting up a face need a polkit agent +(for example hyprpolkitagent). Hyprland without uwsm does not start the lock +screen part by itself: the menu shows the line to add to `hyprland.conf`. ## How to use diff --git a/doc/face-unlock.1.scd b/doc/face-unlock.1.scd index 604cc4c..72b1091 100644 --- a/doc/face-unlock.1.scd +++ b/doc/face-unlock.1.scd @@ -2,7 +2,7 @@ face-unlock(1) # NAME -face-unlock - face unlock for KDE Plasma +face-unlock - face unlock for Plasma, GNOME, Hyprland and Niri # SYNOPSIS @@ -11,14 +11,14 @@ face-unlock - face unlock for KDE Plasma # DESCRIPTION Look at the screen and it unlocks, the way a phone does. The lock screen, sudo -in a terminal and the admin password prompts of Plasma can all take a face -instead of a password. A photo of somebody on a phone or tablet does not get +in a terminal and the admin password prompts can all take a face instead of a +password, on KDE Plasma, GNOME, Hyprland and Niri (see *DESKTOPS*). A photo of somebody on a phone or tablet does not get in, and with the strict photo check a printed one does not either. A bubble at the top of the screen shows what is going on: it drops down when the camera starts looking, the face in it looks around, and when it recognises -somebody two green rings spin and land around a tick. It shows above the lock -screen too. *Animation speed* makes all of it faster or slower. +somebody two green rings spin and land around a tick. On Plasma it shows above +the lock screen too. *Animation speed* makes all of it faster or slower. Run without a command it shows an interactive menu. Everything it can be told is reachable from there; the settings files behind it do not need to be edited @@ -71,7 +71,7 @@ It is a convenience, not a security upgrade. See *HOW SAFE IS THIS*. with nothing to do. *face-unlock-agent* - Runs in the Plasma session as a user service + Runs in the desktop session as a user service (_face-unlock-agent.service_). It watches the lock screen, asks the daemon to scan when somebody comes back, unlocks the session when the face matches, draws the bubble, and is the setup window. @@ -171,14 +171,16 @@ prompts off, or face unlock altogether. Plasma's lock screen runs a fingerprint stack next to the password, but starts it once per lock, gives up for good after the first failure and labels it for -fingerprints. So face unlock does not go through the lock screen's PAM at all. -The agent watches for the screen to lock (org.freedesktop.ScreenSaver) and -scans when somebody comes back: +fingerprints. GNOME's, hyprlock and swaylock only ask their PAM stack once the +password is typed. So face unlock does not go through the lock screen's PAM at +all. The agent watches for the screen to lock (see *DESKTOPS*) and scans when +somebody comes back: - on any key or mouse movement after the screen locked, once 1.5 seconds have passed (the key that locked it does not count). Enter on the empty password field is a key like any other. This works while a video or an app keeps the - screen on, too (ext_idle_notifier_v1, input notification); + screen on, too (ext_idle_notifier_v1 with its input notification, and + Mutter's IdleMonitor on GNOME); - when the machine wakes from sleep; - right after locking, if *Scan right after locking* is on. Off by default: whoever locks their screen on purpose is usually still in front of @@ -188,8 +190,12 @@ After a scan that did not get anybody in, the next one waits for the person to be still for two seconds and then touch something again, so typing the password does not start a scan with every key. -Unlocked through logind, the lock screen cuts off its own password prompt and -counts that as a wrong password. After a face unlock the daemon resets the +When the face matches, the agent unlocks the session the way its lock screen +wants it: through logind, as *loginctl unlock-session* does, on Plasma and +GNOME, and with SIGUSR1 for hyprlock and swaylock. + +Unlocked through logind, Plasma's lock screen cuts off its own password prompt +and counts that as a wrong password. After a face unlock the daemon resets the failed logins of *pam_faillock*(8), as a correct password does, so face unlocks never lock the account. @@ -198,6 +204,41 @@ The bubble is a layer-shell surface that KWin keeps above the lock screen file asks for it, which is _io.github.loonixtools.face-unlock-agent.desktop_. +# DESKTOPS + +All of them on Wayland. sudo and admin prompts work the same everywhere. + +*KDE Plasma 6* + Everything. The lock is seen through org.freedesktop.ScreenSaver and + logind, and the bubble shows above the lock screen. + +*GNOME* + The lock is seen through logind, where GNOME sets *LockedHint*. There is + no bubble: GNOME has no layer-shell, and a normal window can neither stay + on top nor pick its place. + +*Hyprland* + With hyprlock or swaylock. Hyprland does not set logind's *LockedHint*, + so the agent looks for the lock screen among the user's processes once + a second. The lock screen covers the bubble, which shows the tick once it + is gone. Hyprland only starts the agent's user service when it runs + under uwsm. Without uwsm, this line in _~/.config/hypr/hyprland.conf_ + starts it: + + exec-once = systemctl --user start face-unlock-agent.service + +*Niri* + With swaylock or hyprlock. niri sets logind's *LockedHint* for any lock + screen, but only these two can be unlocked by another program. The + bubble works as on Hyprland. + +Other lock screens (gtklock, waylock, the ones built into shells) cannot be +unlocked by another program. There face unlock only does sudo and admin +prompts. + +Hyprland and Niri come without a polkit agent. One has to run for admin +prompts and for setting up a face, for example hyprpolkitagent. + # SUDO AND ADMIN PROMPTS Turned on under *Settings*, one line goes in front of the service's PAM stack: @@ -263,12 +304,13 @@ _$XDG_RUNTIME_DIR/face-unlock/agent.socket_ # REQUIREMENTS -KDE Plasma 6 on Wayland, a camera, OpenCV 4.5.4 or newer with its DNN module, -Qt 6, LayerShellQt, KI18n, systemd, polkit and Linux-PAM. +KDE Plasma 6, GNOME, Hyprland or Niri on Wayland, a camera, OpenCV 4.5.4 or +newer with its DNN module, Qt 6, LayerShellQt, KI18n, systemd, polkit and +Linux-PAM. # SEE ALSO -*loginctl*(1), *pam*(8), *polkit*(8), *systemctl*(1) +*loginctl*(1), *pam*(8), *polkit*(8), *systemctl*(1), *swaylock*(1) # AUTHORS diff --git a/packaging/README.md b/packaging/README.md index 05d8e3f..b728156 100644 --- a/packaging/README.md +++ b/packaging/README.md @@ -17,14 +17,14 @@ The AUR package lives in [Felitendo/PKGBUILDS](https://github.com/Felitendo/PKGB Its CI notices a new GitHub release, updates the checksum and pushes to the AUR. Unlike the shell-only LoonixTools, this one is compiled. The packages are per -architecture (amd64 and x86_64), and they need the Plasma 6 and Qt 6 +architecture (amd64 and x86_64), and they need the Qt 6 and KDE Frameworks 6 development packages to build: Debian 13 (trixie) and current Fedora have them. The Debian package's library dependencies are read off the binaries by `dpkg-shlibdeps`; RPM does the same on its own. The program uses Qt's private API, so a package only fits the Qt it was built against. The `.deb` is therefore built twice, in Debian 13 and in Ubuntu 26.04 -(for Kubuntu), with a suffix on the version (`~deb13`, `~ubuntu26.04`), and each +(for Ubuntu and Kubuntu), with a suffix on the version (`~deb13`, `~ubuntu26.04`), and each gets an APT repository of its own: `deb/trixie` and `deb/resolute`. The RPM is built on the current Fedora. diff --git a/packaging/deb/control b/packaging/deb/control index f984b48..bd4bed1 100644 --- a/packaging/deb/control +++ b/packaging/deb/control @@ -5,13 +5,13 @@ Priority: optional Architecture: @ARCH@ Maintainer: Felitendo Depends: @DEPENDS@, bash (>= 4.2), coreutils, grep, sed, mawk | gawk, systemd, polkitd | policykit-1, qml6-module-qtquick, qml6-module-qtquick-shapes, qml6-module-qtquick-effects, qml6-module-qtquick-window, qml6-module-qtqml-workerscript -Recommends: gettext-base, kscreenlocker +Recommends: gettext-base Homepage: https://github.com/LoonixTools/face-unlock -Description: face unlock for KDE Plasma +Description: face unlock for Plasma, GNOME, Hyprland and Niri Look at the screen and it unlocks, the way a phone does. The lock screen, - sudo in a terminal and the admin password prompts of Plasma can take a face - instead of a password. A bubble at the top of the screen, above the lock - screen too, shows the face being looked for, recognised or refused. + sudo in a terminal and the admin password prompts can take a face instead + of a password, on KDE Plasma, GNOME, Hyprland and Niri. A bubble at the top + of the screen shows the face being looked for, recognised or refused. . A photo on a phone, a tablet or a glossy print is refused by its reflection and its straight edges. The strict photo check also wants a sign diff --git a/packaging/pages/index.html b/packaging/pages/index.html index 9586455..24d6a0e 100644 --- a/packaging/pages/index.html +++ b/packaging/pages/index.html @@ -64,9 +64,9 @@

face-unlock

- Face ID for KDE Plasma: look at the screen and it unlocks. The lock screen, - sudo and the admin prompts can take a face instead of a password, and a photo - of somebody is not enough. + Face ID for Linux: look at the screen and it unlocks. The lock screen, sudo + and the admin prompts can take a face instead of a password, on KDE Plasma, + GNOME, Hyprland and Niri. A photo of somebody is not enough.

@@ -85,7 +85,7 @@ echo "deb [signed-by=/etc/apt/keyrings/face-unlock.gpg] @BASEURL@/deb/trixie ./" sudo apt update sudo apt install face-unlock -

Kubuntu 26.04

+

Ubuntu 26.04

sudo install -d -m 0755 /etc/apt/keyrings
 curl -fsSL @BASEURL@/KEY.gpg \
   | sudo gpg --dearmor -o /etc/apt/keyrings/face-unlock.gpg
@@ -94,7 +94,7 @@ echo "deb [signed-by=/etc/apt/keyrings/face-unlock.gpg] @BASEURL@/deb/resolute .
 sudo apt update
 sudo apt install face-unlock
-

Fedora 44 (KDE Plasma)

+

Fedora 44

sudo curl -fsSL -o /etc/yum.repos.d/face-unlock.repo \
   @BASEURL@/face-unlock.repo
 sudo dnf install face-unlock
diff --git a/packaging/rpm/face-unlock.spec b/packaging/rpm/face-unlock.spec index 133ed1e..428f055 100644 --- a/packaging/rpm/face-unlock.spec +++ b/packaging/rpm/face-unlock.spec @@ -5,7 +5,7 @@ Name: face-unlock Version: %{upstream_version} Release: 1%{?dist} -Summary: Face unlock for KDE Plasma +Summary: Face unlock for Plasma, GNOME, Hyprland and Niri # The program is GPL; the two networks it ships are MIT (YuNet) and # Apache-2.0 (SFace). @@ -45,13 +45,12 @@ Requires: polkit Requires: systemd Requires: qt6-qtdeclarative Recommends: /usr/bin/gettext -Recommends: kscreenlocker %description Look at the screen and it unlocks, the way a phone does. The lock screen, sudo -in a terminal and the admin password prompts of Plasma can take a face instead -of a password. A bubble at the top of the screen, above the lock screen too, -shows the face being looked for, recognised or refused. +in a terminal and the admin password prompts can take a face instead of a +password, on KDE Plasma, GNOME, Hyprland and Niri. A bubble at the top of the +screen shows the face being looked for, recognised or refused. A photo on a phone, a tablet or a glossy print is refused by its reflection and its straight edges. The strict photo check also wants a sign of life (a blink, diff --git a/po/de.po b/po/de.po index 8610322..88e4de6 100644 --- a/po/de.po +++ b/po/de.po @@ -5,9 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.0\n" -"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/" -"issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-23 22:32+0200\n" "Last-Translator: Felitendo\n" "Language-Team: German\n" @@ -32,10 +31,10 @@ msgstr "Prüfen mit: systemctl status %s" #: src/face-unlock:67 msgid "" "Setting up a face needs the camera picture on screen. Run this inside your " -"Plasma session." +"desktop session." msgstr "" "Zum Einrichten eines Gesichts muss das Kamerabild auf dem Bildschirm zu " -"sehen sein. Starte das in deiner Plasma-Sitzung." +"sehen sein. Starte das in deiner Desktop-Sitzung." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -60,8 +59,8 @@ msgstr "Es wurde kein Gesicht hinzugefügt." msgid "First, set up your face." msgstr "Richte zuerst dein Gesicht ein." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Einstellung konnte nicht gespeichert werden." @@ -69,104 +68,104 @@ msgstr "Einstellung konnte nicht gespeichert werden." msgid "Could not start the lock screen agent." msgstr "Der Sperrbildschirm-Dienst konnte nicht gestartet werden." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." msgstr "" "Keine systemd-Benutzersitzung, daher wurde der Sperrbildschirm-Dienst nicht " "gestartet." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." msgstr "" "Die Gesichtsentsperrung ist an. Sperre den Bildschirm und schau ihn an, um " "es auszuprobieren." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "Sie kann auch sudo und Admin-Abfragen übernehmen. Siehe Einstellungen." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgstr "" "Die Gesichtsentsperrung ist aus. Deine Gesichter bleiben erhalten; löschen " "kannst du sie unter Gesichter." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Es ist noch kein Gesicht eingerichtet." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "an" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "aus" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s Aufnahmen, %s dazugelernt" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Welches Gesicht? Die IDs zeigt `%s faces`." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Gelöscht." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Aufruf: face-unlock [Befehl]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Befehle:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Gesichtsentsperrung einschalten" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Ausschalten (Gesichter bleiben erhalten)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Gesicht hinzufügen" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Gesichter auflisten" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Ein Gesicht löschen" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "In die Kamera schauen und sehen, was sie sieht" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Anzeigen, was eingeschaltet ist" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Diese Hilfe anzeigen" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Die Version anzeigen" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Ohne Befehl wird ein interaktives Menü angezeigt." -#: src/face-unlock:203 +#: src/face-unlock:204 msgid "" "Run this as your own user, not as root. It asks for your password when it " "needs to." @@ -174,42 +173,42 @@ msgstr "" "Starte das als dein eigener Benutzer, nicht als root. Wenn nötig, wird nach " "deinem Passwort gefragt." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Unbekannter Befehl: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "nie" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "gerade eben" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "vor 1 Minute" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "vor %d Minuten" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "vor 1 Stunde" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "vor %d Stunden" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "vor 1 Tag" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "vor %d Tagen" @@ -249,7 +248,7 @@ msgstr "" msgid "The camera could not be used." msgstr "Die Kamera konnte nicht benutzt werden." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Die Erkennungsmodelle fehlen. Installiere das Paket neu." @@ -353,11 +352,11 @@ msgstr "" msgid "[y/N]" msgstr "[j/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "AN" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "AUS" @@ -398,7 +397,7 @@ msgstr "langsam" msgid "%s seconds" msgstr "%s Sekunden" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automatisch" @@ -418,8 +417,8 @@ msgstr "läuft nicht" msgid "Turning face unlock on again starts it." msgstr "Die Gesichtsentsperrung erneut einzuschalten startet ihn." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Gesichter" @@ -443,32 +442,44 @@ msgstr "Kamera" msgid "Lock screen" msgstr "Sperrbildschirm" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Admin-Abfragen" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Foto-Prüfung" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Pausiert" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "noch %d Minuten, oder bis das Passwort benutzt wird" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Letzte Entsperrung" -#: src/lib/menu.sh:300 +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "Der Sperrbildschirm-Dienst läuft nicht." + +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME lässt andere Programme nicht über seinen Fenstern erscheinen, daher " +"gibt es auf GNOME keine Bubble." + +#: src/lib/menu.sh:312 msgid "" "Unlocks the lock screen when it sees your face. Off: only your password " "works there." @@ -476,7 +487,7 @@ msgstr "" "Entsperrt den Sperrbildschirm, wenn er dein Gesicht sieht. Aus: Dort geht " "nur dein Passwort." -#: src/lib/menu.sh:301 +#: src/lib/menu.sh:313 msgid "" "Scans when you press a key or move the mouse on the lock screen, and when " "the computer wakes up." @@ -484,7 +495,7 @@ msgstr "" "Scannt, wenn du auf dem Sperrbildschirm eine Taste drückst oder die Maus " "bewegst, und wenn der Computer aufwacht." -#: src/lib/menu.sh:302 +#: src/lib/menu.sh:314 msgid "" "Scans as soon as the screen locks. Off by default: if you lock it yourself, " "it would unlock again right away." @@ -492,7 +503,7 @@ msgstr "" "Scannt, sobald der Bildschirm gesperrt wird. Normalerweise aus: Sperrst du " "selbst, würde er gleich wieder entsperren." -#: src/lib/menu.sh:303 +#: src/lib/menu.sh:315 msgid "" "sudo takes your face instead of the password. No match: you type the " "password as usual." @@ -500,26 +511,26 @@ msgstr "" "sudo nimmt dein Gesicht statt des Passworts. Passt es nicht, tippst du wie " "gewohnt dein Passwort." -#: src/lib/menu.sh:304 +#: src/lib/menu.sh:316 msgid "" -"The password windows of Plasma and apps, for example when you install " +"The password windows of your desktop and apps, for example when you install " "software. No match: you type the password." msgstr "" -"Die Passwort-Fenster von Plasma und Apps, zum Beispiel beim Installieren. " -"Passt das Gesicht nicht, tippst du dein Passwort." +"Die Passwort-Fenster deines Desktops und von Apps, zum Beispiel beim " +"Installieren. Passt das Gesicht nicht, tippst du dein Passwort." -#: src/lib/menu.sh:305 +#: src/lib/menu.sh:317 msgid "" "You have to blink or turn your head a little. This also stops printed photos." msgstr "" "Du musst blinzeln oder den Kopf leicht drehen. Das hält auch ausgedruckte " "Fotos auf." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Keine Prüfung. Nur zum Ausprobieren einer Kamera." -#: src/lib/menu.sh:307 +#: src/lib/menu.sh:319 msgid "" "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "A matte printed photo can get through." @@ -527,22 +538,22 @@ msgstr "" "Hält Fotos auf Handy, Tablet oder Hochglanzpapier auf. Blinzeln ist nicht " "nötig. Ein matter Ausdruck kann durchkommen." -#: src/lib/menu.sh:308 +#: src/lib/menu.sh:320 msgid "" "Fewer wrong matches, but it may not know you with glasses or in bad light." msgstr "" "Seltener Verwechslungen, aber mit Brille oder bei schlechtem Licht erkennt " "es dich vielleicht nicht." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Erkennt dich leichter, aber auch jemanden, der dir sehr ähnlich sieht." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "Der Standard. Passt für die meisten." -#: src/lib/menu.sh:311 +#: src/lib/menu.sh:323 msgid "" "Your eyes have to be open and on the screen. So it does not unlock while you " "look away or sleep." @@ -550,7 +561,7 @@ msgstr "" "Deine Augen müssen offen sein und auf den Bildschirm schauen. So entsperrt " "es nicht, wenn du wegschaust oder schläfst." -#: src/lib/menu.sh:312 +#: src/lib/menu.sh:324 msgid "" "Automatic takes the first normal camera. After a change, set up your face " "again. An infrared camera needs its light on (linux-enable-ir-emitter)." @@ -559,11 +570,11 @@ msgstr "" "neu einrichten. Eine Infrarot-Kamera braucht ihr Licht (linux-enable-ir-" "emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Wie lange die Kamera nach deinem Gesicht sucht, bevor sie aufgibt." -#: src/lib/menu.sh:314 +#: src/lib/menu.sh:326 msgid "" "After a sure match it keeps how you look now. So a new haircut or glasses " "need no new setup." @@ -571,7 +582,7 @@ msgstr "" "Nach einem sicheren Treffer merkt es sich, wie du gerade aussiehst. So musst " "du nach neuer Frisur oder Brille nichts neu einrichten." -#: src/lib/menu.sh:315 +#: src/lib/menu.sh:327 msgid "" "No scan while the laptop is closed, for example at a desk with an external " "screen." @@ -579,82 +590,82 @@ msgstr "" "Kein Scan bei zugeklapptem Laptop, zum Beispiel am Schreibtisch mit externem " "Bildschirm." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "Die Bubble oben am Bildschirm zeigt, was die Kamera gerade macht." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Eine kleine Pille mit einem Schloss, das aufgeht." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "" "Eine Insel mit einem Gesicht, das sich umschaut, danach Ringe und ein Haken." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Wie schnell sich die Bubble bewegt." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgstr "" "Zeigt die Bubble auch, wenn sudo oder eine Admin-Abfrage dein Gesicht scannt." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automatisch (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(Infrarot)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(nicht angeschlossen)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Einstellungen" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ auswählen ←→ oder Leertaste: ändern q: zurück" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "für alle Nutzer, fragt nach deinem Passwort" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgstr "" "Hoch/Runter: wählen, Leertaste: an/aus, r: umbenennen, d: löschen, a: " "hinzufügen, q: zurück" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Es ist noch kein Gesicht eingerichtet. Drück a, um eins hinzuzufügen." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Neuer Name:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "„%s“ löschen?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Gesichtsentsperrung ein- oder ausschalten" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Ausprobieren" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Beenden" @@ -687,6 +698,14 @@ msgstr "Keine gültige Einstellung: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Dafür kann es nicht verwendet werden: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland startet den Sperrbildschirm-Dienst nicht von selbst. Füge diese " +"Zeile in %s ein:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Mit dem Gesicht entsperren" @@ -860,23 +879,23 @@ msgstr "" msgid "The face could not be added (%1)." msgstr "Das Gesicht konnte nicht hinzugefügt werden (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Gesichtsentsperrung für KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "Gesichtsentsperrung für Sperrbildschirm, sudo und Admin-Abfragen" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Ein Gesicht einrichten." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Wie das neue Gesicht heißen soll." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Die Animationen der Bubble einmal abspielen." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Bubble-Stil für die Demo: full oder minimal." @@ -898,27 +917,27 @@ msgstr "" msgid "Face not recognised." msgstr "Gesicht nicht erkannt." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Gesichtsentsperrung einrichten" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Gesichtsentsperrung" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Bestätige, dass du es bist" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Alles bereit" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "Die Einrichtung wurde nicht abgeschlossen" -#: src/agent/qml/Enroll.qml:121 +#: src/agent/qml/Enroll.qml:126 msgid "" "Look at the camera, then move your head slowly in a circle. Your face is " "turned into numbers on this computer and never stored as a picture." @@ -926,7 +945,7 @@ msgstr "" "Schau in die Kamera und beweg dann den Kopf langsam im Kreis. Dein Gesicht " "wird auf diesem Computer in Zahlen umgewandelt und nie als Bild gespeichert." -#: src/agent/qml/Enroll.qml:123 +#: src/agent/qml/Enroll.qml:128 msgid "" "Lock the screen and look at it to try it out. You can add a second look, " "with glasses for example, from the menu." @@ -934,26 +953,26 @@ msgstr "" "Sperre den Bildschirm und schau ihn an, um es auszuprobieren. Einen zweiten " "Look, zum Beispiel mit Brille, kannst du im Menü hinzufügen." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Name (optional)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Abbrechen" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Jetzt abschließen" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Nochmal versuchen" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Los geht's" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Fertig" diff --git a/po/es.po b/po/es.po index 8b4d546..f3424f3 100644 --- a/po/es.po +++ b/po/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:55+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Spanish\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "El servicio de desbloqueo facial tiene que activarse una vez en este equipo. Para ello hace falta tu contraseña." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"El servicio de desbloqueo facial tiene que activarse una vez en este equipo. " +"Para ello hace falta tu contraseña." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Compruébalo con: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Para configurar una cara, la imagen de la cámara tiene que verse en pantalla. Ejecuta esto dentro de tu sesión de Plasma." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Para configurar una cara, la imagen de la cámara tiene que verse en " +"pantalla. Ejecuta esto dentro de tu sesión de escritorio." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,8 @@ msgstr "La cara está configurada." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "El desbloqueo facial sigue desactivado. Actívalo con [1] o `%s enable`." +msgstr "" +"El desbloqueo facial sigue desactivado. Actívalo con [1] o `%s enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +58,8 @@ msgstr "No se añadió ninguna cara." msgid "First, set up your face." msgstr "Primero, configura tu cara." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "No se pudo guardar el ajuste." @@ -58,137 +67,149 @@ msgstr "No se pudo guardar el ajuste." msgid "Could not start the lock screen agent." msgstr "No se pudo iniciar el agente de la pantalla de bloqueo." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "No hay sesión de usuario de systemd, así que no se inició el agente de la pantalla de bloqueo." +msgstr "" +"No hay sesión de usuario de systemd, así que no se inició el agente de la " +"pantalla de bloqueo." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "El desbloqueo facial está activado. Bloquea la pantalla y mírala para probarlo." +msgstr "" +"El desbloqueo facial está activado. Bloquea la pantalla y mírala para " +"probarlo." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." -msgstr "También funciona con sudo y las solicitudes de administrador. Consulta Ajustes." +msgstr "" +"También funciona con sudo y las solicitudes de administrador. Consulta " +"Ajustes." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "El desbloqueo facial está desactivado. Tus caras se conservan; bórralas en Caras." +msgstr "" +"El desbloqueo facial está desactivado. Tus caras se conservan; bórralas en " +"Caras." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Todavía no hay ninguna cara configurada." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "activado" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "desactivado" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s muestras, %s aprendidas" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "¿Qué cara? Consulta `%s faces` para ver los ID." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Borrado." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Uso: face-unlock [comando]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Comandos:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Activar el desbloqueo facial" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Desactivarlo (las caras se conservan)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Añadir una cara" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Listar las caras" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Borrar una cara" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Mirar a la cámara y ver lo que ve" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Mostrar qué está activado" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Mostrar esta ayuda" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Mostrar la versión" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Sin comando se muestra un menú interactivo." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando la necesita." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando " +"la necesita." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Comando desconocido: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "nunca" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "ahora mismo" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "hace 1 minuto" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "hace %d minutos" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "hace 1 hora" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "hace %d horas" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "hace 1 día" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "hace %d días" @@ -218,14 +239,17 @@ msgid "No face in view." msgstr "No hay ninguna cara a la vista." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "El desbloqueo facial está en pausa tras demasiados intentos. Desbloquea una vez con tu contraseña." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"El desbloqueo facial está en pausa tras demasiados intentos. Desbloquea una " +"vez con tu contraseña." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "No se pudo usar la cámara." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Faltan los modelos de reconocimiento. Reinstala el paquete." @@ -317,19 +341,23 @@ msgid "Sign of life: %s" msgstr "Señal de vida: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Demasiados intentos. El desbloqueo facial está en pausa hasta que desbloquees con tu contraseña." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Demasiados intentos. El desbloqueo facial está en pausa hasta que " +"desbloquees con tu contraseña." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[s/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "ACTIVADO" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "DESACTIVADO" @@ -370,7 +398,7 @@ msgstr "lenta" msgid "%s seconds" msgstr "%s segundos" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automática" @@ -390,8 +418,8 @@ msgstr "detenido" msgid "Turning face unlock on again starts it." msgstr "Al volver a activar el desbloqueo facial, se inicia." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Caras" @@ -415,167 +443,235 @@ msgstr "Cámara" msgid "Lock screen" msgstr "Pantalla de bloqueo" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Solicitudes de administrador" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Detección de fotos" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "En pausa" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "%d minutos más, o hasta que se use la contraseña" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Último desbloqueo" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Desbloquea la pantalla de bloqueo cuando ve tu cara. Desactivado: ahí solo sirve tu contraseña." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "El agente de la pantalla de bloqueo no se está ejecutando." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Escanea cuando pulsas una tecla o mueves el ratón en la pantalla de bloqueo, y cuando el equipo se despierta." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME no deja que otros programas se muestren sobre sus ventanas, así que en " +"GNOME no hay burbuja." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Escanea en cuanto se bloquea la pantalla. Desactivado por defecto: si la bloqueas tú, se desbloquearía enseguida." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Desbloquea la pantalla de bloqueo cuando ve tu cara. Desactivado: ahí solo " +"sirve tu contraseña." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo usa tu cara en lugar de la contraseña. Si no coincide, escribes la contraseña como siempre." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Escanea cuando pulsas una tecla o mueves el ratón en la pantalla de bloqueo, " +"y cuando el equipo se despierta." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Las ventanas de contraseña de Plasma y de las aplicaciones, por ejemplo al instalar software. Si no coincide, escribes la contraseña." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Escanea en cuanto se bloquea la pantalla. Desactivado por defecto: si la " +"bloqueas tú, se desbloquearía enseguida." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Tienes que parpadear o girar un poco la cabeza. Esto también frena las fotos impresas." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo usa tu cara en lugar de la contraseña. Si no coincide, escribes la " +"contraseña como siempre." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Las ventanas de contraseña de tu escritorio y de las aplicaciones, por " +"ejemplo al instalar software. Si no coincide, escribes la contraseña." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Tienes que parpadear o girar un poco la cabeza. Esto también frena las fotos " +"impresas." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Sin comprobación. Solo para probar una cámara." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Frena fotos en un móvil, una tableta o papel brillante. No hace falta parpadear. Una foto impresa en papel mate puede pasar." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Frena fotos en un móvil, una tableta o papel brillante. No hace falta " +"parpadear. Una foto impresa en papel mate puede pasar." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Menos coincidencias erróneas, pero puede que no te reconozca con gafas o con poca luz." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Menos coincidencias erróneas, pero puede que no te reconozca con gafas o con " +"poca luz." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." -msgstr "Te reconoce con más facilidad, pero también a alguien que se parezca mucho a ti." +msgstr "" +"Te reconoce con más facilidad, pero también a alguien que se parezca mucho a " +"ti." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "El valor por defecto. Adecuado para la mayoría." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Tus ojos tienen que estar abiertos y mirando a la pantalla. Así no se desbloquea mientras miras a otro lado o duermes." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Tus ojos tienen que estar abiertos y mirando a la pantalla. Así no se " +"desbloquea mientras miras a otro lado o duermes." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Automática usa la primera cámara normal. Tras un cambio, vuelve a configurar tu cara. Una cámara infrarroja necesita su luz encendida (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Automática usa la primera cámara normal. Tras un cambio, vuelve a configurar " +"tu cara. Una cámara infrarroja necesita su luz encendida (linux-enable-ir-" +"emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Cuánto tiempo busca la cámara tu cara antes de rendirse." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Tras una coincidencia segura, recuerda tu aspecto actual. Así, un corte de pelo nuevo o unas gafas no piden configurar de nuevo." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Tras una coincidencia segura, recuerda tu aspecto actual. Así, un corte de " +"pelo nuevo o unas gafas no piden configurar de nuevo." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Sin escaneo mientras el portátil está cerrado, por ejemplo en un escritorio con una pantalla externa." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Sin escaneo mientras el portátil está cerrado, por ejemplo en un escritorio " +"con una pantalla externa." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." -msgstr "La burbuja en la parte superior de la pantalla muestra lo que hace la cámara." +msgstr "" +"La burbuja en la parte superior de la pantalla muestra lo que hace la cámara." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Una pequeña pastilla con un candado que se abre." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." -msgstr "Una isla con una cara que mira alrededor, luego anillos y una marca de verificación." +msgstr "" +"Una isla con una cara que mira alrededor, luego anillos y una marca de " +"verificación." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "La velocidad a la que se mueve la burbuja." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Muestra la burbuja también cuando sudo o una solicitud de administrador escanea tu cara." +msgstr "" +"Muestra la burbuja también cuando sudo o una solicitud de administrador " +"escanea tu cara." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automática (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(infrarroja)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(no conectada)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Ajustes" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ elegir ←→ o Espacio: cambiar q: volver" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "para todos los usuarios, pide tu contraseña" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Arriba/Abajo: elegir, Espacio: activar/desactivar, r: renombrar, d: borrar, a: añadir, q: volver" +msgstr "" +"Arriba/Abajo: elegir, Espacio: activar/desactivar, r: renombrar, d: borrar, " +"a: añadir, q: volver" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Todavía no hay ninguna cara configurada. Pulsa a para añadir una." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Nuevo nombre:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "¿Borrar «%s»?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Activar o desactivar el desbloqueo facial" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Probarlo" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Salir" @@ -607,6 +703,14 @@ msgstr "Ajuste no válido: %s=%s" msgid "Not a service this can be used for: %s" msgstr "No se puede usar para este servicio: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland no inicia por sí solo el agente de la pantalla de bloqueo. Añade " +"esta línea a %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Desbloquear con tu cara" @@ -765,33 +869,38 @@ msgstr "Ha tardado demasiado. Inténtalo de nuevo, con buena luz." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "El servicio de desbloqueo facial no está en marcha. Activa primero el desbloqueo facial." +msgstr "" +"El servicio de desbloqueo facial no está en marcha. Activa primero el " +"desbloqueo facial." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." -msgstr "La cámara está ocupada con otro escaneo. Inténtalo de nuevo en un momento." +msgstr "" +"La cámara está ocupada con otro escaneo. Inténtalo de nuevo en un momento." #: src/agent/enrollcontroller.cpp:205 msgid "The face could not be added (%1)." msgstr "No se pudo añadir la cara (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Desbloqueo facial para KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Desbloqueo facial para la pantalla de bloqueo, sudo y las solicitudes de " +"administrador" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Configurar una cara." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Cómo llamar a la nueva cara." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Reproducir una vez las animaciones de la burbuja." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Estilo de burbuja para la demo: full o minimal." @@ -805,60 +914,70 @@ msgstr "Parpadea o gira un poco la cabeza." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "El desbloqueo facial está en pausa tras demasiados intentos. Usa tu contraseña." +msgstr "" +"El desbloqueo facial está en pausa tras demasiados intentos. Usa tu " +"contraseña." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Cara no reconocida." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Configurar el desbloqueo facial" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Desbloqueo facial" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Confirma que eres tú" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Todo listo" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "La configuración no terminó" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Mira a la cámara y luego mueve la cabeza despacio en círculo. Tu cara se convierte en números en este equipo y nunca se guarda como imagen." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Mira a la cámara y luego mueve la cabeza despacio en círculo. Tu cara se " +"convierte en números en este equipo y nunca se guarda como imagen." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Bloquea la pantalla y mírala para probarlo. Puedes añadir un segundo aspecto, con gafas por ejemplo, desde el menú." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Bloquea la pantalla y mírala para probarlo. Puedes añadir un segundo " +"aspecto, con gafas por ejemplo, desde el menú." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Nombre (opcional)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Cancelar" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Terminar ahora" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Reintentar" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Empezar" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Hecho" diff --git a/po/face-unlock.pot b/po/face-unlock.pot index 5e43dc0..9b6b418 100644 --- a/po/face-unlock.pot +++ b/po/face-unlock.pot @@ -6,9 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" -"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/" -"issues\n" -"POT-Creation-Date: 2026-09-24 10:56+0200\n" +"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,7 +30,7 @@ msgstr "" #: src/face-unlock:67 msgid "" "Setting up a face needs the camera picture on screen. Run this inside your " -"Plasma session." +"desktop session." msgstr "" #: src/face-unlock:71 @@ -55,8 +54,8 @@ msgstr "" msgid "First, set up your face." msgstr "" -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "" @@ -64,139 +63,139 @@ msgstr "" msgid "Could not start the lock screen agent." msgstr "" -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." msgstr "" -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." msgstr "" -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "" -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgstr "" -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "" -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "" -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "" -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "" -#: src/face-unlock:203 +#: src/face-unlock:204 msgid "" "Run this as your own user, not as root. It asks for your password when it " "needs to." msgstr "" -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "" @@ -234,7 +233,7 @@ msgstr "" msgid "The camera could not be used." msgstr "" -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "" @@ -336,11 +335,11 @@ msgstr "" msgid "[y/N]" msgstr "" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "" @@ -381,7 +380,7 @@ msgstr "" msgid "%s seconds" msgstr "" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "" @@ -401,8 +400,8 @@ msgstr "" msgid "Turning face unlock on again starts it." msgstr "" -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "" @@ -426,189 +425,199 @@ msgstr "" msgid "Lock screen" msgstr "" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "" -#: src/lib/menu.sh:300 +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "" + +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" + +#: src/lib/menu.sh:312 msgid "" "Unlocks the lock screen when it sees your face. Off: only your password " "works there." msgstr "" -#: src/lib/menu.sh:301 +#: src/lib/menu.sh:313 msgid "" "Scans when you press a key or move the mouse on the lock screen, and when " "the computer wakes up." msgstr "" -#: src/lib/menu.sh:302 +#: src/lib/menu.sh:314 msgid "" "Scans as soon as the screen locks. Off by default: if you lock it yourself, " "it would unlock again right away." msgstr "" -#: src/lib/menu.sh:303 +#: src/lib/menu.sh:315 msgid "" "sudo takes your face instead of the password. No match: you type the " "password as usual." msgstr "" -#: src/lib/menu.sh:304 +#: src/lib/menu.sh:316 msgid "" -"The password windows of Plasma and apps, for example when you install " +"The password windows of your desktop and apps, for example when you install " "software. No match: you type the password." msgstr "" -#: src/lib/menu.sh:305 +#: src/lib/menu.sh:317 msgid "" "You have to blink or turn your head a little. This also stops printed photos." msgstr "" -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "" -#: src/lib/menu.sh:307 +#: src/lib/menu.sh:319 msgid "" "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "A matte printed photo can get through." msgstr "" -#: src/lib/menu.sh:308 +#: src/lib/menu.sh:320 msgid "" "Fewer wrong matches, but it may not know you with glasses or in bad light." msgstr "" -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "" -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "" -#: src/lib/menu.sh:311 +#: src/lib/menu.sh:323 msgid "" "Your eyes have to be open and on the screen. So it does not unlock while you " "look away or sleep." msgstr "" -#: src/lib/menu.sh:312 +#: src/lib/menu.sh:324 msgid "" "Automatic takes the first normal camera. After a change, set up your face " "again. An infrared camera needs its light on (linux-enable-ir-emitter)." msgstr "" -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "" -#: src/lib/menu.sh:314 +#: src/lib/menu.sh:326 msgid "" "After a sure match it keeps how you look now. So a new haircut or glasses " "need no new setup." msgstr "" -#: src/lib/menu.sh:315 +#: src/lib/menu.sh:327 msgid "" "No scan while the laptop is closed, for example at a desk with an external " "screen." msgstr "" -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "" -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "" -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "" -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "" -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgstr "" -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgstr "" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "" -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "" @@ -640,6 +649,12 @@ msgstr "" msgid "Not a service this can be used for: %s" msgstr "" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "" @@ -808,23 +823,23 @@ msgstr "" msgid "The face could not be added (%1)." msgstr "" -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "" - -#: src/agent/main.cpp:88 -msgid "Set up a face." +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" msgstr "" #: src/agent/main.cpp:89 -msgid "What to call the new face." +msgid "Set up a face." msgstr "" #: src/agent/main.cpp:90 +msgid "What to call the new face." +msgstr "" + +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "" -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "" @@ -844,58 +859,58 @@ msgstr "" msgid "Face not recognised." msgstr "" -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "" -#: src/agent/qml/Enroll.qml:121 +#: src/agent/qml/Enroll.qml:126 msgid "" "Look at the camera, then move your head slowly in a circle. Your face is " "turned into numbers on this computer and never stored as a picture." msgstr "" -#: src/agent/qml/Enroll.qml:123 +#: src/agent/qml/Enroll.qml:128 msgid "" "Lock the screen and look at it to try it out. You can add a second look, " "with glasses for example, from the menu." msgstr "" -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "" diff --git a/po/fr.po b/po/fr.po index 86a8f2e..3bd1b33 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:55+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: French\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "Le service de déverrouillage facial doit être activé une fois sur cet ordinateur. Cela demande votre mot de passe." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"Le service de déverrouillage facial doit être activé une fois sur cet " +"ordinateur. Cela demande votre mot de passe." #: src/face-unlock:57 #, sh-printf-format @@ -25,12 +29,17 @@ msgid "Check it with: systemctl status %s" msgstr "Vérifiez avec : systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Pour configurer un visage, l'image de la caméra doit s'afficher à l'écran. Lancez ceci dans votre session Plasma." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Pour configurer un visage, l'image de la caméra doit s'afficher à l'écran. " +"Lancez ceci dans votre session de bureau." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." -msgstr "La fenêtre de configuration est ouverte. Suivez les étapes qui s'y trouvent." +msgstr "" +"La fenêtre de configuration est ouverte. Suivez les étapes qui s'y trouvent." #: src/face-unlock:80 msgid "The face is set up." @@ -39,7 +48,9 @@ msgstr "Le visage est configuré." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "Le déverrouillage facial est encore désactivé. Activez-le avec [1] ou `%s enable`." +msgstr "" +"Le déverrouillage facial est encore désactivé. Activez-le avec [1] ou `%s " +"enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +60,8 @@ msgstr "Aucun visage n'a été ajouté." msgid "First, set up your face." msgstr "Configurez d'abord votre visage." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Impossible d'enregistrer le réglage." @@ -58,137 +69,149 @@ msgstr "Impossible d'enregistrer le réglage." msgid "Could not start the lock screen agent." msgstr "Impossible de démarrer l'agent de l'écran de verrouillage." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Pas de session utilisateur systemd, l'agent de l'écran de verrouillage n'a donc pas été démarré." +msgstr "" +"Pas de session utilisateur systemd, l'agent de l'écran de verrouillage n'a " +"donc pas été démarré." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "Le déverrouillage facial est activé. Verrouillez l'écran et regardez-le pour essayer." +msgstr "" +"Le déverrouillage facial est activé. Verrouillez l'écran et regardez-le pour " +"essayer." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." -msgstr "Il fonctionne aussi pour sudo et les demandes d'administration. Voir Réglages." +msgstr "" +"Il fonctionne aussi pour sudo et les demandes d'administration. Voir " +"Réglages." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Le déverrouillage facial est désactivé. Vos visages sont conservés ; supprimez-les dans Visages." +msgstr "" +"Le déverrouillage facial est désactivé. Vos visages sont conservés ; " +"supprimez-les dans Visages." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Aucun visage n'est encore configuré." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "activé" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "désactivé" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s échantillons, %s appris" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Quel visage ? Voir `%s faces` pour les identifiants." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Supprimé." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Utilisation : face-unlock [commande]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Commandes :" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Activer le déverrouillage facial" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Le désactiver (les visages sont conservés)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Ajouter un visage" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Lister les visages" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Supprimer un visage" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Regarder la caméra et voir ce qu'elle voit" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Afficher ce qui est activé" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Afficher cette aide" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Afficher la version" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Sans commande, un menu interactif s'affiche." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est demandé quand il le faut." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est " +"demandé quand il le faut." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Commande inconnue : %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "jamais" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "à l'instant" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "il y a 1 minute" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "il y a %d minutes" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "il y a 1 heure" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "il y a %d heures" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "il y a 1 jour" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "il y a %d jours" @@ -218,14 +241,17 @@ msgid "No face in view." msgstr "Aucun visage visible." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Le déverrouillage facial est en pause après trop d'essais. Déverrouillez une fois avec votre mot de passe." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Le déverrouillage facial est en pause après trop d'essais. Déverrouillez une " +"fois avec votre mot de passe." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "La caméra n'a pas pu être utilisée." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Les modèles de reconnaissance sont absents. Réinstallez le paquet." @@ -252,7 +278,8 @@ msgstr "Une erreur s'est produite (%s)." #: src/lib/daemon.sh:127 msgid "Look at the camera. Blink once, or turn your head a little." -msgstr "Regardez la caméra. Clignez des yeux une fois ou tournez un peu la tête." +msgstr "" +"Regardez la caméra. Clignez des yeux une fois ou tournez un peu la tête." #: src/lib/daemon.sh:137 msgid "Face found." @@ -260,7 +287,8 @@ msgstr "Visage trouvé." #: src/lib/daemon.sh:141 msgid "Recognised. Now blink once, or turn your head a little." -msgstr "Reconnu. Clignez maintenant des yeux une fois ou tournez un peu la tête." +msgstr "" +"Reconnu. Clignez maintenant des yeux une fois ou tournez un peu la tête." #: src/lib/daemon.sh:142 msgid "Look at the screen." @@ -317,19 +345,23 @@ msgid "Sign of life: %s" msgstr "Signe de vie : %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Trop d'essais. Le déverrouillage facial est en pause jusqu'à ce que vous déverrouilliez avec votre mot de passe." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Trop d'essais. Le déverrouillage facial est en pause jusqu'à ce que vous " +"déverrouilliez avec votre mot de passe." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[o/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "ACTIVÉ" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "DÉSACTIVÉ" @@ -370,7 +402,7 @@ msgstr "lent" msgid "%s seconds" msgstr "%s secondes" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automatique" @@ -390,8 +422,8 @@ msgstr "arrêté" msgid "Turning face unlock on again starts it." msgstr "Réactiver le déverrouillage facial le démarre." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Visages" @@ -415,167 +447,235 @@ msgstr "Caméra" msgid "Lock screen" msgstr "Écran de verrouillage" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Demandes d'administration" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Contrôle anti-photo" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "En pause" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "encore %d minutes, ou jusqu'à l'utilisation du mot de passe" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Dernier déverrouillage" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Déverrouille l'écran de verrouillage quand il voit votre visage. Désactivé : seul votre mot de passe fonctionne." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "L'agent de l'écran de verrouillage ne tourne pas." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Scanne quand vous appuyez sur une touche ou bougez la souris sur l'écran de verrouillage, et au réveil de l'ordinateur." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME ne laisse pas d'autres programmes s'afficher au-dessus de ses " +"fenêtres, il n'y a donc pas de bulle sous GNOME." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Scanne dès que l'écran se verrouille. Désactivé par défaut : si vous verrouillez vous-même, il se déverrouillerait aussitôt." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Déverrouille l'écran de verrouillage quand il voit votre visage. Désactivé : " +"seul votre mot de passe fonctionne." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo prend votre visage au lieu du mot de passe. Sinon, vous tapez le mot de passe comme d'habitude." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Scanne quand vous appuyez sur une touche ou bougez la souris sur l'écran de " +"verrouillage, et au réveil de l'ordinateur." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Les fenêtres de mot de passe de Plasma et des applications, par exemple pour installer un logiciel. Sinon, vous tapez le mot de passe." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Scanne dès que l'écran se verrouille. Désactivé par défaut : si vous " +"verrouillez vous-même, il se déverrouillerait aussitôt." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Vous devez cligner des yeux ou tourner un peu la tête. Cela bloque aussi les photos imprimées." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo prend votre visage au lieu du mot de passe. Sinon, vous tapez le mot de " +"passe comme d'habitude." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Les fenêtres de mot de passe de votre bureau et des applications, par " +"exemple pour installer un logiciel. Sinon, vous tapez le mot de passe." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Vous devez cligner des yeux ou tourner un peu la tête. Cela bloque aussi les " +"photos imprimées." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Aucun contrôle. Seulement pour essayer une caméra." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Bloque les photos sur un téléphone, une tablette ou du papier brillant. Pas besoin de cligner des yeux. Une photo imprimée mate peut passer." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Bloque les photos sur un téléphone, une tablette ou du papier brillant. Pas " +"besoin de cligner des yeux. Une photo imprimée mate peut passer." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Moins d'erreurs de correspondance, mais il peut ne pas vous reconnaître avec des lunettes ou sous une mauvaise lumière." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Moins d'erreurs de correspondance, mais il peut ne pas vous reconnaître avec " +"des lunettes ou sous une mauvaise lumière." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." -msgstr "Vous reconnaît plus facilement, mais aussi quelqu'un qui vous ressemble beaucoup." +msgstr "" +"Vous reconnaît plus facilement, mais aussi quelqu'un qui vous ressemble " +"beaucoup." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "La valeur par défaut. Convient à la plupart des gens." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Vos yeux doivent être ouverts et tournés vers l'écran. Ainsi, rien ne se déverrouille quand vous regardez ailleurs ou dormez." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Vos yeux doivent être ouverts et tournés vers l'écran. Ainsi, rien ne se " +"déverrouille quand vous regardez ailleurs ou dormez." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Automatique prend la première caméra normale. Après un changement, reconfigurez votre visage. Une caméra infrarouge doit avoir sa lumière allumée (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Automatique prend la première caméra normale. Après un changement, " +"reconfigurez votre visage. Une caméra infrarouge doit avoir sa lumière " +"allumée (linux-enable-ir-emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Combien de temps la caméra cherche votre visage avant d'abandonner." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Après une correspondance sûre, il retient votre apparence actuelle. Une nouvelle coupe ou des lunettes ne demandent donc pas de nouvelle configuration." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Après une correspondance sûre, il retient votre apparence actuelle. Une " +"nouvelle coupe ou des lunettes ne demandent donc pas de nouvelle " +"configuration." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Pas de scan quand le portable est fermé, par exemple à un bureau avec un écran externe." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Pas de scan quand le portable est fermé, par exemple à un bureau avec un " +"écran externe." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "La bulle en haut de l'écran montre ce que fait la caméra." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Une petite pilule avec un cadenas qui s'ouvre." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." -msgstr "Un îlot avec un visage qui regarde autour de lui, puis des anneaux et une coche." +msgstr "" +"Un îlot avec un visage qui regarde autour de lui, puis des anneaux et une " +"coche." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "La vitesse à laquelle la bulle bouge." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Affiche aussi la bulle quand sudo ou une demande d'administration scanne votre visage." +msgstr "" +"Affiche aussi la bulle quand sudo ou une demande d'administration scanne " +"votre visage." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automatique (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(infrarouge)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(non branchée)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Réglages" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ choisir ←→ ou Espace : changer q : retour" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "pour tous, demande votre mot de passe" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Haut/Bas : choisir, Espace : activer/désactiver, r : renommer, d : supprimer, a : ajouter, q : retour" +msgstr "" +"Haut/Bas : choisir, Espace : activer/désactiver, r : renommer, d : " +"supprimer, a : ajouter, q : retour" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Aucun visage n'est encore configuré. Appuyez sur a pour en ajouter un." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Nouveau nom :" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "Supprimer « %s » ?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Activer ou désactiver le déverrouillage facial" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Essayer" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Quitter" @@ -591,7 +691,8 @@ msgstr "Il n'y a pas de configuration PAM pour %s sur ce système." #: src/lib/system.sh:47 msgid "This needs root, and neither sudo, run0 nor doas is installed." -msgstr "Il faut les droits root, mais ni sudo, ni run0, ni doas n'est installé." +msgstr "" +"Il faut les droits root, mais ni sudo, ni run0, ni doas n'est installé." #: src/lib/system.sh:56 msgid "This command has to run as root." @@ -607,6 +708,14 @@ msgstr "Réglage non valide : %s=%s" msgid "Not a service this can be used for: %s" msgstr "Ne peut pas servir pour ce service : %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland ne démarre pas l'agent de l'écran de verrouillage tout seul. " +"Ajoutez cette ligne à %s :" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Déverrouiller avec votre visage" @@ -757,7 +866,8 @@ msgstr "La caméra n'a pas pu être utilisée : %1" #: src/agent/enrollcontroller.cpp:197 msgid "The face recognition models are missing. Reinstall the package." -msgstr "Les modèles de reconnaissance faciale sont absents. Réinstallez le paquet." +msgstr "" +"Les modèles de reconnaissance faciale sont absents. Réinstallez le paquet." #: src/agent/enrollcontroller.cpp:199 msgid "That took too long. Try again, in good light." @@ -765,7 +875,9 @@ msgstr "Cela a pris trop de temps. Réessayez, avec une bonne lumière." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "Le service de déverrouillage facial n'est pas lancé. Activez d'abord le déverrouillage facial." +msgstr "" +"Le service de déverrouillage facial n'est pas lancé. Activez d'abord le " +"déverrouillage facial." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +887,25 @@ msgstr "La caméra est occupée par un autre scan. Réessayez dans un instant." msgid "The face could not be added (%1)." msgstr "Le visage n'a pas pu être ajouté (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Déverrouillage facial pour KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Déverrouillage facial pour l'écran de verrouillage, sudo et les demandes " +"d'administration" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Configurer un visage." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Le nom du nouveau visage." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Jouer une fois les animations de la bulle." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Style de bulle pour la démo : full ou minimal." @@ -805,60 +919,71 @@ msgstr "Clignez des yeux ou tournez un peu la tête." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Le déverrouillage facial est en pause après trop d'essais. Utilisez votre mot de passe." +msgstr "" +"Le déverrouillage facial est en pause après trop d'essais. Utilisez votre " +"mot de passe." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Visage non reconnu." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Configurer le déverrouillage facial" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Déverrouillage facial" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Confirmez que c'est vous" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Tout est prêt" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "La configuration n'est pas terminée" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Regardez la caméra, puis bougez lentement la tête en cercle. Votre visage est transformé en nombres sur cet ordinateur et n'est jamais enregistré comme image." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Regardez la caméra, puis bougez lentement la tête en cercle. Votre visage " +"est transformé en nombres sur cet ordinateur et n'est jamais enregistré " +"comme image." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Verrouillez l'écran et regardez-le pour essayer. Vous pouvez ajouter une deuxième apparence, avec des lunettes par exemple, depuis le menu." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Verrouillez l'écran et regardez-le pour essayer. Vous pouvez ajouter une " +"deuxième apparence, avec des lunettes par exemple, depuis le menu." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Nom (facultatif)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Annuler" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Terminer maintenant" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Réessayer" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Commencer" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Terminé" diff --git a/po/it.po b/po/it.po index 9eaf2a5..5fef2a0 100644 --- a/po/it.po +++ b/po/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:55+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Italian\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "Il servizio di sblocco con il volto va attivato una volta su questo computer. Serve la tua password." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"Il servizio di sblocco con il volto va attivato una volta su questo " +"computer. Serve la tua password." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Controlla con: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Per configurare un volto, l'immagine della fotocamera deve comparire sullo schermo. Esegui questo comando nella tua sessione Plasma." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Per configurare un volto, l'immagine della fotocamera deve comparire sullo " +"schermo. Esegui questo comando nella tua sessione desktop." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,8 @@ msgstr "Il volto è configurato." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "Lo sblocco con il volto è ancora disattivato. Attivalo con [1] o `%s enable`." +msgstr "" +"Lo sblocco con il volto è ancora disattivato. Attivalo con [1] o `%s enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +58,8 @@ msgstr "Nessun volto aggiunto." msgid "First, set up your face." msgstr "Per prima cosa, configura il tuo volto." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Impossibile salvare l'impostazione." @@ -58,137 +67,147 @@ msgstr "Impossibile salvare l'impostazione." msgid "Could not start the lock screen agent." msgstr "Impossibile avviare l'agente della schermata di blocco." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Nessuna sessione utente di systemd, quindi l'agente della schermata di blocco non è stato avviato." +msgstr "" +"Nessuna sessione utente di systemd, quindi l'agente della schermata di " +"blocco non è stato avviato." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "Lo sblocco con il volto è attivo. Blocca lo schermo e guardalo per provarlo." +msgstr "" +"Lo sblocco con il volto è attivo. Blocca lo schermo e guardalo per provarlo." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." -msgstr "Funziona anche con sudo e le richieste di amministratore. Vedi Impostazioni." +msgstr "" +"Funziona anche con sudo e le richieste di amministratore. Vedi Impostazioni." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Lo sblocco con il volto è disattivato. I tuoi volti restano salvati; eliminali in Volti." +msgstr "" +"Lo sblocco con il volto è disattivato. I tuoi volti restano salvati; " +"eliminali in Volti." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Nessun volto ancora configurato." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "attivo" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "disattivo" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s campioni, %s appresi" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Quale volto? Vedi `%s faces` per gli ID." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Eliminato." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Uso: face-unlock [comando]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Comandi:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Attiva lo sblocco con il volto" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Disattivalo (i volti restano salvati)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Aggiungi un volto" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Elenca i volti" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Elimina un volto" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Guarda la fotocamera e vedi cosa vede" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Mostra cosa è attivo" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Mostra questo aiuto" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Mostra la versione" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Senza comando viene mostrato un menu interattivo." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Esegui questo con il tuo utente, non come root. Chiede la password quando serve." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Esegui questo con il tuo utente, non come root. Chiede la password quando " +"serve." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Comando sconosciuto: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "mai" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "proprio ora" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 minuto fa" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d minuti fa" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 ora fa" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d ore fa" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 giorno fa" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d giorni fa" @@ -218,14 +237,17 @@ msgid "No face in view." msgstr "Nessun volto inquadrato." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Lo sblocco con il volto è in pausa dopo troppi tentativi. Sblocca una volta con la tua password." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Lo sblocco con il volto è in pausa dopo troppi tentativi. Sblocca una volta " +"con la tua password." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "Impossibile usare la fotocamera." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Mancano i modelli di riconoscimento. Reinstalla il pacchetto." @@ -252,7 +274,8 @@ msgstr "Qualcosa è andato storto (%s)." #: src/lib/daemon.sh:127 msgid "Look at the camera. Blink once, or turn your head a little." -msgstr "Guarda la fotocamera. Sbatti le palpebre una volta o gira un po' la testa." +msgstr "" +"Guarda la fotocamera. Sbatti le palpebre una volta o gira un po' la testa." #: src/lib/daemon.sh:137 msgid "Face found." @@ -317,19 +340,23 @@ msgid "Sign of life: %s" msgstr "Segno di vita: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Troppi tentativi. Lo sblocco con il volto è in pausa finché non sblocchi con la tua password." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Troppi tentativi. Lo sblocco con il volto è in pausa finché non sblocchi con " +"la tua password." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[s/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "ATTIVO" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "DISATTIVO" @@ -370,7 +397,7 @@ msgstr "lenta" msgid "%s seconds" msgstr "%s secondi" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automatica" @@ -390,8 +417,8 @@ msgstr "non in esecuzione" msgid "Turning face unlock on again starts it." msgstr "Riattivare lo sblocco con il volto lo avvia." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Volti" @@ -415,167 +442,231 @@ msgstr "Fotocamera" msgid "Lock screen" msgstr "Schermata di blocco" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Richieste di amministratore" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Controllo foto" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "In pausa" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "ancora per %d minuti, o finché non si usa la password" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Ultimo sblocco" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Sblocca la schermata di blocco quando vede il tuo volto. Disattivo: lì funziona solo la password." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "L'agente della schermata di blocco non è in esecuzione." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Esegue la scansione quando premi un tasto o muovi il mouse sulla schermata di blocco, e quando il computer si riattiva." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME non permette ad altri programmi di comparire sopra le sue finestre, " +"quindi su GNOME non c'è la bolla." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Esegue la scansione appena lo schermo si blocca. Disattivo di norma: se lo blocchi tu, si sbloccherebbe subito." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Sblocca la schermata di blocco quando vede il tuo volto. Disattivo: lì " +"funziona solo la password." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo usa il tuo volto al posto della password. Se non corrisponde, digiti la password come al solito." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Esegue la scansione quando premi un tasto o muovi il mouse sulla schermata " +"di blocco, e quando il computer si riattiva." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Le finestre della password di Plasma e delle app, per esempio quando installi software. Se non corrisponde, digiti la password." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Esegue la scansione appena lo schermo si blocca. Disattivo di norma: se lo " +"blocchi tu, si sbloccherebbe subito." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Devi sbattere le palpebre o girare un po' la testa. Questo ferma anche le foto stampate." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo usa il tuo volto al posto della password. Se non corrisponde, digiti la " +"password come al solito." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Le finestre della password del tuo desktop e delle app, per esempio quando " +"installi software. Se non corrisponde, digiti la password." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Devi sbattere le palpebre o girare un po' la testa. Questo ferma anche le " +"foto stampate." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Nessun controllo. Solo per provare una fotocamera." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Ferma le foto su un telefono, un tablet o carta lucida. Non serve sbattere le palpebre. Una foto stampata opaca può passare." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Ferma le foto su un telefono, un tablet o carta lucida. Non serve sbattere " +"le palpebre. Una foto stampata opaca può passare." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Meno scambi di persona, ma potrebbe non riconoscerti con gli occhiali o con poca luce." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Meno scambi di persona, ma potrebbe non riconoscerti con gli occhiali o con " +"poca luce." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Ti riconosce più facilmente, ma anche qualcuno che ti somiglia molto." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "Il valore predefinito. Va bene per la maggior parte delle persone." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "I tuoi occhi devono essere aperti e rivolti allo schermo. Così non si sblocca mentre guardi altrove o dormi." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"I tuoi occhi devono essere aperti e rivolti allo schermo. Così non si " +"sblocca mentre guardi altrove o dormi." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Automatica usa la prima fotocamera normale. Dopo un cambio, configura di nuovo il tuo volto. Una fotocamera a infrarossi ha bisogno della sua luce (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Automatica usa la prima fotocamera normale. Dopo un cambio, configura di " +"nuovo il tuo volto. Una fotocamera a infrarossi ha bisogno della sua luce " +"(linux-enable-ir-emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Per quanto tempo la fotocamera cerca il tuo volto prima di arrendersi." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Dopo una corrispondenza sicura, ricorda il tuo aspetto attuale. Così un nuovo taglio di capelli o gli occhiali non richiedono una nuova configurazione." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Dopo una corrispondenza sicura, ricorda il tuo aspetto attuale. Così un " +"nuovo taglio di capelli o gli occhiali non richiedono una nuova " +"configurazione." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Nessuna scansione quando il portatile è chiuso, per esempio alla scrivania con uno schermo esterno." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Nessuna scansione quando il portatile è chiuso, per esempio alla scrivania " +"con uno schermo esterno." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "La bolla in cima allo schermo mostra cosa sta facendo la fotocamera." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Una piccola pillola con un lucchetto che si apre." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "Un'isola con un volto che si guarda intorno, poi anelli e una spunta." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Quanto velocemente si muove la bolla." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Mostra la bolla anche quando sudo o una richiesta di amministratore scansiona il tuo volto." +msgstr "" +"Mostra la bolla anche quando sudo o una richiesta di amministratore " +"scansiona il tuo volto." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automatica (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(infrarossi)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(non collegata)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Impostazioni" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ scegli ←→ o Spazio: cambia q: indietro" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "per tutti gli utenti, chiede la tua password" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Su/Giù: scegli, Spazio: attiva/disattiva, r: rinomina, d: elimina, a: aggiungi, q: indietro" +msgstr "" +"Su/Giù: scegli, Spazio: attiva/disattiva, r: rinomina, d: elimina, a: " +"aggiungi, q: indietro" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Nessun volto ancora configurato. Premi a per aggiungerne uno." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Nuovo nome:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "Eliminare «%s»?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Attiva o disattiva lo sblocco con il volto" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Provalo" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Esci" @@ -591,7 +682,8 @@ msgstr "Su questo sistema non c'è una configurazione PAM per %s." #: src/lib/system.sh:47 msgid "This needs root, and neither sudo, run0 nor doas is installed." -msgstr "Servono i permessi di root, ma non è installato né sudo, né run0, né doas." +msgstr "" +"Servono i permessi di root, ma non è installato né sudo, né run0, né doas." #: src/lib/system.sh:56 msgid "This command has to run as root." @@ -607,6 +699,14 @@ msgstr "Impostazione non valida: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Non si può usare per questo servizio: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland non avvia da solo l'agente della schermata di blocco. Aggiungi " +"questa riga a %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Sblocca con il volto" @@ -765,33 +865,38 @@ msgstr "Ci è voluto troppo. Riprova con una buona luce." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "Il servizio di sblocco con il volto non è in esecuzione. Attiva prima lo sblocco con il volto." +msgstr "" +"Il servizio di sblocco con il volto non è in esecuzione. Attiva prima lo " +"sblocco con il volto." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." -msgstr "La fotocamera è occupata con un'altra scansione. Riprova tra un attimo." +msgstr "" +"La fotocamera è occupata con un'altra scansione. Riprova tra un attimo." #: src/agent/enrollcontroller.cpp:205 msgid "The face could not be added (%1)." msgstr "Impossibile aggiungere il volto (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Sblocco con il volto per KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Sblocco con il volto per la schermata di blocco, sudo e le richieste di " +"amministratore" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Configura un volto." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Come chiamare il nuovo volto." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Riproduci una volta le animazioni della bolla." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Stile della bolla per la demo: full o minimal." @@ -805,60 +910,71 @@ msgstr "Sbatti le palpebre o gira un po' la testa." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Lo sblocco con il volto è in pausa dopo troppi tentativi. Usa la tua password." +msgstr "" +"Lo sblocco con il volto è in pausa dopo troppi tentativi. Usa la tua " +"password." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Volto non riconosciuto." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Configura lo sblocco con il volto" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Sblocco con il volto" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Conferma che sei tu" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Tutto pronto" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "La configurazione non è terminata" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Guarda la fotocamera, poi muovi lentamente la testa in cerchio. Il tuo volto viene trasformato in numeri su questo computer e non viene mai salvato come immagine." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Guarda la fotocamera, poi muovi lentamente la testa in cerchio. Il tuo volto " +"viene trasformato in numeri su questo computer e non viene mai salvato come " +"immagine." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Blocca lo schermo e guardalo per provarlo. Dal menu puoi aggiungere un secondo aspetto, per esempio con gli occhiali." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Blocca lo schermo e guardalo per provarlo. Dal menu puoi aggiungere un " +"secondo aspetto, per esempio con gli occhiali." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Nome (facoltativo)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Annulla" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Termina ora" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Riprova" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Iniziamo" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Fatto" diff --git a/po/ja.po b/po/ja.po index d34829b..9526b9f 100644 --- a/po/ja.po +++ b/po/ja.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Japanese\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "顔認証のサービスを、このコンピューターで一度オンにする必要があります。パスワードが必要です。" +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"顔認証のサービスを、このコンピューターで一度オンにする必要があります。パス" +"ワードが必要です。" #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "確認するには: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "顔を登録するには、カメラの映像を画面に表示する必要があります。Plasma セッションの中で実行してください。" +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"顔を登録するには、カメラの映像を画面に表示する必要があります。デスクトップの" +"セッションの中で実行してください。" #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -49,8 +57,8 @@ msgstr "顔は追加されませんでした。" msgid "First, set up your face." msgstr "まず顔を登録してください。" -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "設定を保存できませんでした。" @@ -58,137 +66,143 @@ msgstr "設定を保存できませんでした。" msgid "Could not start the lock screen agent." msgstr "ロック画面エージェントを起動できませんでした。" -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "systemd のユーザーセッションがないため、ロック画面エージェントは起動されませんでした。" +msgstr "" +"systemd のユーザーセッションがないため、ロック画面エージェントは起動されませ" +"んでした。" -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." msgstr "顔認証はオンです。画面をロックして、画面を見て試してください。" -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "sudo や管理者の認証にも使えます。「設定」を参照してください。" -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgstr "顔認証はオフです。顔データは残っています。「顔」から削除できます。" -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "まだ顔が登録されていません。" -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "オン" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "オフ" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "サンプル %s 件、学習 %s 件" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "どの顔ですか? ID は `%s faces` で確認できます。" -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "削除しました。" -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "使い方: face-unlock [コマンド]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "コマンド:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "顔認証をオンにする" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "オフにする(顔データは残ります)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "顔を追加" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "顔の一覧" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "顔を削除" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "カメラを見て、カメラに映るものを確認する" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "オンになっている機能を表示" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "このヘルプを表示" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "バージョンを表示" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "コマンドなしで起動すると、対話式メニューが表示されます。" -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ねます。" +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ね" +"ます。" -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "不明なコマンド: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "なし" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "たった今" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 分前" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d 分前" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 時間前" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d 時間前" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 日前" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d 日前" @@ -218,14 +232,17 @@ msgid "No face in view." msgstr "顔が見えません。" #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "試行回数が多すぎるため、顔認証を一時停止しています。一度パスワードでロックを解除してください。" +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"試行回数が多すぎるため、顔認証を一時停止しています。一度パスワードでロックを" +"解除してください。" #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "カメラを使用できませんでした。" -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "認識モデルがありません。パッケージを再インストールしてください。" @@ -317,19 +334,23 @@ msgid "Sign of life: %s" msgstr "生体反応: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "試行回数が多すぎます。パスワードでロックを解除するまで、顔認証は一時停止します。" +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"試行回数が多すぎます。パスワードでロックを解除するまで、顔認証は一時停止しま" +"す。" #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[y/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "オン" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "オフ" @@ -370,7 +391,7 @@ msgstr "遅い" msgid "%s seconds" msgstr "%s 秒" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "自動" @@ -390,8 +411,8 @@ msgstr "停止中" msgid "Turning face unlock on again starts it." msgstr "顔認証をもう一度オンにすると起動します。" -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "顔" @@ -415,167 +436,224 @@ msgstr "カメラ" msgid "Lock screen" msgstr "ロック画面" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "管理者の認証" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "写真チェック" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "一時停止中" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "あと %d 分、またはパスワードが使われるまで" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "最後のロック解除" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "顔を認識するとロック画面を解除します。オフ: ロック画面ではパスワードだけが使えます。" +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "ロック画面エージェントが動いていません。" -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "ロック画面でキーを押すかマウスを動かしたとき、そしてコンピューターがスリープから復帰したときにスキャンします。" +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME はほかのプログラムを自分のウィンドウの上に表示させないため、GNOME では" +"バブルは表示されません。" -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "画面がロックされるとすぐにスキャンします。既定はオフ: 自分でロックすると、すぐに解除されてしまうためです。" +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"顔を認識するとロック画面を解除します。オフ: ロック画面ではパスワードだけが使" +"えます。" -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo でパスワードの代わりに顔を使います。一致しなければ、いつも通りパスワードを入力します。" +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"ロック画面でキーを押すかマウスを動かしたとき、そしてコンピューターがスリープ" +"から復帰したときにスキャンします。" -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Plasma やアプリのパスワード画面です(ソフトウェアのインストール時など)。一致しなければパスワードを入力します。" +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"画面がロックされるとすぐにスキャンします。既定はオフ: 自分でロックすると、す" +"ぐに解除されてしまうためです。" -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo でパスワードの代わりに顔を使います。一致しなければ、いつも通りパスワード" +"を入力します。" + +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"デスクトップやアプリのパスワード画面です(ソフトウェアのインストール時な" +"ど)。一致しなければパスワードを入力します。" + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." msgstr "まばたきするか、少し顔を動かす必要があります。印刷した写真も防げます。" -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "チェックしません。カメラを試すときだけ使ってください。" -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "スマホ、タブレット、光沢紙に映った写真を防ぎます。まばたきは不要です。つや消しの印刷写真は通ることがあります。" +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"スマホ、タブレット、光沢紙に映った写真を防ぎます。まばたきは不要です。つや消" +"しの印刷写真は通ることがあります。" -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "誤認識は減りますが、眼鏡をかけているときや暗いときに認識されないことがあります。" +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"誤認識は減りますが、眼鏡をかけているときや暗いときに認識されないことがありま" +"す。" -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "認識されやすくなりますが、あなたによく似た人も認識されやすくなります。" -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "既定値です。ほとんどの人に適しています。" -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "目を開けて画面を見ている必要があります。よそ見や居眠りの間にロック解除されません。" +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"目を開けて画面を見ている必要があります。よそ見や居眠りの間にロック解除されま" +"せん。" -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "「自動」は最初の通常のカメラを使います。変更したら顔を登録し直してください。赤外線カメラはライトをオンにする必要があります(linux-enable-ir-emitter)。" +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"「自動」は最初の通常のカメラを使います。変更したら顔を登録し直してください。" +"赤外線カメラはライトをオンにする必要があります(linux-enable-ir-emitter)。" -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "カメラが顔を探してからあきらめるまでの時間です。" -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "確実に一致したとき、今の見た目を覚えます。髪型を変えたり眼鏡をかけたりしても、登録し直す必要はありません。" +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"確実に一致したとき、今の見た目を覚えます。髪型を変えたり眼鏡をかけたりして" +"も、登録し直す必要はありません。" -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "ノートパソコンを閉じているときはスキャンしません。外部モニターにつないで机で使う場合などです。" +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"ノートパソコンを閉じているときはスキャンしません。外部モニターにつないで机で" +"使う場合などです。" -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "画面上部のバブルに、カメラの状態が表示されます。" -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "鍵が開く小さなピルです。" -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "あたりを見回す顔のアイランド。そのあとリングとチェックマークが出ます。" -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "バブルが動く速さです。" -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgstr "sudo や管理者の認証で顔をスキャンするときにもバブルを表示します。" -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "自動(%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(赤外線)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(未接続)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "設定" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ 選択 ←→ またはスペース: 変更 q: 戻る" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "全ユーザー共通、パスワードが必要" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "上/下: 選択、スペース: オン/オフ、r: 名前を変更、d: 削除、a: 追加、q: 戻る" +msgstr "" +"上/下: 選択、スペース: オン/オフ、r: 名前を変更、d: 削除、a: 追加、q: 戻る" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "まだ顔が登録されていません。a を押して追加してください。" -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "新しい名前:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "「%s」を削除しますか?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "顔認証のオン/オフ" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "試す" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "終了" @@ -591,7 +669,8 @@ msgstr "このシステムには %s の PAM 設定がありません。" #: src/lib/system.sh:47 msgid "This needs root, and neither sudo, run0 nor doas is installed." -msgstr "root 権限が必要ですが、sudo も run0 も doas もインストールされていません。" +msgstr "" +"root 権限が必要ですが、sudo も run0 も doas もインストールされていません。" #: src/lib/system.sh:56 msgid "This command has to run as root." @@ -607,6 +686,14 @@ msgstr "無効な設定です: %s=%s" msgid "Not a service this can be used for: %s" msgstr "このサービスには使えません: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland はロック画面エージェントを自動では起動しません。%s に次の行を追加し" +"てください:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "顔でロック解除" @@ -775,23 +862,23 @@ msgstr "カメラは別のスキャン中です。少ししてからもう一度 msgid "The face could not be added (%1)." msgstr "顔を追加できませんでした(%1)。" -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "KDE Plasma の顔認証" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "ロック画面、sudo、管理者の認証のための顔認証" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "顔を登録します。" -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "新しい顔の名前。" -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "バブルのアニメーションを一度再生します。" -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "デモのバブルスタイル: full または minimal。" @@ -805,60 +892,70 @@ msgstr "まばたきするか、少し顔を動かしてください。" #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "試行回数が多すぎるため、顔認証を一時停止しています。パスワードを使ってください。" +msgstr "" +"試行回数が多すぎるため、顔認証を一時停止しています。パスワードを使ってくださ" +"い。" #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "顔を認識できませんでした。" -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "顔認証の設定" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "顔認証" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "本人確認" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "準備ができました" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "設定が完了しませんでした" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "カメラを見てから、ゆっくり頭を回して円を描いてください。顔はこのコンピューター上で数値に変換され、画像として保存されることはありません。" +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"カメラを見てから、ゆっくり頭を回して円を描いてください。顔はこのコンピュー" +"ター上で数値に変換され、画像として保存されることはありません。" -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "画面をロックして、画面を見て試してください。眼鏡をかけた顔など、2 つ目の見た目をメニューから追加できます。" +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"画面をロックして、画面を見て試してください。眼鏡をかけた顔など、2 つ目の見た" +"目をメニューから追加できます。" -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "名前(任意)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "キャンセル" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "今すぐ完了" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "もう一度" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "はじめる" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "完了" diff --git a/po/ko.po b/po/ko.po index 6bf43ec..40cfae7 100644 --- a/po/ko.po +++ b/po/ko.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Korean\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "얼굴 잠금 해제 서비스를 이 컴퓨터에서 한 번 켜야 합니다. 이때 비밀번호가 필요합니다." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"얼굴 잠금 해제 서비스를 이 컴퓨터에서 한 번 켜야 합니다. 이때 비밀번호가 필요" +"합니다." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "확인 방법: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "얼굴을 등록하려면 카메라 화면이 보여야 합니다. Plasma 세션 안에서 실행하세요." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"얼굴을 등록하려면 카메라 화면이 보여야 합니다. 데스크톱 세션 안에서 실행하세" +"요." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -49,8 +57,8 @@ msgstr "얼굴이 추가되지 않았습니다." msgid "First, set up your face." msgstr "먼저 얼굴을 등록하세요." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "설정을 저장하지 못했습니다." @@ -58,137 +66,142 @@ msgstr "설정을 저장하지 못했습니다." msgid "Could not start the lock screen agent." msgstr "잠금 화면 에이전트를 시작하지 못했습니다." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." msgstr "systemd 사용자 세션이 없어 잠금 화면 에이전트를 시작하지 않았습니다." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "얼굴 잠금 해제가 켜졌습니다. 화면을 잠그고 화면을 바라보며 사용해 보세요." +msgstr "" +"얼굴 잠금 해제가 켜졌습니다. 화면을 잠그고 화면을 바라보며 사용해 보세요." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "sudo와 관리자 인증 창에서도 쓸 수 있습니다. 설정을 참고하세요." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "얼굴 잠금 해제가 꺼졌습니다. 얼굴 데이터는 남아 있으며, 얼굴 메뉴에서 삭제할 수 있습니다." +msgstr "" +"얼굴 잠금 해제가 꺼졌습니다. 얼굴 데이터는 남아 있으며, 얼굴 메뉴에서 삭제할 " +"수 있습니다." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "아직 등록된 얼굴이 없습니다." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "켜짐" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "꺼짐" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "샘플 %s개, 학습 %s개" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "어떤 얼굴인가요? ID는 `%s faces`에서 확인하세요." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "삭제했습니다." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "사용법: face-unlock [명령]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "명령:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "얼굴 잠금 해제 켜기" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "끄기 (얼굴 데이터는 유지)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "얼굴 추가" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "얼굴 목록" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "얼굴 삭제" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "카메라를 보고 카메라에 보이는 것을 확인" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "켜져 있는 기능 보기" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "이 도움말 보기" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "버전 보기" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "명령 없이 실행하면 대화형 메뉴가 나옵니다." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." msgstr "root가 아닌 본인 사용자로 실행하세요. 필요하면 비밀번호를 묻습니다." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "알 수 없는 명령: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "없음" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "방금" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1분 전" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d분 전" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1시간 전" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d시간 전" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1일 전" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d일 전" @@ -218,14 +231,17 @@ msgid "No face in view." msgstr "보이는 얼굴이 없습니다." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "시도가 너무 많아 얼굴 잠금 해제가 일시 중지되었습니다. 비밀번호로 한 번 잠금을 해제하세요." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"시도가 너무 많아 얼굴 잠금 해제가 일시 중지되었습니다. 비밀번호로 한 번 잠금" +"을 해제하세요." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "카메라를 사용할 수 없었습니다." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "인식 모델이 없습니다. 패키지를 다시 설치하세요." @@ -317,19 +333,23 @@ msgid "Sign of life: %s" msgstr "생체 신호: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "시도가 너무 많습니다. 비밀번호로 잠금을 해제할 때까지 얼굴 잠금 해제가 일시 중지됩니다." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"시도가 너무 많습니다. 비밀번호로 잠금을 해제할 때까지 얼굴 잠금 해제가 일시 " +"중지됩니다." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[y/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "켜짐" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "꺼짐" @@ -370,7 +390,7 @@ msgstr "느리게" msgid "%s seconds" msgstr "%s초" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "자동" @@ -390,8 +410,8 @@ msgstr "실행 중 아님" msgid "Turning face unlock on again starts it." msgstr "얼굴 잠금 해제를 다시 켜면 시작됩니다." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "얼굴" @@ -415,167 +435,223 @@ msgstr "카메라" msgid "Lock screen" msgstr "잠금 화면" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "관리자 인증 창" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "사진 검사" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "일시 중지됨" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "%d분 더, 또는 비밀번호를 사용할 때까지" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "마지막 잠금 해제" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "얼굴을 보면 잠금 화면을 해제합니다. 꺼짐: 잠금 화면에서는 비밀번호만 됩니다." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "잠금 화면 에이전트가 실행 중이 아닙니다." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "잠금 화면에서 키를 누르거나 마우스를 움직일 때, 그리고 컴퓨터가 깨어날 때 스캔합니다." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME은 다른 프로그램이 자기 창 위에 표시되는 것을 허용하지 않으므로 GNOME에" +"서는 버블이 없습니다." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "화면이 잠기자마자 스캔합니다. 기본값은 꺼짐: 직접 잠그면 곧바로 다시 풀려 버리기 때문입니다." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"얼굴을 보면 잠금 화면을 해제합니다. 꺼짐: 잠금 화면에서는 비밀번호만 됩니다." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo가 비밀번호 대신 얼굴을 사용합니다. 일치하지 않으면 평소처럼 비밀번호를 입력합니다." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"잠금 화면에서 키를 누르거나 마우스를 움직일 때, 그리고 컴퓨터가 깨어날 때 스" +"캔합니다." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Plasma와 앱의 비밀번호 창입니다. 예를 들어 소프트웨어를 설치할 때입니다. 일치하지 않으면 비밀번호를 입력합니다." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"화면이 잠기자마자 스캔합니다. 기본값은 꺼짐: 직접 잠그면 곧바로 다시 풀려 버" +"리기 때문입니다." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo가 비밀번호 대신 얼굴을 사용합니다. 일치하지 않으면 평소처럼 비밀번호를 " +"입력합니다." + +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"데스크톱과 앱의 비밀번호 창입니다. 예를 들어 소프트웨어를 설치할 때입니다. 일" +"치하지 않으면 비밀번호를 입력합니다." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." msgstr "눈을 깜빡이거나 고개를 살짝 돌려야 합니다. 인쇄한 사진도 막아 줍니다." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "검사하지 않습니다. 카메라를 시험할 때만 쓰세요." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "휴대폰, 태블릿, 광택지에 있는 사진을 막습니다. 눈을 깜빡일 필요는 없습니다. 무광 인쇄 사진은 통과할 수 있습니다." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"휴대폰, 태블릿, 광택지에 있는 사진을 막습니다. 눈을 깜빡일 필요는 없습니다. " +"무광 인쇄 사진은 통과할 수 있습니다." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "잘못 일치하는 경우가 줄지만, 안경을 쓰거나 조명이 나쁘면 알아보지 못할 수 있습니다." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"잘못 일치하는 경우가 줄지만, 안경을 쓰거나 조명이 나쁘면 알아보지 못할 수 있" +"습니다." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "더 쉽게 알아보지만, 당신과 많이 닮은 사람도 알아볼 수 있습니다." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "기본값입니다. 대부분의 사람에게 알맞습니다." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "눈을 뜨고 화면을 보고 있어야 합니다. 그래서 다른 곳을 보거나 자는 동안에는 풀리지 않습니다." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"눈을 뜨고 화면을 보고 있어야 합니다. 그래서 다른 곳을 보거나 자는 동안에는 풀" +"리지 않습니다." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "자동은 첫 번째 일반 카메라를 사용합니다. 바꾼 뒤에는 얼굴을 다시 등록하세요. 적외선 카메라는 조명을 켜야 합니다 (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"자동은 첫 번째 일반 카메라를 사용합니다. 바꾼 뒤에는 얼굴을 다시 등록하세요. " +"적외선 카메라는 조명을 켜야 합니다 (linux-enable-ir-emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "카메라가 포기하기 전까지 얼굴을 찾는 시간입니다." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "확실히 일치하면 지금 모습을 기억합니다. 그래서 머리 모양이 바뀌거나 안경을 써도 다시 등록할 필요가 없습니다." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"확실히 일치하면 지금 모습을 기억합니다. 그래서 머리 모양이 바뀌거나 안경을 써" +"도 다시 등록할 필요가 없습니다." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "노트북을 덮었을 때는 스캔하지 않습니다. 예를 들어 외부 모니터를 연결해 책상에서 쓸 때입니다." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"노트북을 덮었을 때는 스캔하지 않습니다. 예를 들어 외부 모니터를 연결해 책상에" +"서 쓸 때입니다." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "화면 위쪽의 버블이 카메라가 하는 일을 보여 줍니다." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "자물쇠가 열리는 작은 알약입니다." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "주위를 둘러보는 얼굴이 있는 아일랜드, 그다음 링과 체크 표시입니다." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "버블이 움직이는 속도입니다." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgstr "sudo나 관리자 인증 창이 얼굴을 스캔할 때도 버블을 보여 줍니다." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "자동 (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(적외선)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(연결 안 됨)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "설정" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ 선택 ←→ 또는 스페이스: 변경 q: 뒤로" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "모든 사용자에게 적용, 비밀번호 필요" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "위/아래: 선택, 스페이스: 켜기/끄기, r: 이름 바꾸기, d: 삭제, a: 추가, q: 뒤로" +msgstr "" +"위/아래: 선택, 스페이스: 켜기/끄기, r: 이름 바꾸기, d: 삭제, a: 추가, q: 뒤로" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "아직 등록된 얼굴이 없습니다. a를 눌러 추가하세요." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "새 이름:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "\"%s\" 항목을 삭제할까요?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "얼굴 잠금 해제 켜기/끄기" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "사용해 보기" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "끝내기" @@ -591,7 +667,8 @@ msgstr "이 시스템에는 %s용 PAM 설정이 없습니다." #: src/lib/system.sh:47 msgid "This needs root, and neither sudo, run0 nor doas is installed." -msgstr "root 권한이 필요하지만 sudo, run0, doas 중 아무것도 설치되어 있지 않습니다." +msgstr "" +"root 권한이 필요하지만 sudo, run0, doas 중 아무것도 설치되어 있지 않습니다." #: src/lib/system.sh:56 msgid "This command has to run as root." @@ -607,6 +684,14 @@ msgstr "올바르지 않은 설정: %s=%s" msgid "Not a service this can be used for: %s" msgstr "이 서비스에는 사용할 수 없습니다: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland는 잠금 화면 에이전트를 스스로 시작하지 않습니다. %s에 다음 줄을 추가" +"하세요:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "얼굴로 잠금 해제" @@ -765,7 +850,8 @@ msgstr "시간이 너무 오래 걸렸습니다. 밝은 곳에서 다시 시도 #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "얼굴 잠금 해제 서비스가 실행 중이 아닙니다. 먼저 얼굴 잠금 해제를 켜세요." +msgstr "" +"얼굴 잠금 해제 서비스가 실행 중이 아닙니다. 먼저 얼굴 잠금 해제를 켜세요." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +861,23 @@ msgstr "카메라가 다른 스캔으로 사용 중입니다. 잠시 후 다시 msgid "The face could not be added (%1)." msgstr "얼굴을 추가하지 못했습니다 (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "KDE Plasma용 얼굴 잠금 해제" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "잠금 화면, sudo, 관리자 인증 창을 위한 얼굴 잠금 해제" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "얼굴을 등록합니다." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "새 얼굴의 이름." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "버블 애니메이션을 한 번 재생합니다." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "데모용 버블 스타일: full 또는 minimal." @@ -805,60 +891,69 @@ msgstr "눈을 깜빡이거나 고개를 살짝 돌리세요." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "시도가 너무 많아 얼굴 잠금 해제가 일시 중지되었습니다. 비밀번호를 사용하세요." +msgstr "" +"시도가 너무 많아 얼굴 잠금 해제가 일시 중지되었습니다. 비밀번호를 사용하세요." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "얼굴을 인식하지 못했습니다." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "얼굴 잠금 해제 설정" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "얼굴 잠금 해제" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "본인 확인" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "모두 준비되었습니다" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "설정을 마치지 못했습니다" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "카메라를 본 다음 고개를 천천히 돌려 원을 그리세요. 얼굴은 이 컴퓨터에서 숫자로 바뀌며 사진으로 저장되지 않습니다." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"카메라를 본 다음 고개를 천천히 돌려 원을 그리세요. 얼굴은 이 컴퓨터에서 숫자" +"로 바뀌며 사진으로 저장되지 않습니다." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "화면을 잠그고 화면을 바라보며 사용해 보세요. 안경을 쓴 모습 같은 두 번째 모습을 메뉴에서 추가할 수 있습니다." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"화면을 잠그고 화면을 바라보며 사용해 보세요. 안경을 쓴 모습 같은 두 번째 모습" +"을 메뉴에서 추가할 수 있습니다." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "이름 (선택)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "취소" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "지금 완료" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "다시 시도" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "시작하기" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "완료" diff --git a/po/nl.po b/po/nl.po index f7887f3..0f872ad 100644 --- a/po/nl.po +++ b/po/nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Dutch\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "De dienst voor gezichtsontgrendeling moet één keer op deze computer worden ingeschakeld. Daarvoor is je wachtwoord nodig." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"De dienst voor gezichtsontgrendeling moet één keer op deze computer worden " +"ingeschakeld. Daarvoor is je wachtwoord nodig." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Controleer met: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Voor het instellen van een gezicht moet het camerabeeld op het scherm staan. Voer dit uit in je Plasma-sessie." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Voor het instellen van een gezicht moet het camerabeeld op het scherm staan. " +"Voer dit uit in je bureaubladsessie." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,8 @@ msgstr "Het gezicht is ingesteld." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "Gezichtsontgrendeling staat nog uit. Zet het aan met [1] of `%s enable`." +msgstr "" +"Gezichtsontgrendeling staat nog uit. Zet het aan met [1] of `%s enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +58,8 @@ msgstr "Er is geen gezicht toegevoegd." msgid "First, set up your face." msgstr "Stel eerst je gezicht in." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Kon de instelling niet opslaan." @@ -58,137 +67,147 @@ msgstr "Kon de instelling niet opslaan." msgid "Could not start the lock screen agent." msgstr "Kon de agent voor het vergrendelscherm niet starten." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Geen systemd-gebruikerssessie, dus de agent voor het vergrendelscherm is niet gestart." +msgstr "" +"Geen systemd-gebruikerssessie, dus de agent voor het vergrendelscherm is " +"niet gestart." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "Gezichtsontgrendeling staat aan. Vergrendel het scherm en kijk ernaar om het te proberen." +msgstr "" +"Gezichtsontgrendeling staat aan. Vergrendel het scherm en kijk ernaar om het " +"te proberen." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "Het werkt ook voor sudo en beheerdersvragen. Zie Instellingen." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Gezichtsontgrendeling staat uit. Je gezichten blijven bewaard; verwijder ze onder Gezichten." +msgstr "" +"Gezichtsontgrendeling staat uit. Je gezichten blijven bewaard; verwijder ze " +"onder Gezichten." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Er is nog geen gezicht ingesteld." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "aan" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "uit" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s opnames, %s bijgeleerd" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Welk gezicht? Zie `%s faces` voor de ID's." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Verwijderd." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Gebruik: face-unlock [opdracht]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Opdrachten:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Gezichtsontgrendeling aanzetten" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Uitzetten (gezichten blijven bewaard)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Een gezicht toevoegen" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "De gezichten tonen" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Een gezicht verwijderen" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "In de camera kijken en zien wat hij ziet" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Tonen wat er aan staat" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Deze hulp tonen" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "De versie tonen" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Zonder opdracht verschijnt een interactief menu." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je wachtwoord als dat nodig is." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je " +"wachtwoord als dat nodig is." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Onbekende opdracht: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "nooit" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "zojuist" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 minuut geleden" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d minuten geleden" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 uur geleden" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d uur geleden" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 dag geleden" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d dagen geleden" @@ -218,14 +237,17 @@ msgid "No face in view." msgstr "Geen gezicht in beeld." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Gezichtsontgrendeling is gepauzeerd na te veel pogingen. Ontgrendel één keer met je wachtwoord." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Gezichtsontgrendeling is gepauzeerd na te veel pogingen. Ontgrendel één keer " +"met je wachtwoord." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "De camera kon niet worden gebruikt." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "De herkenningsmodellen ontbreken. Installeer het pakket opnieuw." @@ -317,19 +339,23 @@ msgid "Sign of life: %s" msgstr "Teken van leven: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Dat waren te veel pogingen. Gezichtsontgrendeling is gepauzeerd tot je met je wachtwoord ontgrendelt." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Dat waren te veel pogingen. Gezichtsontgrendeling is gepauzeerd tot je met " +"je wachtwoord ontgrendelt." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[j/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "AAN" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "UIT" @@ -370,7 +396,7 @@ msgstr "langzaam" msgid "%s seconds" msgstr "%s seconden" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automatisch" @@ -390,8 +416,8 @@ msgstr "draait niet" msgid "Turning face unlock on again starts it." msgstr "Gezichtsontgrendeling opnieuw aanzetten start hem." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Gezichten" @@ -415,167 +441,228 @@ msgstr "Camera" msgid "Lock screen" msgstr "Vergrendelscherm" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Beheerdersvragen" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Fotocontrole" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Gepauzeerd" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "nog %d minuten, of tot het wachtwoord wordt gebruikt" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Laatste ontgrendeling" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Ontgrendelt het vergrendelscherm als het je gezicht ziet. Uit: daar werkt alleen je wachtwoord." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "De agent voor het vergrendelscherm draait niet." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Scant als je op het vergrendelscherm een toets indrukt of de muis beweegt, en als de computer ontwaakt." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME laat andere programma's niet boven zijn vensters verschijnen, dus op " +"GNOME is er geen bubbel." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Scant zodra het scherm vergrendelt. Standaard uit: vergrendel je zelf, dan zou het meteen weer ontgrendelen." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Ontgrendelt het vergrendelscherm als het je gezicht ziet. Uit: daar werkt " +"alleen je wachtwoord." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo neemt je gezicht in plaats van het wachtwoord. Geen match: je typt zoals gewoonlijk je wachtwoord." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Scant als je op het vergrendelscherm een toets indrukt of de muis beweegt, " +"en als de computer ontwaakt." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "De wachtwoordvensters van Plasma en apps, bijvoorbeeld bij het installeren van software. Geen match: je typt je wachtwoord." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Scant zodra het scherm vergrendelt. Standaard uit: vergrendel je zelf, dan " +"zou het meteen weer ontgrendelen." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Je moet knipperen of je hoofd een beetje draaien. Dat houdt ook geprinte foto's tegen." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo neemt je gezicht in plaats van het wachtwoord. Geen match: je typt " +"zoals gewoonlijk je wachtwoord." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"De wachtwoordvensters van je bureaublad en apps, bijvoorbeeld bij het " +"installeren van software. Geen match: je typt je wachtwoord." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Je moet knipperen of je hoofd een beetje draaien. Dat houdt ook geprinte " +"foto's tegen." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Helemaal geen controle. Alleen om een camera uit te proberen." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Houdt foto's op een telefoon, tablet of glanzend papier tegen. Knipperen is niet nodig. Een matte geprinte foto kan erdoor komen." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Houdt foto's op een telefoon, tablet of glanzend papier tegen. Knipperen is " +"niet nodig. Een matte geprinte foto kan erdoor komen." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Minder verwisselingen, maar met een bril of bij slecht licht herkent het je misschien niet." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Minder verwisselingen, maar met een bril of bij slecht licht herkent het je " +"misschien niet." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Herkent je makkelijker, maar ook iemand die veel op je lijkt." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "De standaard. Goed voor de meeste mensen." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Je ogen moeten open zijn en naar het scherm kijken. Zo ontgrendelt het niet als je wegkijkt of slaapt." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Je ogen moeten open zijn en naar het scherm kijken. Zo ontgrendelt het niet " +"als je wegkijkt of slaapt." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Automatisch neemt de eerste gewone camera. Stel na een wissel je gezicht opnieuw in. Een infraroodcamera heeft zijn lampje nodig (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Automatisch neemt de eerste gewone camera. Stel na een wissel je gezicht " +"opnieuw in. Een infraroodcamera heeft zijn lampje nodig (linux-enable-ir-" +"emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Hoe lang de camera naar je gezicht zoekt voordat hij opgeeft." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Na een zekere match onthoudt het hoe je er nu uitziet. Een nieuw kapsel of een bril vraagt dus niet om opnieuw instellen." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Na een zekere match onthoudt het hoe je er nu uitziet. Een nieuw kapsel of " +"een bril vraagt dus niet om opnieuw instellen." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Geen scan als de laptop dicht is, bijvoorbeeld aan een bureau met een extern scherm." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Geen scan als de laptop dicht is, bijvoorbeeld aan een bureau met een extern " +"scherm." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "De bubbel boven aan het scherm laat zien wat de camera doet." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Een kleine pil met een slot dat opengaat." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "Een eiland met een gezicht dat rondkijkt, daarna ringen en een vinkje." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Hoe snel de bubbel beweegt." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgstr "Toont de bubbel ook als sudo of een beheerdersvraag je gezicht scant." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automatisch (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(infrarood)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(niet aangesloten)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Instellingen" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ kiezen ←→ of Spatie: wijzigen q: terug" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "voor alle gebruikers, vraagt om je wachtwoord" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Omhoog/Omlaag: kiezen, Spatie: aan/uit, r: hernoemen, d: verwijderen, a: toevoegen, q: terug" +msgstr "" +"Omhoog/Omlaag: kiezen, Spatie: aan/uit, r: hernoemen, d: verwijderen, a: " +"toevoegen, q: terug" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Er is nog geen gezicht ingesteld. Druk op a om er een toe te voegen." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Nieuwe naam:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "“%s” verwijderen?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Gezichtsontgrendeling aan- of uitzetten" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Uitproberen" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Afsluiten" @@ -591,7 +678,9 @@ msgstr "Er is op dit systeem geen PAM-configuratie voor %s." #: src/lib/system.sh:47 msgid "This needs root, and neither sudo, run0 nor doas is installed." -msgstr "Dit heeft root nodig, maar sudo, run0 en doas zijn geen van alle geïnstalleerd." +msgstr "" +"Dit heeft root nodig, maar sudo, run0 en doas zijn geen van alle " +"geïnstalleerd." #: src/lib/system.sh:56 msgid "This command has to run as root." @@ -607,6 +696,14 @@ msgstr "Geen geldige instelling: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Hier kan het niet voor worden gebruikt: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland start de agent voor het vergrendelscherm niet zelf. Voeg deze regel " +"toe aan %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Ontgrendelen met je gezicht" @@ -757,7 +854,8 @@ msgstr "De camera kon niet worden gebruikt: %1" #: src/agent/enrollcontroller.cpp:197 msgid "The face recognition models are missing. Reinstall the package." -msgstr "De modellen voor gezichtsherkenning ontbreken. Installeer het pakket opnieuw." +msgstr "" +"De modellen voor gezichtsherkenning ontbreken. Installeer het pakket opnieuw." #: src/agent/enrollcontroller.cpp:199 msgid "That took too long. Try again, in good light." @@ -765,7 +863,9 @@ msgstr "Dat duurde te lang. Probeer het opnieuw, bij goed licht." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "De dienst voor gezichtsontgrendeling draait niet. Zet eerst gezichtsontgrendeling aan." +msgstr "" +"De dienst voor gezichtsontgrendeling draait niet. Zet eerst " +"gezichtsontgrendeling aan." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +875,24 @@ msgstr "De camera is bezig met een andere scan. Probeer het zo opnieuw." msgid "The face could not be added (%1)." msgstr "Het gezicht kon niet worden toegevoegd (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Gezichtsontgrendeling voor KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Gezichtsontgrendeling voor het vergrendelscherm, sudo en beheerdersvragen" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Een gezicht instellen." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Hoe het nieuwe gezicht moet heten." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "De animaties van de bubbel één keer afspelen." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Bubbelstijl voor de demo: full of minimal." @@ -805,60 +906,70 @@ msgstr "Knipper, of draai je hoofd een beetje." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Gezichtsontgrendeling is gepauzeerd na te veel pogingen. Gebruik je wachtwoord." +msgstr "" +"Gezichtsontgrendeling is gepauzeerd na te veel pogingen. Gebruik je " +"wachtwoord." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Gezicht niet herkend." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Gezichtsontgrendeling instellen" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Gezichtsontgrendeling" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Bevestig dat jij het bent" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Alles klaar" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "Het instellen is niet afgerond" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Kijk in de camera en beweeg dan je hoofd langzaam in een cirkel. Je gezicht wordt op deze computer omgezet in getallen en nooit als foto opgeslagen." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Kijk in de camera en beweeg dan je hoofd langzaam in een cirkel. Je gezicht " +"wordt op deze computer omgezet in getallen en nooit als foto opgeslagen." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Vergrendel het scherm en kijk ernaar om het te proberen. In het menu kun je een tweede look toevoegen, bijvoorbeeld met bril." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Vergrendel het scherm en kijk ernaar om het te proberen. In het menu kun je " +"een tweede look toevoegen, bijvoorbeeld met bril." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Naam (optioneel)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Annuleren" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Nu afronden" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Opnieuw proberen" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Aan de slag" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Klaar" diff --git a/po/pl.po b/po/pl.po index a38f5e5..e7100f1 100644 --- a/po/pl.po +++ b/po/pl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Polish\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "Usługę odblokowywania twarzą trzeba raz włączyć na tym komputerze. Potrzebne jest do tego twoje hasło." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"Usługę odblokowywania twarzą trzeba raz włączyć na tym komputerze. Potrzebne " +"jest do tego twoje hasło." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Sprawdź poleceniem: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Do skonfigurowania twarzy obraz z kamery musi być widoczny na ekranie. Uruchom to w swojej sesji Plasmy." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Do skonfigurowania twarzy obraz z kamery musi być widoczny na ekranie. " +"Uruchom to w swojej sesji pulpitu." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,9 @@ msgstr "Twarz jest skonfigurowana." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "Odblokowywanie twarzą jest nadal wyłączone. Włącz je przez [1] lub `%s enable`." +msgstr "" +"Odblokowywanie twarzą jest nadal wyłączone. Włącz je przez [1] lub `%s " +"enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +59,8 @@ msgstr "Nie dodano żadnej twarzy." msgid "First, set up your face." msgstr "Najpierw skonfiguruj swoją twarz." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Nie udało się zapisać ustawienia." @@ -58,137 +68,147 @@ msgstr "Nie udało się zapisać ustawienia." msgid "Could not start the lock screen agent." msgstr "Nie udało się uruchomić agenta ekranu blokady." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Brak sesji użytkownika systemd, więc agent ekranu blokady nie został uruchomiony." +msgstr "" +"Brak sesji użytkownika systemd, więc agent ekranu blokady nie został " +"uruchomiony." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "Odblokowywanie twarzą jest włączone. Zablokuj ekran i spójrz na niego, aby wypróbować." +msgstr "" +"Odblokowywanie twarzą jest włączone. Zablokuj ekran i spójrz na niego, aby " +"wypróbować." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "Działa też dla sudo i okien administratora. Zobacz Ustawienia." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Odblokowywanie twarzą jest wyłączone. Twoje twarze zostają zachowane; usuniesz je w Twarzach." +msgstr "" +"Odblokowywanie twarzą jest wyłączone. Twoje twarze zostają zachowane; " +"usuniesz je w Twarzach." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Nie skonfigurowano jeszcze żadnej twarzy." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "wł." -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "wył." -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "próbki: %s, wyuczone: %s" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Która twarz? Identyfikatory pokazuje `%s faces`." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Usunięto." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Użycie: face-unlock [polecenie]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Polecenia:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Włącz odblokowywanie twarzą" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Wyłącz je (twarze zostają zachowane)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Dodaj twarz" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Pokaż listę twarzy" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Usuń twarz" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Spójrz w kamerę i zobacz, co widzi" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Pokaż, co jest włączone" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Pokaż tę pomoc" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Pokaż wersję" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Bez polecenia wyświetla się interaktywne menu." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy będzie potrzebne." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy " +"będzie potrzebne." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Nieznane polecenie: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "nigdy" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "przed chwilą" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 minutę temu" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d min temu" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 godzinę temu" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d godz. temu" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 dzień temu" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d dni temu" @@ -218,14 +238,17 @@ msgid "No face in view." msgstr "Brak twarzy w kadrze." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Odblokowywanie twarzą jest wstrzymane po zbyt wielu próbach. Odblokuj raz hasłem." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Odblokowywanie twarzą jest wstrzymane po zbyt wielu próbach. Odblokuj raz " +"hasłem." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "Nie udało się użyć kamery." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Brakuje modeli rozpoznawania. Zainstaluj pakiet ponownie." @@ -317,19 +340,23 @@ msgid "Sign of life: %s" msgstr "Oznaka życia: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "To było za dużo prób. Odblokowywanie twarzą jest wstrzymane, dopóki nie odblokujesz hasłem." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"To było za dużo prób. Odblokowywanie twarzą jest wstrzymane, dopóki nie " +"odblokujesz hasłem." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[t/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "WŁ." -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "WYŁ." @@ -370,7 +397,7 @@ msgstr "wolna" msgid "%s seconds" msgstr "%s s" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automatyczna" @@ -390,8 +417,8 @@ msgstr "nie działa" msgid "Turning face unlock on again starts it." msgstr "Ponowne włączenie odblokowywania twarzą ją uruchomi." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Twarze" @@ -415,167 +442,229 @@ msgstr "Kamera" msgid "Lock screen" msgstr "Ekran blokady" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Okna administratora" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Wykrywanie zdjęć" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Wstrzymane" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "jeszcze %d min lub do użycia hasła" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Ostatnie odblokowanie" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Odblokowuje ekran blokady, gdy widzi twoją twarz. Wyłączone: działa tam tylko hasło." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "Agent ekranu blokady nie działa." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Skanuje, gdy naciśniesz klawisz lub poruszysz myszą na ekranie blokady, oraz gdy komputer się wybudzi." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME nie pozwala innym programom wyświetlać się nad swoimi oknami, więc w " +"GNOME nie ma dymka." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Skanuje od razu po zablokowaniu ekranu. Domyślnie wyłączone: gdy zablokujesz sam, od razu by się odblokował." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Odblokowuje ekran blokady, gdy widzi twoją twarz. Wyłączone: działa tam " +"tylko hasło." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo przyjmuje twarz zamiast hasła. Gdy nie pasuje, wpisujesz hasło jak zwykle." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Skanuje, gdy naciśniesz klawisz lub poruszysz myszą na ekranie blokady, oraz " +"gdy komputer się wybudzi." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Okna haseł Plasmy i aplikacji, na przykład przy instalowaniu programów. Gdy twarz nie pasuje, wpisujesz hasło." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Skanuje od razu po zablokowaniu ekranu. Domyślnie wyłączone: gdy zablokujesz " +"sam, od razu by się odblokował." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Musisz mrugnąć albo lekko obrócić głowę. To zatrzymuje też wydrukowane zdjęcia." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo przyjmuje twarz zamiast hasła. Gdy nie pasuje, wpisujesz hasło jak " +"zwykle." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Okna haseł pulpitu i aplikacji, na przykład przy instalowaniu programów. Gdy " +"twarz nie pasuje, wpisujesz hasło." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Musisz mrugnąć albo lekko obrócić głowę. To zatrzymuje też wydrukowane " +"zdjęcia." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Bez żadnej kontroli. Tylko do wypróbowania kamery." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Zatrzymuje zdjęcia na telefonie, tablecie lub błyszczącym papierze. Nie trzeba mrugać. Matowy wydruk może przejść." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Zatrzymuje zdjęcia na telefonie, tablecie lub błyszczącym papierze. Nie " +"trzeba mrugać. Matowy wydruk może przejść." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Mniej pomyłek, ale może cię nie rozpoznać w okularach albo przy słabym świetle." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Mniej pomyłek, ale może cię nie rozpoznać w okularach albo przy słabym " +"świetle." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Łatwiej cię rozpoznaje, ale też kogoś bardzo do ciebie podobnego." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "Domyślna. Pasuje większości osób." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Twoje oczy muszą być otwarte i patrzeć na ekran. Dzięki temu nie odblokuje, gdy patrzysz w bok lub śpisz." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Twoje oczy muszą być otwarte i patrzeć na ekran. Dzięki temu nie odblokuje, " +"gdy patrzysz w bok lub śpisz." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Automatyczna bierze pierwszą zwykłą kamerę. Po zmianie skonfiguruj twarz od nowa. Kamera na podczerwień potrzebuje włączonego światła (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Automatyczna bierze pierwszą zwykłą kamerę. Po zmianie skonfiguruj twarz od " +"nowa. Kamera na podczerwień potrzebuje włączonego światła (linux-enable-ir-" +"emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Jak długo kamera szuka twojej twarzy, zanim się podda." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Po pewnym dopasowaniu zapamiętuje, jak teraz wyglądasz. Nowa fryzura czy okulary nie wymagają więc ponownej konfiguracji." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Po pewnym dopasowaniu zapamiętuje, jak teraz wyglądasz. Nowa fryzura czy " +"okulary nie wymagają więc ponownej konfiguracji." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Bez skanowania, gdy laptop jest zamknięty, na przykład przy biurku z zewnętrznym ekranem." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Bez skanowania, gdy laptop jest zamknięty, na przykład przy biurku z " +"zewnętrznym ekranem." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "Dymek u góry ekranu pokazuje, co robi kamera." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Mała pigułka z kłódką, która się otwiera." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "Wyspa z twarzą, która się rozgląda, potem pierścienie i ptaszek." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Jak szybko porusza się dymek." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Pokazuje dymek także wtedy, gdy sudo lub okno administratora skanuje twarz." +msgstr "" +"Pokazuje dymek także wtedy, gdy sudo lub okno administratora skanuje twarz." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automatyczna (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(podczerwień)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(niepodłączona)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Ustawienia" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ wybierz ←→ lub Spacja: zmień q: wstecz" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "dla wszystkich użytkowników, pyta o hasło" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Góra/Dół: wybierz, Spacja: wł./wył., r: zmień nazwę, d: usuń, a: dodaj, q: wstecz" +msgstr "" +"Góra/Dół: wybierz, Spacja: wł./wył., r: zmień nazwę, d: usuń, a: dodaj, q: " +"wstecz" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Nie skonfigurowano jeszcze żadnej twarzy. Naciśnij a, aby dodać." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Nowa nazwa:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "Usunąć „%s”?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Włącz lub wyłącz odblokowywanie twarzą" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Wypróbuj" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Zakończ" @@ -591,7 +680,8 @@ msgstr "Na tym systemie nie ma konfiguracji PAM dla %s." #: src/lib/system.sh:47 msgid "This needs root, and neither sudo, run0 nor doas is installed." -msgstr "To wymaga roota, a nie jest zainstalowane ani sudo, ani run0, ani doas." +msgstr "" +"To wymaga roota, a nie jest zainstalowane ani sudo, ani run0, ani doas." #: src/lib/system.sh:56 msgid "This command has to run as root." @@ -607,6 +697,13 @@ msgstr "Nieprawidłowe ustawienie: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Nie można tego użyć dla tej usługi: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland nie uruchamia sam agenta ekranu blokady. Dodaj ten wiersz do %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Odblokowuj twarzą" @@ -765,7 +862,9 @@ msgstr "To trwało za długo. Spróbuj ponownie przy dobrym świetle." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "Usługa odblokowywania twarzą nie działa. Najpierw włącz odblokowywanie twarzą." +msgstr "" +"Usługa odblokowywania twarzą nie działa. Najpierw włącz odblokowywanie " +"twarzą." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +874,23 @@ msgstr "Kamera jest zajęta innym skanowaniem. Spróbuj ponownie za chwilę." msgid "The face could not be added (%1)." msgstr "Nie udało się dodać twarzy (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Odblokowywanie twarzą dla KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "Odblokowywanie twarzą dla ekranu blokady, sudo i okien administratora" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Skonfiguruj twarz." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Jak nazwać nową twarz." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Odtwórz raz animacje dymka." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Styl dymka w demo: full lub minimal." @@ -805,60 +904,70 @@ msgstr "Mrugnij albo lekko obróć głowę." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Odblokowywanie twarzą jest wstrzymane po zbyt wielu próbach. Użyj hasła." +msgstr "" +"Odblokowywanie twarzą jest wstrzymane po zbyt wielu próbach. Użyj hasła." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Nie rozpoznano twarzy." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Skonfiguruj odblokowywanie twarzą" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Odblokowywanie twarzą" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Potwierdź, że to ty" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Wszystko gotowe" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "Konfiguracja nie została ukończona" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Spójrz w kamerę, a potem powoli zatocz głową koło. Twoja twarz jest zamieniana na liczby na tym komputerze i nigdy nie jest zapisywana jako obraz." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Spójrz w kamerę, a potem powoli zatocz głową koło. Twoja twarz jest " +"zamieniana na liczby na tym komputerze i nigdy nie jest zapisywana jako " +"obraz." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Zablokuj ekran i spójrz na niego, aby wypróbować. W menu możesz dodać drugi wygląd, na przykład w okularach." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Zablokuj ekran i spójrz na niego, aby wypróbować. W menu możesz dodać drugi " +"wygląd, na przykład w okularach." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Nazwa (opcjonalnie)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Anuluj" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Zakończ teraz" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Spróbuj ponownie" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Zaczynamy" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Gotowe" diff --git a/po/pt_BR.po b/po/pt_BR.po index 5f7bce6..b20cc1e 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:55+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Brazilian Portuguese\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "O serviço de desbloqueio facial precisa ser ativado uma vez neste computador. Para isso, é preciso a sua senha." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"O serviço de desbloqueio facial precisa ser ativado uma vez neste " +"computador. Para isso, é preciso a sua senha." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Verifique com: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Para configurar um rosto, a imagem da câmera precisa aparecer na tela. Execute isto dentro da sua sessão do Plasma." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Para configurar um rosto, a imagem da câmera precisa aparecer na tela. " +"Execute isto dentro da sua sessão da área de trabalho." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,8 @@ msgstr "O rosto está configurado." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "O desbloqueio facial ainda está desativado. Ative com [1] ou `%s enable`." +msgstr "" +"O desbloqueio facial ainda está desativado. Ative com [1] ou `%s enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +58,8 @@ msgstr "Nenhum rosto foi adicionado." msgid "First, set up your face." msgstr "Primeiro, configure o seu rosto." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Não foi possível salvar a configuração." @@ -58,137 +67,148 @@ msgstr "Não foi possível salvar a configuração." msgid "Could not start the lock screen agent." msgstr "Não foi possível iniciar o agente da tela de bloqueio." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Sem sessão de usuário do systemd, então o agente da tela de bloqueio não foi iniciado." +msgstr "" +"Sem sessão de usuário do systemd, então o agente da tela de bloqueio não foi " +"iniciado." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "O desbloqueio facial está ativado. Bloqueie a tela e olhe para ela para testar." +msgstr "" +"O desbloqueio facial está ativado. Bloqueie a tela e olhe para ela para " +"testar." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." -msgstr "Ele também funciona com sudo e pedidos de administrador. Veja Configurações." +msgstr "" +"Ele também funciona com sudo e pedidos de administrador. Veja Configurações." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "O desbloqueio facial está desativado. Seus rostos são mantidos; apague-os em Rostos." +msgstr "" +"O desbloqueio facial está desativado. Seus rostos são mantidos; apague-os em " +"Rostos." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Nenhum rosto configurado ainda." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "ativado" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "desativado" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s amostras, %s aprendidas" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Qual rosto? Veja `%s faces` para os IDs." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Apagado." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Uso: face-unlock [comando]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Comandos:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Ativar o desbloqueio facial" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Desativar (os rostos são mantidos)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Adicionar um rosto" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Listar os rostos" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Apagar um rosto" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Olhar para a câmera e ver o que ela vê" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Mostrar o que está ativado" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Mostrar esta ajuda" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Mostrar a versão" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Sem comando, um menu interativo é exibido." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Execute isto com o seu próprio usuário, não como root. Ele pede a sua senha quando precisa." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Execute isto com o seu próprio usuário, não como root. Ele pede a sua senha " +"quando precisa." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Comando desconhecido: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "nunca" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "agora mesmo" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "há 1 minuto" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "há %d minutos" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "há 1 hora" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "há %d horas" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "há 1 dia" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "há %d dias" @@ -218,14 +238,17 @@ msgid "No face in view." msgstr "Nenhum rosto à vista." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "O desbloqueio facial está pausado após tentativas demais. Desbloqueie uma vez com a sua senha." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"O desbloqueio facial está pausado após tentativas demais. Desbloqueie uma " +"vez com a sua senha." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "Não foi possível usar a câmera." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Os modelos de reconhecimento estão faltando. Reinstale o pacote." @@ -317,19 +340,23 @@ msgid "Sign of life: %s" msgstr "Sinal de vida: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Tentativas demais. O desbloqueio facial está pausado até você desbloquear com a sua senha." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Tentativas demais. O desbloqueio facial está pausado até você desbloquear " +"com a sua senha." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[s/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "ATIVADO" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "DESATIVADO" @@ -370,7 +397,7 @@ msgstr "lenta" msgid "%s seconds" msgstr "%s segundos" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "automática" @@ -390,8 +417,8 @@ msgstr "parado" msgid "Turning face unlock on again starts it." msgstr "Ativar o desbloqueio facial de novo o inicia." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Rostos" @@ -415,167 +442,231 @@ msgstr "Câmera" msgid "Lock screen" msgstr "Tela de bloqueio" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Pedidos de administrador" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Detecção de foto" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Pausado" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "por mais %d minutos, ou até a senha ser usada" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Último desbloqueio" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Desbloqueia a tela de bloqueio quando vê o seu rosto. Desativado: lá só a sua senha funciona." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "O agente da tela de bloqueio não está em execução." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Faz a leitura quando você aperta uma tecla ou mexe o mouse na tela de bloqueio, e quando o computador acorda." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"O GNOME não deixa outros programas aparecerem sobre as janelas dele, então " +"no GNOME não há bolha." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Faz a leitura assim que a tela é bloqueada. Desativado por padrão: se você mesmo bloquear, ela desbloquearia logo em seguida." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Desbloqueia a tela de bloqueio quando vê o seu rosto. Desativado: lá só a " +"sua senha funciona." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "O sudo usa o seu rosto em vez da senha. Se não corresponder, você digita a senha como sempre." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Faz a leitura quando você aperta uma tecla ou mexe o mouse na tela de " +"bloqueio, e quando o computador acorda." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "As janelas de senha do Plasma e dos apps, por exemplo ao instalar programas. Se não corresponder, você digita a senha." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Faz a leitura assim que a tela é bloqueada. Desativado por padrão: se você " +"mesmo bloquear, ela desbloquearia logo em seguida." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Você precisa piscar ou virar um pouco a cabeça. Isso também barra fotos impressas." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"O sudo usa o seu rosto em vez da senha. Se não corresponder, você digita a " +"senha como sempre." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"As janelas de senha da sua área de trabalho e dos apps, por exemplo ao " +"instalar programas. Se não corresponder, você digita a senha." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Você precisa piscar ou virar um pouco a cabeça. Isso também barra fotos " +"impressas." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Nenhuma verificação. Só para testar uma câmera." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Barra fotos em celular, tablet ou papel brilhante. Não é preciso piscar. Uma foto impressa em papel fosco pode passar." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Barra fotos em celular, tablet ou papel brilhante. Não é preciso piscar. Uma " +"foto impressa em papel fosco pode passar." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Menos confusões, mas talvez não reconheça você de óculos ou com pouca luz." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Menos confusões, mas talvez não reconheça você de óculos ou com pouca luz." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." -msgstr "Reconhece você com mais facilidade, mas também alguém muito parecido com você." +msgstr "" +"Reconhece você com mais facilidade, mas também alguém muito parecido com " +"você." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "O padrão. Serve para a maioria das pessoas." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Seus olhos precisam estar abertos e voltados para a tela. Assim não desbloqueia enquanto você olha para outro lado ou dorme." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Seus olhos precisam estar abertos e voltados para a tela. Assim não " +"desbloqueia enquanto você olha para outro lado ou dorme." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Automática usa a primeira câmera normal. Depois de trocar, configure o seu rosto de novo. Uma câmera infravermelha precisa da luz ligada (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Automática usa a primeira câmera normal. Depois de trocar, configure o seu " +"rosto de novo. Uma câmera infravermelha precisa da luz ligada (linux-enable-" +"ir-emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Quanto tempo a câmera procura o seu rosto antes de desistir." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Após uma correspondência segura, ele guarda a sua aparência atual. Assim, um corte de cabelo novo ou óculos não exigem nova configuração." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Após uma correspondência segura, ele guarda a sua aparência atual. Assim, um " +"corte de cabelo novo ou óculos não exigem nova configuração." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Nenhuma leitura com o notebook fechado, por exemplo numa mesa com uma tela externa." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Nenhuma leitura com o notebook fechado, por exemplo numa mesa com uma tela " +"externa." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "A bolha no topo da tela mostra o que a câmera está fazendo." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Uma pequena pílula com um cadeado que se abre." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "Uma ilha com um rosto que olha em volta, depois anéis e um visto." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "A velocidade com que a bolha se move." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Mostra a bolha também quando o sudo ou um pedido de administrador lê o seu rosto." +msgstr "" +"Mostra a bolha também quando o sudo ou um pedido de administrador lê o seu " +"rosto." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "automática (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(infravermelha)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(não conectada)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Configurações" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ escolher ←→ ou Espaço: mudar q: voltar" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "para todos os usuários, pede a sua senha" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Cima/Baixo: escolher, Espaço: ativar/desativar, r: renomear, d: apagar, a: adicionar, q: voltar" +msgstr "" +"Cima/Baixo: escolher, Espaço: ativar/desativar, r: renomear, d: apagar, a: " +"adicionar, q: voltar" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Nenhum rosto configurado ainda. Aperte a para adicionar um." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Novo nome:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "Apagar \"%s\"?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Ativar ou desativar o desbloqueio facial" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Testar" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Sair" @@ -607,6 +698,14 @@ msgstr "Configuração inválida: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Não pode ser usado para este serviço: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"O Hyprland não inicia o agente da tela de bloqueio sozinho. Adicione esta " +"linha a %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Desbloquear com o rosto" @@ -757,7 +856,8 @@ msgstr "Não foi possível usar a câmera: %1" #: src/agent/enrollcontroller.cpp:197 msgid "The face recognition models are missing. Reinstall the package." -msgstr "Os modelos de reconhecimento facial estão faltando. Reinstale o pacote." +msgstr "" +"Os modelos de reconhecimento facial estão faltando. Reinstale o pacote." #: src/agent/enrollcontroller.cpp:199 msgid "That took too long. Try again, in good light." @@ -765,7 +865,9 @@ msgstr "Demorou demais. Tente de novo, com boa luz." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "O serviço de desbloqueio facial não está em execução. Ative o desbloqueio facial primeiro." +msgstr "" +"O serviço de desbloqueio facial não está em execução. Ative o desbloqueio " +"facial primeiro." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +877,25 @@ msgstr "A câmera está ocupada com outra leitura. Tente de novo em instantes." msgid "The face could not be added (%1)." msgstr "Não foi possível adicionar o rosto (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Desbloqueio facial para o KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Desbloqueio facial para a tela de bloqueio, o sudo e os pedidos de " +"administrador" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Configurar um rosto." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Como chamar o novo rosto." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Reproduzir as animações da bolha uma vez." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Estilo da bolha para a demonstração: full ou minimal." @@ -805,60 +909,69 @@ msgstr "Pisque ou vire um pouco a cabeça." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "O desbloqueio facial está pausado após tentativas demais. Use a sua senha." +msgstr "" +"O desbloqueio facial está pausado após tentativas demais. Use a sua senha." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Rosto não reconhecido." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Configurar o desbloqueio facial" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Desbloqueio facial" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Confirme que é você" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Tudo pronto" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "A configuração não terminou" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Olhe para a câmera e depois mova a cabeça devagar em círculo. Seu rosto é transformado em números neste computador e nunca é salvo como imagem." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Olhe para a câmera e depois mova a cabeça devagar em círculo. Seu rosto é " +"transformado em números neste computador e nunca é salvo como imagem." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Bloqueie a tela e olhe para ela para testar. Você pode adicionar uma segunda aparência, de óculos por exemplo, pelo menu." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Bloqueie a tela e olhe para ela para testar. Você pode adicionar uma segunda " +"aparência, de óculos por exemplo, pelo menu." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Nome (opcional)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Cancelar" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Concluir agora" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Tentar de novo" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Começar" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Concluído" diff --git a/po/ru.po b/po/ru.po index 2039c01..f443dc8 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Russian\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "Службу разблокировки по лицу нужно один раз включить на этом компьютере. Для этого нужен ваш пароль." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"Службу разблокировки по лицу нужно один раз включить на этом компьютере. Для " +"этого нужен ваш пароль." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Проверьте командой: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Для настройки лица изображение с камеры должно быть видно на экране. Запустите это в своём сеансе Plasma." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Для настройки лица изображение с камеры должно быть видно на экране. " +"Запустите это в своём сеансе рабочего стола." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,9 @@ msgstr "Лицо настроено." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "Разблокировка по лицу всё ещё выключена. Включите её через [1] или `%s enable`." +msgstr "" +"Разблокировка по лицу всё ещё выключена. Включите её через [1] или `%s " +"enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +59,8 @@ msgstr "Лицо не добавлено." msgid "First, set up your face." msgstr "Сначала настройте своё лицо." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Не удалось сохранить настройку." @@ -58,137 +68,147 @@ msgstr "Не удалось сохранить настройку." msgid "Could not start the lock screen agent." msgstr "Не удалось запустить агент экрана блокировки." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Нет пользовательского сеанса systemd, поэтому агент экрана блокировки не запущен." +msgstr "" +"Нет пользовательского сеанса systemd, поэтому агент экрана блокировки не " +"запущен." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "Разблокировка по лицу включена. Заблокируйте экран и посмотрите на него, чтобы попробовать." +msgstr "" +"Разблокировка по лицу включена. Заблокируйте экран и посмотрите на него, " +"чтобы попробовать." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "Она работает и для sudo, и для запросов администратора. См. Настройки." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Разблокировка по лицу выключена. Ваши лица сохранены; удалить их можно в разделе Лица." +msgstr "" +"Разблокировка по лицу выключена. Ваши лица сохранены; удалить их можно в " +"разделе Лица." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Ещё не настроено ни одного лица." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "вкл." -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "выкл." -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "образцов: %s, выучено: %s" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Какое лицо? Номера показывает `%s faces`." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Удалено." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Использование: face-unlock [команда]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Команды:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Включить разблокировку по лицу" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Выключить её (лица сохраняются)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Добавить лицо" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Показать список лиц" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Удалить лицо" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Посмотреть в камеру и увидеть, что она видит" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Показать, что включено" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Показать эту справку" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Показать версию" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Без команды открывается интерактивное меню." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Запускайте это от своего пользователя, не от root. Пароль будет запрошен, когда он понадобится." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Запускайте это от своего пользователя, не от root. Пароль будет запрошен, " +"когда он понадобится." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Неизвестная команда: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "никогда" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "только что" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 минуту назад" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d мин назад" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 час назад" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d ч назад" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 день назад" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d дн. назад" @@ -218,14 +238,17 @@ msgid "No face in view." msgstr "Лица не видно." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Разблокировка по лицу приостановлена после слишком многих попыток. Разблокируйте один раз паролем." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Разблокировка по лицу приостановлена после слишком многих попыток. " +"Разблокируйте один раз паролем." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "Не удалось использовать камеру." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Нет моделей распознавания. Переустановите пакет." @@ -317,19 +340,23 @@ msgid "Sign of life: %s" msgstr "Признак жизни: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Слишком много попыток. Разблокировка по лицу приостановлена, пока вы не разблокируете паролем." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Слишком много попыток. Разблокировка по лицу приостановлена, пока вы не " +"разблокируете паролем." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[д/Н]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "ВКЛ" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "ВЫКЛ" @@ -370,7 +397,7 @@ msgstr "медленная" msgid "%s seconds" msgstr "%s с" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "автоматически" @@ -390,8 +417,8 @@ msgstr "не запущена" msgid "Turning face unlock on again starts it." msgstr "Повторное включение разблокировки по лицу запустит её." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Лица" @@ -415,167 +442,230 @@ msgstr "Камера" msgid "Lock screen" msgstr "Экран блокировки" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Запросы администратора" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Проверка на фото" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Приостановлено" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "ещё %d мин или до ввода пароля" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Последняя разблокировка" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Снимает блокировку экрана, когда видит ваше лицо. Выкл.: там работает только пароль." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "Агент экрана блокировки не запущен." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Сканирует, когда вы нажимаете клавишу или двигаете мышь на экране блокировки, и когда компьютер просыпается." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME не позволяет другим программам показываться поверх своих окон, поэтому " +"в GNOME пузыря нет." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Сканирует сразу после блокировки экрана. По умолчанию выкл.: если вы блокируете сами, он тут же разблокировался бы." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Снимает блокировку экрана, когда видит ваше лицо. Выкл.: там работает только " +"пароль." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo принимает ваше лицо вместо пароля. Не совпало: вы вводите пароль как обычно." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Сканирует, когда вы нажимаете клавишу или двигаете мышь на экране " +"блокировки, и когда компьютер просыпается." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Окна ввода пароля Plasma и приложений, например при установке программ. Не совпало: вы вводите пароль." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Сканирует сразу после блокировки экрана. По умолчанию выкл.: если вы " +"блокируете сами, он тут же разблокировался бы." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Нужно моргнуть или слегка повернуть голову. Это также останавливает распечатанные фото." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo принимает ваше лицо вместо пароля. Не совпало: вы вводите пароль как " +"обычно." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Окна ввода пароля рабочего стола и приложений, например при установке " +"программ. Не совпало: вы вводите пароль." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Нужно моргнуть или слегка повернуть голову. Это также останавливает " +"распечатанные фото." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Никакой проверки. Только чтобы опробовать камеру." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Останавливает фото на телефоне, планшете или глянцевой бумаге. Моргать не нужно. Матовое распечатанное фото может пройти." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Останавливает фото на телефоне, планшете или глянцевой бумаге. Моргать не " +"нужно. Матовое распечатанное фото может пройти." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Меньше ошибочных совпадений, но может не узнать вас в очках или при плохом свете." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Меньше ошибочных совпадений, но может не узнать вас в очках или при плохом " +"свете." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Узнаёт вас легче, но и того, кто очень на вас похож." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "По умолчанию. Подходит большинству." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Ваши глаза должны быть открыты и смотреть на экран. Так он не разблокируется, пока вы смотрите в сторону или спите." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Ваши глаза должны быть открыты и смотреть на экран. Так он не " +"разблокируется, пока вы смотрите в сторону или спите." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Автоматически берётся первая обычная камера. После смены настройте лицо заново. Инфракрасной камере нужна включённая подсветка (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Автоматически берётся первая обычная камера. После смены настройте лицо " +"заново. Инфракрасной камере нужна включённая подсветка (linux-enable-ir-" +"emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Как долго камера ищет ваше лицо, прежде чем сдаться." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "После уверенного совпадения запоминает, как вы выглядите сейчас. Новая стрижка или очки не требуют новой настройки." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"После уверенного совпадения запоминает, как вы выглядите сейчас. Новая " +"стрижка или очки не требуют новой настройки." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Без сканирования, когда ноутбук закрыт, например за столом с внешним монитором." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Без сканирования, когда ноутбук закрыт, например за столом с внешним " +"монитором." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "Пузырь вверху экрана показывает, что делает камера." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Маленькая таблетка с замком, который открывается." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "Остров с лицом, которое оглядывается, затем кольца и галочка." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Как быстро движется пузырь." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Показывает пузырь и тогда, когда sudo или запрос администратора сканирует ваше лицо." +msgstr "" +"Показывает пузырь и тогда, когда sudo или запрос администратора сканирует " +"ваше лицо." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "автоматически (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(инфракрасная)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(не подключена)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Настройки" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ выбор ←→ или Пробел: изменить q: назад" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "для всех пользователей, запрашивает пароль" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Вверх/Вниз: выбор, Пробел: вкл./выкл., r: переименовать, d: удалить, a: добавить, q: назад" +msgstr "" +"Вверх/Вниз: выбор, Пробел: вкл./выкл., r: переименовать, d: удалить, a: " +"добавить, q: назад" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Ещё не настроено ни одного лица. Нажмите a, чтобы добавить." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Новое имя:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "Удалить «%s»?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Включить или выключить разблокировку по лицу" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Попробовать" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Выход" @@ -607,6 +697,13 @@ msgstr "Недопустимая настройка: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Для этой службы использовать нельзя: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland сам не запускает агент экрана блокировки. Добавьте эту строку в %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Разблокировать по лицу" @@ -761,11 +858,14 @@ msgstr "Нет моделей распознавания лиц. Переуст #: src/agent/enrollcontroller.cpp:199 msgid "That took too long. Try again, in good light." -msgstr "Это заняло слишком много времени. Попробуйте ещё раз при хорошем свете." +msgstr "" +"Это заняло слишком много времени. Попробуйте ещё раз при хорошем свете." #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "Служба разблокировки по лицу не запущена. Сначала включите разблокировку по лицу." +msgstr "" +"Служба разблокировки по лицу не запущена. Сначала включите разблокировку по " +"лицу." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +875,24 @@ msgstr "Камера занята другим сканированием. По msgid "The face could not be added (%1)." msgstr "Не удалось добавить лицо (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Разблокировка по лицу для KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Разблокировка по лицу для экрана блокировки, sudo и запросов администратора" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Настроить лицо." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Как назвать новое лицо." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Один раз проиграть анимации пузыря." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Стиль пузыря для демо: full или minimal." @@ -805,60 +906,71 @@ msgstr "Моргните или слегка поверните голову." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Разблокировка по лицу приостановлена после слишком многих попыток. Введите пароль." +msgstr "" +"Разблокировка по лицу приостановлена после слишком многих попыток. Введите " +"пароль." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Лицо не распознано." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Настройка разблокировки по лицу" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Разблокировка по лицу" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Подтвердите, что это вы" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Всё готово" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "Настройка не завершена" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Посмотрите в камеру, затем медленно поведите головой по кругу. Ваше лицо превращается в числа на этом компьютере и никогда не сохраняется как изображение." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Посмотрите в камеру, затем медленно поведите головой по кругу. Ваше лицо " +"превращается в числа на этом компьютере и никогда не сохраняется как " +"изображение." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Заблокируйте экран и посмотрите на него, чтобы попробовать. В меню можно добавить второй облик, например в очках." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Заблокируйте экран и посмотрите на него, чтобы попробовать. В меню можно " +"добавить второй облик, например в очках." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Имя (необязательно)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Отмена" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Завершить сейчас" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Повторить" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Начать" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Готово" diff --git a/po/tr.po b/po/tr.po index 74a5537..a805fae 100644 --- a/po/tr.po +++ b/po/tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Turkish\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "Yüzle kilit açma hizmetinin bu bilgisayarda bir kez açılması gerekiyor. Bunun için parolanız gerekli." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"Yüzle kilit açma hizmetinin bu bilgisayarda bir kez açılması gerekiyor. " +"Bunun için parolanız gerekli." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Şununla kontrol edin: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Yüz kurmak için kamera görüntüsünün ekranda görünmesi gerekir. Bunu Plasma oturumunuzda çalıştırın." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Yüz kurmak için kamera görüntüsünün ekranda görünmesi gerekir. Bunu masaüstü " +"oturumunuzda çalıştırın." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -49,8 +57,8 @@ msgstr "Hiç yüz eklenmedi." msgid "First, set up your face." msgstr "Önce yüzünüzü kurun." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Ayar kaydedilemedi." @@ -58,137 +66,144 @@ msgstr "Ayar kaydedilemedi." msgid "Could not start the lock screen agent." msgstr "Kilit ekranı aracısı başlatılamadı." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "systemd kullanıcı oturumu yok, bu yüzden kilit ekranı aracısı başlatılmadı." +msgstr "" +"systemd kullanıcı oturumu yok, bu yüzden kilit ekranı aracısı başlatılmadı." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." msgstr "Yüzle kilit açma açık. Denemek için ekranı kilitleyin ve ona bakın." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "sudo ve yönetici istemlerinde de çalışabilir. Ayarlar'a bakın." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Yüzle kilit açma kapalı. Yüzleriniz saklanıyor; Yüzler bölümünden silebilirsiniz." +msgstr "" +"Yüzle kilit açma kapalı. Yüzleriniz saklanıyor; Yüzler bölümünden " +"silebilirsiniz." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Henüz hiç yüz kurulmadı." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "açık" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "kapalı" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s örnek, %s öğrenilen" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Hangi yüz? Kimlikler için `%s faces` komutuna bakın." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Silindi." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Kullanım: face-unlock [komut]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Komutlar:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Yüzle kilit açmayı aç" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Kapat (yüzler saklanır)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Yüz ekle" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Yüzleri listele" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Bir yüzü sil" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Kameraya bak ve onun ne gördüğünü gör" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Neyin açık olduğunu göster" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Bu yardımı göster" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Sürümü göster" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Komut verilmezse etkileşimli bir menü gösterilir." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde parolanızı sorar." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde " +"parolanızı sorar." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Bilinmeyen komut: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "hiçbir zaman" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "az önce" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 dakika önce" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d dakika önce" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 saat önce" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d saat önce" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 gün önce" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d gün önce" @@ -218,14 +233,17 @@ msgid "No face in view." msgstr "Görünürde yüz yok." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Çok fazla denemeden sonra yüzle kilit açma duraklatıldı. Bir kez parolanızla kilidi açın." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Çok fazla denemeden sonra yüzle kilit açma duraklatıldı. Bir kez parolanızla " +"kilidi açın." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "Kamera kullanılamadı." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Tanıma modelleri eksik. Paketi yeniden kurun." @@ -317,19 +335,23 @@ msgid "Sign of life: %s" msgstr "Canlılık işareti: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Çok fazla deneme oldu. Parolanızla kilidi açana kadar yüzle kilit açma duraklatıldı." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Çok fazla deneme oldu. Parolanızla kilidi açana kadar yüzle kilit açma " +"duraklatıldı." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[e/H]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "AÇIK" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "KAPALI" @@ -370,7 +392,7 @@ msgstr "yavaş" msgid "%s seconds" msgstr "%s saniye" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "otomatik" @@ -390,8 +412,8 @@ msgstr "çalışmıyor" msgid "Turning face unlock on again starts it." msgstr "Yüzle kilit açmayı yeniden açmak onu başlatır." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Yüzler" @@ -415,167 +437,227 @@ msgstr "Kamera" msgid "Lock screen" msgstr "Kilit ekranı" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Yönetici istemleri" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Fotoğraf denetimi" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Duraklatıldı" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "%d dakika daha ya da parola kullanılana kadar" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Son kilit açma" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Yüzünüzü görünce kilit ekranını açar. Kapalı: orada yalnızca parolanız çalışır." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "Kilit ekranı aracısı çalışmıyor." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Kilit ekranında bir tuşa bastığınızda ya da fareyi oynattığınızda ve bilgisayar uyandığında tarar." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME başka programların kendi pencerelerinin üstünde görünmesine izin " +"vermez, bu yüzden GNOME'da baloncuk yoktur." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Ekran kilitlenir kilitlenmez tarar. Varsayılan olarak kapalı: kendiniz kilitlerseniz hemen yeniden açılırdı." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Yüzünüzü görünce kilit ekranını açar. Kapalı: orada yalnızca parolanız " +"çalışır." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo parola yerine yüzünüzü kullanır. Eşleşmezse parolayı her zamanki gibi yazarsınız." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Kilit ekranında bir tuşa bastığınızda ya da fareyi oynattığınızda ve " +"bilgisayar uyandığında tarar." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Plasma ve uygulamaların parola pencereleri, örneğin yazılım kurarken. Eşleşmezse parolayı yazarsınız." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Ekran kilitlenir kilitlenmez tarar. Varsayılan olarak kapalı: kendiniz " +"kilitlerseniz hemen yeniden açılırdı." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Göz kırpmanız ya da başınızı biraz çevirmeniz gerekir. Bu, basılı fotoğrafları da durdurur." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo parola yerine yüzünüzü kullanır. Eşleşmezse parolayı her zamanki gibi " +"yazarsınız." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Masaüstünüzün ve uygulamaların parola pencereleri, örneğin yazılım kurarken. " +"Eşleşmezse parolayı yazarsınız." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Göz kırpmanız ya da başınızı biraz çevirmeniz gerekir. Bu, basılı " +"fotoğrafları da durdurur." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Hiç denetim yok. Yalnızca bir kamerayı denemek için." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Telefon, tablet ya da parlak kâğıttaki fotoğrafları durdurur. Göz kırpmanız gerekmez. Mat basılı bir fotoğraf geçebilir." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Telefon, tablet ya da parlak kâğıttaki fotoğrafları durdurur. Göz kırpmanız " +"gerekmez. Mat basılı bir fotoğraf geçebilir." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Daha az yanlış eşleşme, ama gözlükle ya da kötü ışıkta sizi tanımayabilir." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Daha az yanlış eşleşme, ama gözlükle ya da kötü ışıkta sizi tanımayabilir." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Sizi daha kolay tanır, ama size çok benzeyen birini de." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "Varsayılan. Çoğu kişi için uygun." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Gözleriniz açık ve ekrana dönük olmalı. Böylece başka yere bakarken ya da uyurken kilit açılmaz." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Gözleriniz açık ve ekrana dönük olmalı. Böylece başka yere bakarken ya da " +"uyurken kilit açılmaz." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Otomatik, ilk normal kamerayı seçer. Değiştirdikten sonra yüzünüzü yeniden kurun. Kızılötesi kameranın ışığının açık olması gerekir (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Otomatik, ilk normal kamerayı seçer. Değiştirdikten sonra yüzünüzü yeniden " +"kurun. Kızılötesi kameranın ışığının açık olması gerekir (linux-enable-ir-" +"emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Kameranın vazgeçmeden önce yüzünüzü ne kadar aradığı." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Kesin bir eşleşmeden sonra şu anki görünüşünüzü hatırlar. Böylece yeni saç kesimi ya da gözlük yeniden kurulum gerektirmez." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Kesin bir eşleşmeden sonra şu anki görünüşünüzü hatırlar. Böylece yeni saç " +"kesimi ya da gözlük yeniden kurulum gerektirmez." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." msgstr "Dizüstü kapalıyken tarama yok, örneğin harici ekranlı bir masada." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "Ekranın üstündeki baloncuk kameranın ne yaptığını gösterir." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Açılan bir kilidi olan küçük bir hap." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." -msgstr "Etrafına bakan bir yüzü olan bir ada, ardından halkalar ve bir onay işareti." +msgstr "" +"Etrafına bakan bir yüzü olan bir ada, ardından halkalar ve bir onay işareti." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Baloncuğun ne kadar hızlı hareket ettiği." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "sudo ya da bir yönetici istemi yüzünüzü taradığında da baloncuğu gösterir." +msgstr "" +"sudo ya da bir yönetici istemi yüzünüzü taradığında da baloncuğu gösterir." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "otomatik (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(kızılötesi)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(bağlı değil)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Ayarlar" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ seç ←→ ya da Boşluk: değiştir q: geri" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "tüm kullanıcılar için, parolanızı sorar" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Yukarı/Aşağı: seç, Boşluk: aç/kapat, r: yeniden adlandır, d: sil, a: ekle, q: geri" +msgstr "" +"Yukarı/Aşağı: seç, Boşluk: aç/kapat, r: yeniden adlandır, d: sil, a: ekle, " +"q: geri" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Henüz hiç yüz kurulmadı. Eklemek için a tuşuna basın." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Yeni ad:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "\"%s\" silinsin mi?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Yüzle kilit açmayı aç ya da kapat" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Dene" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Çık" @@ -607,6 +689,14 @@ msgstr "Geçerli bir ayar değil: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Bunun için kullanılamaz: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland kilit ekranı aracısını kendiliğinden başlatmaz. Bu satırı %s " +"dosyasına ekleyin:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Yüzünüzle kilidi açın" @@ -775,23 +865,23 @@ msgstr "Kamera başka bir taramayla meşgul. Birazdan yeniden deneyin." msgid "The face could not be added (%1)." msgstr "Yüz eklenemedi (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "KDE Plasma için yüzle kilit açma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "Kilit ekranı, sudo ve yönetici istemleri için yüzle kilit açma" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Bir yüz kur." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Yeni yüzün adı." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Baloncuğun animasyonlarını bir kez oynat." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Demo için baloncuk stili: full ya da minimal." @@ -805,60 +895,70 @@ msgstr "Göz kırpın ya da başınızı biraz çevirin." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Çok fazla denemeden sonra yüzle kilit açma duraklatıldı. Parolanızı kullanın." +msgstr "" +"Çok fazla denemeden sonra yüzle kilit açma duraklatıldı. Parolanızı kullanın." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Yüz tanınmadı." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Yüzle kilit açmayı kur" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Yüzle kilit açma" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Siz olduğunuzu onaylayın" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Her şey hazır" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "Kurulum tamamlanmadı" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Kameraya bakın, sonra başınızı yavaşça bir daire çizerek hareket ettirin. Yüzünüz bu bilgisayarda sayılara dönüştürülür ve asla resim olarak kaydedilmez." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Kameraya bakın, sonra başınızı yavaşça bir daire çizerek hareket ettirin. " +"Yüzünüz bu bilgisayarda sayılara dönüştürülür ve asla resim olarak " +"kaydedilmez." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Denemek için ekranı kilitleyin ve ona bakın. Menüden ikinci bir görünüm, örneğin gözlüklü, ekleyebilirsiniz." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Denemek için ekranı kilitleyin ve ona bakın. Menüden ikinci bir görünüm, " +"örneğin gözlüklü, ekleyebilirsiniz." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Ad (isteğe bağlı)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "İptal" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Şimdi bitir" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Yeniden dene" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Başlayalım" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Bitti" diff --git a/po/uk.po b/po/uk.po index 439d07d..53e8e5b 100644 --- a/po/uk.po +++ b/po/uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Ukrainian\n" @@ -16,8 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." -msgstr "Службу розблокування обличчям треба один раз увімкнути на цьому комп'ютері. Для цього потрібен ваш пароль." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." +msgstr "" +"Службу розблокування обличчям треба один раз увімкнути на цьому комп'ютері. " +"Для цього потрібен ваш пароль." #: src/face-unlock:57 #, sh-printf-format @@ -25,8 +29,12 @@ msgid "Check it with: systemctl status %s" msgstr "Перевірте командою: systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "Для налаштування обличчя зображення з камери має бути видно на екрані. Запустіть це у своєму сеансі Plasma." +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "" +"Для налаштування обличчя зображення з камери має бути видно на екрані. " +"Запустіть це у своєму сеансі робочого столу." #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -39,7 +47,9 @@ msgstr "Обличчя налаштовано." #: src/face-unlock:83 #, sh-printf-format msgid "Face unlock is still off. Turn it on with [1] or `%s enable`." -msgstr "Розблокування обличчям досі вимкнено. Увімкніть його через [1] або `%s enable`." +msgstr "" +"Розблокування обличчям досі вимкнено. Увімкніть його через [1] або `%s " +"enable`." #: src/face-unlock:87 msgid "No face was added." @@ -49,8 +59,8 @@ msgstr "Обличчя не додано." msgid "First, set up your face." msgstr "Спершу налаштуйте своє обличчя." -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "Не вдалося зберегти налаштування." @@ -58,137 +68,148 @@ msgstr "Не вдалося зберегти налаштування." msgid "Could not start the lock screen agent." msgstr "Не вдалося запустити агент екрана блокування." -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." -msgstr "Немає користувацького сеансу systemd, тому агент екрана блокування не запущено." +msgstr "" +"Немає користувацького сеансу systemd, тому агент екрана блокування не " +"запущено." -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." -msgstr "Розблокування обличчям увімкнено. Заблокуйте екран і подивіться на нього, щоб спробувати." +msgstr "" +"Розблокування обличчям увімкнено. Заблокуйте екран і подивіться на нього, " +"щоб спробувати." -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." -msgstr "Воно працює і для sudo, і для запитів адміністратора. Див. Налаштування." +msgstr "" +"Воно працює і для sudo, і для запитів адміністратора. Див. Налаштування." -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." -msgstr "Розблокування обличчям вимкнено. Ваші обличчя збережено; видалити їх можна в розділі Обличчя." +msgstr "" +"Розблокування обличчям вимкнено. Ваші обличчя збережено; видалити їх можна в " +"розділі Обличчя." -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "Ще не налаштовано жодного обличчя." -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "увімк." -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "вимк." -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "зразків: %s, вивчено: %s" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "Яке обличчя? Номери показує `%s faces`." -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "Видалено." -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "Використання: face-unlock [команда]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "Команди:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "Увімкнути розблокування обличчям" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "Вимкнути його (обличчя зберігаються)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "Додати обличчя" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "Показати список облич" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "Видалити обличчя" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "Подивитися в камеру і побачити, що вона бачить" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "Показати, що увімкнено" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "Показати цю довідку" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "Показати версію" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "Без команди відкривається інтерактивне меню." -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." -msgstr "Запускайте це від свого користувача, не від root. Пароль буде запитано, коли він знадобиться." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." +msgstr "" +"Запускайте це від свого користувача, не від root. Пароль буде запитано, коли " +"він знадобиться." -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "Невідома команда: %s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "ніколи" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "щойно" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 хвилину тому" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d хв тому" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 годину тому" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d год тому" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 день тому" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d дн. тому" @@ -218,14 +239,17 @@ msgid "No face in view." msgstr "Обличчя не видно." #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." -msgstr "Розблокування обличчям призупинено після надто багатьох спроб. Розблокуйте один раз паролем." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." +msgstr "" +"Розблокування обличчям призупинено після надто багатьох спроб. Розблокуйте " +"один раз паролем." #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "Не вдалося використати камеру." -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "Немає моделей розпізнавання. Перевстановіть пакунок." @@ -317,19 +341,23 @@ msgid "Sign of life: %s" msgstr "Ознака життя: %s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." -msgstr "Надто багато спроб. Розблокування обличчям призупинено, доки ви не розблокуєте паролем." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." +msgstr "" +"Надто багато спроб. Розблокування обличчям призупинено, доки ви не " +"розблокуєте паролем." #. TRANSLATORS: the letter after "[" is the key for yes. y works too. #: src/lib/menu.sh:141 msgid "[y/N]" msgstr "[т/Н]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "УВІМК" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "ВИМК" @@ -370,7 +398,7 @@ msgstr "повільна" msgid "%s seconds" msgstr "%s с" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "автоматично" @@ -390,8 +418,8 @@ msgstr "не запущена" msgid "Turning face unlock on again starts it." msgstr "Повторне ввімкнення розблокування обличчям запустить її." -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "Обличчя" @@ -415,167 +443,229 @@ msgstr "Камера" msgid "Lock screen" msgstr "Екран блокування" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "Запити адміністратора" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "Перевірка на фото" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "Призупинено" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "ще %d хв або до введення пароля" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "Останнє розблокування" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." -msgstr "Розблоковує екран блокування, коли бачить ваше обличчя. Вимк.: там працює лише пароль." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "Агент екрана блокування не запущено." -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." -msgstr "Сканує, коли ви натискаєте клавішу або рухаєте мишею на екрані блокування, і коли комп'ютер прокидається." +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "" +"GNOME не дозволяє іншим програмам показуватися поверх своїх вікон, тому в " +"GNOME бульбашки немає." -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." -msgstr "Сканує одразу після блокування екрана. Типово вимк.: якщо ви блокуєте самі, він одразу б розблокувався." +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." +msgstr "" +"Розблоковує екран блокування, коли бачить ваше обличчя. Вимк.: там працює " +"лише пароль." -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." -msgstr "sudo приймає ваше обличчя замість пароля. Не збіглося: ви вводите пароль як зазвичай." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." +msgstr "" +"Сканує, коли ви натискаєте клавішу або рухаєте мишею на екрані блокування, і " +"коли комп'ютер прокидається." -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Вікна введення пароля Plasma і програм, наприклад під час встановлення програм. Не збіглося: ви вводите пароль." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." +msgstr "" +"Сканує одразу після блокування екрана. Типово вимк.: якщо ви блокуєте самі, " +"він одразу б розблокувався." -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." -msgstr "Треба кліпнути або трохи повернути голову. Це також зупиняє надруковані фото." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." +msgstr "" +"sudo приймає ваше обличчя замість пароля. Не збіглося: ви вводите пароль як " +"зазвичай." -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "" +"Вікна введення пароля робочого столу і програм, наприклад під час " +"встановлення програм. Не збіглося: ви вводите пароль." + +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." +msgstr "" +"Треба кліпнути або трохи повернути голову. Це також зупиняє надруковані фото." + +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "Жодної перевірки. Лише щоб випробувати камеру." -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." -msgstr "Зупиняє фото на телефоні, планшеті чи глянцевому папері. Кліпати не треба. Матове надруковане фото може пройти." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." +msgstr "" +"Зупиняє фото на телефоні, планшеті чи глянцевому папері. Кліпати не треба. " +"Матове надруковане фото може пройти." -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." -msgstr "Менше хибних збігів, але може не впізнати вас в окулярах або при поганому світлі." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." +msgstr "" +"Менше хибних збігів, але може не впізнати вас в окулярах або при поганому " +"світлі." -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "Впізнає вас легше, але й того, хто дуже на вас схожий." -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "Типове значення. Підходить більшості." -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." -msgstr "Ваші очі мають бути розплющені й дивитися на екран. Так він не розблокується, коли ви дивитеся вбік або спите." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." +msgstr "" +"Ваші очі мають бути розплющені й дивитися на екран. Так він не " +"розблокується, коли ви дивитеся вбік або спите." -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "Автоматично береться перша звичайна камера. Після зміни налаштуйте обличчя знову. Інфрачервоній камері потрібне ввімкнене підсвічування (linux-enable-ir-emitter)." +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"Автоматично береться перша звичайна камера. Після зміни налаштуйте обличчя " +"знову. Інфрачервоній камері потрібне ввімкнене підсвічування (linux-enable-" +"ir-emitter)." -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "Як довго камера шукає ваше обличчя, перш ніж здатися." -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." -msgstr "Після впевненого збігу запам'ятовує, як ви виглядаєте зараз. Нова зачіска чи окуляри не потребують нового налаштування." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." +msgstr "" +"Після впевненого збігу запам'ятовує, як ви виглядаєте зараз. Нова зачіска чи " +"окуляри не потребують нового налаштування." -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." -msgstr "Без сканування, коли ноутбук закрито, наприклад за столом із зовнішнім монітором." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." +msgstr "" +"Без сканування, коли ноутбук закрито, наприклад за столом із зовнішнім " +"монітором." -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "Бульбашка вгорі екрана показує, що робить камера." -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "Маленька пігулка із замком, що відкривається." -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "Острів з обличчям, яке озирається, потім кільця і галочка." -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "Як швидко рухається бульбашка." -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." -msgstr "Показує бульбашку й тоді, коли sudo або запит адміністратора сканує ваше обличчя." +msgstr "" +"Показує бульбашку й тоді, коли sudo або запит адміністратора сканує ваше " +"обличчя." -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "автоматично (%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(інфрачервона)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(не під'єднана)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "Налаштування" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ вибір ←→ або Пробіл: змінити q: назад" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "для всіх користувачів, запитує пароль" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" -msgstr "Вгору/Вниз: вибір, Пробіл: увімк./вимк., r: перейменувати, d: видалити, a: додати, q: назад" +msgstr "" +"Вгору/Вниз: вибір, Пробіл: увімк./вимк., r: перейменувати, d: видалити, a: " +"додати, q: назад" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "Ще не налаштовано жодного обличчя. Натисніть a, щоб додати." -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "Нова назва:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "Видалити «%s»?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "Увімкнути або вимкнути розблокування обличчям" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "Спробувати" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "Вийти" @@ -607,6 +697,13 @@ msgstr "Неприпустиме налаштування: %s=%s" msgid "Not a service this can be used for: %s" msgstr "Для цієї служби використати не можна: %s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "" +"Hyprland сам не запускає агент екрана блокування. Додайте цей рядок до %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "Розблоковувати обличчям" @@ -765,7 +862,9 @@ msgstr "Це тривало надто довго. Спробуйте ще ра #: src/agent/enrollcontroller.cpp:201 msgid "The face unlock service is not running. Turn face unlock on first." -msgstr "Служба розблокування обличчям не запущена. Спершу увімкніть розблокування обличчям." +msgstr "" +"Служба розблокування обличчям не запущена. Спершу увімкніть розблокування " +"обличчям." #: src/agent/enrollcontroller.cpp:203 msgid "The camera is busy with another scan. Try again in a moment." @@ -775,23 +874,24 @@ msgstr "Камера зайнята іншим скануванням. Спро msgid "The face could not be added (%1)." msgstr "Не вдалося додати обличчя (%1)." -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "Розблокування обличчям для KDE Plasma" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "" +"Розблокування обличчям для екрана блокування, sudo і запитів адміністратора" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "Налаштувати обличчя." -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "Як назвати нове обличчя." -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "Один раз програти анімації бульбашки." -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "Стиль бульбашки для демо: full або minimal." @@ -805,60 +905,71 @@ msgstr "Кліпніть або трохи поверніть голову." #: src/pam/pam_face_unlock.c:330 msgid "Face unlock is paused after too many tries. Use your password." -msgstr "Розблокування обличчям призупинено після надто багатьох спроб. Введіть пароль." +msgstr "" +"Розблокування обличчям призупинено після надто багатьох спроб. Введіть " +"пароль." #: src/pam/pam_face_unlock.c:334 msgid "Face not recognised." msgstr "Обличчя не розпізнано." -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "Налаштування розблокування обличчям" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "Розблокування обличчям" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "Підтвердьте, що це ви" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "Усе готово" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "Налаштування не завершено" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "Подивіться в камеру, потім повільно поведіть головою по колу. Ваше обличчя перетворюється на числа на цьому комп'ютері й ніколи не зберігається як зображення." +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"Подивіться в камеру, потім повільно поведіть головою по колу. Ваше обличчя " +"перетворюється на числа на цьому комп'ютері й ніколи не зберігається як " +"зображення." -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "Заблокуйте екран і подивіться на нього, щоб спробувати. У меню можна додати другий вигляд, наприклад в окулярах." +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"Заблокуйте екран і подивіться на нього, щоб спробувати. У меню можна додати " +"другий вигляд, наприклад в окулярах." -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "Назва (необов'язково)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "Скасувати" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "Завершити зараз" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "Повторити" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "Почати" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "Готово" diff --git a/po/zh_CN.po b/po/zh_CN.po index 8f339b4..4a8af1f 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: face-unlock 1.0.1\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" -"POT-Creation-Date: 2026-09-24 10:46+0200\n" +"POT-Creation-Date: 2026-09-25 09:29+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n" "Last-Translator: Felitendo\n" "Language-Team: Chinese (simplified)\n" @@ -16,7 +16,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: src/face-unlock:50 -msgid "Face unlock's service has to be switched on once for this computer. That needs your password." +msgid "" +"Face unlock's service has to be switched on once for this computer. That " +"needs your password." msgstr "人脸解锁服务需要在这台电脑上开启一次。这需要你的密码。" #: src/face-unlock:57 @@ -25,8 +27,10 @@ msgid "Check it with: systemctl status %s" msgstr "用以下命令检查:systemctl status %s" #: src/face-unlock:67 -msgid "Setting up a face needs the camera picture on screen. Run this inside your Plasma session." -msgstr "设置人脸需要在屏幕上显示摄像头画面。请在你的 Plasma 会话中运行。" +msgid "" +"Setting up a face needs the camera picture on screen. Run this inside your " +"desktop session." +msgstr "设置人脸需要在屏幕上显示摄像头画面。请在你的桌面会话中运行。" #: src/face-unlock:71 msgid "The setup window is open. Follow it there." @@ -49,8 +53,8 @@ msgstr "没有添加人脸。" msgid "First, set up your face." msgstr "请先设置你的人脸。" -#: src/face-unlock:100 src/face-unlock:120 src/lib/menu.sh:434 -#: src/lib/menu.sh:438 src/lib/menu.sh:444 src/lib/menu.sh:446 +#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 +#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 msgid "Could not save the setting." msgstr "无法保存设置。" @@ -58,137 +62,139 @@ msgstr "无法保存设置。" msgid "Could not start the lock screen agent." msgstr "无法启动锁屏代理。" -#: src/face-unlock:106 +#: src/face-unlock:107 msgid "No systemd user session, so the lock screen agent was not started." msgstr "没有 systemd 用户会话,因此未启动锁屏代理。" -#: src/face-unlock:113 +#: src/face-unlock:114 msgid "Face unlock is on. Lock the screen and look at it to try." msgstr "人脸解锁已开启。锁定屏幕并看着它来试试。" -#: src/face-unlock:115 +#: src/face-unlock:116 msgid "It can do sudo and admin prompts too. See Settings." msgstr "它也可以用于 sudo 和管理员授权。见“设置”。" -#: src/face-unlock:130 +#: src/face-unlock:131 msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgstr "人脸解锁已关闭。你的人脸会保留;可在“人脸”中删除。" -#: src/face-unlock:144 src/lib/daemon.sh:109 +#: src/face-unlock:145 src/lib/daemon.sh:109 msgid "No face is set up yet." msgstr "尚未设置任何人脸。" -#: src/face-unlock:148 src/lib/menu.sh:180 src/lib/menu.sh:594 +#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 msgid "on" msgstr "开" -#: src/face-unlock:148 src/lib/menu.sh:182 src/lib/menu.sh:192 -#: src/lib/menu.sh:595 +#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 +#: src/lib/menu.sh:609 msgid "off" msgstr "关" -#: src/face-unlock:150 src/lib/menu.sh:612 +#: src/face-unlock:151 src/lib/menu.sh:626 #, sh-printf-format msgid "%s samples, %s learned" msgstr "%s 个样本,已学习 %s 个" -#: src/face-unlock:156 +#: src/face-unlock:157 #, sh-printf-format msgid "Which face? See `%s faces` for the ids." msgstr "哪张人脸?用 `%s faces` 查看 ID。" -#: src/face-unlock:160 +#: src/face-unlock:161 msgid "Deleted." msgstr "已删除。" -#: src/face-unlock:171 +#: src/face-unlock:172 msgid "Usage: face-unlock [command]" msgstr "用法:face-unlock [命令]" -#: src/face-unlock:173 +#: src/face-unlock:174 msgid "Commands:" msgstr "命令:" -#: src/face-unlock:174 +#: src/face-unlock:175 msgid "Turn face unlock on" msgstr "开启人脸解锁" -#: src/face-unlock:175 +#: src/face-unlock:176 msgid "Turn it off (faces are kept)" msgstr "关闭(保留人脸)" -#: src/face-unlock:176 src/lib/menu.sh:678 +#: src/face-unlock:177 src/lib/menu.sh:692 msgid "Add a face" msgstr "添加人脸" -#: src/face-unlock:177 +#: src/face-unlock:178 msgid "List the faces" msgstr "列出人脸" -#: src/face-unlock:178 +#: src/face-unlock:179 msgid "Delete a face" msgstr "删除人脸" -#: src/face-unlock:179 +#: src/face-unlock:180 msgid "Look at the camera and see what it sees" msgstr "看着摄像头,查看它看到的画面" -#: src/face-unlock:180 +#: src/face-unlock:181 msgid "Show what is on" msgstr "显示已开启的功能" -#: src/face-unlock:181 +#: src/face-unlock:182 msgid "Show this help" msgstr "显示此帮助" -#: src/face-unlock:182 +#: src/face-unlock:183 msgid "Show the version" msgstr "显示版本" -#: src/face-unlock:184 +#: src/face-unlock:185 msgid "Without a command an interactive menu is shown." msgstr "不带命令时显示交互式菜单。" -#: src/face-unlock:203 -msgid "Run this as your own user, not as root. It asks for your password when it needs to." +#: src/face-unlock:204 +msgid "" +"Run this as your own user, not as root. It asks for your password when it " +"needs to." msgstr "请以你自己的用户运行,不要用 root。需要时会询问你的密码。" -#: src/face-unlock:221 src/lib/system.sh:89 +#: src/face-unlock:222 src/lib/system.sh:89 #, sh-printf-format msgid "Unknown command: %s" msgstr "未知命令:%s" -#: src/lib/common.sh:160 +#: src/lib/common.sh:169 msgid "never" msgstr "从未" -#: src/lib/common.sh:170 +#: src/lib/common.sh:179 msgid "just now" msgstr "刚刚" -#: src/lib/common.sh:172 +#: src/lib/common.sh:181 msgid "1 minute ago" msgstr "1 分钟前" -#: src/lib/common.sh:175 +#: src/lib/common.sh:184 #, sh-printf-format msgid "%d minutes ago" msgstr "%d 分钟前" -#: src/lib/common.sh:177 +#: src/lib/common.sh:186 msgid "1 hour ago" msgstr "1 小时前" -#: src/lib/common.sh:180 +#: src/lib/common.sh:189 #, sh-printf-format msgid "%d hours ago" msgstr "%d 小时前" -#: src/lib/common.sh:182 +#: src/lib/common.sh:191 msgid "1 day ago" msgstr "1 天前" -#: src/lib/common.sh:185 +#: src/lib/common.sh:194 #, sh-printf-format msgid "%d days ago" msgstr "%d 天前" @@ -218,14 +224,15 @@ msgid "No face in view." msgstr "画面中没有人脸。" #: src/lib/daemon.sh:108 -msgid "Face unlock is paused after too many tries. Unlock once with your password." +msgid "" +"Face unlock is paused after too many tries. Unlock once with your password." msgstr "尝试次数过多,人脸解锁已暂停。请用密码解锁一次。" #: src/lib/daemon.sh:110 msgid "The camera could not be used." msgstr "无法使用摄像头。" -#: src/lib/daemon.sh:111 src/lib/menu.sh:259 +#: src/lib/daemon.sh:111 src/lib/menu.sh:262 msgid "The recognition models are missing. Reinstall the package." msgstr "缺少识别模型。请重新安装软件包。" @@ -317,7 +324,9 @@ msgid "Sign of life: %s" msgstr "活体迹象:%s" #: src/lib/daemon.sh:173 -msgid "That was too many tries. Face unlock is paused until you unlock with your password." +msgid "" +"That was too many tries. Face unlock is paused until you unlock with your " +"password." msgstr "尝试次数过多。人脸解锁已暂停,直到你用密码解锁。" #. TRANSLATORS: the letter after "[" is the key for yes. y works too. @@ -325,11 +334,11 @@ msgstr "尝试次数过多。人脸解锁已暂停,直到你用密码解锁。 msgid "[y/N]" msgstr "[y/N]" -#: src/lib/menu.sh:172 src/lib/menu.sh:497 +#: src/lib/menu.sh:172 src/lib/menu.sh:509 msgid "ON" msgstr "开启" -#: src/lib/menu.sh:174 src/lib/menu.sh:498 +#: src/lib/menu.sh:174 src/lib/menu.sh:510 msgid "OFF" msgstr "关闭" @@ -370,7 +379,7 @@ msgstr "慢" msgid "%s seconds" msgstr "%s 秒" -#: src/lib/menu.sh:202 src/lib/menu.sh:409 +#: src/lib/menu.sh:202 src/lib/menu.sh:421 msgid "automatic" msgstr "自动" @@ -390,8 +399,8 @@ msgstr "未运行" msgid "Turning face unlock on again starts it." msgstr "重新开启人脸解锁即可启动它。" -#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:590 -#: src/lib/menu.sh:679 +#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 +#: src/lib/menu.sh:693 msgid "Faces" msgstr "人脸" @@ -415,167 +424,201 @@ msgstr "摄像头" msgid "Lock screen" msgstr "锁屏" -#: src/lib/menu.sh:249 +#: src/lib/menu.sh:252 msgid "sudo" msgstr "sudo" -#: src/lib/menu.sh:250 src/lib/menu.sh +#: src/lib/menu.sh:253 src/lib/menu.sh msgid "Admin prompts" msgstr "管理员授权" -#: src/lib/menu.sh:251 src/lib/menu.sh +#: src/lib/menu.sh:254 src/lib/menu.sh msgid "Photo check" msgstr "照片检测" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 msgid "Paused" msgstr "已暂停" -#: src/lib/menu.sh:254 +#: src/lib/menu.sh:257 #, sh-printf-format msgid "for %d more minutes, or until the password is used" msgstr "还有 %d 分钟,或直到使用密码" -#: src/lib/menu.sh:256 +#: src/lib/menu.sh:259 msgid "Last unlock" msgstr "上次解锁" -#: src/lib/menu.sh:300 -msgid "Unlocks the lock screen when it sees your face. Off: only your password works there." +#: src/lib/menu.sh:265 +msgid "The lock screen agent is not running." +msgstr "锁屏代理没有运行。" + +#: src/lib/menu.sh:308 +msgid "" +"GNOME does not let other programs show above its windows, so there is no " +"bubble on GNOME." +msgstr "GNOME 不允许其他程序显示在它的窗口之上,所以 GNOME 上没有气泡。" + +#: src/lib/menu.sh:312 +msgid "" +"Unlocks the lock screen when it sees your face. Off: only your password " +"works there." msgstr "看到你的脸时解锁锁屏。关闭:锁屏只能用密码。" -#: src/lib/menu.sh:301 -msgid "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." +#: src/lib/menu.sh:313 +msgid "" +"Scans when you press a key or move the mouse on the lock screen, and when " +"the computer wakes up." msgstr "在锁屏上按键或移动鼠标时,以及电脑唤醒时扫描。" -#: src/lib/menu.sh:302 -msgid "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." +#: src/lib/menu.sh:314 +msgid "" +"Scans as soon as the screen locks. Off by default: if you lock it yourself, " +"it would unlock again right away." msgstr "屏幕一锁定就扫描。默认关闭:如果是你自己锁的屏,它会马上又解锁。" -#: src/lib/menu.sh:303 -msgid "sudo takes your face instead of the password. No match: you type the password as usual." +#: src/lib/menu.sh:315 +msgid "" +"sudo takes your face instead of the password. No match: you type the " +"password as usual." msgstr "sudo 用你的脸代替密码。不匹配时,照常输入密码。" -#: src/lib/menu.sh:304 -msgid "The password windows of Plasma and apps, for example when you install software. No match: you type the password." -msgstr "Plasma 和应用的密码窗口,例如安装软件时。不匹配时,输入密码即可。" +#: src/lib/menu.sh:316 +msgid "" +"The password windows of your desktop and apps, for example when you install " +"software. No match: you type the password." +msgstr "桌面和应用的密码窗口,例如安装软件时。不匹配时,输入密码即可。" -#: src/lib/menu.sh:305 -msgid "You have to blink or turn your head a little. This also stops printed photos." +#: src/lib/menu.sh:317 +msgid "" +"You have to blink or turn your head a little. This also stops printed photos." msgstr "你需要眨眼或稍微转头。这也能挡住打印的照片。" -#: src/lib/menu.sh:306 +#: src/lib/menu.sh:318 msgid "No check at all. Only for trying out a camera." msgstr "完全不检测。仅用于试用摄像头。" -#: src/lib/menu.sh:307 -msgid "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." +#: src/lib/menu.sh:319 +msgid "" +"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " +"A matte printed photo can get through." msgstr "挡住手机、平板或光面纸上的照片。无需眨眼。哑光纸打印的照片可能会通过。" -#: src/lib/menu.sh:308 -msgid "Fewer wrong matches, but it may not know you with glasses or in bad light." +#: src/lib/menu.sh:320 +msgid "" +"Fewer wrong matches, but it may not know you with glasses or in bad light." msgstr "误认更少,但戴眼镜或光线不好时可能认不出你。" -#: src/lib/menu.sh:309 +#: src/lib/menu.sh:321 msgid "Knows you more easily, but also somebody who looks a lot like you." msgstr "更容易认出你,但也更容易认出和你长得很像的人。" -#: src/lib/menu.sh:310 +#: src/lib/menu.sh:322 msgid "The default. Right for most people." msgstr "默认值。适合大多数人。" -#: src/lib/menu.sh:311 -msgid "Your eyes have to be open and on the screen. So it does not unlock while you look away or sleep." +#: src/lib/menu.sh:323 +msgid "" +"Your eyes have to be open and on the screen. So it does not unlock while you " +"look away or sleep." msgstr "你的眼睛必须睁开并看着屏幕。这样你看向别处或睡着时不会解锁。" -#: src/lib/menu.sh:312 -msgid "Automatic takes the first normal camera. After a change, set up your face again. An infrared camera needs its light on (linux-enable-ir-emitter)." -msgstr "“自动”会使用第一个普通摄像头。更换后请重新设置人脸。红外摄像头需要打开它的补光灯(linux-enable-ir-emitter)。" +#: src/lib/menu.sh:324 +msgid "" +"Automatic takes the first normal camera. After a change, set up your face " +"again. An infrared camera needs its light on (linux-enable-ir-emitter)." +msgstr "" +"“自动”会使用第一个普通摄像头。更换后请重新设置人脸。红外摄像头需要打开它的补" +"光灯(linux-enable-ir-emitter)。" -#: src/lib/menu.sh:313 +#: src/lib/menu.sh:325 msgid "How long the camera looks for your face before it gives up." msgstr "摄像头寻找你的脸多久后放弃。" -#: src/lib/menu.sh:314 -msgid "After a sure match it keeps how you look now. So a new haircut or glasses need no new setup." +#: src/lib/menu.sh:326 +msgid "" +"After a sure match it keeps how you look now. So a new haircut or glasses " +"need no new setup." msgstr "确定匹配后,会记住你现在的样子。所以换了发型或戴上眼镜也无需重新设置。" -#: src/lib/menu.sh:315 -msgid "No scan while the laptop is closed, for example at a desk with an external screen." +#: src/lib/menu.sh:327 +msgid "" +"No scan while the laptop is closed, for example at a desk with an external " +"screen." msgstr "笔记本合上时不扫描,例如在接了外接显示器的桌前。" -#: src/lib/menu.sh:316 +#: src/lib/menu.sh:328 msgid "The bubble at the top of the screen shows what the camera is doing." msgstr "屏幕顶部的气泡显示摄像头正在做什么。" -#: src/lib/menu.sh:317 +#: src/lib/menu.sh:329 msgid "A small pill with a lock that opens." msgstr "一个带锁的小药丸,锁会打开。" -#: src/lib/menu.sh:318 +#: src/lib/menu.sh:330 msgid "An island with a face that looks around, then rings and a tick." msgstr "一个岛,里面有一张四处张望的脸,然后是圆环和一个对勾。" -#: src/lib/menu.sh:319 +#: src/lib/menu.sh:331 msgid "How fast the bubble moves." msgstr "气泡移动的速度。" -#: src/lib/menu.sh:320 +#: src/lib/menu.sh:332 msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgstr "sudo 或管理员授权扫描你的脸时也显示气泡。" -#: src/lib/menu.sh:405 +#: src/lib/menu.sh:417 #, sh-printf-format msgid "automatic (%s)" msgstr "自动(%s)" -#: src/lib/menu.sh:415 +#: src/lib/menu.sh:427 msgid "(infrared)" msgstr "(红外)" -#: src/lib/menu.sh:419 +#: src/lib/menu.sh:431 msgid "(not connected)" msgstr "(未连接)" -#: src/lib/menu.sh:494 src/lib/menu.sh:680 +#: src/lib/menu.sh:506 src/lib/menu.sh:694 msgid "Settings" msgstr "设置" -#: src/lib/menu.sh:495 +#: src/lib/menu.sh:507 msgid "↑↓ select ←→ or Space: change q: back" msgstr "↑↓ 选择 ←→ 或空格:更改 q:返回" -#: src/lib/menu.sh:496 +#: src/lib/menu.sh:508 msgid "for all users, asks for your password" msgstr "对所有用户生效,需要你的密码" #. TRANSLATORS: keep the letters, they are the keys. -#: src/lib/menu.sh:592 +#: src/lib/menu.sh:606 msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgstr "上/下:选择,空格:开/关,r:重命名,d:删除,a:添加,q:返回" -#: src/lib/menu.sh:593 +#: src/lib/menu.sh:607 msgid "No face is set up yet. Press a to add one." msgstr "尚未设置任何人脸。按 a 添加。" -#: src/lib/menu.sh:639 +#: src/lib/menu.sh:653 msgid "New name:" msgstr "新名称:" -#: src/lib/menu.sh:646 +#: src/lib/menu.sh:660 #, sh-printf-format msgid "Delete \"%s\"?" msgstr "删除“%s”?" -#: src/lib/menu.sh:677 +#: src/lib/menu.sh:691 msgid "Turn face unlock on or off" msgstr "开启或关闭人脸解锁" -#: src/lib/menu.sh:681 +#: src/lib/menu.sh:695 msgid "Try it" msgstr "试一试" -#: src/lib/menu.sh:682 +#: src/lib/menu.sh:696 msgid "Quit" msgstr "退出" @@ -607,6 +650,12 @@ msgstr "无效的设置:%s=%s" msgid "Not a service this can be used for: %s" msgstr "不能用于此服务:%s" +#: src/lib/system.sh:131 +#, sh-printf-format +msgid "" +"Hyprland does not start the lock screen agent by itself. Add this line to %s:" +msgstr "Hyprland 不会自动启动锁屏代理。请把这一行加入 %s:" + #: src/lib/menu.sh msgid "Unlock with your face" msgstr "用人脸解锁" @@ -775,23 +824,23 @@ msgstr "摄像头正忙于另一次扫描。请稍后重试。" msgid "The face could not be added (%1)." msgstr "无法添加人脸(%1)。" -#: src/agent/main.cpp:85 -msgid "Face unlock for KDE Plasma" -msgstr "KDE Plasma 人脸解锁" +#: src/agent/main.cpp:86 +msgid "Face unlock for the lock screen, sudo and admin prompts" +msgstr "用于锁屏、sudo 和管理员授权的人脸解锁" -#: src/agent/main.cpp:88 +#: src/agent/main.cpp:89 msgid "Set up a face." msgstr "设置一张人脸。" -#: src/agent/main.cpp:89 +#: src/agent/main.cpp:90 msgid "What to call the new face." msgstr "新人脸的名称。" -#: src/agent/main.cpp:90 +#: src/agent/main.cpp:91 msgid "Play the bubble's animations once." msgstr "播放一次气泡动画。" -#: src/agent/main.cpp:92 +#: src/agent/main.cpp:93 msgid "Bubble style for the demo: full or minimal." msgstr "演示用的气泡样式:full 或 minimal。" @@ -811,54 +860,61 @@ msgstr "尝试次数过多,人脸解锁已暂停。请使用密码。" msgid "Face not recognised." msgstr "未识别出人脸。" -#: src/agent/qml/Enroll.qml:22 +#: src/agent/qml/Enroll.qml:27 msgid "Set up Face Unlock" msgstr "设置人脸解锁" -#: src/agent/qml/Enroll.qml:105 +#: src/agent/qml/Enroll.qml:110 msgid "Face Unlock" msgstr "人脸解锁" -#: src/agent/qml/Enroll.qml:106 +#: src/agent/qml/Enroll.qml:111 msgid "Confirm it is you" msgstr "确认是你本人" -#: src/agent/qml/Enroll.qml:107 +#: src/agent/qml/Enroll.qml:112 msgid "You are all set" msgstr "一切就绪" -#: src/agent/qml/Enroll.qml:108 +#: src/agent/qml/Enroll.qml:113 msgid "Setup did not finish" msgstr "设置未完成" -#: src/agent/qml/Enroll.qml:121 -msgid "Look at the camera, then move your head slowly in a circle. Your face is turned into numbers on this computer and never stored as a picture." -msgstr "看着摄像头,然后慢慢转动头部画圈。你的脸会在这台电脑上转换为数字,绝不会以图片形式保存。" +#: src/agent/qml/Enroll.qml:126 +msgid "" +"Look at the camera, then move your head slowly in a circle. Your face is " +"turned into numbers on this computer and never stored as a picture." +msgstr "" +"看着摄像头,然后慢慢转动头部画圈。你的脸会在这台电脑上转换为数字,绝不会以图" +"片形式保存。" -#: src/agent/qml/Enroll.qml:123 -msgid "Lock the screen and look at it to try it out. You can add a second look, with glasses for example, from the menu." -msgstr "锁定屏幕并看着它来试试。你可以在菜单中添加第二种样貌,比如戴眼镜的样子。" +#: src/agent/qml/Enroll.qml:128 +msgid "" +"Lock the screen and look at it to try it out. You can add a second look, " +"with glasses for example, from the menu." +msgstr "" +"锁定屏幕并看着它来试试。你可以在菜单中添加第二种样貌,比如戴眼镜的样子。" -#: src/agent/qml/Enroll.qml:157 +#: src/agent/qml/Enroll.qml:162 msgid "Name (optional)" msgstr "名称(可选)" -#: src/agent/qml/Enroll.qml:172 +#: src/agent/qml/Enroll.qml:177 msgid "Cancel" msgstr "取消" -#: src/agent/qml/Enroll.qml:178 +#: src/agent/qml/Enroll.qml:183 msgid "Finish now" msgstr "立即完成" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Try again" msgstr "重试" -#: src/agent/qml/Enroll.qml:183 +#: src/agent/qml/Enroll.qml:188 msgid "Get started" msgstr "开始" -#: src/agent/qml/Enroll.qml:188 +#: src/agent/qml/Enroll.qml:193 msgid "Done" msgstr "完成" diff --git a/res/applications/io.github.loonixtools.face-unlock-agent.desktop b/res/applications/io.github.loonixtools.face-unlock-agent.desktop index d563fb7..f82b83c 100644 --- a/res/applications/io.github.loonixtools.face-unlock-agent.desktop +++ b/res/applications/io.github.loonixtools.face-unlock-agent.desktop @@ -1,19 +1,19 @@ [Desktop Entry] Type=Application Name=Face Unlock -Name[de]=Plasma-Gesichtsentsperrung -Name[fr]=Déverrouillage facial Plasma -Name[es]=Desbloqueo facial de Plasma -Name[it]=Sblocco con il volto di Plasma -Name[pt_BR]=Desbloqueio facial do Plasma -Name[nl]=Plasma-gezichtsontgrendeling -Name[pl]=Odblokowywanie twarzą w Plasmie -Name[ru]=Разблокировка по лицу для Plasma -Name[uk]=Розблокування обличчям для Plasma -Name[tr]=Plasma yüzle kilit açma -Name[zh_CN]=Plasma 人脸解锁 -Name[ja]=Plasma 顔認証 -Name[ko]=Plasma 얼굴 잠금 해제 +Name[de]=Gesichtsentsperrung +Name[fr]=Déverrouillage facial +Name[es]=Desbloqueo facial +Name[it]=Sblocco con il volto +Name[pt_BR]=Desbloqueio facial +Name[nl]=Gezichtsontgrendeling +Name[pl]=Odblokowywanie twarzą +Name[ru]=Разблокировка по лицу +Name[uk]=Розблокування обличчям +Name[tr]=Yüzle kilit açma +Name[zh_CN]=人脸解锁 +Name[ja]=顔認証 +Name[ko]=얼굴 잠금 해제 Comment=Unlocks the lock screen, sudo and admin prompts with your face Comment[de]=Entsperrt Sperrbildschirm, sudo und Admin-Abfragen mit deinem Gesicht Comment[fr]=Déverrouille l'écran de verrouillage, sudo et les demandes d'administration avec votre visage @@ -31,7 +31,6 @@ Comment[ko]=얼굴로 잠금 화면, sudo, 관리자 인증 창의 잠금을 해 Exec=@LIBEXECDIR@/face-unlock-agent Icon=face-unlock NoDisplay=true -OnlyShowIn=KDE; # KWin only lets a program show above the lock screen when its desktop file # asks for it by name. This is that file. X-KDE-Wayland-Interfaces=kde_lockscreen_overlay_v1 diff --git a/res/systemd/face-unlock-agent.service b/res/systemd/face-unlock-agent.service index fb6dd2c..bcc3e82 100644 --- a/res/systemd/face-unlock-agent.service +++ b/res/systemd/face-unlock-agent.service @@ -1,10 +1,10 @@ [Unit] -Description=Face unlock for KDE Plasma (lock screen and bubble) +Description=Face unlock (lock screen and bubble) Documentation=man:face-unlock(1) PartOf=graphical-session.target After=graphical-session.target -# Plasma on Wayland. The bubble is a layer-shell surface, and there is no such -# thing on X11. +# Wayland only: the bubble is a layer-shell surface, and the lock screen is +# watched through the compositor. ConditionEnvironment=WAYLAND_DISPLAY [Service] diff --git a/res/systemd/face-unlockd.service b/res/systemd/face-unlockd.service index 58da616..cfc7113 100644 --- a/res/systemd/face-unlockd.service +++ b/res/systemd/face-unlockd.service @@ -1,5 +1,5 @@ [Unit] -Description=Face unlock for KDE Plasma +Description=Face unlock Documentation=man:face-unlock(1) Requires=face-unlockd.socket After=face-unlockd.socket diff --git a/res/systemd/face-unlockd.socket b/res/systemd/face-unlockd.socket index d3fdac3..dd20d5b 100644 --- a/res/systemd/face-unlockd.socket +++ b/res/systemd/face-unlockd.socket @@ -1,5 +1,5 @@ [Unit] -Description=Face unlock for KDE Plasma (socket) +Description=Face unlock (socket) Documentation=man:face-unlock(1) [Socket] diff --git a/src/agent/agentsocket.cpp b/src/agent/agentsocket.cpp index b0e36e1..3130187 100644 --- a/src/agent/agentsocket.cpp +++ b/src/agent/agentsocket.cpp @@ -51,6 +51,13 @@ QString AgentSocket::path() return QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation) + QStringLiteral("/face-unlock/agent.socket"); } +bool AgentSocket::running() +{ + QLocalSocket probe; + probe.connectToServer(path()); + return probe.waitForConnected(500); +} + bool AgentSocket::listen() { const QString p = path(); diff --git a/src/agent/agentsocket.h b/src/agent/agentsocket.h index d85d52c..4b8045a 100644 --- a/src/agent/agentsocket.h +++ b/src/agent/agentsocket.h @@ -22,6 +22,10 @@ public: explicit AgentSocket(QObject *parent = nullptr); bool listen(); + // Whether another agent already listens here. Hyprland without a systemd + // session starts the agent from its own config, and that must not make + // two of them. + static bool running(); static QString path(); Q_SIGNALS: diff --git a/src/agent/bubblewindow.cpp b/src/agent/bubblewindow.cpp index 9094e8d..977e255 100644 --- a/src/agent/bubblewindow.cpp +++ b/src/agent/bubblewindow.cpp @@ -101,7 +101,8 @@ void BubbleWindow::allowOverLockscreen() return; } if (!m_overlay->isActive()) { - if (!warned) { + // Only KWin has the protocol. Anywhere else there is nothing to fix. + if (!warned && qEnvironmentVariable("XDG_CURRENT_DESKTOP").split(u':').contains(u"KDE")) { warned = true; qWarning("KWin does not let this program show above the lock screen; is its desktop file installed?"); } diff --git a/src/agent/bubblewindow.h b/src/agent/bubblewindow.h index 0318cf8..3f66c2d 100644 --- a/src/agent/bubblewindow.h +++ b/src/agent/bubblewindow.h @@ -11,6 +11,10 @@ // file lists the interface, which the one installed with this does. The // request has to be made for every new surface role, before it is mapped, so // it is repeated each time the window is shown again. +// +// Other compositors have no such thing. On Hyprland and Niri the lock screen +// covers the bubble, which shows again with the tick once it is gone. GNOME +// has no layer-shell at all, so there is no bubble there (see main.cpp). #pragma once diff --git a/src/agent/inputwatcher.cpp b/src/agent/inputwatcher.cpp index 5d01760..9b74682 100644 --- a/src/agent/inputwatcher.cpp +++ b/src/agent/inputwatcher.cpp @@ -2,6 +2,10 @@ #include "inputwatcher.h" +#include +#include +#include +#include #include #include #include @@ -54,6 +58,111 @@ private: bool m_fired = false; }; +namespace +{ +const QString MutterService = QStringLiteral("org.gnome.Mutter.IdleMonitor"); +const QString MutterPath = QStringLiteral("/org/gnome/Mutter/IdleMonitor/Core"); +} // namespace + +// GNOME's way: a watch that fires once nothing was touched for the calm, +// then one that fires at the next input. Each fires once and is gone. +class MutterIdle : public QObject +{ + Q_OBJECT +public: + MutterIdle(std::function input, QObject *parent) + : QObject(parent) + , m_input(std::move(input)) + { + QDBusConnection::sessionBus().connect(MutterService, MutterPath, MutterService, QStringLiteral("WatchFired"), this, SLOT(onFired(uint))); + } + ~MutterIdle() override + { + stop(); + } + + void watch(int calmMs) + { + stop(); + const int generation = m_generation; + if (calmMs <= 0) { + addWatch(QStringLiteral("AddUserActiveWatch"), {}, generation, &m_active); + return; + } + // Already calm for that long (the scan itself took a while): the + // idle watch would wait for the next calm, so go straight on. + call(QStringLiteral("GetIdletime"), {}, [this, generation, calmMs](const QDBusMessage &reply) { + if (generation != m_generation) { + return; + } + if (reply.arguments().value(0).toULongLong() >= quint64(calmMs)) { + addWatch(QStringLiteral("AddUserActiveWatch"), {}, generation, &m_active); + } else { + addWatch(QStringLiteral("AddIdleWatch"), {QVariant::fromValue(quint64(calmMs))}, generation, &m_idle); + } + }); + } + + void stop() + { + ++m_generation; + remove(m_idle); + remove(m_active); + m_idle = m_active = 0; + } + +private Q_SLOTS: + void onFired(uint id) + { + if (id != 0 && id == m_idle) { + remove(m_idle); + m_idle = 0; + addWatch(QStringLiteral("AddUserActiveWatch"), {}, m_generation, &m_active); + } else if (id != 0 && id == m_active) { + m_active = 0; + m_input(); + } + } + +private: + template + void call(const QString &method, const QVariantList &args, Done done) + { + QDBusMessage msg = QDBusMessage::createMethodCall(MutterService, MutterPath, MutterService, method); + msg.setArguments(args); + auto *watcher = new QDBusPendingCallWatcher(QDBusConnection::sessionBus().asyncCall(msg), this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [watcher, done] { + watcher->deleteLater(); + done(watcher->reply()); + }); + } + + void addWatch(const QString &method, const QVariantList &args, int generation, uint *slot) + { + call(method, args, [this, generation, slot](const QDBusMessage &reply) { + const uint id = reply.arguments().value(0).toUInt(); + if (generation != m_generation) { + // Stopped in the meantime. + remove(id); + return; + } + *slot = id; + }); + } + + void remove(uint id) + { + if (id != 0) { + call(QStringLiteral("RemoveWatch"), {QVariant::fromValue(id)}, [](const QDBusMessage &) { }); + } + } + + std::function m_input; + int m_generation = 0; + uint m_idle = 0; + uint m_active = 0; +}; + InputWatcher::InputWatcher(QObject *parent) : QObject(parent) , m_notifier(std::make_unique()) @@ -64,10 +173,21 @@ InputWatcher::~InputWatcher() = default; void InputWatcher::watch(int calmMs) { - m_notification.reset(); + stop(); auto *wayland = qGuiApp->nativeInterface(); if (!m_notifier->isActive() || !wayland || !wayland->seat()) { - qWarning("no ext_idle_notifier_v1, so no telling when somebody comes back"); + if (!m_mutter && QDBusConnection::sessionBus().interface()->isServiceRegistered(MutterService)) { + m_mutter = new MutterIdle( + [this] { + QMetaObject::invokeMethod(this, &InputWatcher::input, Qt::QueuedConnection); + }, + this); + } + if (m_mutter) { + m_mutter->watch(calmMs); + } else { + qWarning("no ext_idle_notifier_v1 and no Mutter IdleMonitor, so no telling when somebody comes back"); + } return; } // Version 1 has only the notification that inhibitors hold back. @@ -84,4 +204,9 @@ void InputWatcher::watch(int calmMs) void InputWatcher::stop() { m_notification.reset(); + if (m_mutter) { + m_mutter->stop(); + } } + +#include "inputwatcher.moc" diff --git a/src/agent/inputwatcher.h b/src/agent/inputwatcher.h index b637cbe..81c82a6 100644 --- a/src/agent/inputwatcher.h +++ b/src/agent/inputwatcher.h @@ -5,7 +5,8 @@ // From ext_idle_notifier_v1, like KIdleTime, but with the input notification // of version 2. KIdleTime's own honours idle inhibitors: with a video playing // or an app keeping the screen on, no key reached it and the lock screen never -// scanned. +// scanned. GNOME has no ext_idle_notifier_v1; there it is Mutter's own +// IdleMonitor on the session bus, which knows nothing of inhibitors either. #pragma once @@ -15,6 +16,7 @@ class IdleNotifier; class IdleNotification; +class MutterIdle; class InputWatcher : public QObject { @@ -34,4 +36,5 @@ Q_SIGNALS: private: std::unique_ptr m_notifier; std::unique_ptr m_notification; + MutterIdle *m_mutter = nullptr; }; diff --git a/src/agent/lockcontroller.cpp b/src/agent/lockcontroller.cpp index 8a85781..09f4e11 100644 --- a/src/agent/lockcontroller.cpp +++ b/src/agent/lockcontroller.cpp @@ -7,11 +7,7 @@ #include "userconfig.h" #include -#include -#include -#include #include -#include namespace { @@ -37,14 +33,7 @@ LockController::LockController(BubbleController *bubble, UserConfig *config, QOb arm(0); }); connect(&m_input, &InputWatcher::input, this, &LockController::onResume); - - QDBusConnection session = QDBusConnection::sessionBus(); - session.connect(QStringLiteral("org.freedesktop.ScreenSaver"), - QStringLiteral("/ScreenSaver"), - QStringLiteral("org.freedesktop.ScreenSaver"), - QStringLiteral("ActiveChanged"), - this, - SLOT(onActiveChanged(bool))); + connect(&m_lock, &LockWatcher::lockedChanged, this, &LockController::onLockedChanged); QDBusConnection::systemBus().connect(QStringLiteral("org.freedesktop.login1"), QStringLiteral("/org/freedesktop/login1"), @@ -52,28 +41,14 @@ LockController::LockController(BubbleController *bubble, UserConfig *config, QOb QStringLiteral("PrepareForSleep"), this, SLOT(onPrepareForSleep(bool))); - - // Started while the screen is already locked (the agent restarted). - const QDBusMessage get = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.ScreenSaver"), - QStringLiteral("/ScreenSaver"), - QStringLiteral("org.freedesktop.ScreenSaver"), - QStringLiteral("GetActive")); - auto *watcher = new QDBusPendingCallWatcher(session.asyncCall(get), this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher] { - watcher->deleteLater(); - const QDBusPendingReply reply = *watcher; - if (reply.isValid() && reply.value()) { - onActiveChanged(true); - } - }); } -void LockController::onActiveChanged(bool active) +void LockController::onLockedChanged(bool locked) { - if (active == m_locked) { + if (locked == m_locked) { return; } - if (!active) { + if (!locked) { m_locked = false; m_armTimer.stop(); m_input.stop(); @@ -189,7 +164,7 @@ void LockController::onScanFinished(const QJsonObject &result) // moment to go, and the bubble stays above the desktop, so the rings // and the tick play on over it. m_bubble->succeeded(); - unlock(); + m_lock.unlock(); return; } @@ -207,30 +182,3 @@ void LockController::onScanFinished(const QJsonObject &result) } arm(CalmBeforeRetryMs); } - -void LockController::unlock() -{ - if (!m_locked) { - return; - } - // "auto" is the caller's own session, or for a program outside any - // session (this one runs as a user service) the session on the display. - const QDBusMessage call = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.login1"), - QStringLiteral("/org/freedesktop/login1/session/auto"), - QStringLiteral("org.freedesktop.login1.Session"), - QStringLiteral("Unlock")); - auto *watcher = new QDBusPendingCallWatcher(QDBusConnection::systemBus().asyncCall(call), this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [watcher] { - watcher->deleteLater(); - const QDBusPendingReply<> reply = *watcher; - if (reply.isError()) { - qWarning("logind would not unlock: %s; trying loginctl", qPrintable(reply.error().message())); - const QString id = qEnvironmentVariable("XDG_SESSION_ID"); - QStringList args{QStringLiteral("unlock-session")}; - if (!id.isEmpty()) { - args << id; - } - QProcess::startDetached(QStringLiteral("loginctl"), args); - } - }); -} diff --git a/src/agent/lockcontroller.h b/src/agent/lockcontroller.h index eb871db..cb8a1ff 100644 --- a/src/agent/lockcontroller.h +++ b/src/agent/lockcontroller.h @@ -4,22 +4,20 @@ // // When the screen locks, this waits for somebody to come back: a key, the // mouse, the lid opening, the machine waking from sleep. Then it scans, and -// when the face matches it asks logind to unlock the session, which is the -// same request `loginctl unlock-session` makes and which Plasma's screen -// locker has always honoured. +// when the face matches it unlocks the session the way that desktop's lock +// screen wants it (see LockWatcher). // // Why not a PAM module in the lock screen, like fingerprints? Plasma runs its // fingerprint stack in parallel with the password, but only starts it once per // lock, gives up for good the first time it fails, and labels it "scan your -// fingerprint". Doing it from here means scanning again every time somebody -// sits back down, no wrong label, and a bubble that knows what is going on. -// It does not lower the bar either: any program running as this user can -// already unlock this user's session through logind. Face data and the -// decision stay with the daemon, which runs as root. +// fingerprint". GNOME's, hyprlock's and swaylock's only ask once the password +// is typed. Doing it from here means scanning again every time somebody sits +// back down, no wrong label, and a bubble that knows what is going on. #pragma once #include "inputwatcher.h" +#include "lockwatcher.h" #include #include @@ -42,7 +40,7 @@ public: } private Q_SLOTS: - void onActiveChanged(bool active); + void onLockedChanged(bool locked); void onPrepareForSleep(bool sleeping); private: @@ -51,7 +49,6 @@ private: void onResume(); void startScan(const QString &why); void onScanFinished(const QJsonObject &result); - void unlock(); void warmUp(); BubbleController *m_bubble; @@ -62,4 +59,5 @@ private: QPointer m_scan; QTimer m_armTimer; InputWatcher m_input; + LockWatcher m_lock; }; diff --git a/src/agent/lockwatcher.cpp b/src/agent/lockwatcher.cpp new file mode 100644 index 0000000..2e0a63a --- /dev/null +++ b/src/agent/lockwatcher.cpp @@ -0,0 +1,268 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "lockwatcher.h" + +#include "wayland.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +namespace +{ +const QString Login1 = QStringLiteral("org.freedesktop.login1"); +const QString SessionInterface = QStringLiteral("org.freedesktop.login1.Session"); +const QString Properties = QStringLiteral("org.freedesktop.DBus.Properties"); + +constexpr int PollMs = 1000; + +// The lock screens that unlock on SIGUSR1. +bool isLocker(const QByteArray &name) +{ + return name == "hyprlock" || name == "swaylock"; +} + +QByteArray readFile(const QString &path) +{ + QFile f(path); + return f.open(QIODevice::ReadOnly) ? f.readAll() : QByteArray(); +} + +pid_t parentOf(pid_t pid) +{ + // The fields after the name in brackets, which can hold anything. + const QByteArray stat = readFile(QStringLiteral("/proc/%1/stat").arg(pid)); + const qsizetype close = stat.lastIndexOf(')'); + return close < 0 ? 0 : pid_t(stat.mid(close + 2).split(' ').value(1).toInt()); +} + +// The lock screens of this user on this display. Another session of the same +// user has a display of its own, and its lock screen is left alone. A child +// of a lock screen (swaylock checks the password in one) is left out: killed +// by the signal before its parent unlocks, it would take the parent down +// with it, and the screen would stay locked. +QList findLockers() +{ + QList found; + DIR *proc = ::opendir("/proc"); + if (!proc) { + return found; + } + QByteArray display = qgetenv("WAYLAND_DISPLAY"); + if (display.isEmpty()) { + display = "wayland-0"; + } + const uid_t me = ::getuid(); + while (dirent *entry = ::readdir(proc)) { + const pid_t pid = pid_t(atoi(entry->d_name)); + struct stat st; + if (pid <= 0 || ::fstatat(::dirfd(proc), entry->d_name, &st, 0) != 0 || st.st_uid != me) { + continue; + } + const QString dir = QStringLiteral("/proc/%1/").arg(pid); + if (!isLocker(readFile(dir + QStringLiteral("comm")).trimmed())) { + continue; + } + bool sameDisplay = true; + for (const QByteArray &var : readFile(dir + QStringLiteral("environ")).split('\0')) { + if (var.startsWith("WAYLAND_DISPLAY=")) { + sameDisplay = var.mid(16) == display; + break; + } + } + if (sameDisplay) { + found.append(pid); + } + } + ::closedir(proc); + QList top; + for (const pid_t pid : std::as_const(found)) { + if (!found.contains(parentOf(pid))) { + top.append(pid); + } + } + return top; +} +} // namespace + +LockWatcher::LockWatcher(QObject *parent) + : QObject(parent) +{ + QDBusConnection session = QDBusConnection::sessionBus(); + session.connect(QStringLiteral("org.freedesktop.ScreenSaver"), + QStringLiteral("/ScreenSaver"), + QStringLiteral("org.freedesktop.ScreenSaver"), + QStringLiteral("ActiveChanged"), + this, + SLOT(onScreenSaver(bool))); + + // Started while the screen is already locked (the agent restarted). + QDBusMessage get = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.ScreenSaver"), + QStringLiteral("/ScreenSaver"), + QStringLiteral("org.freedesktop.ScreenSaver"), + QStringLiteral("GetActive")); + get.setAutoStartService(false); + auto *watcher = new QDBusPendingCallWatcher(session.asyncCall(get), this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher] { + watcher->deleteLater(); + const QDBusPendingReply reply = *watcher; + if (reply.isValid() && reply.value()) { + onScreenSaver(true); + } + }); + + findSession(); + + if (Wayland::hasGlobal("ext_session_lock_manager_v1")) { + connect(&m_poll, &QTimer::timeout, this, &LockWatcher::pollLockers); + m_poll.start(PollMs); + // Not from here: nobody is connected yet to hear about a lock screen + // that is already up. + QTimer::singleShot(0, this, &LockWatcher::pollLockers); + } +} + +void LockWatcher::onScreenSaver(bool active) +{ + m_screenSaver = active; + update(); +} + +void LockWatcher::findSession() +{ + // Niri and some others hand their session on to user services. Without + // it, "auto" is the session on the display. + const QString id = qEnvironmentVariable("XDG_SESSION_ID"); + if (!id.isEmpty()) { + QDBusMessage call = QDBusMessage::createMethodCall(Login1, + QStringLiteral("/org/freedesktop/login1"), + QStringLiteral("org.freedesktop.login1.Manager"), + QStringLiteral("GetSession")); + call << id; + auto *watcher = new QDBusPendingCallWatcher(QDBusConnection::systemBus().asyncCall(call), this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher] { + watcher->deleteLater(); + const QDBusPendingReply reply = *watcher; + watchSession(reply.isValid() ? reply.value().path() : QStringLiteral("/org/freedesktop/login1/session/auto")); + }); + return; + } + QDBusMessage call = QDBusMessage::createMethodCall(Login1, QStringLiteral("/org/freedesktop/login1/session/auto"), Properties, QStringLiteral("Get")); + call << SessionInterface << QStringLiteral("Id"); + auto *watcher = new QDBusPendingCallWatcher(QDBusConnection::systemBus().asyncCall(call), this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher] { + watcher->deleteLater(); + const QDBusPendingReply reply = *watcher; + if (!reply.isValid()) { + qWarning("logind knows no session for this agent: %s", qPrintable(reply.error().message())); + return; + } + // The signals come from the session's real path, not from "auto". + QDBusMessage call = QDBusMessage::createMethodCall(Login1, + QStringLiteral("/org/freedesktop/login1"), + QStringLiteral("org.freedesktop.login1.Manager"), + QStringLiteral("GetSession")); + call << reply.value().variant().toString(); + auto *next = new QDBusPendingCallWatcher(QDBusConnection::systemBus().asyncCall(call), this); + connect(next, &QDBusPendingCallWatcher::finished, this, [this, next] { + next->deleteLater(); + const QDBusPendingReply path = *next; + if (path.isValid()) { + watchSession(path.value().path()); + } + }); + }); +} + +void LockWatcher::watchSession(const QString &path) +{ + m_session = path; + QDBusConnection::systemBus().connect(Login1, + path, + Properties, + QStringLiteral("PropertiesChanged"), + this, + SLOT(onSessionProperties(QString, QVariantMap, QStringList))); + readLockedHint(); +} + +void LockWatcher::readLockedHint() +{ + QDBusMessage call = QDBusMessage::createMethodCall(Login1, m_session, Properties, QStringLiteral("Get")); + call << SessionInterface << QStringLiteral("LockedHint"); + auto *watcher = new QDBusPendingCallWatcher(QDBusConnection::systemBus().asyncCall(call), this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher] { + watcher->deleteLater(); + const QDBusPendingReply reply = *watcher; + if (reply.isValid()) { + m_lockedHint = reply.value().variant().toBool(); + update(); + } + }); +} + +void LockWatcher::onSessionProperties(const QString &interface, const QVariantMap &changed, const QStringList &invalidated) +{ + if (interface != SessionInterface) { + return; + } + if (changed.contains(QStringLiteral("LockedHint"))) { + m_lockedHint = changed.value(QStringLiteral("LockedHint")).toBool(); + update(); + } else if (invalidated.contains(QStringLiteral("LockedHint"))) { + readLockedHint(); + } +} + +void LockWatcher::pollLockers() +{ + m_lockerRunning = !findLockers().isEmpty(); + update(); +} + +void LockWatcher::update() +{ + const bool locked = m_screenSaver || m_lockedHint || m_lockerRunning; + if (locked != m_locked) { + m_locked = locked; + Q_EMIT lockedChanged(locked); + } +} + +void LockWatcher::unlock() +{ + // Looked up again rather than taken from the last poll: a second is + // long enough for a pid to belong to something else. + for (const pid_t pid : findLockers()) { + ::kill(pid, SIGUSR1); + } + + const QDBusMessage call = QDBusMessage::createMethodCall(Login1, + m_session.isEmpty() ? QStringLiteral("/org/freedesktop/login1/session/auto") : m_session, + SessionInterface, + QStringLiteral("Unlock")); + auto *watcher = new QDBusPendingCallWatcher(QDBusConnection::systemBus().asyncCall(call), this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [watcher] { + watcher->deleteLater(); + const QDBusPendingReply<> reply = *watcher; + if (reply.isError()) { + qWarning("logind would not unlock: %s; trying loginctl", qPrintable(reply.error().message())); + const QString id = qEnvironmentVariable("XDG_SESSION_ID"); + QStringList args{QStringLiteral("unlock-session")}; + if (!id.isEmpty()) { + args << id; + } + QProcess::startDetached(QStringLiteral("loginctl"), args); + } + }); +} diff --git a/src/agent/lockwatcher.h b/src/agent/lockwatcher.h new file mode 100644 index 0000000..0400e39 --- /dev/null +++ b/src/agent/lockwatcher.h @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// +// Whether the screen is locked, and how to unlock it, on each desktop. +// +// Plasma org.freedesktop.ScreenSaver and logind's LockedHint. Unlocked +// through logind. +// GNOME logind's LockedHint. Unlocked through logind. +// Niri logind's LockedHint, which niri sets for any lock screen. +// Hyprland sets no LockedHint, so the lock screen is looked for among this +// user's processes (hyprlock, swaylock) once a second. Only on +// compositors where the lock screen is a program of its own +// (ext-session-lock). +// +// hyprlock and swaylock do not listen to logind. They unlock on SIGUSR1. +// +// None of this lowers the bar: any program running as this user can already +// ask logind to unlock the session, or send its own lock screen a signal. The +// face data and the decision stay with the daemon, which runs as root. + +#pragma once + +#include +#include +#include + +#include + +class LockWatcher : public QObject +{ + Q_OBJECT +public: + explicit LockWatcher(QObject *parent = nullptr); + + bool locked() const + { + return m_locked; + } + void unlock(); + +Q_SIGNALS: + void lockedChanged(bool locked); + +private Q_SLOTS: + void onScreenSaver(bool active); + void onSessionProperties(const QString &interface, const QVariantMap &changed, const QStringList &invalidated); + +private: + void findSession(); + void watchSession(const QString &path); + void readLockedHint(); + void pollLockers(); + void update(); + + bool m_screenSaver = false; + bool m_lockedHint = false; + bool m_lockerRunning = false; + bool m_locked = false; + QString m_session; + QTimer m_poll; +}; diff --git a/src/agent/main.cpp b/src/agent/main.cpp index d664ebc..172b95b 100644 --- a/src/agent/main.cpp +++ b/src/agent/main.cpp @@ -14,6 +14,7 @@ #include "enrollcontroller.h" #include "lockcontroller.h" #include "userconfig.h" +#include "wayland.h" #include "buildconfig.h" @@ -82,7 +83,7 @@ int main(int argc, char **argv) KLocalizedString::setApplicationDomain(FU_NAME); QCommandLineParser parser; - parser.setApplicationDescription(i18n("Face unlock for KDE Plasma")); + parser.setApplicationDescription(i18n("Face unlock for the lock screen, sudo and admin prompts")); parser.addHelpOption(); parser.addVersionOption(); const QCommandLineOption enrollOpt(QStringLiteral("enroll"), i18n("Set up a face.")); @@ -110,14 +111,28 @@ int main(int argc, char **argv) config.overrideStyle(parser.value(styleOpt)); } BubbleController bubble(&config); - BubbleWindow window(&engine, &bubble); + // The bubble floats above everything as a layer-shell surface. GNOME has + // none, and a normal window cannot stay on top or pick its place, so + // there it does without. + std::unique_ptr window; + if (Wayland::hasGlobal("zwlr_layer_shell_v1")) { + window = std::make_unique(&engine, &bubble); + } if (parser.isSet(demoOpt)) { + if (!window) { + qWarning("this desktop has no layer-shell, so there is no bubble to show"); + return 1; + } scheduleDemo(&bubble); return app.exec(); } AgentSocket socket; + if (AgentSocket::running()) { + qInfo("an agent is already running in this session"); + return 0; + } socket.listen(); QObject::connect(&socket, &AgentSocket::scanEvent, &bubble, &BubbleController::daemonEvent); diff --git a/src/agent/qml/Enroll.qml b/src/agent/qml/Enroll.qml index 4a2b988..6b46667 100644 --- a/src/agent/qml/Enroll.qml +++ b/src/agent/qml/Enroll.qml @@ -13,10 +13,15 @@ Window { required property var controller + // One fixed size: the layout needs no more room, and tiling compositors + // (Hyprland, Niri) float a window that cannot be resized instead of + // stretching it over half the screen. width: 520 height: 680 - minimumWidth: 460 - minimumHeight: 620 + minimumWidth: width + maximumWidth: width + minimumHeight: height + maximumHeight: height visible: true color: Theme.panel title: i18n("Set up Face Unlock") diff --git a/src/agent/wayland.cpp b/src/agent/wayland.cpp new file mode 100644 index 0000000..d0efc91 --- /dev/null +++ b/src/agent/wayland.cpp @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "wayland.h" + +#include +#include +#include + +#include + +namespace +{ +void onGlobal(void *data, wl_registry *, uint32_t, const char *interface, uint32_t) +{ + static_cast *>(data)->insert(QByteArray(interface)); +} + +void onGlobalRemove(void *, wl_registry *, uint32_t) +{ +} + +const wl_registry_listener listener = {onGlobal, onGlobalRemove}; + +const QSet &globals() +{ + static QSet names; + static bool asked = false; + if (asked) { + return names; + } + asked = true; + + auto *app = qGuiApp ? qGuiApp->nativeInterface() : nullptr; + wl_display *display = app ? app->display() : nullptr; + if (!display) { + return names; + } + wl_event_queue *queue = wl_display_create_queue(display); + auto *wrapped = static_cast(wl_proxy_create_wrapper(display)); + wl_proxy_set_queue(reinterpret_cast(wrapped), queue); + wl_registry *registry = wl_display_get_registry(wrapped); + wl_registry_add_listener(registry, &listener, &names); + wl_display_roundtrip_queue(display, queue); + wl_registry_destroy(registry); + wl_proxy_wrapper_destroy(wrapped); + wl_event_queue_destroy(queue); + return names; +} +} // namespace + +bool Wayland::hasGlobal(const char *interface) +{ + return globals().contains(QByteArray(interface)); +} diff --git a/src/agent/wayland.h b/src/agent/wayland.h new file mode 100644 index 0000000..fbbdf1d --- /dev/null +++ b/src/agent/wayland.h @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// +// What the compositor offers. Not every desktop has everything: GNOME has no +// layer-shell (so no bubble) and no ext-idle-notify, and only compositors +// whose lock screen is a program of its own have ext-session-lock. + +#pragma once + +namespace Wayland +{ +// Whether the compositor announces this interface, for example +// "zwlr_layer_shell_v1". Asked once, on an event queue of its own, so Qt's +// own handling of the connection is not disturbed. +bool hasGlobal(const char *interface); +} // namespace Wayland diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp index 98429fd..330aa0d 100644 --- a/src/daemon/main.cpp +++ b/src/daemon/main.cpp @@ -71,7 +71,7 @@ int main(int argc, char **argv) qSetMessagePattern(QStringLiteral("%{if-warning}warning: %{endif}%{if-critical}error: %{endif}%{message}")); QCommandLineParser parser; - parser.setApplicationDescription(QStringLiteral("Face unlock daemon for KDE Plasma")); + parser.setApplicationDescription(QStringLiteral("Face unlock daemon")); parser.addHelpOption(); parser.addVersionOption(); const QCommandLineOption socketOpt(QStringLiteral("socket"), QStringLiteral("Listen here instead of the system socket."), QStringLiteral("path"), diff --git a/src/daemon/polkit.h b/src/daemon/polkit.h index e1a80bd..b6e0d93 100644 --- a/src/daemon/polkit.h +++ b/src/daemon/polkit.h @@ -4,9 +4,9 @@ // // Adding a face is adding a way in, so it asks for the password first, the // same way a phone asks for its code before it sets up a face. The question -// goes to the polkit agent of the person's own session (on Plasma, the -// familiar password dialog), which is why the daemon never sees the -// password. +// goes to the polkit agent of the person's own session (the desktop's usual +// password dialog), which is why the daemon never sees the password. +// Hyprland and Niri have none of their own: one has to be running there. #pragma once diff --git a/src/face-unlock b/src/face-unlock index 1b58495..3a67b05 100644 --- a/src/face-unlock +++ b/src/face-unlock @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# face-unlock: face unlock for KDE Plasma +# face-unlock: face unlock for Plasma, GNOME, Hyprland and Niri # # Look at the screen and it unlocks, the way a phone does. The lock screen, # sudo in a terminal and the admin password prompts can all take a face @@ -64,7 +64,7 @@ fu_do_setup() { fu_ensure_service || return 1 if [[ -z ${WAYLAND_DISPLAY:-} && -z ${DISPLAY:-} ]]; then - fu_bad "$(fu_msg "Setting up a face needs the camera picture on screen. Run this inside your Plasma session.")" + fu_bad "$(fu_msg "Setting up a face needs the camera picture on screen. Run this inside your desktop session.")" return 1 fi @@ -102,6 +102,7 @@ fu_do_enable() { if fu_agent_available; then fu_agent_enable || fu_bad "$(fu_msg "Could not start the lock screen agent.")" + fu_agent_autostarts || fu_agent_hint else fu_note "$(fu_msg "No systemd user session, so the lock screen agent was not started.")" fi diff --git a/src/lib/common.sh b/src/lib/common.sh index 74bcc26..303189a 100644 --- a/src/lib/common.sh +++ b/src/lib/common.sh @@ -31,6 +31,15 @@ FU_SYSCONFIG="${FU_SYSCONFIG:-/etc/${FU_NAME}/config}" FU_UNIT_SOCKET="face-unlockd.socket" FU_UNIT_AGENT="face-unlock-agent.service" +# The desktop this runs in: plasma, gnome, hyprland, niri or other. +case ":${XDG_CURRENT_DESKTOP:-}:" in + *:KDE:*) FU_DESKTOP=plasma ;; + *:GNOME:*) FU_DESKTOP=gnome ;; + *:Hyprland:*) FU_DESKTOP=hyprland ;; + *:niri:*) FU_DESKTOP=niri ;; + *) FU_DESKTOP=other ;; +esac + # --------------------------------------------------------------------------- # Translations # --------------------------------------------------------------------------- diff --git a/src/lib/menu.sh b/src/lib/menu.sh index 0d96caa..816016e 100644 --- a/src/lib/menu.sh +++ b/src/lib/menu.sh @@ -211,7 +211,7 @@ fu_value_label() { # fu_ui_status # Shared by the `status` subcommand and the menu header. fu_ui_status() { - local names='' i camera + local names='' i camera agent=yes fu_config_load fu_status_load @@ -246,6 +246,9 @@ fu_ui_status() { _fu_row "$(fu_msg "Camera")" "$camera" _fu_row "$(fu_msg "Lock screen")" "$(_fu_small_onoff "$( [[ $CFG_ENABLED == yes && $CFG_LOCK == yes ]] && echo yes || echo no)")" + if [[ $CFG_ENABLED == yes && $CFG_LOCK == yes ]] && fu_agent_available && ! fu_agent_running; then + agent=no + fi _fu_row "$(fu_msg "sudo")" "$(_fu_small_onoff "$(fu_pam_enabled sudo && echo yes || echo no)")" _fu_row "$(fu_msg "Admin prompts")" "$(_fu_small_onoff "$(fu_pam_enabled polkit-1 && echo yes || echo no)")" _fu_row "$(fu_msg "Photo check")" "$(fu_value_label Liveness "$CFG_LIVENESS")" @@ -258,6 +261,10 @@ fu_ui_status() { if [[ $FU_ST_MODELS != true ]]; then printf '\n %s%s%s\n' "$FU_C_RED" "$(fu_msg "The recognition models are missing. Reinstall the package.")" "$FU_C_RESET" fi + if [[ $agent == no ]]; then + printf '\n %s%s%s\n' "$FU_C_YELLOW" "$(fu_msg "The lock screen agent is not running.")" "$FU_C_RESET" + fu_agent_autostarts || fu_agent_hint + fi } # --------------------------------------------------------------------------- @@ -269,7 +276,8 @@ fu_ui_status() { # heading, with only the label after it # type bool, choice (steps through the choices) or camera # needs a bool setting this one does nothing without; it is dimmed while -# that is off +# that is off. Layers is no setting: whether the desktop can show +# the bubble at all (GNOME cannot). FU_SETTINGS=( "group|Lock screen" "user|LockScreen|bool|yes|Unlock with your face" @@ -287,7 +295,7 @@ FU_SETTINGS=( "sys|Adapt|bool|yes|Learn from every unlock" "sys|SkipLidClosed|bool|yes|Not when the lid is closed" "group|Bubble" - "user|Bubble|bool|yes|Show the bubble" + "user|Bubble|bool|yes|Show the bubble||Layers" "user|BubbleStyle|choice|full|Style|full,minimal|Bubble" "user|AnimationSpeed|choice|normal|Animation speed|slow,normal,fast|Bubble" "user|BubbleForPrompts|bool|yes|Also for sudo and admin prompts||Bubble" @@ -296,12 +304,16 @@ FU_SETTINGS=( # fu_setting_help # What a setting does, shown under the list for the selected one. fu_setting_help() { + if [[ $FU_DESKTOP == gnome && $1 =~ ^(Bubble|BubbleStyle|AnimationSpeed|BubbleForPrompts)$ ]]; then + fu_msg "GNOME does not let other programs show above its windows, so there is no bubble on GNOME." + return + fi case "$1:$2" in LockScreen:*) fu_msg "Unlocks the lock screen when it sees your face. Off: only your password works there." ;; ScanOnWake:*) fu_msg "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." ;; ScanOnLock:*) fu_msg "Scans as soon as the screen locks. Off by default: if you lock it yourself, it would unlock again right away." ;; sudo:*) fu_msg "sudo takes your face instead of the password. No match: you type the password as usual." ;; - polkit-1:*) fu_msg "The password windows of Plasma and apps, for example when you install software. No match: you type the password." ;; + polkit-1:*) fu_msg "The password windows of your desktop and apps, for example when you install software. No match: you type the password." ;; Liveness:heavy) fu_msg "You have to blink or turn your head a little. This also stops printed photos." ;; Liveness:off) fu_msg "No check at all. Only for trying out a camera." ;; Liveness:*) fu_msg "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. A matte printed photo can get through." ;; @@ -511,6 +523,8 @@ fu_ui_settings() { values[i]="$FU_SETTING_VALUE" current[${keys[i]}]="$FU_SETTING_VALUE" done + current[Layers]=yes + [[ $FU_DESKTOP == gnome ]] && current[Layers]=no current[Bubble]=no dirty=0 fi diff --git a/src/lib/system.sh b/src/lib/system.sh index adb24ce..f4cb828 100644 --- a/src/lib/system.sh +++ b/src/lib/system.sh @@ -117,6 +117,21 @@ fu_agent_enable() { systemctl --user enable --now "$FU_UNIT_AGENT" > /dev/null 2>&1 } +# fu_agent_autostarts +# Whether the agent's service starts with the session. It is wanted by +# graphical-session.target, which Hyprland only reaches when it runs under +# uwsm. Plasma, GNOME and niri-session always do. +fu_agent_autostarts() { + [[ $FU_DESKTOP != hyprland ]] || systemctl --user is-active --quiet graphical-session.target +} + +# fu_agent_hint +fu_agent_hint() { + # shellcheck disable=SC2088 # shown to the user, not a path to open + fu_note "$(fu_msg "Hyprland does not start the lock screen agent by itself. Add this line to %s:" "~/.config/hypr/hyprland.conf")" + fu_say " exec-once = systemctl --user start $FU_UNIT_AGENT" +} + fu_agent_disable() { systemctl --user disable --now "$FU_UNIT_AGENT" > /dev/null 2>&1 || true }