feat: show the bubble on gnome

This commit is contained in:
Felitendo committed 2026-09-26 19:34:17 +02:00
1 parent f232f796fc
commit 2a9b0d3f91
28 files changed
+2278 -1077

No files matched your search

+1
View File
@@ -149,6 +149,7 @@ if(FU_BUILD_AGENT)
src/agent/agentsocket.cpp src/agent/agentsocket.cpp
src/agent/bubblewindow.cpp src/agent/bubblewindow.cpp
src/agent/bubblecontroller.cpp src/agent/bubblecontroller.cpp
src/agent/bubbleservice.cpp
src/agent/lockcontroller.cpp src/agent/lockcontroller.cpp
src/agent/lockwatcher.cpp src/agent/lockwatcher.cpp
src/agent/lockers.cpp src/agent/lockers.cpp
+6
View File
@@ -23,6 +23,8 @@ MANDIR ?= $(DATADIR)/man
APPDIR ?= $(DATADIR)/applications APPDIR ?= $(DATADIR)/applications
POLKITDIR ?= $(DATADIR)/polkit-1/actions POLKITDIR ?= $(DATADIR)/polkit-1/actions
ICONDIR ?= $(DATADIR)/icons/hicolor/scalable/apps ICONDIR ?= $(DATADIR)/icons/hicolor/scalable/apps
GNOMEEXTDIR ?= $(DATADIR)/gnome-shell/extensions
GNOMEEXT := face-unlock@loonixtools.github.io
# Where systemd looks for units, asked of systemd itself for a normal install. # Where systemd looks for units, asked of systemd itself for a normal install.
# A build with a prefix of its own keeps them under that prefix. # A build with a prefix of its own keeps them under that prefix.
@@ -182,6 +184,9 @@ install: build
"$(DESTDIR)$(POLKITDIR)/io.github.loonixtools.face-unlock.policy" "$(DESTDIR)$(POLKITDIR)/io.github.loonixtools.face-unlock.policy"
install -Dm644 res/face-unlock.svg "$(DESTDIR)$(ICONDIR)/face-unlock.svg" install -Dm644 res/face-unlock.svg "$(DESTDIR)$(ICONDIR)/face-unlock.svg"
# the GNOME Shell extension that draws the bubble on GNOME
install -Dm644 -t "$(DESTDIR)$(GNOMEEXTDIR)/$(GNOMEEXT)" res/gnome-shell/$(GNOMEEXT)/*
# translations # translations
@for l in $(LINGUAS); do \ @for l in $(LINGUAS); do \
if [ -f "po/$$l.mo" ]; then \ if [ -f "po/$$l.mo" ]; then \
@@ -207,6 +212,7 @@ uninstall:
rm -f "$(DESTDIR)$(APPDIR)/io.github.loonixtools.face-unlock-agent.desktop" rm -f "$(DESTDIR)$(APPDIR)/io.github.loonixtools.face-unlock-agent.desktop"
rm -f "$(DESTDIR)$(POLKITDIR)/io.github.loonixtools.face-unlock.policy" rm -f "$(DESTDIR)$(POLKITDIR)/io.github.loonixtools.face-unlock.policy"
rm -f "$(DESTDIR)$(ICONDIR)/face-unlock.svg" rm -f "$(DESTDIR)$(ICONDIR)/face-unlock.svg"
rm -rf "$(DESTDIR)$(GNOMEEXTDIR)/$(GNOMEEXT)"
rm -f "$(DESTDIR)$(MANDIR)/man1/face-unlock.1" rm -f "$(DESTDIR)$(MANDIR)/man1/face-unlock.1"
rm -rf "$(DESTDIR)$(DATADIR)/doc/face-unlock" rm -rf "$(DESTDIR)$(DATADIR)/doc/face-unlock"
@for l in $(LINGUAS); do rm -f "$(DESTDIR)$(LOCALEDIR)/$$l/LC_MESSAGES/face-unlock.mo"; done @for l in $(LINGUAS); do rm -f "$(DESTDIR)$(LOCALEDIR)/$$l/LC_MESSAGES/face-unlock.mo"; done
+4 -1
View File
@@ -73,10 +73,13 @@ desktops, on Wayland:
| | Lock screen | sudo and admin prompts | Bubble | | | Lock screen | sudo and admin prompts | Bubble |
|---|---|---|---| |---|---|---|---|
| KDE Plasma 6 | ✅ | ✅ | ✅ above the lock screen too | | KDE Plasma 6 | ✅ | ✅ | ✅ above the lock screen too |
| GNOME | ✅ | ✅ | ❌ GNOME does not allow it | | GNOME | ✅ | ✅ | ✅ above the lock screen too |
| Hyprland | ✅ with hyprlock or swaylock | ✅ | ✅ once the lock screen is gone | | Hyprland | ✅ with hyprlock or swaylock | ✅ | ✅ once the lock screen is gone |
| Niri | ✅ with swaylock or hyprlock | ✅ | ✅ once the lock screen is gone | | Niri | ✅ with swaylock or hyprlock | ✅ | ✅ once the lock screen is gone |
On GNOME a small GNOME extension draws the bubble. Turning face unlock on
switches it on; right after installing, log out and back in once.
On Hyprland and Niri, admin prompts and setting up a face need a polkit agent 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 (for example hyprpolkitagent). Hyprland without uwsm does not start the lock
screen part by itself: the menu shows what to add to its config. screen part by itself: the menu shows what to add to its config.
+23 -14
View File
@@ -12,13 +12,15 @@ 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 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 instead of a 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 password, on KDE Plasma, GNOME, Hyprland and Niri (see *DESKTOPS*). A photo of
in, and with the strict photo check a printed one does not either. 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 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 the camera starts looking, the face in it looks around, and when it recognises
somebody two green rings spin and land around a tick. On Plasma it shows above somebody two green rings spin and land around a tick. On Plasma and GNOME it
the lock screen too. *Animation speed* makes all of it faster or slower. 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 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 is reachable from there; the settings files behind it do not need to be edited
@@ -31,7 +33,8 @@ It is a convenience, not a security upgrade. See *HOW SAFE IS THIS*.
*enable* *enable*
Turn face unlock on for this user. Sets up a face first if there is none, Turn face unlock on for this user. Sets up a face first if there is none,
starts the lock screen agent, and turns sudo and admin prompts back on if starts the lock screen agent, and turns sudo and admin prompts back on if
they were on before. they were on before. On GNOME it switches on the extension that draws the
bubble.
*disable* *disable*
Turn it off: the agent stops and sudo and the admin prompts go back to the Turn it off: the agent stops and sudo and the admin prompts go back to the
@@ -199,23 +202,26 @@ 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 failed logins of *pam_faillock*(8), as a correct password does, so face unlocks
never lock the account. never lock the account.
The bubble is a layer-shell surface that KWin keeps above the lock screen On Plasma the bubble is a layer-shell surface that KWin keeps above the lock
(kde_lockscreen_overlay_v1). KWin only allows that for a program whose desktop screen (kde_lockscreen_overlay_v1). KWin only allows that for a program whose
file asks for it, which is desktop file asks for it, which is
_io.github.loonixtools.face-unlock-agent.desktop_. _io.github.loonixtools.face-unlock-agent.desktop_. How it gets there elsewhere
is under *DESKTOPS*.
# DESKTOPS # DESKTOPS
All of them on Wayland. sudo and admin prompts work the same everywhere. All of them on Wayland. sudo and admin prompts work the same everywhere.
*KDE Plasma 6* *KDE Plasma 6*
Everything. The lock is seen through org.freedesktop.ScreenSaver and The lock is seen through org.freedesktop.ScreenSaver and logind, and
logind, and the bubble shows above the lock screen. the bubble shows above the lock screen (kde_lockscreen_overlay_v1).
*GNOME* *GNOME*
The lock is seen through logind, where GNOME sets *LockedHint*. There is The lock is seen through logind, where GNOME sets *LockedHint*. GNOME
no bubble: GNOME has no layer-shell, and a normal window can neither stay lets no program draw above its windows, so a GNOME Shell extension
on top nor pick its place. (_face-unlock@loonixtools.github.io_) draws the bubble, from what the
agent says on the session bus. *enable* switches it on; GNOME loads an
extension that was installed after the login at the next one.
*Hyprland* *Hyprland*
With hyprlock or swaylock. Hyprland does not set logind's *LockedHint*, With hyprlock or swaylock. Hyprland does not set logind's *LockedHint*,
@@ -297,6 +303,9 @@ _$XDG_RUNTIME_DIR/face-unlock/agent.socket_
Where the daemon tells the agent about scans it did not start, for the Where the daemon tells the agent about scans it did not start, for the
bubble. bubble.
_/usr/share/gnome-shell/extensions/face-unlock@loonixtools.github.io/_
The GNOME Shell extension that draws the bubble on GNOME.
# ENVIRONMENT # ENVIRONMENT
*NO_COLOR* *NO_COLOR*
+1
View File
@@ -105,6 +105,7 @@ make install DESTDIR=%{buildroot} PREFIX=%{_prefix} VERSION=%{upstream_version}
%{_datadir}/applications/io.github.loonixtools.face-unlock-agent.desktop %{_datadir}/applications/io.github.loonixtools.face-unlock-agent.desktop
%{_datadir}/polkit-1/actions/io.github.loonixtools.face-unlock.policy %{_datadir}/polkit-1/actions/io.github.loonixtools.face-unlock.policy
%{_datadir}/icons/hicolor/scalable/apps/face-unlock.svg %{_datadir}/icons/hicolor/scalable/apps/face-unlock.svg
%{_datadir}/gnome-shell/extensions/face-unlock@loonixtools.github.io/
%{_mandir}/man1/%{name}.1* %{_mandir}/man1/%{name}.1*
%changelog %changelog
+85 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.0\n" "Project-Id-Version: face-unlock 1.0.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-23 22:32+0200\n" "PO-Revision-Date: 2026-09-23 22:32+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: German\n" "Language-Team: German\n"
@@ -59,8 +59,8 @@ msgstr "Es wurde kein Gesicht hinzugefügt."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Richte zuerst dein Gesicht ein." msgstr "Richte zuerst dein Gesicht ein."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Einstellung konnte nicht gespeichert werden." msgstr "Einstellung konnte nicht gespeichert werden."
@@ -74,98 +74,108 @@ msgstr ""
"Keine systemd-Benutzersitzung, daher wurde der Sperrbildschirm-Dienst nicht " "Keine systemd-Benutzersitzung, daher wurde der Sperrbildschirm-Dienst nicht "
"gestartet." "gestartet."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr ""
"Die GNOME-Erweiterung, die die Bubble zeigt, konnte nicht eingeschaltet "
"werden."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Melde dich einmal ab und wieder an: dann zeigt GNOME die Bubble auch."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Die Gesichtsentsperrung ist an. Sperre den Bildschirm und schau ihn an, um " "Die Gesichtsentsperrung ist an. Sperre den Bildschirm und schau ihn an, um "
"es auszuprobieren." "es auszuprobieren."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "Sie kann auch sudo und Admin-Abfragen übernehmen. Siehe Einstellungen." msgstr "Sie kann auch sudo und Admin-Abfragen übernehmen. Siehe Einstellungen."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Die Gesichtsentsperrung ist aus. Deine Gesichter bleiben erhalten; löschen " "Die Gesichtsentsperrung ist aus. Deine Gesichter bleiben erhalten; löschen "
"kannst du sie unter Gesichter." "kannst du sie unter Gesichter."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Es ist noch kein Gesicht eingerichtet." msgstr "Es ist noch kein Gesicht eingerichtet."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "an" msgstr "an"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "aus" msgstr "aus"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s Aufnahmen, %s dazugelernt" msgstr "%s Aufnahmen, %s dazugelernt"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Welches Gesicht? Die IDs zeigt `%s faces`." msgstr "Welches Gesicht? Die IDs zeigt `%s faces`."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Gelöscht." msgstr "Gelöscht."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Aufruf: face-unlock [Befehl]" msgstr "Aufruf: face-unlock [Befehl]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Befehle:" msgstr "Befehle:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Gesichtsentsperrung einschalten" msgstr "Gesichtsentsperrung einschalten"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Ausschalten (Gesichter bleiben erhalten)" msgstr "Ausschalten (Gesichter bleiben erhalten)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Gesicht hinzufügen" msgstr "Gesicht hinzufügen"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Gesichter auflisten" msgstr "Gesichter auflisten"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Ein Gesicht löschen" msgstr "Ein Gesicht löschen"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "In die Kamera schauen und sehen, was sie sieht" msgstr "In die Kamera schauen und sehen, was sie sieht"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Anzeigen, was eingeschaltet ist" msgstr "Anzeigen, was eingeschaltet ist"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Diese Hilfe anzeigen" msgstr "Diese Hilfe anzeigen"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Die Version anzeigen" msgstr "Die Version anzeigen"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Ohne Befehl wird ein interaktives Menü angezeigt." msgstr "Ohne Befehl wird ein interaktives Menü angezeigt."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -173,7 +183,7 @@ msgstr ""
"Starte das als dein eigener Benutzer, nicht als root. Wenn nötig, wird nach " "Starte das als dein eigener Benutzer, nicht als root. Wenn nötig, wird nach "
"deinem Passwort gefragt." "deinem Passwort gefragt."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Unbekannter Befehl: %s" msgstr "Unbekannter Befehl: %s"
@@ -352,11 +362,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[j/N]" msgstr "[j/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "AN" msgstr "AN"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "AUS" msgstr "AUS"
@@ -397,7 +407,7 @@ msgstr "langsam"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s Sekunden" msgstr "%s Sekunden"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automatisch" msgstr "automatisch"
@@ -417,8 +427,8 @@ msgstr "läuft nicht"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Die Gesichtsentsperrung erneut einzuschalten startet ihn." msgstr "Die Gesichtsentsperrung erneut einzuschalten startet ihn."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Gesichter" msgstr "Gesichter"
@@ -473,13 +483,13 @@ msgstr "Der Sperrbildschirm-Dienst läuft nicht."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME lässt andere Programme nicht über seinen Fenstern erscheinen, daher " "Unter GNOME zeigt eine kleine GNOME-Erweiterung die Bubble. Beim Einschalten "
"gibt es auf GNOME keine Bubble." "der Gesichtsentsperrung wird sie mit eingeschaltet."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -487,7 +497,7 @@ msgstr ""
"Entsperrt den Sperrbildschirm, wenn er dein Gesicht sieht. Aus: Dort geht " "Entsperrt den Sperrbildschirm, wenn er dein Gesicht sieht. Aus: Dort geht "
"nur dein Passwort." "nur dein Passwort."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -495,7 +505,7 @@ msgstr ""
"Scannt, wenn du auf dem Sperrbildschirm eine Taste drückst oder die Maus " "Scannt, wenn du auf dem Sperrbildschirm eine Taste drückst oder die Maus "
"bewegst, und wenn der Computer aufwacht." "bewegst, und wenn der Computer aufwacht."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -503,7 +513,7 @@ msgstr ""
"Scannt, sobald der Bildschirm gesperrt wird. Normalerweise aus: Sperrst du " "Scannt, sobald der Bildschirm gesperrt wird. Normalerweise aus: Sperrst du "
"selbst, würde er gleich wieder entsperren." "selbst, würde er gleich wieder entsperren."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -511,7 +521,7 @@ msgstr ""
"sudo nimmt dein Gesicht statt des Passworts. Passt es nicht, tippst du wie " "sudo nimmt dein Gesicht statt des Passworts. Passt es nicht, tippst du wie "
"gewohnt dein Passwort." "gewohnt dein Passwort."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -519,18 +529,18 @@ msgstr ""
"Die Passwort-Fenster deines Desktops und von Apps, zum Beispiel beim " "Die Passwort-Fenster deines Desktops und von Apps, zum Beispiel beim "
"Installieren. Passt das Gesicht nicht, tippst du dein Passwort." "Installieren. Passt das Gesicht nicht, tippst du dein Passwort."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Du musst blinzeln oder den Kopf leicht drehen. Das hält auch ausgedruckte " "Du musst blinzeln oder den Kopf leicht drehen. Das hält auch ausgedruckte "
"Fotos auf." "Fotos auf."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Keine Prüfung. Nur zum Ausprobieren einer Kamera." msgstr "Keine Prüfung. Nur zum Ausprobieren einer Kamera."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -538,22 +548,22 @@ msgstr ""
"Hält Fotos auf Handy, Tablet oder Hochglanzpapier auf. Blinzeln ist nicht " "Hält Fotos auf Handy, Tablet oder Hochglanzpapier auf. Blinzeln ist nicht "
"nötig. Ein matter Ausdruck kann durchkommen." "nötig. Ein matter Ausdruck kann durchkommen."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Seltener Verwechslungen, aber mit Brille oder bei schlechtem Licht erkennt " "Seltener Verwechslungen, aber mit Brille oder bei schlechtem Licht erkennt "
"es dich vielleicht nicht." "es dich vielleicht nicht."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." 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." msgstr "Erkennt dich leichter, aber auch jemanden, der dir sehr ähnlich sieht."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "Der Standard. Passt für die meisten." msgstr "Der Standard. Passt für die meisten."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -561,7 +571,7 @@ msgstr ""
"Deine Augen müssen offen sein und auf den Bildschirm schauen. So entsperrt " "Deine Augen müssen offen sein und auf den Bildschirm schauen. So entsperrt "
"es nicht, wenn du wegschaust oder schläfst." "es nicht, wenn du wegschaust oder schläfst."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -570,11 +580,11 @@ msgstr ""
"neu einrichten. Eine Infrarot-Kamera braucht ihr Licht (linux-enable-ir-" "neu einrichten. Eine Infrarot-Kamera braucht ihr Licht (linux-enable-ir-"
"emitter)." "emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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." msgstr "Wie lange die Kamera nach deinem Gesicht sucht, bevor sie aufgibt."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -582,7 +592,7 @@ msgstr ""
"Nach einem sicheren Treffer merkt es sich, wie du gerade aussiehst. So musst " "Nach einem sicheren Treffer merkt es sich, wie du gerade aussiehst. So musst "
"du nach neuer Frisur oder Brille nichts neu einrichten." "du nach neuer Frisur oder Brille nichts neu einrichten."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -590,82 +600,82 @@ msgstr ""
"Kein Scan bei zugeklapptem Laptop, zum Beispiel am Schreibtisch mit externem " "Kein Scan bei zugeklapptem Laptop, zum Beispiel am Schreibtisch mit externem "
"Bildschirm." "Bildschirm."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "Die Bubble oben am Bildschirm zeigt, was die Kamera gerade macht."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Eine kleine Pille mit einem Schloss, das aufgeht." msgstr "Eine kleine Pille mit einem Schloss, das aufgeht."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "" msgstr ""
"Eine Insel mit einem Gesicht, das sich umschaut, danach Ringe und ein Haken." "Eine Insel mit einem Gesicht, das sich umschaut, danach Ringe und ein Haken."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Wie schnell sich die Bubble bewegt." msgstr "Wie schnell sich die Bubble bewegt."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Zeigt die Bubble auch, wenn sudo oder eine Admin-Abfrage dein Gesicht scannt." "Zeigt die Bubble auch, wenn sudo oder eine Admin-Abfrage dein Gesicht scannt."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automatisch (%s)" msgstr "automatisch (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(Infrarot)" msgstr "(Infrarot)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(nicht angeschlossen)" msgstr "(nicht angeschlossen)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ auswählen ←→ oder Leertaste: ändern q: zurück" msgstr "↑↓ auswählen ←→ oder Leertaste: ändern q: zurück"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "für alle Nutzer, fragt nach deinem Passwort" msgstr "für alle Nutzer, fragt nach deinem Passwort"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Hoch/Runter: wählen, Leertaste: an/aus, r: umbenennen, d: löschen, a: " "Hoch/Runter: wählen, Leertaste: an/aus, r: umbenennen, d: löschen, a: "
"hinzufügen, q: zurück" "hinzufügen, q: zurück"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." 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." msgstr "Es ist noch kein Gesicht eingerichtet. Drück a, um eins hinzuzufügen."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Neuer Name:" msgstr "Neuer Name:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "„%s“ löschen?" msgstr "„%s“ löschen?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Gesichtsentsperrung ein- oder ausschalten" msgstr "Gesichtsentsperrung ein- oder ausschalten"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Ausprobieren" msgstr "Ausprobieren"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Beenden" msgstr "Beenden"
@@ -887,23 +897,23 @@ msgstr ""
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Das Gesicht konnte nicht hinzugefügt werden (%1)." msgstr "Das Gesicht konnte nicht hinzugefügt werden (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "Gesichtsentsperrung für Sperrbildschirm, sudo und Admin-Abfragen" msgstr "Gesichtsentsperrung für Sperrbildschirm, sudo und Admin-Abfragen"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Ein Gesicht einrichten." msgstr "Ein Gesicht einrichten."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Wie das neue Gesicht heißen soll." msgstr "Wie das neue Gesicht heißen soll."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Die Animationen der Bubble einmal abspielen." msgstr "Die Animationen der Bubble einmal abspielen."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Bubble-Stil für die Demo: full oder minimal." msgstr "Bubble-Stil für die Demo: full oder minimal."
+85 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
@@ -58,8 +58,8 @@ msgstr "No se añadió ninguna cara."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Primero, configura tu cara." msgstr "Primero, configura tu cara."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "No se pudo guardar el ajuste." msgstr "No se pudo guardar el ajuste."
@@ -73,100 +73,110 @@ msgstr ""
"No hay sesión de usuario de systemd, así que no se inició el agente de la " "No hay sesión de usuario de systemd, así que no se inició el agente de la "
"pantalla de bloqueo." "pantalla de bloqueo."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "No se pudo activar la extensión de GNOME que muestra la burbuja."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr ""
"Cierra la sesión y vuelve a entrar una vez: entonces GNOME también muestra "
"la burbuja."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"El desbloqueo facial está activado. Bloquea la pantalla y mírala para " "El desbloqueo facial está activado. Bloquea la pantalla y mírala para "
"probarlo." "probarlo."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "" msgstr ""
"También funciona con sudo y las solicitudes de administrador. Consulta " "También funciona con sudo y las solicitudes de administrador. Consulta "
"Ajustes." "Ajustes."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"El desbloqueo facial está desactivado. Tus caras se conservan; bórralas en " "El desbloqueo facial está desactivado. Tus caras se conservan; bórralas en "
"Caras." "Caras."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Todavía no hay ninguna cara configurada." msgstr "Todavía no hay ninguna cara configurada."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "activado" msgstr "activado"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "desactivado" msgstr "desactivado"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s muestras, %s aprendidas" msgstr "%s muestras, %s aprendidas"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "¿Qué cara? Consulta `%s faces` para ver los ID." msgstr "¿Qué cara? Consulta `%s faces` para ver los ID."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Borrado." msgstr "Borrado."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Uso: face-unlock [comando]" msgstr "Uso: face-unlock [comando]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Comandos:" msgstr "Comandos:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Activar el desbloqueo facial" msgstr "Activar el desbloqueo facial"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Desactivarlo (las caras se conservan)" msgstr "Desactivarlo (las caras se conservan)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Añadir una cara" msgstr "Añadir una cara"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Listar las caras" msgstr "Listar las caras"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Borrar una cara" msgstr "Borrar una cara"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Mirar a la cámara y ver lo que ve" msgstr "Mirar a la cámara y ver lo que ve"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Mostrar qué está activado" msgstr "Mostrar qué está activado"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Mostrar esta ayuda" msgstr "Mostrar esta ayuda"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Mostrar la versión" msgstr "Mostrar la versión"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Sin comando se muestra un menú interactivo." msgstr "Sin comando se muestra un menú interactivo."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -174,7 +184,7 @@ msgstr ""
"Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando " "Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando "
"la necesita." "la necesita."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Comando desconocido: %s" msgstr "Comando desconocido: %s"
@@ -353,11 +363,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[s/N]" msgstr "[s/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "ACTIVADO" msgstr "ACTIVADO"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "DESACTIVADO" msgstr "DESACTIVADO"
@@ -398,7 +408,7 @@ msgstr "lenta"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s segundos" msgstr "%s segundos"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automática" msgstr "automática"
@@ -418,8 +428,8 @@ msgstr "detenido"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Al volver a activar el desbloqueo facial, se inicia." msgstr "Al volver a activar el desbloqueo facial, se inicia."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Caras" msgstr "Caras"
@@ -474,13 +484,13 @@ msgstr "El agente de la pantalla de bloqueo no se está ejecutando."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME no deja que otros programas se muestren sobre sus ventanas, así que en " "En GNOME, una pequeña extensión de GNOME muestra la burbuja. Al activar el "
"GNOME no hay burbuja." "desbloqueo facial se activa también."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -488,7 +498,7 @@ msgstr ""
"Desbloquea la pantalla de bloqueo cuando ve tu cara. Desactivado: ahí solo " "Desbloquea la pantalla de bloqueo cuando ve tu cara. Desactivado: ahí solo "
"sirve tu contraseña." "sirve tu contraseña."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -496,7 +506,7 @@ msgstr ""
"Escanea cuando pulsas una tecla o mueves el ratón en la pantalla de bloqueo, " "Escanea cuando pulsas una tecla o mueves el ratón en la pantalla de bloqueo, "
"y cuando el equipo se despierta." "y cuando el equipo se despierta."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -504,7 +514,7 @@ msgstr ""
"Escanea en cuanto se bloquea la pantalla. Desactivado por defecto: si la " "Escanea en cuanto se bloquea la pantalla. Desactivado por defecto: si la "
"bloqueas tú, se desbloquearía enseguida." "bloqueas tú, se desbloquearía enseguida."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -512,7 +522,7 @@ msgstr ""
"sudo usa tu cara en lugar de la contraseña. Si no coincide, escribes la " "sudo usa tu cara en lugar de la contraseña. Si no coincide, escribes la "
"contraseña como siempre." "contraseña como siempre."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -520,18 +530,18 @@ msgstr ""
"Las ventanas de contraseña de tu escritorio y de las aplicaciones, por " "Las ventanas de contraseña de tu escritorio y de las aplicaciones, por "
"ejemplo al instalar software. Si no coincide, escribes la contraseña." "ejemplo al instalar software. Si no coincide, escribes la contraseña."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Tienes que parpadear o girar un poco la cabeza. Esto también frena las fotos " "Tienes que parpadear o girar un poco la cabeza. Esto también frena las fotos "
"impresas." "impresas."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Sin comprobación. Solo para probar una cámara." msgstr "Sin comprobación. Solo para probar una cámara."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -539,24 +549,24 @@ msgstr ""
"Frena fotos en un móvil, una tableta o papel brillante. No hace falta " "Frena fotos en un móvil, una tableta o papel brillante. No hace falta "
"parpadear. Una foto impresa en papel mate puede pasar." "parpadear. Una foto impresa en papel mate puede pasar."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Menos coincidencias erróneas, pero puede que no te reconozca con gafas o con " "Menos coincidencias erróneas, pero puede que no te reconozca con gafas o con "
"poca luz." "poca luz."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "" msgstr ""
"Te reconoce con más facilidad, pero también a alguien que se parezca mucho a " "Te reconoce con más facilidad, pero también a alguien que se parezca mucho a "
"ti." "ti."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "El valor por defecto. Adecuado para la mayoría." msgstr "El valor por defecto. Adecuado para la mayoría."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -564,7 +574,7 @@ msgstr ""
"Tus ojos tienen que estar abiertos y mirando a la pantalla. Así no se " "Tus ojos tienen que estar abiertos y mirando a la pantalla. Así no se "
"desbloquea mientras miras a otro lado o duermes." "desbloquea mientras miras a otro lado o duermes."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -573,11 +583,11 @@ msgstr ""
"tu cara. Una cámara infrarroja necesita su luz encendida (linux-enable-ir-" "tu cara. Una cámara infrarroja necesita su luz encendida (linux-enable-ir-"
"emitter)." "emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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." msgstr "Cuánto tiempo busca la cámara tu cara antes de rendirse."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -585,7 +595,7 @@ msgstr ""
"Tras una coincidencia segura, recuerda tu aspecto actual. Así, un corte de " "Tras una coincidencia segura, recuerda tu aspecto actual. Así, un corte de "
"pelo nuevo o unas gafas no piden configurar de nuevo." "pelo nuevo o unas gafas no piden configurar de nuevo."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -593,85 +603,85 @@ msgstr ""
"Sin escaneo mientras el portátil está cerrado, por ejemplo en un escritorio " "Sin escaneo mientras el portátil está cerrado, por ejemplo en un escritorio "
"con una pantalla externa." "con una pantalla externa."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "" msgstr ""
"La burbuja en la parte superior de la pantalla muestra lo que hace la cámara." "La burbuja en la parte superior de la pantalla muestra lo que hace la cámara."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Una pequeña pastilla con un candado que se abre." msgstr "Una pequeña pastilla con un candado que se abre."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "" msgstr ""
"Una isla con una cara que mira alrededor, luego anillos y una marca de " "Una isla con una cara que mira alrededor, luego anillos y una marca de "
"verificación." "verificación."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "La velocidad a la que se mueve la burbuja." msgstr "La velocidad a la que se mueve la burbuja."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Muestra la burbuja también cuando sudo o una solicitud de administrador " "Muestra la burbuja también cuando sudo o una solicitud de administrador "
"escanea tu cara." "escanea tu cara."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automática (%s)" msgstr "automática (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(infrarroja)" msgstr "(infrarroja)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(no conectada)" msgstr "(no conectada)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Ajustes" msgstr "Ajustes"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ elegir ←→ o Espacio: cambiar q: volver" msgstr "↑↓ elegir ←→ o Espacio: cambiar q: volver"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "para todos los usuarios, pide tu contraseña" msgstr "para todos los usuarios, pide tu contraseña"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Arriba/Abajo: elegir, Espacio: activar/desactivar, r: renombrar, d: borrar, " "Arriba/Abajo: elegir, Espacio: activar/desactivar, r: renombrar, d: borrar, "
"a: añadir, q: volver" "a: añadir, q: volver"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." 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." msgstr "Todavía no hay ninguna cara configurada. Pulsa a para añadir una."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Nuevo nombre:" msgstr "Nuevo nombre:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "¿Borrar «%s»?" msgstr "¿Borrar «%s»?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Activar o desactivar el desbloqueo facial" msgstr "Activar o desactivar el desbloqueo facial"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Probarlo" msgstr "Probarlo"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Salir" msgstr "Salir"
@@ -890,25 +900,25 @@ msgstr ""
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "No se pudo añadir la cara (%1)." msgstr "No se pudo añadir la cara (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Desbloqueo facial para la pantalla de bloqueo, sudo y las solicitudes de " "Desbloqueo facial para la pantalla de bloqueo, sudo y las solicitudes de "
"administrador" "administrador"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Configurar una cara." msgstr "Configurar una cara."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Cómo llamar a la nueva cara." msgstr "Cómo llamar a la nueva cara."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Reproducir una vez las animaciones de la burbuja." msgstr "Reproducir una vez las animaciones de la burbuja."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Estilo de burbuja para la demo: full o minimal." msgstr "Estilo de burbuja para la demo: full o minimal."
+81 -73
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -54,8 +54,8 @@ msgstr ""
msgid "First, set up your face." msgid "First, set up your face."
msgstr "" msgstr ""
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "" msgstr ""
@@ -67,100 +67,108 @@ msgstr ""
msgid "No systemd user session, so the lock screen agent was not started." msgid "No systemd user session, so the lock screen agent was not started."
msgstr "" msgstr ""
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr ""
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr ""
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "" msgstr ""
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "" msgstr ""
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "" msgstr ""
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "" msgstr ""
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "" msgstr ""
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "" msgstr ""
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "" msgstr ""
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "" msgstr ""
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "" msgstr ""
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "" msgstr ""
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "" msgstr ""
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "" msgstr ""
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "" msgstr ""
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "" msgstr ""
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "" msgstr ""
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "" msgstr ""
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "" msgstr ""
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "" msgstr ""
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "" msgstr ""
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
msgstr "" msgstr ""
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "" msgstr ""
@@ -335,11 +343,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "" msgstr ""
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "" msgstr ""
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "" msgstr ""
@@ -380,7 +388,7 @@ msgstr ""
msgid "%s seconds" msgid "%s seconds"
msgstr "" msgstr ""
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "" msgstr ""
@@ -400,8 +408,8 @@ msgstr ""
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "" msgstr ""
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "" msgstr ""
@@ -456,168 +464,168 @@ msgstr ""
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
msgstr "" msgstr ""
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
msgstr "" msgstr ""
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
msgstr "" msgstr ""
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
msgstr "" msgstr ""
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
msgstr "" msgstr ""
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "" msgstr ""
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
msgstr "" msgstr ""
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "" msgstr ""
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "" msgstr ""
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
msgstr "" msgstr ""
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
msgstr "" msgstr ""
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "" msgstr ""
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
msgstr "" msgstr ""
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
msgstr "" msgstr ""
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "" msgstr ""
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "" msgstr ""
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "" msgstr ""
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "" msgstr ""
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "" msgstr ""
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "" msgstr ""
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "" msgstr ""
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "" msgstr ""
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "" msgstr ""
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "" msgstr ""
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "" msgstr ""
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "" msgstr ""
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "" msgstr ""
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "" msgstr ""
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "" msgstr ""
@@ -829,23 +837,23 @@ msgstr ""
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "" msgstr ""
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "" msgstr ""
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "" msgstr ""
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "" msgstr ""
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "" msgstr ""
+85 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: French\n" "Language-Team: French\n"
@@ -60,8 +60,8 @@ msgstr "Aucun visage n'a été ajouté."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Configurez d'abord votre visage." msgstr "Configurez d'abord votre visage."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Impossible d'enregistrer le réglage." msgstr "Impossible d'enregistrer le réglage."
@@ -75,100 +75,110 @@ msgstr ""
"Pas de session utilisateur systemd, l'agent de l'écran de verrouillage n'a " "Pas de session utilisateur systemd, l'agent de l'écran de verrouillage n'a "
"donc pas été démarré." "donc pas été démarré."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Impossible d'activer l'extension GNOME qui affiche la bulle."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr ""
"Déconnectez-vous puis reconnectez-vous une fois : GNOME affichera alors "
"aussi la bulle."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Le déverrouillage facial est activé. Verrouillez l'écran et regardez-le pour " "Le déverrouillage facial est activé. Verrouillez l'écran et regardez-le pour "
"essayer." "essayer."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "" msgstr ""
"Il fonctionne aussi pour sudo et les demandes d'administration. Voir " "Il fonctionne aussi pour sudo et les demandes d'administration. Voir "
"Réglages." "Réglages."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Le déverrouillage facial est désactivé. Vos visages sont conservés ; " "Le déverrouillage facial est désactivé. Vos visages sont conservés ; "
"supprimez-les dans Visages." "supprimez-les dans Visages."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Aucun visage n'est encore configuré." msgstr "Aucun visage n'est encore configuré."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "activé" msgstr "activé"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "désactivé" msgstr "désactivé"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s échantillons, %s appris" msgstr "%s échantillons, %s appris"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Quel visage ? Voir `%s faces` pour les identifiants." msgstr "Quel visage ? Voir `%s faces` pour les identifiants."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Supprimé." msgstr "Supprimé."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Utilisation : face-unlock [commande]" msgstr "Utilisation : face-unlock [commande]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Commandes :" msgstr "Commandes :"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Activer le déverrouillage facial" msgstr "Activer le déverrouillage facial"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Le désactiver (les visages sont conservés)" msgstr "Le désactiver (les visages sont conservés)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Ajouter un visage" msgstr "Ajouter un visage"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Lister les visages" msgstr "Lister les visages"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Supprimer un visage" msgstr "Supprimer un visage"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Regarder la caméra et voir ce qu'elle voit" msgstr "Regarder la caméra et voir ce qu'elle voit"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Afficher ce qui est activé" msgstr "Afficher ce qui est activé"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Afficher cette aide" msgstr "Afficher cette aide"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Afficher la version" msgstr "Afficher la version"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Sans commande, un menu interactif s'affiche." msgstr "Sans commande, un menu interactif s'affiche."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -176,7 +186,7 @@ msgstr ""
"Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est " "Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est "
"demandé quand il le faut." "demandé quand il le faut."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Commande inconnue : %s" msgstr "Commande inconnue : %s"
@@ -357,11 +367,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[o/N]" msgstr "[o/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "ACTIVÉ" msgstr "ACTIVÉ"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "DÉSACTIVÉ" msgstr "DÉSACTIVÉ"
@@ -402,7 +412,7 @@ msgstr "lent"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s secondes" msgstr "%s secondes"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automatique" msgstr "automatique"
@@ -422,8 +432,8 @@ msgstr "arrêté"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Réactiver le déverrouillage facial le démarre." msgstr "Réactiver le déverrouillage facial le démarre."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Visages" msgstr "Visages"
@@ -478,13 +488,13 @@ msgstr "L'agent de l'écran de verrouillage ne tourne pas."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME ne laisse pas d'autres programmes s'afficher au-dessus de ses " "Sous GNOME, une petite extension GNOME affiche la bulle. Activer le "
"fenêtres, il n'y a donc pas de bulle sous GNOME." "déverrouillage facial l'active aussi."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -492,7 +502,7 @@ msgstr ""
"Déverrouille l'écran de verrouillage quand il voit votre visage. Désactivé : " "Déverrouille l'écran de verrouillage quand il voit votre visage. Désactivé : "
"seul votre mot de passe fonctionne." "seul votre mot de passe fonctionne."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -500,7 +510,7 @@ msgstr ""
"Scanne quand vous appuyez sur une touche ou bougez la souris sur l'écran de " "Scanne quand vous appuyez sur une touche ou bougez la souris sur l'écran de "
"verrouillage, et au réveil de l'ordinateur." "verrouillage, et au réveil de l'ordinateur."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -508,7 +518,7 @@ msgstr ""
"Scanne dès que l'écran se verrouille. Désactivé par défaut : si vous " "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." "verrouillez vous-même, il se déverrouillerait aussitôt."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -516,7 +526,7 @@ msgstr ""
"sudo prend votre visage au lieu du mot de passe. Sinon, vous tapez le mot de " "sudo prend votre visage au lieu du mot de passe. Sinon, vous tapez le mot de "
"passe comme d'habitude." "passe comme d'habitude."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -524,18 +534,18 @@ msgstr ""
"Les fenêtres de mot de passe de votre bureau et des applications, par " "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." "exemple pour installer un logiciel. Sinon, vous tapez le mot de passe."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Vous devez cligner des yeux ou tourner un peu la tête. Cela bloque aussi les " "Vous devez cligner des yeux ou tourner un peu la tête. Cela bloque aussi les "
"photos imprimées." "photos imprimées."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Aucun contrôle. Seulement pour essayer une caméra." msgstr "Aucun contrôle. Seulement pour essayer une caméra."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -543,24 +553,24 @@ msgstr ""
"Bloque les photos sur un téléphone, une tablette ou du papier brillant. Pas " "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." "besoin de cligner des yeux. Une photo imprimée mate peut passer."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Moins d'erreurs de correspondance, mais il peut ne pas vous reconnaître avec " "Moins d'erreurs de correspondance, mais il peut ne pas vous reconnaître avec "
"des lunettes ou sous une mauvaise lumière." "des lunettes ou sous une mauvaise lumière."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "" msgstr ""
"Vous reconnaît plus facilement, mais aussi quelqu'un qui vous ressemble " "Vous reconnaît plus facilement, mais aussi quelqu'un qui vous ressemble "
"beaucoup." "beaucoup."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "La valeur par défaut. Convient à la plupart des gens." msgstr "La valeur par défaut. Convient à la plupart des gens."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -568,7 +578,7 @@ msgstr ""
"Vos yeux doivent être ouverts et tournés vers l'écran. Ainsi, rien ne se " "Vos yeux doivent être ouverts et tournés vers l'écran. Ainsi, rien ne se "
"déverrouille quand vous regardez ailleurs ou dormez." "déverrouille quand vous regardez ailleurs ou dormez."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -577,11 +587,11 @@ msgstr ""
"reconfigurez votre visage. Une caméra infrarouge doit avoir sa lumière " "reconfigurez votre visage. Une caméra infrarouge doit avoir sa lumière "
"allumée (linux-enable-ir-emitter)." "allumée (linux-enable-ir-emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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." msgstr "Combien de temps la caméra cherche votre visage avant d'abandonner."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -590,7 +600,7 @@ msgstr ""
"nouvelle coupe ou des lunettes ne demandent donc pas de nouvelle " "nouvelle coupe ou des lunettes ne demandent donc pas de nouvelle "
"configuration." "configuration."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -598,84 +608,84 @@ msgstr ""
"Pas de scan quand le portable est fermé, par exemple à un bureau avec un " "Pas de scan quand le portable est fermé, par exemple à un bureau avec un "
"écran externe." "écran externe."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "La bulle en haut de l'écran montre ce que fait la caméra."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Une petite pilule avec un cadenas qui s'ouvre." msgstr "Une petite pilule avec un cadenas qui s'ouvre."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "" msgstr ""
"Un îlot avec un visage qui regarde autour de lui, puis des anneaux et une " "Un îlot avec un visage qui regarde autour de lui, puis des anneaux et une "
"coche." "coche."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "La vitesse à laquelle la bulle bouge." msgstr "La vitesse à laquelle la bulle bouge."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Affiche aussi la bulle quand sudo ou une demande d'administration scanne " "Affiche aussi la bulle quand sudo ou une demande d'administration scanne "
"votre visage." "votre visage."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automatique (%s)" msgstr "automatique (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(infrarouge)" msgstr "(infrarouge)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(non branchée)" msgstr "(non branchée)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Réglages" msgstr "Réglages"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ choisir ←→ ou Espace : changer q : retour" msgstr "↑↓ choisir ←→ ou Espace : changer q : retour"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "pour tous, demande votre mot de passe" msgstr "pour tous, demande votre mot de passe"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Haut/Bas : choisir, Espace : activer/désactiver, r : renommer, d : " "Haut/Bas : choisir, Espace : activer/désactiver, r : renommer, d : "
"supprimer, a : ajouter, q : retour" "supprimer, a : ajouter, q : retour"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." 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." msgstr "Aucun visage n'est encore configuré. Appuyez sur a pour en ajouter un."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Nouveau nom :" msgstr "Nouveau nom :"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "Supprimer « %s » ?" msgstr "Supprimer « %s » ?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Activer ou désactiver le déverrouillage facial" msgstr "Activer ou désactiver le déverrouillage facial"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Essayer" msgstr "Essayer"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Quitter" msgstr "Quitter"
@@ -895,25 +905,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)." msgid "The face could not be added (%1)."
msgstr "Le visage n'a pas pu être ajouté (%1)." msgstr "Le visage n'a pas pu être ajouté (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Déverrouillage facial pour l'écran de verrouillage, sudo et les demandes " "Déverrouillage facial pour l'écran de verrouillage, sudo et les demandes "
"d'administration" "d'administration"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Configurer un visage." msgstr "Configurer un visage."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Le nom du nouveau visage." msgstr "Le nom du nouveau visage."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Jouer une fois les animations de la bulle." msgstr "Jouer une fois les animations de la bulle."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Style de bulle pour la démo : full ou minimal." msgstr "Style de bulle pour la démo : full ou minimal."
+83 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
@@ -58,8 +58,8 @@ msgstr "Nessun volto aggiunto."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Per prima cosa, configura il tuo volto." msgstr "Per prima cosa, configura il tuo volto."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Impossibile salvare l'impostazione." msgstr "Impossibile salvare l'impostazione."
@@ -73,98 +73,106 @@ msgstr ""
"Nessuna sessione utente di systemd, quindi l'agente della schermata di " "Nessuna sessione utente di systemd, quindi l'agente della schermata di "
"blocco non è stato avviato." "blocco non è stato avviato."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Impossibile attivare l'estensione di GNOME che mostra la bolla."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Esci e rientra una volta: poi GNOME mostra anche la bolla."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Lo sblocco con il volto è attivo. Blocca lo schermo e guardalo per provarlo." "Lo sblocco con il volto è attivo. Blocca lo schermo e guardalo per provarlo."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "" msgstr ""
"Funziona anche con sudo e le richieste di amministratore. Vedi Impostazioni." "Funziona anche con sudo e le richieste di amministratore. Vedi Impostazioni."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Lo sblocco con il volto è disattivato. I tuoi volti restano salvati; " "Lo sblocco con il volto è disattivato. I tuoi volti restano salvati; "
"eliminali in Volti." "eliminali in Volti."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Nessun volto ancora configurato." msgstr "Nessun volto ancora configurato."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "attivo" msgstr "attivo"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "disattivo" msgstr "disattivo"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s campioni, %s appresi" msgstr "%s campioni, %s appresi"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Quale volto? Vedi `%s faces` per gli ID." msgstr "Quale volto? Vedi `%s faces` per gli ID."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Eliminato." msgstr "Eliminato."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Uso: face-unlock [comando]" msgstr "Uso: face-unlock [comando]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Comandi:" msgstr "Comandi:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Attiva lo sblocco con il volto" msgstr "Attiva lo sblocco con il volto"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Disattivalo (i volti restano salvati)" msgstr "Disattivalo (i volti restano salvati)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Aggiungi un volto" msgstr "Aggiungi un volto"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Elenca i volti" msgstr "Elenca i volti"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Elimina un volto" msgstr "Elimina un volto"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Guarda la fotocamera e vedi cosa vede" msgstr "Guarda la fotocamera e vedi cosa vede"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Mostra cosa è attivo" msgstr "Mostra cosa è attivo"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Mostra questo aiuto" msgstr "Mostra questo aiuto"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Mostra la versione" msgstr "Mostra la versione"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Senza comando viene mostrato un menu interattivo." msgstr "Senza comando viene mostrato un menu interattivo."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -172,7 +180,7 @@ msgstr ""
"Esegui questo con il tuo utente, non come root. Chiede la password quando " "Esegui questo con il tuo utente, non come root. Chiede la password quando "
"serve." "serve."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Comando sconosciuto: %s" msgstr "Comando sconosciuto: %s"
@@ -352,11 +360,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[s/N]" msgstr "[s/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "ATTIVO" msgstr "ATTIVO"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "DISATTIVO" msgstr "DISATTIVO"
@@ -397,7 +405,7 @@ msgstr "lenta"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s secondi" msgstr "%s secondi"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automatica" msgstr "automatica"
@@ -417,8 +425,8 @@ msgstr "non in esecuzione"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Riattivare lo sblocco con il volto lo avvia." msgstr "Riattivare lo sblocco con il volto lo avvia."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Volti" msgstr "Volti"
@@ -473,13 +481,13 @@ msgstr "L'agente della schermata di blocco non è in esecuzione."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME non permette ad altri programmi di comparire sopra le sue finestre, " "Su GNOME una piccola estensione di GNOME mostra la bolla. Attivando lo "
"quindi su GNOME non c'è la bolla." "sblocco con il volto si attiva anche lei."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -487,7 +495,7 @@ msgstr ""
"Sblocca la schermata di blocco quando vede il tuo volto. Disattivo: lì " "Sblocca la schermata di blocco quando vede il tuo volto. Disattivo: lì "
"funziona solo la password." "funziona solo la password."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -495,7 +503,7 @@ msgstr ""
"Esegue la scansione quando premi un tasto o muovi il mouse sulla schermata " "Esegue la scansione quando premi un tasto o muovi il mouse sulla schermata "
"di blocco, e quando il computer si riattiva." "di blocco, e quando il computer si riattiva."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -503,7 +511,7 @@ msgstr ""
"Esegue la scansione appena lo schermo si blocca. Disattivo di norma: se lo " "Esegue la scansione appena lo schermo si blocca. Disattivo di norma: se lo "
"blocchi tu, si sbloccherebbe subito." "blocchi tu, si sbloccherebbe subito."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -511,7 +519,7 @@ msgstr ""
"sudo usa il tuo volto al posto della password. Se non corrisponde, digiti la " "sudo usa il tuo volto al posto della password. Se non corrisponde, digiti la "
"password come al solito." "password come al solito."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -519,18 +527,18 @@ msgstr ""
"Le finestre della password del tuo desktop e delle app, per esempio quando " "Le finestre della password del tuo desktop e delle app, per esempio quando "
"installi software. Se non corrisponde, digiti la password." "installi software. Se non corrisponde, digiti la password."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Devi sbattere le palpebre o girare un po' la testa. Questo ferma anche le " "Devi sbattere le palpebre o girare un po' la testa. Questo ferma anche le "
"foto stampate." "foto stampate."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Nessun controllo. Solo per provare una fotocamera." msgstr "Nessun controllo. Solo per provare una fotocamera."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -538,22 +546,22 @@ msgstr ""
"Ferma le foto su un telefono, un tablet o carta lucida. Non serve sbattere " "Ferma le foto su un telefono, un tablet o carta lucida. Non serve sbattere "
"le palpebre. Una foto stampata opaca può passare." "le palpebre. Una foto stampata opaca può passare."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Meno scambi di persona, ma potrebbe non riconoscerti con gli occhiali o con " "Meno scambi di persona, ma potrebbe non riconoscerti con gli occhiali o con "
"poca luce." "poca luce."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." 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." msgstr "Ti riconosce più facilmente, ma anche qualcuno che ti somiglia molto."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "Il valore predefinito. Va bene per la maggior parte delle persone." msgstr "Il valore predefinito. Va bene per la maggior parte delle persone."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -561,7 +569,7 @@ msgstr ""
"I tuoi occhi devono essere aperti e rivolti allo schermo. Così non si " "I tuoi occhi devono essere aperti e rivolti allo schermo. Così non si "
"sblocca mentre guardi altrove o dormi." "sblocca mentre guardi altrove o dormi."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -570,11 +578,11 @@ msgstr ""
"nuovo il tuo volto. Una fotocamera a infrarossi ha bisogno della sua luce " "nuovo il tuo volto. Una fotocamera a infrarossi ha bisogno della sua luce "
"(linux-enable-ir-emitter)." "(linux-enable-ir-emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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." msgstr "Per quanto tempo la fotocamera cerca il tuo volto prima di arrendersi."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -583,7 +591,7 @@ msgstr ""
"nuovo taglio di capelli o gli occhiali non richiedono una nuova " "nuovo taglio di capelli o gli occhiali non richiedono una nuova "
"configurazione." "configurazione."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -591,82 +599,82 @@ msgstr ""
"Nessuna scansione quando il portatile è chiuso, per esempio alla scrivania " "Nessuna scansione quando il portatile è chiuso, per esempio alla scrivania "
"con uno schermo esterno." "con uno schermo esterno."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "La bolla in cima allo schermo mostra cosa sta facendo la fotocamera."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Una piccola pillola con un lucchetto che si apre." msgstr "Una piccola pillola con un lucchetto che si apre."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." 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." msgstr "Un'isola con un volto che si guarda intorno, poi anelli e una spunta."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Quanto velocemente si muove la bolla." msgstr "Quanto velocemente si muove la bolla."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Mostra la bolla anche quando sudo o una richiesta di amministratore " "Mostra la bolla anche quando sudo o una richiesta di amministratore "
"scansiona il tuo volto." "scansiona il tuo volto."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automatica (%s)" msgstr "automatica (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(infrarossi)" msgstr "(infrarossi)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(non collegata)" msgstr "(non collegata)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Impostazioni" msgstr "Impostazioni"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ scegli ←→ o Spazio: cambia q: indietro" msgstr "↑↓ scegli ←→ o Spazio: cambia q: indietro"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "per tutti gli utenti, chiede la tua password" msgstr "per tutti gli utenti, chiede la tua password"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Su/Giù: scegli, Spazio: attiva/disattiva, r: rinomina, d: elimina, a: " "Su/Giù: scegli, Spazio: attiva/disattiva, r: rinomina, d: elimina, a: "
"aggiungi, q: indietro" "aggiungi, q: indietro"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "Nessun volto ancora configurato. Premi a per aggiungerne uno." msgstr "Nessun volto ancora configurato. Premi a per aggiungerne uno."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Nuovo nome:" msgstr "Nuovo nome:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "Eliminare «%s»?" msgstr "Eliminare «%s»?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Attiva o disattiva lo sblocco con il volto" msgstr "Attiva o disattiva lo sblocco con il volto"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Provalo" msgstr "Provalo"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Esci" msgstr "Esci"
@@ -886,25 +894,25 @@ msgstr ""
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Impossibile aggiungere il volto (%1)." msgstr "Impossibile aggiungere il volto (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Sblocco con il volto per la schermata di blocco, sudo e le richieste di " "Sblocco con il volto per la schermata di blocco, sudo e le richieste di "
"amministratore" "amministratore"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Configura un volto." msgstr "Configura un volto."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Come chiamare il nuovo volto." msgstr "Come chiamare il nuovo volto."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Riproduci una volta le animazioni della bolla." msgstr "Riproduci una volta le animazioni della bolla."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Stile della bolla per la demo: full o minimal." msgstr "Stile della bolla per la demo: full o minimal."
+84 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Japanese\n" "Language-Team: Japanese\n"
@@ -57,8 +57,8 @@ msgstr "顔は追加されませんでした。"
msgid "First, set up your face." msgid "First, set up your face."
msgstr "まず顔を登録してください。" msgstr "まず顔を登録してください。"
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "設定を保存できませんでした。" msgstr "設定を保存できませんでした。"
@@ -72,94 +72,103 @@ msgstr ""
"systemd のユーザーセッションがないため、ロック画面エージェントは起動されませ" "systemd のユーザーセッションがないため、ロック画面エージェントは起動されませ"
"んでした。" "んでした。"
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "バブルを表示する GNOME 拡張機能を有効にできませんでした。"
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr ""
"一度ログアウトしてログインし直してください。GNOME でもバブルが表示されます。"
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "顔認証はオンです。画面をロックして、画面を見て試してください。" msgstr "顔認証はオンです。画面をロックして、画面を見て試してください。"
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "sudo や管理者の認証にも使えます。「設定」を参照してください。" msgstr "sudo や管理者の認証にも使えます。「設定」を参照してください。"
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "顔認証はオフです。顔データは残っています。「顔」から削除できます。" msgstr "顔認証はオフです。顔データは残っています。「顔」から削除できます。"
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "まだ顔が登録されていません。" msgstr "まだ顔が登録されていません。"
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "オン" msgstr "オン"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "オフ" msgstr "オフ"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "サンプル %s 件、学習 %s 件" msgstr "サンプル %s 件、学習 %s 件"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "どの顔ですか? ID は `%s faces` で確認できます。" msgstr "どの顔ですか? ID は `%s faces` で確認できます。"
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "削除しました。" msgstr "削除しました。"
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "使い方: face-unlock [コマンド]" msgstr "使い方: face-unlock [コマンド]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "コマンド:" msgstr "コマンド:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "顔認証をオンにする" msgstr "顔認証をオンにする"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "オフにする(顔データは残ります)" msgstr "オフにする(顔データは残ります)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "顔を追加" msgstr "顔を追加"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "顔の一覧" msgstr "顔の一覧"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "顔を削除" msgstr "顔を削除"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "カメラを見て、カメラに映るものを確認する" msgstr "カメラを見て、カメラに映るものを確認する"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "オンになっている機能を表示" msgstr "オンになっている機能を表示"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "このヘルプを表示" msgstr "このヘルプを表示"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "バージョンを表示" msgstr "バージョンを表示"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "コマンドなしで起動すると、対話式メニューが表示されます。" msgstr "コマンドなしで起動すると、対話式メニューが表示されます。"
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -167,7 +176,7 @@ msgstr ""
"root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ね" "root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ね"
"ます。" "ます。"
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "不明なコマンド: %s" msgstr "不明なコマンド: %s"
@@ -346,11 +355,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[y/N]" msgstr "[y/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "オン" msgstr "オン"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "オフ" msgstr "オフ"
@@ -391,7 +400,7 @@ msgstr "遅い"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s 秒" msgstr "%s 秒"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "自動" msgstr "自動"
@@ -411,8 +420,8 @@ msgstr "停止中"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "顔認証をもう一度オンにすると起動します。" msgstr "顔認証をもう一度オンにすると起動します。"
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "顔" msgstr "顔"
@@ -467,13 +476,13 @@ msgstr "ロック画面エージェントが動いていません。"
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME はほかのプログラムを自分のウィンドウの上に表示させないため、GNOME では" "GNOME では小さな GNOME 拡張機能がバブルを表示します。顔認証をオンにすると一緒"
"バブルは表示されません。" "に有効になります。"
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -481,7 +490,7 @@ msgstr ""
"顔を認識するとロック画面を解除します。オフ: ロック画面ではパスワードだけが使" "顔を認識するとロック画面を解除します。オフ: ロック画面ではパスワードだけが使"
"えます。" "えます。"
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -489,7 +498,7 @@ msgstr ""
"ロック画面でキーを押すかマウスを動かしたとき、そしてコンピューターがスリープ" "ロック画面でキーを押すかマウスを動かしたとき、そしてコンピューターがスリープ"
"から復帰したときにスキャンします。" "から復帰したときにスキャンします。"
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -497,7 +506,7 @@ msgstr ""
"画面がロックされるとすぐにスキャンします。既定はオフ: 自分でロックすると、す" "画面がロックされるとすぐにスキャンします。既定はオフ: 自分でロックすると、す"
"ぐに解除されてしまうためです。" "ぐに解除されてしまうためです。"
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -505,7 +514,7 @@ msgstr ""
"sudo でパスワードの代わりに顔を使います。一致しなければ、いつも通りパスワード" "sudo でパスワードの代わりに顔を使います。一致しなければ、いつも通りパスワード"
"を入力します。" "を入力します。"
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -513,16 +522,16 @@ msgstr ""
"デスクトップやアプリのパスワード画面です(ソフトウェアのインストール時な" "デスクトップやアプリのパスワード画面です(ソフトウェアのインストール時な"
"ど)。一致しなければパスワードを入力します。" "ど)。一致しなければパスワードを入力します。"
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "まばたきするか、少し顔を動かす必要があります。印刷した写真も防げます。" msgstr "まばたきするか、少し顔を動かす必要があります。印刷した写真も防げます。"
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "チェックしません。カメラを試すときだけ使ってください。" msgstr "チェックしません。カメラを試すときだけ使ってください。"
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -530,22 +539,22 @@ msgstr ""
"スマホ、タブレット、光沢紙に映った写真を防ぎます。まばたきは不要です。つや消" "スマホ、タブレット、光沢紙に映った写真を防ぎます。まばたきは不要です。つや消"
"しの印刷写真は通ることがあります。" "しの印刷写真は通ることがあります。"
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"誤認識は減りますが、眼鏡をかけているときや暗いときに認識されないことがありま" "誤認識は減りますが、眼鏡をかけているときや暗いときに認識されないことがありま"
"す。" "す。"
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "認識されやすくなりますが、あなたによく似た人も認識されやすくなります。" msgstr "認識されやすくなりますが、あなたによく似た人も認識されやすくなります。"
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "既定値です。ほとんどの人に適しています。" msgstr "既定値です。ほとんどの人に適しています。"
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -553,7 +562,7 @@ msgstr ""
"目を開けて画面を見ている必要があります。よそ見や居眠りの間にロック解除されま" "目を開けて画面を見ている必要があります。よそ見や居眠りの間にロック解除されま"
"せん。" "せん。"
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -561,11 +570,11 @@ msgstr ""
"「自動」は最初の通常のカメラを使います。変更したら顔を登録し直してください。" "「自動」は最初の通常のカメラを使います。変更したら顔を登録し直してください。"
"赤外線カメラはライトをオンにする必要があります(linux-enable-ir-emitter)。" "赤外線カメラはライトをオンにする必要があります(linux-enable-ir-emitter)。"
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "カメラが顔を探してからあきらめるまでの時間です。" msgstr "カメラが顔を探してからあきらめるまでの時間です。"
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -573,7 +582,7 @@ msgstr ""
"確実に一致したとき、今の見た目を覚えます。髪型を変えたり眼鏡をかけたりして" "確実に一致したとき、今の見た目を覚えます。髪型を変えたり眼鏡をかけたりして"
"も、登録し直す必要はありません。" "も、登録し直す必要はありません。"
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -581,79 +590,79 @@ msgstr ""
"ノートパソコンを閉じているときはスキャンしません。外部モニターにつないで机で" "ノートパソコンを閉じているときはスキャンしません。外部モニターにつないで机で"
"使う場合などです。" "使う場合などです。"
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "画面上部のバブルに、カメラの状態が表示されます。" msgstr "画面上部のバブルに、カメラの状態が表示されます。"
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "鍵が開く小さなピルです。" msgstr "鍵が開く小さなピルです。"
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "あたりを見回す顔のアイランド。そのあとリングとチェックマークが出ます。" msgstr "あたりを見回す顔のアイランド。そのあとリングとチェックマークが出ます。"
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "バブルが動く速さです。" msgstr "バブルが動く速さです。"
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "sudo や管理者の認証で顔をスキャンするときにもバブルを表示します。" msgstr "sudo や管理者の認証で顔をスキャンするときにもバブルを表示します。"
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "自動(%s)" msgstr "自動(%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(赤外線)" msgstr "(赤外線)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(未接続)" msgstr "(未接続)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "設定" msgstr "設定"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ 選択 ←→ またはスペース: 変更 q: 戻る" msgstr "↑↓ 選択 ←→ またはスペース: 変更 q: 戻る"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "全ユーザー共通、パスワードが必要" msgstr "全ユーザー共通、パスワードが必要"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"上/下: 選択、スペース: オン/オフ、r: 名前を変更、d: 削除、a: 追加、q: 戻る" "上/下: 選択、スペース: オン/オフ、r: 名前を変更、d: 削除、a: 追加、q: 戻る"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "まだ顔が登録されていません。a を押して追加してください。" msgstr "まだ顔が登録されていません。a を押して追加してください。"
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "新しい名前:" msgstr "新しい名前:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "「%s」を削除しますか?" msgstr "「%s」を削除しますか?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "顔認証のオン/オフ" msgstr "顔認証のオン/オフ"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "試す" msgstr "試す"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "終了" msgstr "終了"
@@ -868,23 +877,23 @@ msgstr "カメラは別のスキャン中です。少ししてからもう一度
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "顔を追加できませんでした(%1)。" msgstr "顔を追加できませんでした(%1)。"
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "ロック画面、sudo、管理者の認証のための顔認証" msgstr "ロック画面、sudo、管理者の認証のための顔認証"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "顔を登録します。" msgstr "顔を登録します。"
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "新しい顔の名前。" msgstr "新しい顔の名前。"
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "バブルのアニメーションを一度再生します。" msgstr "バブルのアニメーションを一度再生します。"
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "デモのバブルスタイル: full または minimal。" msgstr "デモのバブルスタイル: full または minimal。"
+84 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Korean\n" "Language-Team: Korean\n"
@@ -57,8 +57,8 @@ msgstr "얼굴이 추가되지 않았습니다."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "먼저 얼굴을 등록하세요." msgstr "먼저 얼굴을 등록하세요."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "설정을 저장하지 못했습니다." msgstr "설정을 저장하지 못했습니다."
@@ -70,103 +70,112 @@ msgstr "잠금 화면 에이전트를 시작하지 못했습니다."
msgid "No systemd user session, so the lock screen agent was not started." msgid "No systemd user session, so the lock screen agent was not started."
msgstr "systemd 사용자 세션이 없어 잠금 화면 에이전트를 시작하지 않았습니다." msgstr "systemd 사용자 세션이 없어 잠금 화면 에이전트를 시작하지 않았습니다."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "버블을 보여 주는 GNOME 확장을 켜지 못했습니다."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr ""
"한 번 로그아웃했다가 다시 로그인하세요. 그러면 GNOME에서도 버블이 보입니다."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"얼굴 잠금 해제가 켜졌습니다. 화면을 잠그고 화면을 바라보며 사용해 보세요." "얼굴 잠금 해제가 켜졌습니다. 화면을 잠그고 화면을 바라보며 사용해 보세요."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "sudo와 관리자 인증 창에서도 쓸 수 있습니다. 설정을 참고하세요." msgstr "sudo와 관리자 인증 창에서도 쓸 수 있습니다. 설정을 참고하세요."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"얼굴 잠금 해제가 꺼졌습니다. 얼굴 데이터는 남아 있으며, 얼굴 메뉴에서 삭제할 " "얼굴 잠금 해제가 꺼졌습니다. 얼굴 데이터는 남아 있으며, 얼굴 메뉴에서 삭제할 "
"수 있습니다." "수 있습니다."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "아직 등록된 얼굴이 없습니다." msgstr "아직 등록된 얼굴이 없습니다."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "켜짐" msgstr "켜짐"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "꺼짐" msgstr "꺼짐"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "샘플 %s개, 학습 %s개" msgstr "샘플 %s개, 학습 %s개"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "어떤 얼굴인가요? ID는 `%s faces`에서 확인하세요." msgstr "어떤 얼굴인가요? ID는 `%s faces`에서 확인하세요."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "삭제했습니다." msgstr "삭제했습니다."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "사용법: face-unlock [명령]" msgstr "사용법: face-unlock [명령]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "명령:" msgstr "명령:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "얼굴 잠금 해제 켜기" msgstr "얼굴 잠금 해제 켜기"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "끄기 (얼굴 데이터는 유지)" msgstr "끄기 (얼굴 데이터는 유지)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "얼굴 추가" msgstr "얼굴 추가"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "얼굴 목록" msgstr "얼굴 목록"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "얼굴 삭제" msgstr "얼굴 삭제"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "카메라를 보고 카메라에 보이는 것을 확인" msgstr "카메라를 보고 카메라에 보이는 것을 확인"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "켜져 있는 기능 보기" msgstr "켜져 있는 기능 보기"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "이 도움말 보기" msgstr "이 도움말 보기"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "버전 보기" msgstr "버전 보기"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "명령 없이 실행하면 대화형 메뉴가 나옵니다." msgstr "명령 없이 실행하면 대화형 메뉴가 나옵니다."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
msgstr "root가 아닌 본인 사용자로 실행하세요. 필요하면 비밀번호를 묻습니다." msgstr "root가 아닌 본인 사용자로 실행하세요. 필요하면 비밀번호를 묻습니다."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "알 수 없는 명령: %s" msgstr "알 수 없는 명령: %s"
@@ -345,11 +354,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[y/N]" msgstr "[y/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "켜짐" msgstr "켜짐"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "꺼짐" msgstr "꺼짐"
@@ -390,7 +399,7 @@ msgstr "느리게"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s초" msgstr "%s초"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "자동" msgstr "자동"
@@ -410,8 +419,8 @@ msgstr "실행 중 아님"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "얼굴 잠금 해제를 다시 켜면 시작됩니다." msgstr "얼굴 잠금 해제를 다시 켜면 시작됩니다."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "얼굴" msgstr "얼굴"
@@ -466,20 +475,20 @@ msgstr "잠금 화면 에이전트가 실행 중이 아닙니다."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME은 다른 프로그램이 자기 창 위에 표시되는 것을 허용하지 않으므로 GNOME에" "GNOME에서는 작은 GNOME 확장이 버블을 보여 줍니다. 얼굴 잠금 해제를 켜면 함께 "
"서는 버블이 없습니다." "켜집니다."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
msgstr "" msgstr ""
"얼굴을 보면 잠금 화면을 해제합니다. 꺼짐: 잠금 화면에서는 비밀번호만 됩니다." "얼굴을 보면 잠금 화면을 해제합니다. 꺼짐: 잠금 화면에서는 비밀번호만 됩니다."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -487,7 +496,7 @@ msgstr ""
"잠금 화면에서 키를 누르거나 마우스를 움직일 때, 그리고 컴퓨터가 깨어날 때 스" "잠금 화면에서 키를 누르거나 마우스를 움직일 때, 그리고 컴퓨터가 깨어날 때 스"
"캔합니다." "캔합니다."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -495,7 +504,7 @@ msgstr ""
"화면이 잠기자마자 스캔합니다. 기본값은 꺼짐: 직접 잠그면 곧바로 다시 풀려 버" "화면이 잠기자마자 스캔합니다. 기본값은 꺼짐: 직접 잠그면 곧바로 다시 풀려 버"
"리기 때문입니다." "리기 때문입니다."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -503,7 +512,7 @@ msgstr ""
"sudo가 비밀번호 대신 얼굴을 사용합니다. 일치하지 않으면 평소처럼 비밀번호를 " "sudo가 비밀번호 대신 얼굴을 사용합니다. 일치하지 않으면 평소처럼 비밀번호를 "
"입력합니다." "입력합니다."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -511,16 +520,16 @@ msgstr ""
"데스크톱과 앱의 비밀번호 창입니다. 예를 들어 소프트웨어를 설치할 때입니다. 일" "데스크톱과 앱의 비밀번호 창입니다. 예를 들어 소프트웨어를 설치할 때입니다. 일"
"치하지 않으면 비밀번호를 입력합니다." "치하지 않으면 비밀번호를 입력합니다."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "눈을 깜빡이거나 고개를 살짝 돌려야 합니다. 인쇄한 사진도 막아 줍니다." msgstr "눈을 깜빡이거나 고개를 살짝 돌려야 합니다. 인쇄한 사진도 막아 줍니다."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "검사하지 않습니다. 카메라를 시험할 때만 쓰세요." msgstr "검사하지 않습니다. 카메라를 시험할 때만 쓰세요."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -528,22 +537,22 @@ msgstr ""
"휴대폰, 태블릿, 광택지에 있는 사진을 막습니다. 눈을 깜빡일 필요는 없습니다. " "휴대폰, 태블릿, 광택지에 있는 사진을 막습니다. 눈을 깜빡일 필요는 없습니다. "
"무광 인쇄 사진은 통과할 수 있습니다." "무광 인쇄 사진은 통과할 수 있습니다."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"잘못 일치하는 경우가 줄지만, 안경을 쓰거나 조명이 나쁘면 알아보지 못할 수 있" "잘못 일치하는 경우가 줄지만, 안경을 쓰거나 조명이 나쁘면 알아보지 못할 수 있"
"습니다." "습니다."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "더 쉽게 알아보지만, 당신과 많이 닮은 사람도 알아볼 수 있습니다." msgstr "더 쉽게 알아보지만, 당신과 많이 닮은 사람도 알아볼 수 있습니다."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "기본값입니다. 대부분의 사람에게 알맞습니다." msgstr "기본값입니다. 대부분의 사람에게 알맞습니다."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -551,7 +560,7 @@ msgstr ""
"눈을 뜨고 화면을 보고 있어야 합니다. 그래서 다른 곳을 보거나 자는 동안에는 풀" "눈을 뜨고 화면을 보고 있어야 합니다. 그래서 다른 곳을 보거나 자는 동안에는 풀"
"리지 않습니다." "리지 않습니다."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -559,11 +568,11 @@ msgstr ""
"자동은 첫 번째 일반 카메라를 사용합니다. 바꾼 뒤에는 얼굴을 다시 등록하세요. " "자동은 첫 번째 일반 카메라를 사용합니다. 바꾼 뒤에는 얼굴을 다시 등록하세요. "
"적외선 카메라는 조명을 켜야 합니다 (linux-enable-ir-emitter)." "적외선 카메라는 조명을 켜야 합니다 (linux-enable-ir-emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "카메라가 포기하기 전까지 얼굴을 찾는 시간입니다." msgstr "카메라가 포기하기 전까지 얼굴을 찾는 시간입니다."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -571,7 +580,7 @@ msgstr ""
"확실히 일치하면 지금 모습을 기억합니다. 그래서 머리 모양이 바뀌거나 안경을 써" "확실히 일치하면 지금 모습을 기억합니다. 그래서 머리 모양이 바뀌거나 안경을 써"
"도 다시 등록할 필요가 없습니다." "도 다시 등록할 필요가 없습니다."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -579,79 +588,79 @@ msgstr ""
"노트북을 덮었을 때는 스캔하지 않습니다. 예를 들어 외부 모니터를 연결해 책상에" "노트북을 덮었을 때는 스캔하지 않습니다. 예를 들어 외부 모니터를 연결해 책상에"
"서 쓸 때입니다." "서 쓸 때입니다."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "화면 위쪽의 버블이 카메라가 하는 일을 보여 줍니다." msgstr "화면 위쪽의 버블이 카메라가 하는 일을 보여 줍니다."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "자물쇠가 열리는 작은 알약입니다." msgstr "자물쇠가 열리는 작은 알약입니다."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "주위를 둘러보는 얼굴이 있는 아일랜드, 그다음 링과 체크 표시입니다." msgstr "주위를 둘러보는 얼굴이 있는 아일랜드, 그다음 링과 체크 표시입니다."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "버블이 움직이는 속도입니다." msgstr "버블이 움직이는 속도입니다."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "sudo나 관리자 인증 창이 얼굴을 스캔할 때도 버블을 보여 줍니다." msgstr "sudo나 관리자 인증 창이 얼굴을 스캔할 때도 버블을 보여 줍니다."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "자동 (%s)" msgstr "자동 (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(적외선)" msgstr "(적외선)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(연결 안 됨)" msgstr "(연결 안 됨)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "설정" msgstr "설정"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ 선택 ←→ 또는 스페이스: 변경 q: 뒤로" msgstr "↑↓ 선택 ←→ 또는 스페이스: 변경 q: 뒤로"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "모든 사용자에게 적용, 비밀번호 필요" msgstr "모든 사용자에게 적용, 비밀번호 필요"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"위/아래: 선택, 스페이스: 켜기/끄기, r: 이름 바꾸기, d: 삭제, a: 추가, q: 뒤로" "위/아래: 선택, 스페이스: 켜기/끄기, r: 이름 바꾸기, d: 삭제, a: 추가, q: 뒤로"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "아직 등록된 얼굴이 없습니다. a를 눌러 추가하세요." msgstr "아직 등록된 얼굴이 없습니다. a를 눌러 추가하세요."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "새 이름:" msgstr "새 이름:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "\"%s\" 항목을 삭제할까요?" msgstr "\"%s\" 항목을 삭제할까요?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "얼굴 잠금 해제 켜기/끄기" msgstr "얼굴 잠금 해제 켜기/끄기"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "사용해 보기" msgstr "사용해 보기"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "끝내기" msgstr "끝내기"
@@ -868,23 +877,23 @@ msgstr "카메라가 다른 스캔으로 사용 중입니다. 잠시 후 다시
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "얼굴을 추가하지 못했습니다 (%1)." msgstr "얼굴을 추가하지 못했습니다 (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "잠금 화면, sudo, 관리자 인증 창을 위한 얼굴 잠금 해제" msgstr "잠금 화면, sudo, 관리자 인증 창을 위한 얼굴 잠금 해제"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "얼굴을 등록합니다." msgstr "얼굴을 등록합니다."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "새 얼굴의 이름." msgstr "새 얼굴의 이름."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "버블 애니메이션을 한 번 재생합니다." msgstr "버블 애니메이션을 한 번 재생합니다."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "데모용 버블 스타일: full 또는 minimal." msgstr "데모용 버블 스타일: full 또는 minimal."
+83 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Dutch\n" "Language-Team: Dutch\n"
@@ -58,8 +58,8 @@ msgstr "Er is geen gezicht toegevoegd."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Stel eerst je gezicht in." msgstr "Stel eerst je gezicht in."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Kon de instelling niet opslaan." msgstr "Kon de instelling niet opslaan."
@@ -73,98 +73,106 @@ msgstr ""
"Geen systemd-gebruikerssessie, dus de agent voor het vergrendelscherm is " "Geen systemd-gebruikerssessie, dus de agent voor het vergrendelscherm is "
"niet gestart." "niet gestart."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Kon de GNOME-extensie die de bubbel toont niet inschakelen."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Meld je één keer af en weer aan: dan toont GNOME de bubbel ook."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Gezichtsontgrendeling staat aan. Vergrendel het scherm en kijk ernaar om het " "Gezichtsontgrendeling staat aan. Vergrendel het scherm en kijk ernaar om het "
"te proberen." "te proberen."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "Het werkt ook voor sudo en beheerdersvragen. Zie Instellingen." msgstr "Het werkt ook voor sudo en beheerdersvragen. Zie Instellingen."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Gezichtsontgrendeling staat uit. Je gezichten blijven bewaard; verwijder ze " "Gezichtsontgrendeling staat uit. Je gezichten blijven bewaard; verwijder ze "
"onder Gezichten." "onder Gezichten."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Er is nog geen gezicht ingesteld." msgstr "Er is nog geen gezicht ingesteld."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "aan" msgstr "aan"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "uit" msgstr "uit"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s opnames, %s bijgeleerd" msgstr "%s opnames, %s bijgeleerd"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Welk gezicht? Zie `%s faces` voor de ID's." msgstr "Welk gezicht? Zie `%s faces` voor de ID's."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Verwijderd." msgstr "Verwijderd."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Gebruik: face-unlock [opdracht]" msgstr "Gebruik: face-unlock [opdracht]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Opdrachten:" msgstr "Opdrachten:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Gezichtsontgrendeling aanzetten" msgstr "Gezichtsontgrendeling aanzetten"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Uitzetten (gezichten blijven bewaard)" msgstr "Uitzetten (gezichten blijven bewaard)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Een gezicht toevoegen" msgstr "Een gezicht toevoegen"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "De gezichten tonen" msgstr "De gezichten tonen"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Een gezicht verwijderen" msgstr "Een gezicht verwijderen"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "In de camera kijken en zien wat hij ziet" msgstr "In de camera kijken en zien wat hij ziet"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Tonen wat er aan staat" msgstr "Tonen wat er aan staat"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Deze hulp tonen" msgstr "Deze hulp tonen"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "De versie tonen" msgstr "De versie tonen"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Zonder opdracht verschijnt een interactief menu." msgstr "Zonder opdracht verschijnt een interactief menu."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -172,7 +180,7 @@ msgstr ""
"Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je " "Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je "
"wachtwoord als dat nodig is." "wachtwoord als dat nodig is."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Onbekende opdracht: %s" msgstr "Onbekende opdracht: %s"
@@ -351,11 +359,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[j/N]" msgstr "[j/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "AAN" msgstr "AAN"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "UIT" msgstr "UIT"
@@ -396,7 +404,7 @@ msgstr "langzaam"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s seconden" msgstr "%s seconden"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automatisch" msgstr "automatisch"
@@ -416,8 +424,8 @@ msgstr "draait niet"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Gezichtsontgrendeling opnieuw aanzetten start hem." msgstr "Gezichtsontgrendeling opnieuw aanzetten start hem."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Gezichten" msgstr "Gezichten"
@@ -472,13 +480,13 @@ msgstr "De agent voor het vergrendelscherm draait niet."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME laat andere programma's niet boven zijn vensters verschijnen, dus op " "Op GNOME toont een kleine GNOME-extensie de bubbel. Als je "
"GNOME is er geen bubbel." "gezichtsontgrendeling inschakelt, gaat die ook aan."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -486,7 +494,7 @@ msgstr ""
"Ontgrendelt het vergrendelscherm als het je gezicht ziet. Uit: daar werkt " "Ontgrendelt het vergrendelscherm als het je gezicht ziet. Uit: daar werkt "
"alleen je wachtwoord." "alleen je wachtwoord."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -494,7 +502,7 @@ msgstr ""
"Scant als je op het vergrendelscherm een toets indrukt of de muis beweegt, " "Scant als je op het vergrendelscherm een toets indrukt of de muis beweegt, "
"en als de computer ontwaakt." "en als de computer ontwaakt."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -502,7 +510,7 @@ msgstr ""
"Scant zodra het scherm vergrendelt. Standaard uit: vergrendel je zelf, dan " "Scant zodra het scherm vergrendelt. Standaard uit: vergrendel je zelf, dan "
"zou het meteen weer ontgrendelen." "zou het meteen weer ontgrendelen."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -510,7 +518,7 @@ msgstr ""
"sudo neemt je gezicht in plaats van het wachtwoord. Geen match: je typt " "sudo neemt je gezicht in plaats van het wachtwoord. Geen match: je typt "
"zoals gewoonlijk je wachtwoord." "zoals gewoonlijk je wachtwoord."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -518,18 +526,18 @@ msgstr ""
"De wachtwoordvensters van je bureaublad en apps, bijvoorbeeld bij het " "De wachtwoordvensters van je bureaublad en apps, bijvoorbeeld bij het "
"installeren van software. Geen match: je typt je wachtwoord." "installeren van software. Geen match: je typt je wachtwoord."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Je moet knipperen of je hoofd een beetje draaien. Dat houdt ook geprinte " "Je moet knipperen of je hoofd een beetje draaien. Dat houdt ook geprinte "
"foto's tegen." "foto's tegen."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Helemaal geen controle. Alleen om een camera uit te proberen." msgstr "Helemaal geen controle. Alleen om een camera uit te proberen."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -537,22 +545,22 @@ msgstr ""
"Houdt foto's op een telefoon, tablet of glanzend papier tegen. Knipperen is " "Houdt foto's op een telefoon, tablet of glanzend papier tegen. Knipperen is "
"niet nodig. Een matte geprinte foto kan erdoor komen." "niet nodig. Een matte geprinte foto kan erdoor komen."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Minder verwisselingen, maar met een bril of bij slecht licht herkent het je " "Minder verwisselingen, maar met een bril of bij slecht licht herkent het je "
"misschien niet." "misschien niet."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." 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." msgstr "Herkent je makkelijker, maar ook iemand die veel op je lijkt."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "De standaard. Goed voor de meeste mensen." msgstr "De standaard. Goed voor de meeste mensen."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -560,7 +568,7 @@ msgstr ""
"Je ogen moeten open zijn en naar het scherm kijken. Zo ontgrendelt het niet " "Je ogen moeten open zijn en naar het scherm kijken. Zo ontgrendelt het niet "
"als je wegkijkt of slaapt." "als je wegkijkt of slaapt."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -569,11 +577,11 @@ msgstr ""
"opnieuw in. Een infraroodcamera heeft zijn lampje nodig (linux-enable-ir-" "opnieuw in. Een infraroodcamera heeft zijn lampje nodig (linux-enable-ir-"
"emitter)." "emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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." msgstr "Hoe lang de camera naar je gezicht zoekt voordat hij opgeeft."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -581,7 +589,7 @@ msgstr ""
"Na een zekere match onthoudt het hoe je er nu uitziet. Een nieuw kapsel of " "Na een zekere match onthoudt het hoe je er nu uitziet. Een nieuw kapsel of "
"een bril vraagt dus niet om opnieuw instellen." "een bril vraagt dus niet om opnieuw instellen."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -589,80 +597,80 @@ msgstr ""
"Geen scan als de laptop dicht is, bijvoorbeeld aan een bureau met een extern " "Geen scan als de laptop dicht is, bijvoorbeeld aan een bureau met een extern "
"scherm." "scherm."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "De bubbel boven aan het scherm laat zien wat de camera doet."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Een kleine pil met een slot dat opengaat." msgstr "Een kleine pil met een slot dat opengaat."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." 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." msgstr "Een eiland met een gezicht dat rondkijkt, daarna ringen en een vinkje."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Hoe snel de bubbel beweegt." msgstr "Hoe snel de bubbel beweegt."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." 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." msgstr "Toont de bubbel ook als sudo of een beheerdersvraag je gezicht scant."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automatisch (%s)" msgstr "automatisch (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(infrarood)" msgstr "(infrarood)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(niet aangesloten)" msgstr "(niet aangesloten)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Instellingen" msgstr "Instellingen"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ kiezen ←→ of Spatie: wijzigen q: terug" msgstr "↑↓ kiezen ←→ of Spatie: wijzigen q: terug"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "voor alle gebruikers, vraagt om je wachtwoord" msgstr "voor alle gebruikers, vraagt om je wachtwoord"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Omhoog/Omlaag: kiezen, Spatie: aan/uit, r: hernoemen, d: verwijderen, a: " "Omhoog/Omlaag: kiezen, Spatie: aan/uit, r: hernoemen, d: verwijderen, a: "
"toevoegen, q: terug" "toevoegen, q: terug"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." 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." msgstr "Er is nog geen gezicht ingesteld. Druk op a om er een toe te voegen."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Nieuwe naam:" msgstr "Nieuwe naam:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "“%s” verwijderen?" msgstr "“%s” verwijderen?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Gezichtsontgrendeling aan- of uitzetten" msgstr "Gezichtsontgrendeling aan- of uitzetten"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Uitproberen" msgstr "Uitproberen"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Afsluiten" msgstr "Afsluiten"
@@ -883,24 +891,24 @@ msgstr "De camera is bezig met een andere scan. Probeer het zo opnieuw."
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Het gezicht kon niet worden toegevoegd (%1)." msgstr "Het gezicht kon niet worden toegevoegd (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Gezichtsontgrendeling voor het vergrendelscherm, sudo en beheerdersvragen" "Gezichtsontgrendeling voor het vergrendelscherm, sudo en beheerdersvragen"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Een gezicht instellen." msgstr "Een gezicht instellen."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Hoe het nieuwe gezicht moet heten." msgstr "Hoe het nieuwe gezicht moet heten."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "De animaties van de bubbel één keer afspelen." msgstr "De animaties van de bubbel één keer afspelen."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Bubbelstijl voor de demo: full of minimal." msgstr "Bubbelstijl voor de demo: full of minimal."
+83 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Polish\n" "Language-Team: Polish\n"
@@ -59,8 +59,8 @@ msgstr "Nie dodano żadnej twarzy."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Najpierw skonfiguruj swoją twarz." msgstr "Najpierw skonfiguruj swoją twarz."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Nie udało się zapisać ustawienia." msgstr "Nie udało się zapisać ustawienia."
@@ -74,98 +74,106 @@ msgstr ""
"Brak sesji użytkownika systemd, więc agent ekranu blokady nie został " "Brak sesji użytkownika systemd, więc agent ekranu blokady nie został "
"uruchomiony." "uruchomiony."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Nie udało się włączyć rozszerzenia GNOME, które pokazuje dymek."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Wyloguj się i zaloguj ponownie raz: wtedy GNOME też pokaże dymek."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Odblokowywanie twarzą jest włączone. Zablokuj ekran i spójrz na niego, aby " "Odblokowywanie twarzą jest włączone. Zablokuj ekran i spójrz na niego, aby "
"wypróbować." "wypróbować."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "Działa też dla sudo i okien administratora. Zobacz Ustawienia." msgstr "Działa też dla sudo i okien administratora. Zobacz Ustawienia."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Odblokowywanie twarzą jest wyłączone. Twoje twarze zostają zachowane; " "Odblokowywanie twarzą jest wyłączone. Twoje twarze zostają zachowane; "
"usuniesz je w Twarzach." "usuniesz je w Twarzach."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Nie skonfigurowano jeszcze żadnej twarzy." msgstr "Nie skonfigurowano jeszcze żadnej twarzy."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "wł." msgstr "wł."
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "wył." msgstr "wył."
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "próbki: %s, wyuczone: %s" msgstr "próbki: %s, wyuczone: %s"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Która twarz? Identyfikatory pokazuje `%s faces`." msgstr "Która twarz? Identyfikatory pokazuje `%s faces`."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Usunięto." msgstr "Usunięto."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Użycie: face-unlock [polecenie]" msgstr "Użycie: face-unlock [polecenie]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Polecenia:" msgstr "Polecenia:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Włącz odblokowywanie twarzą" msgstr "Włącz odblokowywanie twarzą"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Wyłącz je (twarze zostają zachowane)" msgstr "Wyłącz je (twarze zostają zachowane)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Dodaj twarz" msgstr "Dodaj twarz"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Pokaż listę twarzy" msgstr "Pokaż listę twarzy"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Usuń twarz" msgstr "Usuń twarz"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Spójrz w kamerę i zobacz, co widzi" msgstr "Spójrz w kamerę i zobacz, co widzi"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Pokaż, co jest włączone" msgstr "Pokaż, co jest włączone"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Pokaż tę pomoc" msgstr "Pokaż tę pomoc"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Pokaż wersję" msgstr "Pokaż wersję"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Bez polecenia wyświetla się interaktywne menu." msgstr "Bez polecenia wyświetla się interaktywne menu."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -173,7 +181,7 @@ msgstr ""
"Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy " "Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy "
"będzie potrzebne." "będzie potrzebne."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Nieznane polecenie: %s" msgstr "Nieznane polecenie: %s"
@@ -352,11 +360,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[t/N]" msgstr "[t/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "WŁ." msgstr "WŁ."
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "WYŁ." msgstr "WYŁ."
@@ -397,7 +405,7 @@ msgstr "wolna"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s s" msgstr "%s s"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automatyczna" msgstr "automatyczna"
@@ -417,8 +425,8 @@ msgstr "nie działa"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Ponowne włączenie odblokowywania twarzą ją uruchomi." msgstr "Ponowne włączenie odblokowywania twarzą ją uruchomi."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Twarze" msgstr "Twarze"
@@ -473,13 +481,13 @@ msgstr "Agent ekranu blokady nie działa."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME nie pozwala innym programom wyświetlać się nad swoimi oknami, więc w " "W GNOME dymek pokazuje małe rozszerzenie GNOME. Włączenie odblokowywania "
"GNOME nie ma dymka." "twarzą włącza też je."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -487,7 +495,7 @@ msgstr ""
"Odblokowuje ekran blokady, gdy widzi twoją twarz. Wyłączone: działa tam " "Odblokowuje ekran blokady, gdy widzi twoją twarz. Wyłączone: działa tam "
"tylko hasło." "tylko hasło."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -495,7 +503,7 @@ msgstr ""
"Skanuje, gdy naciśniesz klawisz lub poruszysz myszą na ekranie blokady, oraz " "Skanuje, gdy naciśniesz klawisz lub poruszysz myszą na ekranie blokady, oraz "
"gdy komputer się wybudzi." "gdy komputer się wybudzi."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -503,7 +511,7 @@ msgstr ""
"Skanuje od razu po zablokowaniu ekranu. Domyślnie wyłączone: gdy zablokujesz " "Skanuje od razu po zablokowaniu ekranu. Domyślnie wyłączone: gdy zablokujesz "
"sam, od razu by się odblokował." "sam, od razu by się odblokował."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -511,7 +519,7 @@ msgstr ""
"sudo przyjmuje twarz zamiast hasła. Gdy nie pasuje, wpisujesz hasło jak " "sudo przyjmuje twarz zamiast hasła. Gdy nie pasuje, wpisujesz hasło jak "
"zwykle." "zwykle."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -519,18 +527,18 @@ msgstr ""
"Okna haseł pulpitu i aplikacji, na przykład przy instalowaniu programów. Gdy " "Okna haseł pulpitu i aplikacji, na przykład przy instalowaniu programów. Gdy "
"twarz nie pasuje, wpisujesz hasło." "twarz nie pasuje, wpisujesz hasło."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Musisz mrugnąć albo lekko obrócić głowę. To zatrzymuje też wydrukowane " "Musisz mrugnąć albo lekko obrócić głowę. To zatrzymuje też wydrukowane "
"zdjęcia." "zdjęcia."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Bez żadnej kontroli. Tylko do wypróbowania kamery." msgstr "Bez żadnej kontroli. Tylko do wypróbowania kamery."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -538,22 +546,22 @@ msgstr ""
"Zatrzymuje zdjęcia na telefonie, tablecie lub błyszczącym papierze. Nie " "Zatrzymuje zdjęcia na telefonie, tablecie lub błyszczącym papierze. Nie "
"trzeba mrugać. Matowy wydruk może przejść." "trzeba mrugać. Matowy wydruk może przejść."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Mniej pomyłek, ale może cię nie rozpoznać w okularach albo przy słabym " "Mniej pomyłek, ale może cię nie rozpoznać w okularach albo przy słabym "
"świetle." "świetle."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." 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." msgstr "Łatwiej cię rozpoznaje, ale też kogoś bardzo do ciebie podobnego."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "Domyślna. Pasuje większości osób." msgstr "Domyślna. Pasuje większości osób."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -561,7 +569,7 @@ msgstr ""
"Twoje oczy muszą być otwarte i patrzeć na ekran. Dzięki temu nie odblokuje, " "Twoje oczy muszą być otwarte i patrzeć na ekran. Dzięki temu nie odblokuje, "
"gdy patrzysz w bok lub śpisz." "gdy patrzysz w bok lub śpisz."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -570,11 +578,11 @@ msgstr ""
"nowa. Kamera na podczerwień potrzebuje włączonego światła (linux-enable-ir-" "nowa. Kamera na podczerwień potrzebuje włączonego światła (linux-enable-ir-"
"emitter)." "emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "Jak długo kamera szuka twojej twarzy, zanim się podda." msgstr "Jak długo kamera szuka twojej twarzy, zanim się podda."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -582,7 +590,7 @@ msgstr ""
"Po pewnym dopasowaniu zapamiętuje, jak teraz wyglądasz. Nowa fryzura czy " "Po pewnym dopasowaniu zapamiętuje, jak teraz wyglądasz. Nowa fryzura czy "
"okulary nie wymagają więc ponownej konfiguracji." "okulary nie wymagają więc ponownej konfiguracji."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -590,81 +598,81 @@ msgstr ""
"Bez skanowania, gdy laptop jest zamknięty, na przykład przy biurku z " "Bez skanowania, gdy laptop jest zamknięty, na przykład przy biurku z "
"zewnętrznym ekranem." "zewnętrznym ekranem."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "Dymek u góry ekranu pokazuje, co robi kamera."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Mała pigułka z kłódką, która się otwiera." msgstr "Mała pigułka z kłódką, która się otwiera."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." 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." msgstr "Wyspa z twarzą, która się rozgląda, potem pierścienie i ptaszek."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Jak szybko porusza się dymek." msgstr "Jak szybko porusza się dymek."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Pokazuje dymek także wtedy, gdy sudo lub okno administratora skanuje twarz." "Pokazuje dymek także wtedy, gdy sudo lub okno administratora skanuje twarz."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automatyczna (%s)" msgstr "automatyczna (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(podczerwień)" msgstr "(podczerwień)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(niepodłączona)" msgstr "(niepodłączona)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Ustawienia" msgstr "Ustawienia"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ wybierz ←→ lub Spacja: zmień q: wstecz" msgstr "↑↓ wybierz ←→ lub Spacja: zmień q: wstecz"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "dla wszystkich użytkowników, pyta o hasło" msgstr "dla wszystkich użytkowników, pyta o hasło"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Góra/Dół: wybierz, Spacja: wł./wył., r: zmień nazwę, d: usuń, a: dodaj, q: " "Góra/Dół: wybierz, Spacja: wł./wył., r: zmień nazwę, d: usuń, a: dodaj, q: "
"wstecz" "wstecz"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "Nie skonfigurowano jeszcze żadnej twarzy. Naciśnij a, aby dodać." msgstr "Nie skonfigurowano jeszcze żadnej twarzy. Naciśnij a, aby dodać."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Nowa nazwa:" msgstr "Nowa nazwa:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "Usunąć „%s”?" msgstr "Usunąć „%s”?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Włącz lub wyłącz odblokowywanie twarzą" msgstr "Włącz lub wyłącz odblokowywanie twarzą"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Wypróbuj" msgstr "Wypróbuj"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Zakończ" msgstr "Zakończ"
@@ -879,23 +887,23 @@ msgstr "Kamera jest zajęta innym skanowaniem. Spróbuj ponownie za chwilę."
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Nie udało się dodać twarzy (%1)." msgstr "Nie udało się dodać twarzy (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "Odblokowywanie twarzą dla ekranu blokady, sudo i okien administratora" msgstr "Odblokowywanie twarzą dla ekranu blokady, sudo i okien administratora"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Skonfiguruj twarz." msgstr "Skonfiguruj twarz."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Jak nazwać nową twarz." msgstr "Jak nazwać nową twarz."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Odtwórz raz animacje dymka." msgstr "Odtwórz raz animacje dymka."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Styl dymka w demo: full lub minimal." msgstr "Styl dymka w demo: full lub minimal."
+83 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Brazilian Portuguese\n" "Language-Team: Brazilian Portuguese\n"
@@ -58,8 +58,8 @@ msgstr "Nenhum rosto foi adicionado."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Primeiro, configure o seu rosto." msgstr "Primeiro, configure o seu rosto."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Não foi possível salvar a configuração." msgstr "Não foi possível salvar a configuração."
@@ -73,99 +73,107 @@ msgstr ""
"Sem sessão de usuário do systemd, então o agente da tela de bloqueio não foi " "Sem sessão de usuário do systemd, então o agente da tela de bloqueio não foi "
"iniciado." "iniciado."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Não foi possível ativar a extensão do GNOME que mostra a bolha."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Saia e entre de novo uma vez: aí o GNOME também mostra a bolha."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"O desbloqueio facial está ativado. Bloqueie a tela e olhe para ela para " "O desbloqueio facial está ativado. Bloqueie a tela e olhe para ela para "
"testar." "testar."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "" msgstr ""
"Ele também funciona com sudo e pedidos de administrador. Veja Configurações." "Ele também funciona com sudo e pedidos de administrador. Veja Configurações."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"O desbloqueio facial está desativado. Seus rostos são mantidos; apague-os em " "O desbloqueio facial está desativado. Seus rostos são mantidos; apague-os em "
"Rostos." "Rostos."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Nenhum rosto configurado ainda." msgstr "Nenhum rosto configurado ainda."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "ativado" msgstr "ativado"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "desativado" msgstr "desativado"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s amostras, %s aprendidas" msgstr "%s amostras, %s aprendidas"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Qual rosto? Veja `%s faces` para os IDs." msgstr "Qual rosto? Veja `%s faces` para os IDs."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Apagado." msgstr "Apagado."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Uso: face-unlock [comando]" msgstr "Uso: face-unlock [comando]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Comandos:" msgstr "Comandos:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Ativar o desbloqueio facial" msgstr "Ativar o desbloqueio facial"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Desativar (os rostos são mantidos)" msgstr "Desativar (os rostos são mantidos)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Adicionar um rosto" msgstr "Adicionar um rosto"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Listar os rostos" msgstr "Listar os rostos"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Apagar um rosto" msgstr "Apagar um rosto"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Olhar para a câmera e ver o que ela vê" msgstr "Olhar para a câmera e ver o que ela vê"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Mostrar o que está ativado" msgstr "Mostrar o que está ativado"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Mostrar esta ajuda" msgstr "Mostrar esta ajuda"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Mostrar a versão" msgstr "Mostrar a versão"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Sem comando, um menu interativo é exibido." msgstr "Sem comando, um menu interativo é exibido."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -173,7 +181,7 @@ msgstr ""
"Execute isto com o seu próprio usuário, não como root. Ele pede a sua senha " "Execute isto com o seu próprio usuário, não como root. Ele pede a sua senha "
"quando precisa." "quando precisa."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Comando desconhecido: %s" msgstr "Comando desconhecido: %s"
@@ -352,11 +360,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[s/N]" msgstr "[s/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "ATIVADO" msgstr "ATIVADO"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "DESATIVADO" msgstr "DESATIVADO"
@@ -397,7 +405,7 @@ msgstr "lenta"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s segundos" msgstr "%s segundos"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "automática" msgstr "automática"
@@ -417,8 +425,8 @@ msgstr "parado"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Ativar o desbloqueio facial de novo o inicia." msgstr "Ativar o desbloqueio facial de novo o inicia."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Rostos" msgstr "Rostos"
@@ -473,13 +481,13 @@ msgstr "O agente da tela de bloqueio não está em execução."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"O GNOME não deixa outros programas aparecerem sobre as janelas dele, então " "No GNOME, uma pequena extensão do GNOME mostra a bolha. Ativar o desbloqueio "
"no GNOME não há bolha." "facial também a ativa."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -487,7 +495,7 @@ msgstr ""
"Desbloqueia a tela de bloqueio quando vê o seu rosto. Desativado: lá só a " "Desbloqueia a tela de bloqueio quando vê o seu rosto. Desativado: lá só a "
"sua senha funciona." "sua senha funciona."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -495,7 +503,7 @@ msgstr ""
"Faz a leitura quando você aperta uma tecla ou mexe o mouse na tela de " "Faz a leitura quando você aperta uma tecla ou mexe o mouse na tela de "
"bloqueio, e quando o computador acorda." "bloqueio, e quando o computador acorda."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -503,7 +511,7 @@ msgstr ""
"Faz a leitura assim que a tela é bloqueada. Desativado por padrão: se você " "Faz a leitura assim que a tela é bloqueada. Desativado por padrão: se você "
"mesmo bloquear, ela desbloquearia logo em seguida." "mesmo bloquear, ela desbloquearia logo em seguida."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -511,7 +519,7 @@ msgstr ""
"O sudo usa o seu rosto em vez da senha. Se não corresponder, você digita a " "O sudo usa o seu rosto em vez da senha. Se não corresponder, você digita a "
"senha como sempre." "senha como sempre."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -519,18 +527,18 @@ msgstr ""
"As janelas de senha da sua área de trabalho e dos apps, por exemplo ao " "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." "instalar programas. Se não corresponder, você digita a senha."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Você precisa piscar ou virar um pouco a cabeça. Isso também barra fotos " "Você precisa piscar ou virar um pouco a cabeça. Isso também barra fotos "
"impressas." "impressas."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Nenhuma verificação. Só para testar uma câmera." msgstr "Nenhuma verificação. Só para testar uma câmera."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -538,23 +546,23 @@ msgstr ""
"Barra fotos em celular, tablet ou papel brilhante. Não é preciso piscar. Uma " "Barra fotos em celular, tablet ou papel brilhante. Não é preciso piscar. Uma "
"foto impressa em papel fosco pode passar." "foto impressa em papel fosco pode passar."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Menos confusões, mas talvez não reconheça você de óculos ou com pouca luz." "Menos confusões, mas talvez não reconheça você de óculos ou com pouca luz."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "" msgstr ""
"Reconhece você com mais facilidade, mas também alguém muito parecido com " "Reconhece você com mais facilidade, mas também alguém muito parecido com "
"você." "você."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "O padrão. Serve para a maioria das pessoas." msgstr "O padrão. Serve para a maioria das pessoas."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -562,7 +570,7 @@ msgstr ""
"Seus olhos precisam estar abertos e voltados para a tela. Assim não " "Seus olhos precisam estar abertos e voltados para a tela. Assim não "
"desbloqueia enquanto você olha para outro lado ou dorme." "desbloqueia enquanto você olha para outro lado ou dorme."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -571,11 +579,11 @@ msgstr ""
"rosto de novo. Uma câmera infravermelha precisa da luz ligada (linux-enable-" "rosto de novo. Uma câmera infravermelha precisa da luz ligada (linux-enable-"
"ir-emitter)." "ir-emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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." msgstr "Quanto tempo a câmera procura o seu rosto antes de desistir."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -583,7 +591,7 @@ msgstr ""
"Após uma correspondência segura, ele guarda a sua aparência atual. Assim, um " "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." "corte de cabelo novo ou óculos não exigem nova configuração."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -591,82 +599,82 @@ msgstr ""
"Nenhuma leitura com o notebook fechado, por exemplo numa mesa com uma tela " "Nenhuma leitura com o notebook fechado, por exemplo numa mesa com uma tela "
"externa." "externa."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "A bolha no topo da tela mostra o que a câmera está fazendo."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Uma pequena pílula com um cadeado que se abre." msgstr "Uma pequena pílula com um cadeado que se abre."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." 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." msgstr "Uma ilha com um rosto que olha em volta, depois anéis e um visto."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "A velocidade com que a bolha se move." msgstr "A velocidade com que a bolha se move."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Mostra a bolha também quando o sudo ou um pedido de administrador lê o seu " "Mostra a bolha também quando o sudo ou um pedido de administrador lê o seu "
"rosto." "rosto."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "automática (%s)" msgstr "automática (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(infravermelha)" msgstr "(infravermelha)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(não conectada)" msgstr "(não conectada)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Configurações" msgstr "Configurações"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ escolher ←→ ou Espaço: mudar q: voltar" msgstr "↑↓ escolher ←→ ou Espaço: mudar q: voltar"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "para todos os usuários, pede a sua senha" msgstr "para todos os usuários, pede a sua senha"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Cima/Baixo: escolher, Espaço: ativar/desativar, r: renomear, d: apagar, a: " "Cima/Baixo: escolher, Espaço: ativar/desativar, r: renomear, d: apagar, a: "
"adicionar, q: voltar" "adicionar, q: voltar"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "Nenhum rosto configurado ainda. Aperte a para adicionar um." msgstr "Nenhum rosto configurado ainda. Aperte a para adicionar um."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Novo nome:" msgstr "Novo nome:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "Apagar \"%s\"?" msgstr "Apagar \"%s\"?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Ativar ou desativar o desbloqueio facial" msgstr "Ativar ou desativar o desbloqueio facial"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Testar" msgstr "Testar"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Sair" msgstr "Sair"
@@ -885,25 +893,25 @@ msgstr "A câmera está ocupada com outra leitura. Tente de novo em instantes."
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Não foi possível adicionar o rosto (%1)." msgstr "Não foi possível adicionar o rosto (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Desbloqueio facial para a tela de bloqueio, o sudo e os pedidos de " "Desbloqueio facial para a tela de bloqueio, o sudo e os pedidos de "
"administrador" "administrador"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Configurar um rosto." msgstr "Configurar um rosto."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Como chamar o novo rosto." msgstr "Como chamar o novo rosto."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Reproduzir as animações da bolha uma vez." msgstr "Reproduzir as animações da bolha uma vez."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Estilo da bolha para a demonstração: full ou minimal." msgstr "Estilo da bolha para a demonstração: full ou minimal."
+83 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
@@ -59,8 +59,8 @@ msgstr "Лицо не добавлено."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Сначала настройте своё лицо." msgstr "Сначала настройте своё лицо."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Не удалось сохранить настройку." msgstr "Не удалось сохранить настройку."
@@ -74,98 +74,106 @@ msgstr ""
"Нет пользовательского сеанса systemd, поэтому агент экрана блокировки не " "Нет пользовательского сеанса systemd, поэтому агент экрана блокировки не "
"запущен." "запущен."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Не удалось включить расширение GNOME, которое показывает пузырь."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Выйдите и войдите снова один раз: тогда GNOME тоже покажет пузырь."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Разблокировка по лицу включена. Заблокируйте экран и посмотрите на него, " "Разблокировка по лицу включена. Заблокируйте экран и посмотрите на него, "
"чтобы попробовать." "чтобы попробовать."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "Она работает и для sudo, и для запросов администратора. См. Настройки." msgstr "Она работает и для sudo, и для запросов администратора. См. Настройки."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Разблокировка по лицу выключена. Ваши лица сохранены; удалить их можно в " "Разблокировка по лицу выключена. Ваши лица сохранены; удалить их можно в "
"разделе Лица." "разделе Лица."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Ещё не настроено ни одного лица." msgstr "Ещё не настроено ни одного лица."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "вкл." msgstr "вкл."
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "выкл." msgstr "выкл."
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "образцов: %s, выучено: %s" msgstr "образцов: %s, выучено: %s"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Какое лицо? Номера показывает `%s faces`." msgstr "Какое лицо? Номера показывает `%s faces`."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Удалено." msgstr "Удалено."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Использование: face-unlock [команда]" msgstr "Использование: face-unlock [команда]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Команды:" msgstr "Команды:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Включить разблокировку по лицу" msgstr "Включить разблокировку по лицу"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Выключить её (лица сохраняются)" msgstr "Выключить её (лица сохраняются)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Добавить лицо" msgstr "Добавить лицо"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Показать список лиц" msgstr "Показать список лиц"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Удалить лицо" msgstr "Удалить лицо"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Посмотреть в камеру и увидеть, что она видит" msgstr "Посмотреть в камеру и увидеть, что она видит"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Показать, что включено" msgstr "Показать, что включено"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Показать эту справку" msgstr "Показать эту справку"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Показать версию" msgstr "Показать версию"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Без команды открывается интерактивное меню." msgstr "Без команды открывается интерактивное меню."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -173,7 +181,7 @@ msgstr ""
"Запускайте это от своего пользователя, не от root. Пароль будет запрошен, " "Запускайте это от своего пользователя, не от root. Пароль будет запрошен, "
"когда он понадобится." "когда он понадобится."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Неизвестная команда: %s" msgstr "Неизвестная команда: %s"
@@ -352,11 +360,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[д/Н]" msgstr "[д/Н]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "ВКЛ" msgstr "ВКЛ"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "ВЫКЛ" msgstr "ВЫКЛ"
@@ -397,7 +405,7 @@ msgstr "медленная"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s с" msgstr "%s с"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "автоматически" msgstr "автоматически"
@@ -417,8 +425,8 @@ msgstr "не запущена"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Повторное включение разблокировки по лицу запустит её." msgstr "Повторное включение разблокировки по лицу запустит её."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Лица" msgstr "Лица"
@@ -473,13 +481,13 @@ msgstr "Агент экрана блокировки не запущен."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME не позволяет другим программам показываться поверх своих окон, поэтому " "В GNOME пузырь показывает небольшое расширение GNOME. Оно включается вместе "
"в GNOME пузыря нет." "с разблокировкой по лицу."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -487,7 +495,7 @@ msgstr ""
"Снимает блокировку экрана, когда видит ваше лицо. Выкл.: там работает только " "Снимает блокировку экрана, когда видит ваше лицо. Выкл.: там работает только "
"пароль." "пароль."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -495,7 +503,7 @@ msgstr ""
"Сканирует, когда вы нажимаете клавишу или двигаете мышь на экране " "Сканирует, когда вы нажимаете клавишу или двигаете мышь на экране "
"блокировки, и когда компьютер просыпается." "блокировки, и когда компьютер просыпается."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -503,7 +511,7 @@ msgstr ""
"Сканирует сразу после блокировки экрана. По умолчанию выкл.: если вы " "Сканирует сразу после блокировки экрана. По умолчанию выкл.: если вы "
"блокируете сами, он тут же разблокировался бы." "блокируете сами, он тут же разблокировался бы."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -511,7 +519,7 @@ msgstr ""
"sudo принимает ваше лицо вместо пароля. Не совпало: вы вводите пароль как " "sudo принимает ваше лицо вместо пароля. Не совпало: вы вводите пароль как "
"обычно." "обычно."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -519,18 +527,18 @@ msgstr ""
"Окна ввода пароля рабочего стола и приложений, например при установке " "Окна ввода пароля рабочего стола и приложений, например при установке "
"программ. Не совпало: вы вводите пароль." "программ. Не совпало: вы вводите пароль."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Нужно моргнуть или слегка повернуть голову. Это также останавливает " "Нужно моргнуть или слегка повернуть голову. Это также останавливает "
"распечатанные фото." "распечатанные фото."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Никакой проверки. Только чтобы опробовать камеру." msgstr "Никакой проверки. Только чтобы опробовать камеру."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -538,22 +546,22 @@ msgstr ""
"Останавливает фото на телефоне, планшете или глянцевой бумаге. Моргать не " "Останавливает фото на телефоне, планшете или глянцевой бумаге. Моргать не "
"нужно. Матовое распечатанное фото может пройти." "нужно. Матовое распечатанное фото может пройти."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Меньше ошибочных совпадений, но может не узнать вас в очках или при плохом " "Меньше ошибочных совпадений, но может не узнать вас в очках или при плохом "
"свете." "свете."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "Узнаёт вас легче, но и того, кто очень на вас похож." msgstr "Узнаёт вас легче, но и того, кто очень на вас похож."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "По умолчанию. Подходит большинству." msgstr "По умолчанию. Подходит большинству."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -561,7 +569,7 @@ msgstr ""
"Ваши глаза должны быть открыты и смотреть на экран. Так он не " "Ваши глаза должны быть открыты и смотреть на экран. Так он не "
"разблокируется, пока вы смотрите в сторону или спите." "разблокируется, пока вы смотрите в сторону или спите."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -570,11 +578,11 @@ msgstr ""
"заново. Инфракрасной камере нужна включённая подсветка (linux-enable-ir-" "заново. Инфракрасной камере нужна включённая подсветка (linux-enable-ir-"
"emitter)." "emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "Как долго камера ищет ваше лицо, прежде чем сдаться." msgstr "Как долго камера ищет ваше лицо, прежде чем сдаться."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -582,7 +590,7 @@ msgstr ""
"После уверенного совпадения запоминает, как вы выглядите сейчас. Новая " "После уверенного совпадения запоминает, как вы выглядите сейчас. Новая "
"стрижка или очки не требуют новой настройки." "стрижка или очки не требуют новой настройки."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -590,82 +598,82 @@ msgstr ""
"Без сканирования, когда ноутбук закрыт, например за столом с внешним " "Без сканирования, когда ноутбук закрыт, например за столом с внешним "
"монитором." "монитором."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "Пузырь вверху экрана показывает, что делает камера." msgstr "Пузырь вверху экрана показывает, что делает камера."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Маленькая таблетка с замком, который открывается." msgstr "Маленькая таблетка с замком, который открывается."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "Остров с лицом, которое оглядывается, затем кольца и галочка." msgstr "Остров с лицом, которое оглядывается, затем кольца и галочка."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Как быстро движется пузырь." msgstr "Как быстро движется пузырь."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Показывает пузырь и тогда, когда sudo или запрос администратора сканирует " "Показывает пузырь и тогда, когда sudo или запрос администратора сканирует "
"ваше лицо." "ваше лицо."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "автоматически (%s)" msgstr "автоматически (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(инфракрасная)" msgstr "(инфракрасная)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(не подключена)" msgstr "(не подключена)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Настройки" msgstr "Настройки"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ выбор ←→ или Пробел: изменить q: назад" msgstr "↑↓ выбор ←→ или Пробел: изменить q: назад"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "для всех пользователей, запрашивает пароль" msgstr "для всех пользователей, запрашивает пароль"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Вверх/Вниз: выбор, Пробел: вкл./выкл., r: переименовать, d: удалить, a: " "Вверх/Вниз: выбор, Пробел: вкл./выкл., r: переименовать, d: удалить, a: "
"добавить, q: назад" "добавить, q: назад"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "Ещё не настроено ни одного лица. Нажмите a, чтобы добавить." msgstr "Ещё не настроено ни одного лица. Нажмите a, чтобы добавить."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Новое имя:" msgstr "Новое имя:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "Удалить «%s»?" msgstr "Удалить «%s»?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Включить или выключить разблокировку по лицу" msgstr "Включить или выключить разблокировку по лицу"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Попробовать" msgstr "Попробовать"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Выход" msgstr "Выход"
@@ -882,24 +890,24 @@ msgstr "Камера занята другим сканированием. По
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Не удалось добавить лицо (%1)." msgstr "Не удалось добавить лицо (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Разблокировка по лицу для экрана блокировки, sudo и запросов администратора" "Разблокировка по лицу для экрана блокировки, sudo и запросов администратора"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Настроить лицо." msgstr "Настроить лицо."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Как назвать новое лицо." msgstr "Как назвать новое лицо."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Один раз проиграть анимации пузыря." msgstr "Один раз проиграть анимации пузыря."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Стиль пузыря для демо: full или minimal." msgstr "Стиль пузыря для демо: full или minimal."
+84 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Turkish\n" "Language-Team: Turkish\n"
@@ -57,8 +57,8 @@ msgstr "Hiç yüz eklenmedi."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Önce yüzünüzü kurun." msgstr "Önce yüzünüzü kurun."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Ayar kaydedilemedi." msgstr "Ayar kaydedilemedi."
@@ -71,96 +71,105 @@ msgid "No systemd user session, so the lock screen agent was not started."
msgstr "" msgstr ""
"systemd kullanıcı oturumu yok, bu yüzden kilit ekranı aracısı başlatılmadı." "systemd kullanıcı oturumu yok, bu yüzden kilit ekranı aracısı başlatılmadı."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Baloncuğu gösteren GNOME uzantısı açılamadı."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr ""
"Bir kez oturumu kapatıp yeniden açın: o zaman GNOME de baloncuğu gösterir."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." 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." msgstr "Yüzle kilit açma açık. Denemek için ekranı kilitleyin ve ona bakın."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "sudo ve yönetici istemlerinde de çalışabilir. Ayarlar'a bakın." msgstr "sudo ve yönetici istemlerinde de çalışabilir. Ayarlar'a bakın."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Yüzle kilit açma kapalı. Yüzleriniz saklanıyor; Yüzler bölümünden " "Yüzle kilit açma kapalı. Yüzleriniz saklanıyor; Yüzler bölümünden "
"silebilirsiniz." "silebilirsiniz."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Henüz hiç yüz kurulmadı." msgstr "Henüz hiç yüz kurulmadı."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "açık" msgstr "açık"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "kapalı" msgstr "kapalı"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s örnek, %s öğrenilen" msgstr "%s örnek, %s öğrenilen"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Hangi yüz? Kimlikler için `%s faces` komutuna bakın." msgstr "Hangi yüz? Kimlikler için `%s faces` komutuna bakın."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Silindi." msgstr "Silindi."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Kullanım: face-unlock [komut]" msgstr "Kullanım: face-unlock [komut]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Komutlar:" msgstr "Komutlar:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Yüzle kilit açmayı aç" msgstr "Yüzle kilit açmayı aç"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Kapat (yüzler saklanır)" msgstr "Kapat (yüzler saklanır)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Yüz ekle" msgstr "Yüz ekle"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Yüzleri listele" msgstr "Yüzleri listele"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Bir yüzü sil" msgstr "Bir yüzü sil"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Kameraya bak ve onun ne gördüğünü gör" msgstr "Kameraya bak ve onun ne gördüğünü gör"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Neyin açık olduğunu göster" msgstr "Neyin açık olduğunu göster"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Bu yardımı göster" msgstr "Bu yardımı göster"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Sürümü göster" msgstr "Sürümü göster"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Komut verilmezse etkileşimli bir menü gösterilir." msgstr "Komut verilmezse etkileşimli bir menü gösterilir."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -168,7 +177,7 @@ msgstr ""
"Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde " "Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde "
"parolanızı sorar." "parolanızı sorar."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Bilinmeyen komut: %s" msgstr "Bilinmeyen komut: %s"
@@ -347,11 +356,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[e/H]" msgstr "[e/H]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "AÇIK" msgstr "AÇIK"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "KAPALI" msgstr "KAPALI"
@@ -392,7 +401,7 @@ msgstr "yavaş"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s saniye" msgstr "%s saniye"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "otomatik" msgstr "otomatik"
@@ -412,8 +421,8 @@ msgstr "çalışmıyor"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Yüzle kilit açmayı yeniden açmak onu başlatır." 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:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Yüzler" msgstr "Yüzler"
@@ -468,13 +477,13 @@ msgstr "Kilit ekranı aracısı çalışmıyor."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME başka programların kendi pencerelerinin üstünde görünmesine izin " "GNOME'da baloncuğu küçük bir GNOME uzantısı gösterir. Yüzle kilit açmayı "
"vermez, bu yüzden GNOME'da baloncuk yoktur." "açınca o da açılır."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -482,7 +491,7 @@ msgstr ""
"Yüzünüzü görünce kilit ekranını açar. Kapalı: orada yalnızca parolanız " "Yüzünüzü görünce kilit ekranını açar. Kapalı: orada yalnızca parolanız "
"çalışır." "çalışır."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -490,7 +499,7 @@ msgstr ""
"Kilit ekranında bir tuşa bastığınızda ya da fareyi oynattığınızda ve " "Kilit ekranında bir tuşa bastığınızda ya da fareyi oynattığınızda ve "
"bilgisayar uyandığında tarar." "bilgisayar uyandığında tarar."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -498,7 +507,7 @@ msgstr ""
"Ekran kilitlenir kilitlenmez tarar. Varsayılan olarak kapalı: kendiniz " "Ekran kilitlenir kilitlenmez tarar. Varsayılan olarak kapalı: kendiniz "
"kilitlerseniz hemen yeniden açılırdı." "kilitlerseniz hemen yeniden açılırdı."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -506,7 +515,7 @@ msgstr ""
"sudo parola yerine yüzünüzü kullanır. Eşleşmezse parolayı her zamanki gibi " "sudo parola yerine yüzünüzü kullanır. Eşleşmezse parolayı her zamanki gibi "
"yazarsınız." "yazarsınız."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -514,18 +523,18 @@ msgstr ""
"Masaüstünüzün ve uygulamaların parola pencereleri, örneğin yazılım kurarken. " "Masaüstünüzün ve uygulamaların parola pencereleri, örneğin yazılım kurarken. "
"Eşleşmezse parolayı yazarsınız." "Eşleşmezse parolayı yazarsınız."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Göz kırpmanız ya da başınızı biraz çevirmeniz gerekir. Bu, basılı " "Göz kırpmanız ya da başınızı biraz çevirmeniz gerekir. Bu, basılı "
"fotoğrafları da durdurur." "fotoğrafları da durdurur."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Hiç denetim yok. Yalnızca bir kamerayı denemek için." msgstr "Hiç denetim yok. Yalnızca bir kamerayı denemek için."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -533,21 +542,21 @@ msgstr ""
"Telefon, tablet ya da parlak kâğıttaki fotoğrafları durdurur. Göz kırpmanız " "Telefon, tablet ya da parlak kâğıttaki fotoğrafları durdurur. Göz kırpmanız "
"gerekmez. Mat basılı bir fotoğraf geçebilir." "gerekmez. Mat basılı bir fotoğraf geçebilir."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Daha az yanlış eşleşme, ama gözlükle ya da kötü ışıkta sizi tanımayabilir." "Daha az yanlış eşleşme, ama gözlükle ya da kötü ışıkta sizi tanımayabilir."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." 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." msgstr "Sizi daha kolay tanır, ama size çok benzeyen birini de."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "Varsayılan. Çoğu kişi için uygun." msgstr "Varsayılan. Çoğu kişi için uygun."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -555,7 +564,7 @@ msgstr ""
"Gözleriniz açık ve ekrana dönük olmalı. Böylece başka yere bakarken ya da " "Gözleriniz açık ve ekrana dönük olmalı. Böylece başka yere bakarken ya da "
"uyurken kilit açılmaz." "uyurken kilit açılmaz."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -564,11 +573,11 @@ msgstr ""
"kurun. Kızılötesi kameranın ışığının açık olması gerekir (linux-enable-ir-" "kurun. Kızılötesi kameranın ışığının açık olması gerekir (linux-enable-ir-"
"emitter)." "emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." 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ığı." msgstr "Kameranın vazgeçmeden önce yüzünüzü ne kadar aradığı."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -576,88 +585,88 @@ msgstr ""
"Kesin bir eşleşmeden sonra şu anki görünüşünüzü hatırlar. Böylece yeni saç " "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." "kesimi ya da gözlük yeniden kurulum gerektirmez."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
msgstr "Dizüstü kapalıyken tarama yok, örneğin harici ekranlı bir masada." msgstr "Dizüstü kapalıyken tarama yok, örneğin harici ekranlı bir masada."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." 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." msgstr "Ekranın üstündeki baloncuk kameranın ne yaptığını gösterir."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Açılan bir kilidi olan küçük bir hap." msgstr "Açılan bir kilidi olan küçük bir hap."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "" msgstr ""
"Etrafına bakan bir yüzü olan bir ada, ardından halkalar ve bir onay işareti." "Etrafına bakan bir yüzü olan bir ada, ardından halkalar ve bir onay işareti."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Baloncuğun ne kadar hızlı hareket ettiği." msgstr "Baloncuğun ne kadar hızlı hareket ettiği."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"sudo ya da bir yönetici istemi yüzünüzü taradığında da baloncuğu gösterir." "sudo ya da bir yönetici istemi yüzünüzü taradığında da baloncuğu gösterir."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "otomatik (%s)" msgstr "otomatik (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(kızılötesi)" msgstr "(kızılötesi)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(bağlı değil)" msgstr "(bağlı değil)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Ayarlar" msgstr "Ayarlar"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ seç ←→ ya da Boşluk: değiştir q: geri" msgstr "↑↓ seç ←→ ya da Boşluk: değiştir q: geri"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "tüm kullanıcılar için, parolanızı sorar" msgstr "tüm kullanıcılar için, parolanızı sorar"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Yukarı/Aşağı: seç, Boşluk: aç/kapat, r: yeniden adlandır, d: sil, a: ekle, " "Yukarı/Aşağı: seç, Boşluk: aç/kapat, r: yeniden adlandır, d: sil, a: ekle, "
"q: geri" "q: geri"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." 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." msgstr "Henüz hiç yüz kurulmadı. Eklemek için a tuşuna basın."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Yeni ad:" msgstr "Yeni ad:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "\"%s\" silinsin mi?" msgstr "\"%s\" silinsin mi?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Yüzle kilit açmayı aç ya da kapat" msgstr "Yüzle kilit açmayı aç ya da kapat"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Dene" msgstr "Dene"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Çık" msgstr "Çık"
@@ -873,23 +882,23 @@ msgstr "Kamera başka bir taramayla meşgul. Birazdan yeniden deneyin."
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Yüz eklenemedi (%1)." msgstr "Yüz eklenemedi (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" 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" msgstr "Kilit ekranı, sudo ve yönetici istemleri için yüzle kilit açma"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Bir yüz kur." msgstr "Bir yüz kur."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Yeni yüzün adı." msgstr "Yeni yüzün adı."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Baloncuğun animasyonlarını bir kez oynat." msgstr "Baloncuğun animasyonlarını bir kez oynat."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Demo için baloncuk stili: full ya da minimal." msgstr "Demo için baloncuk stili: full ya da minimal."
+83 -75
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Ukrainian\n" "Language-Team: Ukrainian\n"
@@ -59,8 +59,8 @@ msgstr "Обличчя не додано."
msgid "First, set up your face." msgid "First, set up your face."
msgstr "Спершу налаштуйте своє обличчя." msgstr "Спершу налаштуйте своє обличчя."
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "Не вдалося зберегти налаштування." msgstr "Не вдалося зберегти налаштування."
@@ -74,99 +74,107 @@ msgstr ""
"Немає користувацького сеансу systemd, тому агент екрана блокування не " "Немає користувацького сеансу systemd, тому агент екрана блокування не "
"запущено." "запущено."
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "Не вдалося увімкнути розширення GNOME, яке показує бульбашку."
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "Вийдіть і увійдіть знову один раз: тоді GNOME теж покаже бульбашку."
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "" msgstr ""
"Розблокування обличчям увімкнено. Заблокуйте екран і подивіться на нього, " "Розблокування обличчям увімкнено. Заблокуйте екран і подивіться на нього, "
"щоб спробувати." "щоб спробувати."
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "" msgstr ""
"Воно працює і для sudo, і для запитів адміністратора. Див. Налаштування." "Воно працює і для sudo, і для запитів адміністратора. Див. Налаштування."
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "" msgstr ""
"Розблокування обличчям вимкнено. Ваші обличчя збережено; видалити їх можна в " "Розблокування обличчям вимкнено. Ваші обличчя збережено; видалити їх можна в "
"розділі Обличчя." "розділі Обличчя."
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "Ще не налаштовано жодного обличчя." msgstr "Ще не налаштовано жодного обличчя."
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "увімк." msgstr "увімк."
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "вимк." msgstr "вимк."
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "зразків: %s, вивчено: %s" msgstr "зразків: %s, вивчено: %s"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "Яке обличчя? Номери показує `%s faces`." msgstr "Яке обличчя? Номери показує `%s faces`."
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "Видалено." msgstr "Видалено."
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "Використання: face-unlock [команда]" msgstr "Використання: face-unlock [команда]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "Команди:" msgstr "Команди:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "Увімкнути розблокування обличчям" msgstr "Увімкнути розблокування обличчям"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "Вимкнути його (обличчя зберігаються)" msgstr "Вимкнути його (обличчя зберігаються)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "Додати обличчя" msgstr "Додати обличчя"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "Показати список облич" msgstr "Показати список облич"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "Видалити обличчя" msgstr "Видалити обличчя"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "Подивитися в камеру і побачити, що вона бачить" msgstr "Подивитися в камеру і побачити, що вона бачить"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "Показати, що увімкнено" msgstr "Показати, що увімкнено"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "Показати цю довідку" msgstr "Показати цю довідку"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "Показати версію" msgstr "Показати версію"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "Без команди відкривається інтерактивне меню." msgstr "Без команди відкривається інтерактивне меню."
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
@@ -174,7 +182,7 @@ msgstr ""
"Запускайте це від свого користувача, не від root. Пароль буде запитано, коли " "Запускайте це від свого користувача, не від root. Пароль буде запитано, коли "
"він знадобиться." "він знадобиться."
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Невідома команда: %s" msgstr "Невідома команда: %s"
@@ -353,11 +361,11 @@ msgstr ""
msgid "[y/N]" msgid "[y/N]"
msgstr "[т/Н]" msgstr "[т/Н]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "УВІМК" msgstr "УВІМК"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "ВИМК" msgstr "ВИМК"
@@ -398,7 +406,7 @@ msgstr "повільна"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s с" msgstr "%s с"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "автоматично" msgstr "автоматично"
@@ -418,8 +426,8 @@ msgstr "не запущена"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "Повторне ввімкнення розблокування обличчям запустить її." msgstr "Повторне ввімкнення розблокування обличчям запустить її."
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "Обличчя" msgstr "Обличчя"
@@ -474,13 +482,13 @@ msgstr "Агент екрана блокування не запущено."
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "" msgstr ""
"GNOME не дозволяє іншим програмам показуватися поверх своїх вікон, тому в " "У GNOME бульбашку показує невелике розширення GNOME. Воно вмикається разом "
"GNOME бульбашки немає." "із розблокуванням обличчям."
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
@@ -488,7 +496,7 @@ msgstr ""
"Розблоковує екран блокування, коли бачить ваше обличчя. Вимк.: там працює " "Розблоковує екран блокування, коли бачить ваше обличчя. Вимк.: там працює "
"лише пароль." "лише пароль."
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
@@ -496,7 +504,7 @@ msgstr ""
"Сканує, коли ви натискаєте клавішу або рухаєте мишею на екрані блокування, і " "Сканує, коли ви натискаєте клавішу або рухаєте мишею на екрані блокування, і "
"коли комп'ютер прокидається." "коли комп'ютер прокидається."
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
@@ -504,7 +512,7 @@ msgstr ""
"Сканує одразу після блокування екрана. Типово вимк.: якщо ви блокуєте самі, " "Сканує одразу після блокування екрана. Типово вимк.: якщо ви блокуєте самі, "
"він одразу б розблокувався." "він одразу б розблокувався."
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
@@ -512,7 +520,7 @@ msgstr ""
"sudo приймає ваше обличчя замість пароля. Не збіглося: ви вводите пароль як " "sudo приймає ваше обличчя замість пароля. Не збіглося: ви вводите пароль як "
"зазвичай." "зазвичай."
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
@@ -520,17 +528,17 @@ msgstr ""
"Вікна введення пароля робочого столу і програм, наприклад під час " "Вікна введення пароля робочого столу і програм, наприклад під час "
"встановлення програм. Не збіглося: ви вводите пароль." "встановлення програм. Не збіглося: ви вводите пароль."
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "" msgstr ""
"Треба кліпнути або трохи повернути голову. Це також зупиняє надруковані фото." "Треба кліпнути або трохи повернути голову. Це також зупиняє надруковані фото."
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "Жодної перевірки. Лише щоб випробувати камеру." msgstr "Жодної перевірки. Лише щоб випробувати камеру."
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
@@ -538,22 +546,22 @@ msgstr ""
"Зупиняє фото на телефоні, планшеті чи глянцевому папері. Кліпати не треба. " "Зупиняє фото на телефоні, планшеті чи глянцевому папері. Кліпати не треба. "
"Матове надруковане фото може пройти." "Матове надруковане фото може пройти."
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "" msgstr ""
"Менше хибних збігів, але може не впізнати вас в окулярах або при поганому " "Менше хибних збігів, але може не впізнати вас в окулярах або при поганому "
"світлі." "світлі."
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "Впізнає вас легше, але й того, хто дуже на вас схожий." msgstr "Впізнає вас легше, але й того, хто дуже на вас схожий."
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "Типове значення. Підходить більшості." msgstr "Типове значення. Підходить більшості."
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
@@ -561,7 +569,7 @@ msgstr ""
"Ваші очі мають бути розплющені й дивитися на екран. Так він не " "Ваші очі мають бути розплющені й дивитися на екран. Так він не "
"розблокується, коли ви дивитеся вбік або спите." "розблокується, коли ви дивитеся вбік або спите."
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -570,11 +578,11 @@ msgstr ""
"знову. Інфрачервоній камері потрібне ввімкнене підсвічування (linux-enable-" "знову. Інфрачервоній камері потрібне ввімкнене підсвічування (linux-enable-"
"ir-emitter)." "ir-emitter)."
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "Як довго камера шукає ваше обличчя, перш ніж здатися." msgstr "Як довго камера шукає ваше обличчя, перш ніж здатися."
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
@@ -582,7 +590,7 @@ msgstr ""
"Після впевненого збігу запам'ятовує, як ви виглядаєте зараз. Нова зачіска чи " "Після впевненого збігу запам'ятовує, як ви виглядаєте зараз. Нова зачіска чи "
"окуляри не потребують нового налаштування." "окуляри не потребують нового налаштування."
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
@@ -590,82 +598,82 @@ msgstr ""
"Без сканування, коли ноутбук закрито, наприклад за столом із зовнішнім " "Без сканування, коли ноутбук закрито, наприклад за столом із зовнішнім "
"монітором." "монітором."
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "Бульбашка вгорі екрана показує, що робить камера." msgstr "Бульбашка вгорі екрана показує, що робить камера."
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "Маленька пігулка із замком, що відкривається." msgstr "Маленька пігулка із замком, що відкривається."
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "Острів з обличчям, яке озирається, потім кільця і галочка." msgstr "Острів з обличчям, яке озирається, потім кільця і галочка."
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "Як швидко рухається бульбашка." msgstr "Як швидко рухається бульбашка."
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "" msgstr ""
"Показує бульбашку й тоді, коли sudo або запит адміністратора сканує ваше " "Показує бульбашку й тоді, коли sudo або запит адміністратора сканує ваше "
"обличчя." "обличчя."
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "автоматично (%s)" msgstr "автоматично (%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(інфрачервона)" msgstr "(інфрачервона)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(не під'єднана)" msgstr "(не під'єднана)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "Налаштування" msgstr "Налаштування"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ вибір ←→ або Пробіл: змінити q: назад" msgstr "↑↓ вибір ←→ або Пробіл: змінити q: назад"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "для всіх користувачів, запитує пароль" msgstr "для всіх користувачів, запитує пароль"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back"
msgstr "" msgstr ""
"Вгору/Вниз: вибір, Пробіл: увімк./вимк., r: перейменувати, d: видалити, a: " "Вгору/Вниз: вибір, Пробіл: увімк./вимк., r: перейменувати, d: видалити, a: "
"додати, q: назад" "додати, q: назад"
#: src/lib/menu.sh:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "Ще не налаштовано жодного обличчя. Натисніть a, щоб додати." msgstr "Ще не налаштовано жодного обличчя. Натисніть a, щоб додати."
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "Нова назва:" msgstr "Нова назва:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "Видалити «%s»?" msgstr "Видалити «%s»?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "Увімкнути або вимкнути розблокування обличчям" msgstr "Увімкнути або вимкнути розблокування обличчям"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "Спробувати" msgstr "Спробувати"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "Вийти" msgstr "Вийти"
@@ -881,24 +889,24 @@ msgstr "Камера зайнята іншим скануванням. Спро
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "Не вдалося додати обличчя (%1)." msgstr "Не вдалося додати обличчя (%1)."
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "" msgstr ""
"Розблокування обличчям для екрана блокування, sudo і запитів адміністратора" "Розблокування обличчям для екрана блокування, sudo і запитів адміністратора"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "Налаштувати обличчя." msgstr "Налаштувати обличчя."
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "Як назвати нове обличчя." msgstr "Як назвати нове обличчя."
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "Один раз програти анімації бульбашки." msgstr "Один раз програти анімації бульбашки."
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "Стиль бульбашки для демо: full або minimal." msgstr "Стиль бульбашки для демо: full або minimal."
+83 -74
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-26 19:32+0200\n" "POT-Creation-Date: 2026-09-26 19:33+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Chinese (simplified)\n" "Language-Team: Chinese (simplified)\n"
@@ -53,8 +53,8 @@ msgstr "没有添加人脸。"
msgid "First, set up your face." msgid "First, set up your face."
msgstr "请先设置你的人脸。" msgstr "请先设置你的人脸。"
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446 #: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458 #: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
msgid "Could not save the setting." msgid "Could not save the setting."
msgstr "无法保存设置。" msgstr "无法保存设置。"
@@ -66,100 +66,108 @@ msgstr "无法启动锁屏代理。"
msgid "No systemd user session, so the lock screen agent was not started." msgid "No systemd user session, so the lock screen agent was not started."
msgstr "没有 systemd 用户会话,因此未启动锁屏代理。" msgstr "没有 systemd 用户会话,因此未启动锁屏代理。"
#: src/face-unlock:114 #: src/face-unlock:118
msgid "Could not switch on the GNOME extension that shows the bubble."
msgstr "无法启用显示气泡的 GNOME 扩展。"
#: src/face-unlock:119
msgid "Log out and back in once: then GNOME shows the bubble too."
msgstr "请注销并重新登录一次:之后 GNOME 也会显示气泡。"
#: src/face-unlock:124
msgid "Face unlock is on. Lock the screen and look at it to try." msgid "Face unlock is on. Lock the screen and look at it to try."
msgstr "人脸解锁已开启。锁定屏幕并看着它来试试。" msgstr "人脸解锁已开启。锁定屏幕并看着它来试试。"
#: src/face-unlock:116 #: src/face-unlock:126
msgid "It can do sudo and admin prompts too. See Settings." msgid "It can do sudo and admin prompts too. See Settings."
msgstr "它也可以用于 sudo 和管理员授权。见“设置”。" msgstr "它也可以用于 sudo 和管理员授权。见“设置”。"
#: src/face-unlock:131 #: src/face-unlock:142
msgid "Face unlock is off. Your faces are kept; delete them under Faces." msgid "Face unlock is off. Your faces are kept; delete them under Faces."
msgstr "人脸解锁已关闭。你的人脸会保留;可在“人脸”中删除。" msgstr "人脸解锁已关闭。你的人脸会保留;可在“人脸”中删除。"
#: src/face-unlock:145 src/lib/daemon.sh:109 #: src/face-unlock:156 src/lib/daemon.sh:109
msgid "No face is set up yet." msgid "No face is set up yet."
msgstr "尚未设置任何人脸。" msgstr "尚未设置任何人脸。"
#: src/face-unlock:149 src/lib/menu.sh:180 src/lib/menu.sh:608 #: src/face-unlock:160 src/lib/menu.sh:180 src/lib/menu.sh:607
msgid "on" msgid "on"
msgstr "开" msgstr "开"
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192 #: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
#: src/lib/menu.sh:609 #: src/lib/menu.sh:608
msgid "off" msgid "off"
msgstr "关" msgstr "关"
#: src/face-unlock:151 src/lib/menu.sh:626 #: src/face-unlock:162 src/lib/menu.sh:625
#, sh-printf-format #, sh-printf-format
msgid "%s samples, %s learned" msgid "%s samples, %s learned"
msgstr "%s 个样本,已学习 %s 个" msgstr "%s 个样本,已学习 %s 个"
#: src/face-unlock:157 #: src/face-unlock:168
#, sh-printf-format #, sh-printf-format
msgid "Which face? See `%s faces` for the ids." msgid "Which face? See `%s faces` for the ids."
msgstr "哪张人脸?用 `%s faces` 查看 ID。" msgstr "哪张人脸?用 `%s faces` 查看 ID。"
#: src/face-unlock:161 #: src/face-unlock:172
msgid "Deleted." msgid "Deleted."
msgstr "已删除。" msgstr "已删除。"
#: src/face-unlock:172 #: src/face-unlock:183
msgid "Usage: face-unlock [command]" msgid "Usage: face-unlock [command]"
msgstr "用法:face-unlock [命令]" msgstr "用法:face-unlock [命令]"
#: src/face-unlock:174 #: src/face-unlock:185
msgid "Commands:" msgid "Commands:"
msgstr "命令:" msgstr "命令:"
#: src/face-unlock:175 #: src/face-unlock:186
msgid "Turn face unlock on" msgid "Turn face unlock on"
msgstr "开启人脸解锁" msgstr "开启人脸解锁"
#: src/face-unlock:176 #: src/face-unlock:187
msgid "Turn it off (faces are kept)" msgid "Turn it off (faces are kept)"
msgstr "关闭(保留人脸)" msgstr "关闭(保留人脸)"
#: src/face-unlock:177 src/lib/menu.sh:692 #: src/face-unlock:188 src/lib/menu.sh:691
msgid "Add a face" msgid "Add a face"
msgstr "添加人脸" msgstr "添加人脸"
#: src/face-unlock:178 #: src/face-unlock:189
msgid "List the faces" msgid "List the faces"
msgstr "列出人脸" msgstr "列出人脸"
#: src/face-unlock:179 #: src/face-unlock:190
msgid "Delete a face" msgid "Delete a face"
msgstr "删除人脸" msgstr "删除人脸"
#: src/face-unlock:180 #: src/face-unlock:191
msgid "Look at the camera and see what it sees" msgid "Look at the camera and see what it sees"
msgstr "看着摄像头,查看它看到的画面" msgstr "看着摄像头,查看它看到的画面"
#: src/face-unlock:181 #: src/face-unlock:192
msgid "Show what is on" msgid "Show what is on"
msgstr "显示已开启的功能" msgstr "显示已开启的功能"
#: src/face-unlock:182 #: src/face-unlock:193
msgid "Show this help" msgid "Show this help"
msgstr "显示此帮助" msgstr "显示此帮助"
#: src/face-unlock:183 #: src/face-unlock:194
msgid "Show the version" msgid "Show the version"
msgstr "显示版本" msgstr "显示版本"
#: src/face-unlock:185 #: src/face-unlock:196
msgid "Without a command an interactive menu is shown." msgid "Without a command an interactive menu is shown."
msgstr "不带命令时显示交互式菜单。" msgstr "不带命令时显示交互式菜单。"
#: src/face-unlock:204 #: src/face-unlock:215
msgid "" msgid ""
"Run this as your own user, not as root. It asks for your password when it " "Run this as your own user, not as root. It asks for your password when it "
"needs to." "needs to."
msgstr "请以你自己的用户运行,不要用 root。需要时会询问你的密码。" msgstr "请以你自己的用户运行,不要用 root。需要时会询问你的密码。"
#: src/face-unlock:226 src/lib/system.sh:93 #: src/face-unlock:237 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "未知命令:%s" msgstr "未知命令:%s"
@@ -334,11 +342,11 @@ msgstr "尝试次数过多。人脸解锁已暂停,直到你用密码解锁。
msgid "[y/N]" msgid "[y/N]"
msgstr "[y/N]" msgstr "[y/N]"
#: src/lib/menu.sh:172 src/lib/menu.sh:509 #: src/lib/menu.sh:172 src/lib/menu.sh:510
msgid "ON" msgid "ON"
msgstr "开启" msgstr "开启"
#: src/lib/menu.sh:174 src/lib/menu.sh:510 #: src/lib/menu.sh:174 src/lib/menu.sh:511
msgid "OFF" msgid "OFF"
msgstr "关闭" msgstr "关闭"
@@ -379,7 +387,7 @@ msgstr "慢"
msgid "%s seconds" msgid "%s seconds"
msgstr "%s 秒" msgstr "%s 秒"
#: src/lib/menu.sh:202 src/lib/menu.sh:421 #: src/lib/menu.sh:202 src/lib/menu.sh:422
msgid "automatic" msgid "automatic"
msgstr "自动" msgstr "自动"
@@ -399,8 +407,8 @@ msgstr "未运行"
msgid "Turning face unlock on again starts it." msgid "Turning face unlock on again starts it."
msgstr "重新开启人脸解锁即可启动它。" msgstr "重新开启人脸解锁即可启动它。"
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604 #: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
#: src/lib/menu.sh:693 #: src/lib/menu.sh:692
msgid "Faces" msgid "Faces"
msgstr "人脸" msgstr "人脸"
@@ -455,75 +463,76 @@ msgstr "锁屏代理没有运行。"
#: src/lib/menu.sh:308 #: src/lib/menu.sh:308
msgid "" msgid ""
"GNOME does not let other programs show above its windows, so there is no " "On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
"bubble on GNOME." "switches it on."
msgstr "GNOME 不允许其他程序显示在它的窗口之上,所以 GNOME 上没有气泡。" msgstr ""
"在 GNOME 上,由一个小的 GNOME 扩展显示气泡。开启人脸解锁时会一并开启它。"
#: src/lib/menu.sh:312 #: src/lib/menu.sh:313
msgid "" msgid ""
"Unlocks the lock screen when it sees your face. Off: only your password " "Unlocks the lock screen when it sees your face. Off: only your password "
"works there." "works there."
msgstr "看到你的脸时解锁锁屏。关闭:锁屏只能用密码。" msgstr "看到你的脸时解锁锁屏。关闭:锁屏只能用密码。"
#: src/lib/menu.sh:313 #: src/lib/menu.sh:314
msgid "" msgid ""
"Scans when you press a key or move the mouse on the lock screen, and when " "Scans when you press a key or move the mouse on the lock screen, and when "
"the computer wakes up." "the computer wakes up."
msgstr "在锁屏上按键或移动鼠标时,以及电脑唤醒时扫描。" msgstr "在锁屏上按键或移动鼠标时,以及电脑唤醒时扫描。"
#: src/lib/menu.sh:314 #: src/lib/menu.sh:315
msgid "" msgid ""
"Scans as soon as the screen locks. Off by default: if you lock it yourself, " "Scans as soon as the screen locks. Off by default: if you lock it yourself, "
"it would unlock again right away." "it would unlock again right away."
msgstr "屏幕一锁定就扫描。默认关闭:如果是你自己锁的屏,它会马上又解锁。" msgstr "屏幕一锁定就扫描。默认关闭:如果是你自己锁的屏,它会马上又解锁。"
#: src/lib/menu.sh:315 #: src/lib/menu.sh:316
msgid "" msgid ""
"sudo takes your face instead of the password. No match: you type the " "sudo takes your face instead of the password. No match: you type the "
"password as usual." "password as usual."
msgstr "sudo 用你的脸代替密码。不匹配时,照常输入密码。" msgstr "sudo 用你的脸代替密码。不匹配时,照常输入密码。"
#: src/lib/menu.sh:316 #: src/lib/menu.sh:317
msgid "" msgid ""
"The password windows of your desktop 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." "software. No match: you type the password."
msgstr "桌面和应用的密码窗口,例如安装软件时。不匹配时,输入密码即可。" msgstr "桌面和应用的密码窗口,例如安装软件时。不匹配时,输入密码即可。"
#: src/lib/menu.sh:317 #: src/lib/menu.sh:318
msgid "" msgid ""
"You have to blink or turn your head a little. This also stops printed photos." "You have to blink or turn your head a little. This also stops printed photos."
msgstr "你需要眨眼或稍微转头。这也能挡住打印的照片。" msgstr "你需要眨眼或稍微转头。这也能挡住打印的照片。"
#: src/lib/menu.sh:318 #: src/lib/menu.sh:319
msgid "No check at all. Only for trying out a camera." msgid "No check at all. Only for trying out a camera."
msgstr "完全不检测。仅用于试用摄像头。" msgstr "完全不检测。仅用于试用摄像头。"
#: src/lib/menu.sh:319 #: src/lib/menu.sh:320
msgid "" msgid ""
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. " "Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
"A matte printed photo can get through." "A matte printed photo can get through."
msgstr "挡住手机、平板或光面纸上的照片。无需眨眼。哑光纸打印的照片可能会通过。" msgstr "挡住手机、平板或光面纸上的照片。无需眨眼。哑光纸打印的照片可能会通过。"
#: src/lib/menu.sh:320 #: src/lib/menu.sh:321
msgid "" msgid ""
"Fewer wrong matches, but it may not know you with glasses or in bad light." "Fewer wrong matches, but it may not know you with glasses or in bad light."
msgstr "误认更少,但戴眼镜或光线不好时可能认不出你。" msgstr "误认更少,但戴眼镜或光线不好时可能认不出你。"
#: src/lib/menu.sh:321 #: src/lib/menu.sh:322
msgid "Knows you more easily, but also somebody who looks a lot like you." msgid "Knows you more easily, but also somebody who looks a lot like you."
msgstr "更容易认出你,但也更容易认出和你长得很像的人。" msgstr "更容易认出你,但也更容易认出和你长得很像的人。"
#: src/lib/menu.sh:322 #: src/lib/menu.sh:323
msgid "The default. Right for most people." msgid "The default. Right for most people."
msgstr "默认值。适合大多数人。" msgstr "默认值。适合大多数人。"
#: src/lib/menu.sh:323 #: src/lib/menu.sh:324
msgid "" msgid ""
"Your eyes have to be open and on the screen. So it does not unlock while you " "Your eyes have to be open and on the screen. So it does not unlock while you "
"look away or sleep." "look away or sleep."
msgstr "你的眼睛必须睁开并看着屏幕。这样你看向别处或睡着时不会解锁。" msgstr "你的眼睛必须睁开并看着屏幕。这样你看向别处或睡着时不会解锁。"
#: src/lib/menu.sh:324 #: src/lib/menu.sh:325
msgid "" msgid ""
"Automatic takes the first normal camera. After a change, set up your face " "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)." "again. An infrared camera needs its light on (linux-enable-ir-emitter)."
@@ -531,94 +540,94 @@ msgstr ""
"“自动”会使用第一个普通摄像头。更换后请重新设置人脸。红外摄像头需要打开它的补" "“自动”会使用第一个普通摄像头。更换后请重新设置人脸。红外摄像头需要打开它的补"
"光灯(linux-enable-ir-emitter)。" "光灯(linux-enable-ir-emitter)。"
#: src/lib/menu.sh:325 #: src/lib/menu.sh:326
msgid "How long the camera looks for your face before it gives up." msgid "How long the camera looks for your face before it gives up."
msgstr "摄像头寻找你的脸多久后放弃。" msgstr "摄像头寻找你的脸多久后放弃。"
#: src/lib/menu.sh:326 #: src/lib/menu.sh:327
msgid "" msgid ""
"After a sure match it keeps how you look now. So a new haircut or glasses " "After a sure match it keeps how you look now. So a new haircut or glasses "
"need no new setup." "need no new setup."
msgstr "确定匹配后,会记住你现在的样子。所以换了发型或戴上眼镜也无需重新设置。" msgstr "确定匹配后,会记住你现在的样子。所以换了发型或戴上眼镜也无需重新设置。"
#: src/lib/menu.sh:327 #: src/lib/menu.sh:328
msgid "" msgid ""
"No scan while the laptop is closed, for example at a desk with an external " "No scan while the laptop is closed, for example at a desk with an external "
"screen." "screen."
msgstr "笔记本合上时不扫描,例如在接了外接显示器的桌前。" msgstr "笔记本合上时不扫描,例如在接了外接显示器的桌前。"
#: src/lib/menu.sh:328 #: src/lib/menu.sh:329
msgid "The bubble at the top of the screen shows what the camera is doing." msgid "The bubble at the top of the screen shows what the camera is doing."
msgstr "屏幕顶部的气泡显示摄像头正在做什么。" msgstr "屏幕顶部的气泡显示摄像头正在做什么。"
#: src/lib/menu.sh:329 #: src/lib/menu.sh:330
msgid "A small pill with a lock that opens." msgid "A small pill with a lock that opens."
msgstr "一个带锁的小药丸,锁会打开。" msgstr "一个带锁的小药丸,锁会打开。"
#: src/lib/menu.sh:330 #: src/lib/menu.sh:331
msgid "An island with a face that looks around, then rings and a tick." msgid "An island with a face that looks around, then rings and a tick."
msgstr "一个岛,里面有一张四处张望的脸,然后是圆环和一个对勾。" msgstr "一个岛,里面有一张四处张望的脸,然后是圆环和一个对勾。"
#: src/lib/menu.sh:331 #: src/lib/menu.sh:332
msgid "How fast the bubble moves." msgid "How fast the bubble moves."
msgstr "气泡移动的速度。" msgstr "气泡移动的速度。"
#: src/lib/menu.sh:332 #: src/lib/menu.sh:333
msgid "Shows the bubble when sudo or an admin prompt scans your face, too." msgid "Shows the bubble when sudo or an admin prompt scans your face, too."
msgstr "sudo 或管理员授权扫描你的脸时也显示气泡。" msgstr "sudo 或管理员授权扫描你的脸时也显示气泡。"
#: src/lib/menu.sh:417 #: src/lib/menu.sh:418
#, sh-printf-format #, sh-printf-format
msgid "automatic (%s)" msgid "automatic (%s)"
msgstr "自动(%s)" msgstr "自动(%s)"
#: src/lib/menu.sh:427 #: src/lib/menu.sh:428
msgid "(infrared)" msgid "(infrared)"
msgstr "(红外)" msgstr "(红外)"
#: src/lib/menu.sh:431 #: src/lib/menu.sh:432
msgid "(not connected)" msgid "(not connected)"
msgstr "(未连接)" msgstr "(未连接)"
#: src/lib/menu.sh:506 src/lib/menu.sh:694 #: src/lib/menu.sh:507 src/lib/menu.sh:693
msgid "Settings" msgid "Settings"
msgstr "设置" msgstr "设置"
#: src/lib/menu.sh:507 #: src/lib/menu.sh:508
msgid "↑↓ select ←→ or Space: change q: back" msgid "↑↓ select ←→ or Space: change q: back"
msgstr "↑↓ 选择 ←→ 或空格:更改 q:返回" msgstr "↑↓ 选择 ←→ 或空格:更改 q:返回"
#: src/lib/menu.sh:508 #: src/lib/menu.sh:509
msgid "for all users, asks for your password" msgid "for all users, asks for your password"
msgstr "对所有用户生效,需要你的密码" msgstr "对所有用户生效,需要你的密码"
#. TRANSLATORS: keep the letters, they are the keys. #. TRANSLATORS: keep the letters, they are the keys.
#: src/lib/menu.sh:606 #: src/lib/menu.sh:605
msgid "Up/Down: select, Space: on/off, r: rename, d: delete, a: add, q: back" 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:607 #: src/lib/menu.sh:606
msgid "No face is set up yet. Press a to add one." msgid "No face is set up yet. Press a to add one."
msgstr "尚未设置任何人脸。按 a 添加。" msgstr "尚未设置任何人脸。按 a 添加。"
#: src/lib/menu.sh:653 #: src/lib/menu.sh:652
msgid "New name:" msgid "New name:"
msgstr "新名称:" msgstr "新名称:"
#: src/lib/menu.sh:660 #: src/lib/menu.sh:659
#, sh-printf-format #, sh-printf-format
msgid "Delete \"%s\"?" msgid "Delete \"%s\"?"
msgstr "删除“%s”?" msgstr "删除“%s”?"
#: src/lib/menu.sh:691 #: src/lib/menu.sh:690
msgid "Turn face unlock on or off" msgid "Turn face unlock on or off"
msgstr "开启或关闭人脸解锁" msgstr "开启或关闭人脸解锁"
#: src/lib/menu.sh:695 #: src/lib/menu.sh:694
msgid "Try it" msgid "Try it"
msgstr "试一试" msgstr "试一试"
#: src/lib/menu.sh:696 #: src/lib/menu.sh:695
msgid "Quit" msgid "Quit"
msgstr "退出" msgstr "退出"
@@ -830,23 +839,23 @@ msgstr "摄像头正忙于另一次扫描。请稍后重试。"
msgid "The face could not be added (%1)." msgid "The face could not be added (%1)."
msgstr "无法添加人脸(%1)。" msgstr "无法添加人脸(%1)。"
#: src/agent/main.cpp:86 #: src/agent/main.cpp:87
msgid "Face unlock for the lock screen, sudo and admin prompts" msgid "Face unlock for the lock screen, sudo and admin prompts"
msgstr "用于锁屏、sudo 和管理员授权的人脸解锁" msgstr "用于锁屏、sudo 和管理员授权的人脸解锁"
#: src/agent/main.cpp:89 #: src/agent/main.cpp:90
msgid "Set up a face." msgid "Set up a face."
msgstr "设置一张人脸。" msgstr "设置一张人脸。"
#: src/agent/main.cpp:90 #: src/agent/main.cpp:91
msgid "What to call the new face." msgid "What to call the new face."
msgstr "新人脸的名称。" msgstr "新人脸的名称。"
#: src/agent/main.cpp:91 #: src/agent/main.cpp:92
msgid "Play the bubble's animations once." msgid "Play the bubble's animations once."
msgstr "播放一次气泡动画。" msgstr "播放一次气泡动画。"
#: src/agent/main.cpp:93 #: src/agent/main.cpp:94
msgid "Bubble style for the demo: full or minimal." msgid "Bubble style for the demo: full or minimal."
msgstr "演示用的气泡样式:full 或 minimal。" msgstr "演示用的气泡样式:full 或 minimal。"
@@ -0,0 +1,926 @@
// SPDX-License-Identifier: GPL-3.0-or-later
//
// face-unlock's bubble on GNOME.
//
// GNOME lets no program draw above its windows, and nothing at all above its
// lock screen. An extension runs inside GNOME Shell and may. This one draws
// the bubble the agent draws everywhere else, with the same shapes and the
// same timing: a port of src/agent/qml (Bubble, FaceGlyph, LockGlyph,
// Checkmark). What to show comes from the agent over the session bus.
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import Pango from 'gi://Pango';
import PangoCairo from 'gi://PangoCairo';
import St from 'gi://St';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
const BUS_NAME = 'io.github.loonixtools.FaceUnlock';
const OBJECT_PATH = '/io/github/loonixtools/FaceUnlock';
const BubbleProxy = Gio.DBusProxy.makeProxyWrapper(`
<node>
<interface name="io.github.loonixtools.FaceUnlock.Bubble">
<method name="GetState"><arg type="a{sv}" direction="out"/></method>
<signal name="StateChanged"><arg type="a{sv}"/></signal>
</interface>
</node>`);
// Theme.qml
const Theme = {
success: [0x30, 0xd1, 0x58],
failure: [0xff, 0x45, 0x3a],
panel: [0, 0, 0],
textPrimary: [0xff, 0xff, 0xff],
textSecondary: [0x94, 0x94, 0x94],
textDetail: [0xbd, 0xbd, 0xbd],
closedWidth: 80,
closedHeight: 24,
openWidth: 180,
openHeight: 180,
openRadius: 48,
minimalWidth: 150,
minimalHeight: 40,
topGap: 6,
slideInDuration: 280,
expandDelay: 150,
growDuration: 460,
shrinkDuration: 280,
slideOutDelay: 150,
slideOutDuration: 240,
};
const WIDTH = 420;
const HEIGHT = 300;
// Qt's easing curves, as the QML uses them.
const Ease = {
linear: p => p,
outQuad: p => 1 - (1 - p) * (1 - p),
inOutQuad: p => p < 0.5 ? 2 * p * p : 1 - (-2 * p + 2) ** 2 / 2,
outCubic: p => 1 - (1 - p) ** 3,
inCubic: p => p ** 3,
inOutSine: p => -(Math.cos(Math.PI * p) - 1) / 2,
outBack: s => p => {
const q = p - 1;
return q * q * ((s + 1) * q + s) + 1;
},
};
const OUT_BACK = Ease.outBack(1.70158);
function now() {
return GLib.get_monotonic_time() / 1000;
}
function smooth(from, to, p) {
const x = Math.max(0, Math.min(1, (p - from) / (to - from)));
return x * x * (3 - 2 * x);
}
// A value that eases to a new target from wherever it is, like a QML
// Behavior. Colours are arrays and ease per channel.
class Tween {
constructor(value) {
this._from = value;
this._to = value;
this._start = 0;
this._duration = 0;
this._ease = Ease.linear;
}
set(to, duration, ease, at) {
if (this._same(to, this._to))
return;
this._from = this.get(at);
this._to = to;
this._start = at;
this._duration = duration;
this._ease = ease;
}
jump(value) {
this._from = this._to = value;
this._duration = 0;
}
get(at) {
const p = this._duration > 0 ? Math.min(1, (at - this._start) / this._duration) : 1;
const e = this._ease(p);
if (Array.isArray(this._to))
return this._to.map((t, i) => this._from[i] + (t - this._from[i]) * e);
return this._from + (this._to - this._from) * e;
}
busy(at) {
return this._duration > 0 && at - this._start < this._duration;
}
_same(a, b) {
return Array.isArray(a) ? a.every((v, i) => v === b[i]) : a === b;
}
}
// A run of steps from 0, like a QML SequentialAnimation of NumberAnimations:
// [target, duration, easing]...
function sequence(steps, start, at, pace) {
if (start === null)
return [0, false];
let t = at - start;
let from = 0;
for (const [to, duration, ease] of steps) {
const d = duration * pace;
if (t < d)
return [from + (to - from) * ease(t / d), true];
t -= d;
from = to;
}
return [from, false];
}
function rgba(cr, color, alpha = 1) {
cr.setSourceRGBA(color[0] / 255, color[1] / 255, color[2] / 255, alpha);
}
// A quadratic curve in cairo, which only knows cubic ones.
function quadTo(cr, x0, y0, cx, cy, x, y) {
cr.curveTo(x0 + 2 / 3 * (cx - x0), y0 + 2 / 3 * (cy - y0),
x + 2 / 3 * (cx - x), y + 2 / 3 * (cy - y), x, y);
}
function polyline(cr, points) {
if (points.length < 2)
return;
cr.moveTo(points[0][0], points[0][1]);
for (let i = 1; i < points.length; ++i)
cr.lineTo(points[i][0], points[i][1]);
}
function roundedRect(cr, x, y, w, h, r) {
r = Math.max(0, Math.min(r, w / 2, h / 2));
cr.newSubPath();
cr.arc(x + w - r, y + r, r, -Math.PI / 2, 0);
cr.arc(x + w - r, y + h - r, r, 0, Math.PI / 2);
cr.arc(x + r, y + h - r, r, Math.PI / 2, Math.PI);
cr.arc(x + r, y + r, r, Math.PI, 3 * Math.PI / 2);
cr.closePath();
}
// Draws what draw() draws into its own layer, at the given opacity and
// scaled about the middle of the square it sits in.
function layer(cr, opacity, scale, cx, cy, draw) {
if (opacity <= 0.001)
return;
cr.save();
cr.pushGroup();
cr.translate(cx, cy);
cr.scale(scale, scale);
cr.translate(-cx, -cy);
draw();
cr.popGroupToSource();
cr.paintWithAlpha(Math.min(1, opacity));
cr.restore();
}
// LockGlyph.qml: a padlock that opens.
class LockGlyph {
constructor() {
this._openness = new Tween(0);
this.open = false;
this.pace = 1;
}
setOpen(open, at) {
if (open === this.open)
return;
this.open = open;
if (open) {
this._openness.jump(0);
this._openness.set(1, 560 * this.pace, Ease.linear, at);
} else {
this._openness.jump(0);
}
}
busy(at) {
return this._openness.busy(at);
}
draw(cr, x, y, size, color, at) {
const u = size / 100;
const openness = this._openness.get(at);
const lift = 12 * smooth(0, 0.3, openness);
const p = Math.max(0, Math.min(1, (openness - 0.22) / 0.78));
const s = 1.4;
const swing = 180 * (1 + (s + 1) * (p - 1) ** 3 + s * (p - 1) ** 2);
const beat = 1 + 0.14 * Math.sin(Math.PI * smooth(0.55, 1, openness));
cr.save();
cr.translate(x + size / 2, y + size / 2);
cr.scale(beat, beat);
cr.translate(-size / 2, -size / 2);
rgba(cr, color);
roundedRect(cr, 14 * u, 46 * u, 72 * u, 50 * u, 12 * u);
cr.fill();
const right = 68.5;
const radius = 18.5;
const top = 28 - lift;
const narrow = Math.cos(swing * Math.PI / 180);
const points = [];
const add = (px, py) => points.push([(right + (px - right) * narrow) * u, py * u]);
add(31.5, 56 - 18 * smooth(0, 0.3, openness));
add(31.5, top);
for (let i = 1; i < 24; ++i) {
const a = Math.PI + Math.PI * i / 24;
add(50 + radius * Math.cos(a), top + radius * Math.sin(a));
}
add(right, top);
add(right, 56);
cr.setLineWidth(11 * u);
cr.setLineCap(1 /* round */);
cr.setLineJoin(1 /* round */);
polyline(cr, points);
cr.stroke();
cr.restore();
}
}
// FaceGlyph.qml: brackets round a face that looks around, then the rings and
// a tick, or a red shake of the head.
class FaceGlyph {
constructor(lineWidth = null) {
this.lineWidth = lineWidth;
this.color = Theme.textPrimary;
this.pace = 1;
this.mode = 'idle';
this.onSettled = null;
this._lookStart = 0;
this._lookFrozen = 0;
this._lookAmount = new Tween(0);
this._smile = new Tween(1);
this._bracket = new Tween(1);
this._bracketColor = new Tween(Theme.textPrimary);
this._shown = new Tween(1);
this._lockOpacity = new Tween(0);
this._lockScale = new Tween(0.7);
this._lock = new LockGlyph();
this._successStart = null;
this._shakeStart = null;
this._settle = 0;
}
_looking() {
return this.mode === 'scanning';
}
_lookAngle(at) {
if (!this._looking())
return this._lookFrozen;
const period = 2000 * this.pace;
return 2 * Math.PI * (((at - this._lookStart) % period) / period);
}
_breathe(at) {
if (!this._looking())
return 0;
const half = 700 * this.pace;
const p = ((at - this._lookStart) % (2 * half)) / half;
return p < 1 ? Ease.inOutSine(p) : 1 - Ease.inOutSine(p - 1);
}
setMode(mode, at) {
if (mode === this.mode)
return;
const wasLooking = this._looking();
if (wasLooking)
this._lookFrozen = this._lookAngle(at);
this.mode = mode;
const pace = this.pace;
if (this._looking() && !wasLooking)
this._lookStart = at;
this._lookAmount.set(this._looking() ? 1 : 0, 350 * pace, Ease.inOutQuad, at);
this._smile.set(mode === 'failure' ? 0 : 1, 220 * pace, Ease.outQuad, at);
this._bracket.set(mode === 'tracking' ? 0.9 : 1, 260 * pace, OUT_BACK, at);
this._bracketColor.set(this._colorFor(mode), 220 * pace, Ease.linear, at);
this._shown.set(mode === 'lockout' ? 0 : 1, 180 * pace, Ease.linear, at);
this._lockOpacity.set(mode === 'lockout' ? 1 : 0, 200 * pace, Ease.linear, at);
this._lockScale.set(mode === 'lockout' ? 1 : 0.7, 260 * pace, OUT_BACK, at);
this._successStart = null;
if (this._settle) {
GLib.source_remove(this._settle);
this._settle = 0;
}
if (mode === 'failure') {
this._shakeStart = at;
this.onSettled?.(false);
} else if (mode === 'success') {
this._successStart = at;
this._settle = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 850 * pace, () => {
this._settle = 0;
this.onSettled?.(true);
return GLib.SOURCE_REMOVE;
});
}
}
_colorFor(mode) {
if (mode === 'success')
return Theme.success;
if (mode === 'failure')
return Theme.failure;
return this.color;
}
destroy() {
if (this._settle)
GLib.source_remove(this._settle);
this._settle = 0;
}
busy(at) {
return this._looking() || this._lookAmount.busy(at) || this._smile.busy(at) ||
this._bracket.busy(at) || this._bracketColor.busy(at) || this._shown.busy(at) ||
this._lockOpacity.busy(at) || this._lockScale.busy(at) ||
(this._successStart !== null && at - this._successStart < 900 * this.pace) ||
sequence(FaceGlyph.SHAKE, this._shakeStart, at, this.pace)[1];
}
draw(cr, x, y, size, at) {
const u = size / 100;
const lw = this.lineWidth ?? size * 0.055;
const pace = this.pace;
const color = this._bracketColor.get(at);
const lookAmount = this._lookAmount.get(at);
const angle = this._lookAngle(at);
const yaw = 0.34 * Math.cos(angle) * lookAmount;
const pitch = 0.2 * Math.sin(angle) * lookAmount;
const fx = (px, py, pz) => (50 + px * Math.cos(yaw) + pz * Math.sin(yaw)) * u;
const fy = (px, py, pz) => {
const depth = pz * Math.cos(yaw) - px * Math.sin(yaw);
return (50 + py * Math.cos(pitch) - depth * Math.sin(pitch)) * u;
};
const t = this._successStart === null ? 0 : Math.min(1, (at - this._successStart) / (850 * pace));
const tickStart = this._successStart === null ? null : this._successStart + 470 * pace;
const tick = tickStart === null || at < tickStart ? 0 : Ease.outQuad(Math.min(1, (at - tickStart) / (260 * pace)));
const [shake] = sequence(FaceGlyph.SHAKE, this._shakeStart, at, pace);
const faceGone = smooth(0, 0.22, t);
const ringsIn = smooth(0.04, 0.26, t);
const turn = FaceGlyph.turned(Math.min(1, t / 0.7));
const ringSize = 40 * (0.7 + 0.3 * ringsIn);
const ringA = FaceGlyph.ring(0, -360 * turn, 90 * turn, ringSize);
const ringB = FaceGlyph.ring(70 + 360 * turn, 30 + 360 * turn, -90 * turn, ringSize);
const ringBShown = 1 - smooth(0.36, 0.58, t);
const ringABack = 1 - 0.6 * FaceGlyph.tilt(ringA);
const ringBBack = 1 - 0.6 * FaceGlyph.tilt(ringB);
const glow = 1 - smooth(0.42, 0.75, t);
const onScreen = p => [(50 + p[0]) * u, (50 + p[1]) * u];
const bracketScale = this._bracket.get(at) - 0.04 * this._breathe(at);
const c = 50 * u;
cr.save();
cr.translate(x + shake * u, y);
cr.setLineCap(1);
cr.setLineJoin(1);
// Brackets, giving way to the rings
layer(cr, 1 - faceGone, 1 - 0.15 * faceGone, c, c, () => {
cr.translate(c, c);
cr.scale(bracketScale, bracketScale);
cr.translate(-c, -c);
rgba(cr, color);
cr.setLineWidth(lw);
const corner = (sx, sy, lx, ly, qx, qy, cx, cy, ex, ey) => {
cr.moveTo(sx * u, sy * u);
cr.lineTo(lx * u, ly * u);
quadTo(cr, lx * u, ly * u, cx * u, cy * u, qx * u, qy * u);
cr.lineTo(ex * u, ey * u);
};
corner(6, 30, 6, 19, 19, 6, 6, 6, 30, 6);
corner(70, 6, 81, 6, 94, 19, 94, 6, 94, 30);
corner(94, 70, 94, 81, 81, 94, 94, 94, 70, 94);
corner(30, 94, 19, 94, 6, 81, 6, 94, 6, 70);
cr.stroke();
});
// The rings: a soft glow under them, their far halves dimmed, the
// near halves on top.
if (t > 0) {
layer(cr, ringsIn, 1, c, c, () => {
if (glow > 0) {
// MultiEffect's blur, drawn as wider and fainter strokes.
for (let i = 0; i < 6; ++i) {
cr.setLineWidth(lw * 1.6 + i * lw * 0.9);
const a = 0.8 * glow * 0.16;
rgba(cr, color, a);
polyline(cr, [...ringA.map(onScreen), onScreen(ringA[0])]);
cr.stroke();
rgba(cr, color, a * ringBShown);
polyline(cr, [...ringB.map(onScreen), onScreen(ringB[0])]);
cr.stroke();
}
}
cr.setLineWidth(lw);
const half = (points, front) => FaceGlyph.half(points, front).map(onScreen);
rgba(cr, color, ringABack);
polyline(cr, half(ringA, false));
cr.stroke();
rgba(cr, color, ringBBack * ringBShown);
polyline(cr, half(ringB, false));
cr.stroke();
rgba(cr, color, ringBShown);
polyline(cr, half(ringB, true));
cr.stroke();
rgba(cr, color);
polyline(cr, half(ringA, true));
cr.stroke();
});
}
// The face itself
layer(cr, this._shown.get(at) * (1 - faceGone), 1 - 0.2 * faceGone, c, c, () => {
rgba(cr, color);
cr.setLineWidth(lw);
const smile = this._smile.get(at);
cr.moveTo(fx(-16, -14, 26), fy(-16, -14, 26));
cr.lineTo(fx(-16, -5, 26), fy(-16, -5, 26));
cr.moveTo(fx(16, -14, 26), fy(16, -14, 26));
cr.lineTo(fx(16, -5, 26), fy(16, -5, 26));
cr.moveTo(fx(0, -13, 29), fy(0, -13, 29));
cr.lineTo(fx(0, 6, 37), fy(0, 6, 37));
quadTo(cr, fx(0, 6, 37), fy(0, 6, 37), fx(0, 11, 35), fy(0, 11, 35), fx(-5, 11, 31), fy(-5, 11, 31));
cr.moveTo(fx(-15, 20, 21), fy(-15, 20, 21));
quadTo(cr, fx(-15, 20, 21), fy(-15, 20, 21), fx(0, 20 + 11 * smile, 24), fy(0, 20 + 11 * smile, 24),
fx(15, 20, 21), fy(15, 20, 21));
cr.stroke();
});
// The tick, drawn inside the ring as it comes to rest
if (tick > 0.001) {
layer(cr, Math.min(1, tick * 8), 0.75, c, c, () => {
cr.translate(1.5 * u, 0);
rgba(cr, Theme.success);
cr.setLineWidth(lw / 0.75);
const a = [28 * u, 52 * u];
const b = [43 * u, 67 * u];
const e = [73 * u, 35 * u];
const lerp = (p, q, k) => [p[0] + (q[0] - p[0]) * k, p[1] + (q[1] - p[1]) * k];
const split = 0.33;
polyline(cr, tick <= split ? [a, lerp(a, b, tick / split)]
: [a, b, lerp(b, e, (tick - split) / (1 - split))]);
cr.stroke();
});
}
// A lock instead of the face, after too many tries
const lockSize = size * 0.42;
layer(cr, this._lockOpacity.get(at), this._lockScale.get(at), c, c, () => {
this._lock.draw(cr, c - lockSize / 2, c - lockSize / 2, lockSize, this.color, at);
});
cr.restore();
}
// How far the rings have turned at p: speeding up from rest, fastest a
// quarter of the way in, then settling softly, facing forward.
static turned(p) {
return p * p * (10 - p * (20 - p * (15 - 4 * p)));
}
// A ring turned in 3D (degrees about x, then y, then z).
static ring(ax, ay, az, radius) {
const d = Math.PI / 180;
const ca = Math.cos(ax * d), sa = Math.sin(ax * d);
const cb = Math.cos(ay * d), sb = Math.sin(ay * d);
const cg = Math.cos(az * d), sg = Math.sin(az * d);
const points = [];
for (let i = 0; i < 64; ++i) {
const phi = 2 * Math.PI * i / 64;
let px = radius * Math.cos(phi);
let py = radius * Math.sin(phi) * ca;
let pz = radius * Math.sin(phi) * sa;
const x1 = px * cb + pz * sb;
pz = pz * cb - px * sb;
px = x1;
const x2 = px * cg - py * sg;
py = px * sg + py * cg;
px = x2;
points.push([px, py, pz]);
}
return points;
}
static tilt(points) {
let most = 0;
for (const p of points)
most = Math.max(most, Math.abs(p[2]));
return most / Math.max(1, Math.hypot(points[0][0], points[0][1], points[0][2]));
}
// The half of a ring in front of the middle, or behind it, in one piece
// and reaching one point into the other half so the two meet.
static half(points, front) {
const n = points.length;
const inFront = i => points[(i + n) % n][2] >= -1e-6;
let start = -1;
for (let i = 0; i < n; ++i) {
if (inFront(i) === front && inFront(i - 1) !== front) {
start = i;
break;
}
}
const out = [];
if (start < 0) {
if (inFront(0) === front) {
for (let i = 0; i <= n; ++i)
out.push(points[i % n]);
}
return out;
}
out.push(points[(start + n - 1) % n]);
let i = start;
while (inFront(i) === front && i < start + n) {
out.push(points[i % n]);
++i;
}
out.push(points[i % n]);
return out;
}
}
FaceGlyph.SHAKE = [
[-9, 55, Ease.outQuad], [8, 70, Ease.inOutQuad], [-6, 65, Ease.inOutQuad],
[4, 60, Ease.inOutQuad], [-2, 55, Ease.inOutQuad], [0, 50, Ease.outQuad],
];
const PILL_SHAKE = [
[-10, 55, Ease.outQuad], [9, 70, Ease.linear], [-6, 65, Ease.linear],
[4, 60, Ease.linear], [0, 55, Ease.outQuad],
];
// Bubble.qml: the island that slides down, opens up, shows the face and
// closes again.
class Bubble {
constructor() {
this.actor = new St.DrawingArea({reactive: false, visible: false});
this.actor.connect('repaint', area => this._repaint(area));
this._timeline = new Clutter.Timeline({actor: this.actor, duration: 1000, repeat_count: -1});
this._timeline.connect('new-frame', () => this._frame());
this.phase = 'hidden';
this.message = '';
this.faceSeen = false;
this.style = 'full';
this.pace = 1;
this._shownPhase = 'idle';
this._positioned = false;
this._expanded = false;
this._opening = false;
this._timers = {};
this._width = new Tween(Theme.closedWidth);
this._height = new Tween(Theme.closedHeight);
this._y = new Tween(-Theme.closedHeight - 20);
this._shadow = new Tween(0);
this._fullOpacity = new Tween(0);
this._smallOpacity = new Tween(0);
this._glyphY = new Tween(40);
this._messageOpacity = new Tween(0);
this._pulseStart = null;
this._settle = new Tween(0);
this._pillShakeStart = null;
this._face = new FaceGlyph();
this._smallFace = new FaceGlyph(2.4);
this._smallFace.onSettled = ok => {
if (!ok)
this._pillShakeStart = now();
};
this._lock = new LockGlyph();
}
destroy() {
for (const id of Object.values(this._timers))
GLib.source_remove(id);
this._timers = {};
this._face.destroy();
this._smallFace.destroy();
this._timeline.stop();
this.actor.destroy();
}
setState(state) {
const at = now();
const wasOpen = this.phase !== 'hidden';
this.phase = state.phase ?? 'hidden';
this.message = state.message ?? '';
this.faceSeen = !!state.faceSeen;
this.style = state.style === 'minimal' ? 'minimal' : 'full';
const pace = state.pace ?? 1;
if (pace !== this.pace) {
this.pace = pace;
this._face.pace = this._smallFace.pace = this._lock.pace = pace;
}
if (this.phase !== 'hidden')
this._shownPhase = this.phase;
const glyphMode = this._shownPhase === 'scanning'
? this.faceSeen ? 'tracking' : 'scanning'
: this._shownPhase;
this._face.setMode(glyphMode, at);
this._smallFace.setMode(glyphMode === 'lockout' ? 'failure' : glyphMode, at);
this._lock.setOpen(this._shownPhase === 'success', at);
const hasMessage = this.message.length > 0;
this._glyphY.set(hasMessage ? 28 : 40, 220 * this.pace, Ease.outCubic, at);
this._messageOpacity.set(hasMessage ? 1 : 0, 200 * this.pace, Ease.linear, at);
this._updatePulse(at);
const wantOpen = this.phase !== 'hidden';
if (wantOpen !== wasOpen)
this._choreograph(wantOpen, at);
this._wake();
}
_timer(name, ms, callback) {
if (this._timers[name])
GLib.source_remove(this._timers[name]);
this._timers[name] = GLib.timeout_add(GLib.PRIORITY_DEFAULT, Math.max(0, Math.round(ms)), () => {
delete this._timers[name];
callback(now());
this._wake();
return GLib.SOURCE_REMOVE;
});
}
_cancel(name) {
if (this._timers[name]) {
GLib.source_remove(this._timers[name]);
delete this._timers[name];
}
}
_choreograph(wantOpen, at) {
if (wantOpen) {
this._opening = true;
this._cancel('slideOut');
this._cancel('closeDone');
this._setPositioned(true, at);
if (!this._expanded)
this._timer('expand', Theme.expandDelay * this.pace, t => this._setExpanded(true, t));
this.actor.show();
} else {
this._opening = false;
this._cancel('expand');
this._setExpanded(false, at);
this._timer('slideOut', Theme.slideOutDelay * this.pace, t => {
this._setPositioned(false, t);
this._timer('closeDone', Theme.slideOutDuration * this.pace + 60, () => {
this.actor.hide();
this._timeline.stop();
});
});
}
}
_setPositioned(positioned, at) {
this._positioned = positioned;
this._y.set(positioned ? Theme.topGap : -Theme.closedHeight - 20,
(this._opening ? Theme.slideInDuration : Theme.slideOutDuration) * this.pace,
this._opening ? Ease.outCubic : Ease.inCubic, at);
}
_setExpanded(expanded, at) {
this._expanded = expanded;
const minimal = this.style === 'minimal';
const w = expanded ? minimal ? Theme.minimalWidth : Theme.openWidth : Theme.closedWidth;
const h = expanded ? minimal ? Theme.minimalHeight : Theme.openHeight : Theme.closedHeight;
const duration = (this._opening ? Theme.growDuration : Theme.shrinkDuration) * this.pace;
// Growing overshoots sideways more than down, so the bottom edge does
// not sag.
this._width.set(w, duration, this._opening ? Ease.outBack(1.6) : Ease.outCubic, at);
this._height.set(h, duration, this._opening ? Ease.outBack(0.9) : Ease.outCubic, at);
this._shadow.set(expanded ? 0.35 : 0, (this._opening ? 200 : 120) * this.pace, Ease.linear, at);
this._fullOpacity.set(expanded ? 1 : 0, (this._opening ? 260 : 120) * this.pace, Ease.linear, at);
this._smallOpacity.set(expanded ? 1 : 0, (this._opening ? 200 : 120) * this.pace, Ease.linear, at);
this._updatePulse(at);
}
// The breathing while it scans: 1500 ms a breath, settling when it stops.
_updatePulse(at) {
const running = this.phase === 'scanning' && this._expanded;
if (running && this._pulseStart === null) {
this._pulseStart = at;
} else if (!running && this._pulseStart !== null) {
this._settle.jump(this._pulse(at));
this._settle.set(0, 200 * this.pace, Ease.outQuad, at);
this._pulseStart = null;
}
}
_pulse(at) {
if (this._pulseStart === null)
return this._settle.get(at);
const p = this.pace;
let t = (at - this._pulseStart) % (1500 * p);
if (t < 600 * p)
return 0;
t -= 600 * p;
if (t < 400 * p)
return Ease.inOutQuad(t / (400 * p));
t -= 400 * p;
if (t < 50 * p)
return 1;
t -= 50 * p;
if (t < 400 * p)
return 1 - Ease.inOutQuad(t / (400 * p));
return 0;
}
_wake() {
if (!this.actor.visible)
return;
if (!this._timeline.is_playing())
this._timeline.start();
this.actor.queue_repaint();
}
_frame() {
const at = now();
this.actor.queue_repaint();
const busy = this.phase !== 'hidden' || Object.keys(this._timers).length > 0 ||
this._width.busy(at) || this._y.busy(at) || this._face.busy(at) || this._smallFace.busy(at);
if (!busy)
this._timeline.stop();
}
_repaint(area) {
const cr = area.get_context();
const scale = St.ThemeContext.get_for_stage(global.stage).scale_factor;
const at = now();
cr.save();
cr.setOperator(0 /* clear */);
cr.paint();
cr.restore();
cr.scale(scale, scale);
try {
this._draw(cr, at);
} catch (e) {
logError(e, 'face-unlock bubble');
}
cr.$dispose();
}
_draw(cr, at) {
const minimal = this.style === 'minimal';
const w = this._width.get(at);
const h = this._height.get(at);
const [pillShake] = sequence(PILL_SHAKE, this._pillShakeStart, at, this.pace);
const x = (WIDTH - w) / 2 + pillShake;
const y = this._y.get(at);
const radius = minimal ? h / 2 : Math.min(Theme.openRadius, h / 2);
// The shadow: MultiEffect's soft one, as rings that fade outwards.
const shadow = this._shadow.get(at);
if (shadow > 0.001) {
for (let i = 8; i >= 1; --i) {
const grow = i * 2;
rgba(cr, [0, 0, 0], shadow * 0.18 * (1 - i / 9));
roundedRect(cr, x - grow, y + 3 - grow, w + 2 * grow, h + 2 * grow, radius + grow);
cr.fill();
}
}
rgba(cr, Theme.panel);
roundedRect(cr, x, y, w, h, radius);
cr.fill();
const pulse = this._pulse(at);
if (!minimal) {
// The face and a line of text, laid out at the open size and
// scaled with the island.
const fit = Math.min(w / Theme.openWidth, h / Theme.openHeight);
const ox = x + w / 2 - Theme.openWidth / 2;
const oy = y + h / 2 - Theme.openHeight / 2;
const cx = ox + Theme.openWidth / 2;
const cy = oy + Theme.openHeight / 2;
layer(cr, this._fullOpacity.get(at), fit, cx, cy, () => {
layer(cr, 1 - 0.35 * pulse, 1 - 0.03 * pulse, cx, cy, () => {
this._face.draw(cr, ox + 40, oy + this._glyphY.get(at), 100, at);
this._drawMessage(cr, ox, oy, at);
});
});
} else {
layer(cr, this._smallOpacity.get(at), 1, x + w / 2, y + h / 2, () => {
const failed = this._shownPhase === 'failure' || this._shownPhase === 'lockout';
this._lock.draw(cr, x + 16, y + (h - 18) / 2, 18, failed ? Theme.failure : Theme.textPrimary, at);
const fx = x + w - 14 - 24;
const fy = y + (h - 24) / 2;
layer(cr, 1 - 0.35 * pulse, 1 - 0.03 * pulse, fx + 12, fy + 12, () => {
this._smallFace.draw(cr, fx, fy, 24, at);
});
});
}
}
_drawMessage(cr, ox, oy, at) {
const opacity = this._messageOpacity.get(at);
if (opacity <= 0.001 || !this.message)
return;
const layout = PangoCairo.create_layout(cr);
const font = Pango.FontDescription.from_string(Bubble._fontName());
font.set_absolute_size(13 * Pango.SCALE);
font.set_weight(Pango.Weight.MEDIUM);
layout.set_font_description(font);
layout.set_width((Theme.openWidth - 32) * Pango.SCALE);
layout.set_ellipsize(Pango.EllipsizeMode.END);
layout.set_alignment(Pango.Alignment.CENTER);
layout.set_text(this.message, -1);
const [, logical] = layout.get_pixel_extents();
const failed = this._shownPhase === 'failure' || this._shownPhase === 'lockout';
rgba(cr, failed ? Theme.textDetail : Theme.textSecondary, opacity);
cr.moveTo(ox + 16, oy + Theme.openHeight - 20 - logical.height);
PangoCairo.show_layout(cr, layout);
}
static _fontName() {
if (!Bubble._font) {
const name = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'}).get_string('font-name');
Bubble._font = name.replace(/\s+[\d.]+$/, '');
}
return Bubble._font;
}
}
export default class FaceUnlockExtension extends Extension {
enable() {
this._bubble = new Bubble();
const ui = Main.layoutManager.uiGroup;
ui.add_child(this._bubble.actor);
// Above everything, the lock screen and its dialogs included.
this._raise = ui.connect('child-added', () => ui.set_child_above_sibling(this._bubble.actor, null));
this._monitors = Main.layoutManager.connect('monitors-changed', () => this._place());
this._scale = St.ThemeContext.get_for_stage(global.stage).connect('notify::scale-factor', () => this._place());
this._place();
this._watch = Gio.bus_watch_name(Gio.BusType.SESSION, BUS_NAME, Gio.BusNameWatcherFlags.NONE,
() => this._connect(), () => this._disconnect());
}
disable() {
Gio.bus_unwatch_name(this._watch);
this._disconnect();
Main.layoutManager.uiGroup.disconnect(this._raise);
Main.layoutManager.disconnect(this._monitors);
St.ThemeContext.get_for_stage(global.stage).disconnect(this._scale);
this._bubble.destroy();
this._bubble = null;
}
_place() {
const monitor = Main.layoutManager.primaryMonitor;
if (!monitor)
return;
const scale = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._bubble.actor.set_size(WIDTH * scale, HEIGHT * scale);
this._bubble.actor.set_position(monitor.x + Math.round((monitor.width - WIDTH * scale) / 2), monitor.y);
Main.layoutManager.uiGroup.set_child_above_sibling(this._bubble.actor, null);
}
_connect() {
this._disconnect();
const unpack = state => {
const out = {};
for (const [key, value] of Object.entries(state))
out[key] = value instanceof GLib.Variant ? value.recursiveUnpack() : value;
return out;
};
this._proxy = new BubbleProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH, (proxy, error) => {
if (error) {
logError(error, 'face-unlock');
return;
}
this._signal = proxy.connectSignal('StateChanged', (p, sender, [state]) => {
this._place();
this._bubble?.setState(unpack(state));
});
proxy.GetStateRemote(([state], getError) => {
if (!getError)
this._bubble?.setState(unpack(state));
});
}, null, Gio.DBusProxyFlags.DO_NOT_AUTO_START);
}
_disconnect() {
if (this._proxy && this._signal)
this._proxy.disconnectSignal(this._signal);
this._proxy = null;
this._signal = null;
this._bubble?.setState({phase: 'hidden'});
}
}
@@ -0,0 +1,8 @@
{
"uuid": "face-unlock@loonixtools.github.io",
"name": "Face Unlock",
"description": "The bubble of face-unlock: shows what the camera is doing, on the lock screen too.",
"shell-version": ["45", "46", "47", "48", "49", "50"],
"session-modes": ["user", "unlock-dialog"],
"url": "https://github.com/LoonixTools/face-unlock"
}
+39
View File
@@ -0,0 +1,39 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include "bubbleservice.h"
#include "bubblecontroller.h"
#include <QDBusConnection>
#include <QDBusError>
BubbleService::BubbleService(BubbleController *bubble, QObject *parent)
: QObject(parent)
, m_bubble(bubble)
{
const auto changed = [this] {
Q_EMIT StateChanged(GetState());
};
connect(bubble, &BubbleController::phaseChanged, this, changed);
connect(bubble, &BubbleController::messageChanged, this, changed);
connect(bubble, &BubbleController::faceSeenChanged, this, changed);
connect(bubble, &BubbleController::styleChanged, this, changed);
connect(bubble, &BubbleController::paceChanged, this, changed);
QDBusConnection bus = QDBusConnection::sessionBus();
if (!bus.registerService(QStringLiteral("io.github.loonixtools.FaceUnlock"))
|| !bus.registerObject(QStringLiteral("/io/github/loonixtools/FaceUnlock"), this, QDBusConnection::ExportScriptableContents)) {
qWarning("cannot offer the bubble on the session bus: %s", qPrintable(bus.lastError().message()));
}
}
QVariantMap BubbleService::GetState() const
{
return {
{QStringLiteral("phase"), m_bubble->phase()},
{QStringLiteral("message"), m_bubble->message()},
{QStringLiteral("faceSeen"), m_bubble->faceSeen()},
{QStringLiteral("style"), m_bubble->style()},
{QStringLiteral("pace"), m_bubble->pace()},
};
}
+30
View File
@@ -0,0 +1,30 @@
// SPDX-License-Identifier: GPL-3.0-or-later
//
// The bubble's state on the session bus, for GNOME. GNOME lets no program
// draw above its windows or its lock screen; only a GNOME Shell extension
// may. face-unlock's extension (res/gnome-shell) draws the bubble from what
// this says: io.github.loonixtools.FaceUnlock, /io/github/loonixtools/FaceUnlock.
#pragma once
#include <QObject>
#include <QVariantMap>
class BubbleController;
class BubbleService : public QObject
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "io.github.loonixtools.FaceUnlock.Bubble")
public:
explicit BubbleService(BubbleController *bubble, QObject *parent = nullptr);
// phase, message, faceSeen, style, pace: what BubbleController has.
Q_SCRIPTABLE QVariantMap GetState() const;
Q_SIGNALS:
Q_SCRIPTABLE void StateChanged(const QVariantMap &state);
private:
BubbleController *m_bubble;
};
+4 -3
View File
@@ -12,9 +12,10 @@
// request has to be made for every new surface role, before it is mapped, so // 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. // it is repeated each time the window is shown again.
// //
// Other compositors have no such thing. On Hyprland and Niri the lock screen // 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 // covers the bubble, which shows the tick once it is gone. GNOME has no
// has no layer-shell at all, so there is no bubble there (see main.cpp). // layer-shell at all; there face-unlock's GNOME Shell extension draws the
// bubble (BubbleService).
#pragma once #pragma once
+8 -3
View File
@@ -10,6 +10,7 @@
#include "agentsocket.h" #include "agentsocket.h"
#include "bubblecontroller.h" #include "bubblecontroller.h"
#include "bubbleservice.h"
#include "bubblewindow.h" #include "bubblewindow.h"
#include "enrollcontroller.h" #include "enrollcontroller.h"
#include "lockcontroller.h" #include "lockcontroller.h"
@@ -112,8 +113,8 @@ int main(int argc, char **argv)
} }
BubbleController bubble(&config); BubbleController bubble(&config);
// The bubble floats above everything as a layer-shell surface. GNOME has // 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 // none, and a normal window cannot stay on top or pick its place: there
// there it does without. // face-unlock's GNOME Shell extension draws it, from what this tells it.
std::unique_ptr<BubbleWindow> window; std::unique_ptr<BubbleWindow> window;
if (Wayland::hasGlobal("zwlr_layer_shell_v1")) { if (Wayland::hasGlobal("zwlr_layer_shell_v1")) {
window = std::make_unique<BubbleWindow>(&engine, &bubble); window = std::make_unique<BubbleWindow>(&engine, &bubble);
@@ -121,7 +122,7 @@ int main(int argc, char **argv)
if (parser.isSet(demoOpt)) { if (parser.isSet(demoOpt)) {
if (!window) { if (!window) {
qWarning("this desktop has no layer-shell, so there is no bubble to show"); qWarning("this desktop has no layer-shell; on GNOME the extension draws the bubble");
return 1; return 1;
} }
scheduleDemo(&bubble); scheduleDemo(&bubble);
@@ -135,6 +136,10 @@ int main(int argc, char **argv)
} }
socket.listen(); socket.listen();
QObject::connect(&socket, &AgentSocket::scanEvent, &bubble, &BubbleController::daemonEvent); QObject::connect(&socket, &AgentSocket::scanEvent, &bubble, &BubbleController::daemonEvent);
std::unique_ptr<BubbleService> service;
if (!window) {
service = std::make_unique<BubbleService>(&bubble);
}
LockController lock(&bubble, &config); LockController lock(&bubble, &config);
return app.exec(); return app.exec();
+11
View File
@@ -111,6 +111,16 @@ fu_do_enable() {
[[ $CFG_SUDO == yes ]] && ! fu_pam_enabled sudo && fu_root pam-enable sudo [[ $CFG_SUDO == yes ]] && ! fu_pam_enabled sudo && fu_root pam-enable sudo
[[ $CFG_POLKIT == yes ]] && ! fu_pam_enabled polkit-1 && fu_root pam-enable polkit-1 [[ $CFG_POLKIT == yes ]] && ! fu_pam_enabled polkit-1 && fu_root pam-enable polkit-1
case "$FU_DESKTOP" in
gnome)
fu_gnome_extension_enable
case $? in
1) fu_bad "$(fu_msg "Could not switch on the GNOME extension that shows the bubble.")" ;;
2) fu_note "$(fu_msg "Log out and back in once: then GNOME shows the bubble too.")" ;;
esac
;;
esac
fu_ok "$(fu_msg "Face unlock is on. Lock the screen and look at it to try.")" fu_ok "$(fu_msg "Face unlock is on. Lock the screen and look at it to try.")"
if [[ $CFG_SUDO != yes && $CFG_POLKIT != yes ]]; then if [[ $CFG_SUDO != yes && $CFG_POLKIT != yes ]]; then
fu_note "$(fu_msg "It can do sudo and admin prompts too. See Settings.")" fu_note "$(fu_msg "It can do sudo and admin prompts too. See Settings.")"
@@ -120,6 +130,7 @@ fu_do_enable() {
fu_do_disable() { fu_do_disable() {
fu_config_set Enabled no || { fu_bad "$(fu_msg "Could not save the setting.")"; return 1; } fu_config_set Enabled no || { fu_bad "$(fu_msg "Could not save the setting.")"; return 1; }
fu_agent_available && fu_agent_disable fu_agent_available && fu_agent_disable
[[ $FU_DESKTOP == gnome ]] && fu_gnome_extension_disable
local service local service
for service in "${FU_PAM_SERVICES[@]}"; do for service in "${FU_PAM_SERVICES[@]}"; do
+8 -9
View File
@@ -276,8 +276,7 @@ fu_ui_status() {
# heading, with only the label after it # heading, with only the label after it
# type bool, choice (steps through the choices) or camera # type bool, choice (steps through the choices) or camera
# needs a bool setting this one does nothing without; it is dimmed while # needs a bool setting this one does nothing without; it is dimmed while
# that is off. Layers is no setting: whether the desktop can show # that is off
# the bubble at all (GNOME cannot).
FU_SETTINGS=( FU_SETTINGS=(
"group|Lock screen" "group|Lock screen"
"user|LockScreen|bool|yes|Unlock with your face" "user|LockScreen|bool|yes|Unlock with your face"
@@ -295,7 +294,7 @@ FU_SETTINGS=(
"sys|Adapt|bool|yes|Learn from every unlock" "sys|Adapt|bool|yes|Learn from every unlock"
"sys|SkipLidClosed|bool|yes|Not when the lid is closed" "sys|SkipLidClosed|bool|yes|Not when the lid is closed"
"group|Bubble" "group|Bubble"
"user|Bubble|bool|yes|Show the bubble||Layers" "user|Bubble|bool|yes|Show the bubble"
"user|BubbleStyle|choice|full|Style|full,minimal|Bubble" "user|BubbleStyle|choice|full|Style|full,minimal|Bubble"
"user|AnimationSpeed|choice|normal|Animation speed|slow,normal,fast|Bubble" "user|AnimationSpeed|choice|normal|Animation speed|slow,normal,fast|Bubble"
"user|BubbleForPrompts|bool|yes|Also for sudo and admin prompts||Bubble" "user|BubbleForPrompts|bool|yes|Also for sudo and admin prompts||Bubble"
@@ -304,10 +303,12 @@ FU_SETTINGS=(
# fu_setting_help <Key> <value> # fu_setting_help <Key> <value>
# What a setting does, shown under the list for the selected one. # What a setting does, shown under the list for the selected one.
fu_setting_help() { fu_setting_help() {
if [[ $FU_DESKTOP == gnome && $1 =~ ^(Bubble|BubbleStyle|AnimationSpeed|BubbleForPrompts)$ ]]; then case "$FU_DESKTOP:$1" in
fu_msg "GNOME does not let other programs show above its windows, so there is no bubble on GNOME." gnome:Bubble)
return fu_msg "On GNOME a small GNOME extension shows the bubble. Turning face unlock on switches it on."
fi return
;;
esac
case "$1:$2" in case "$1:$2" in
LockScreen:*) fu_msg "Unlocks the lock screen when it sees your face. Off: only your password works there." ;; 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." ;; ScanOnWake:*) fu_msg "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." ;;
@@ -523,8 +524,6 @@ fu_ui_settings() {
values[i]="$FU_SETTING_VALUE" values[i]="$FU_SETTING_VALUE"
current[${keys[i]}]="$FU_SETTING_VALUE" current[${keys[i]}]="$FU_SETTING_VALUE"
done done
current[Layers]=yes
[[ $FU_DESKTOP == gnome ]] && current[Layers]=no current[Bubble]=no
dirty=0 dirty=0
fi fi
+40
View File
@@ -145,6 +145,46 @@ fu_agent_hint() {
fi fi
} }
# ---------------------------------------------------------------------------
# The bubble's GNOME Shell extension
# ---------------------------------------------------------------------------
# GNOME lets no program draw above its windows; its extensions may. The
# package brings one, and turning face unlock on switches it on.
FU_GNOME_EXTENSION="face-unlock@loonixtools.github.io"
# fu_gnome_extension_enable
# gnome-extensions only knows the extensions GNOME found when the session
# started. One that came with the package later goes straight into the
# setting, and GNOME loads it at the next login: returns 2 then.
fu_gnome_extension_enable() {
local list new
fu_have gsettings || return 1
if gnome-extensions info "$FU_GNOME_EXTENSION" > /dev/null 2>&1; then
gnome-extensions enable "$FU_GNOME_EXTENSION" > /dev/null 2>&1 && return 0
fi
list="$(gsettings get org.gnome.shell enabled-extensions 2>/dev/null)" || return 1
case "$list" in
*"'$FU_GNOME_EXTENSION'"*) return 2 ;;
'@as []'|'[]') new="['$FU_GNOME_EXTENSION']" ;;
*) new="${list%]}, '$FU_GNOME_EXTENSION']" ;;
esac
gsettings set org.gnome.shell enabled-extensions "$new" || return 1
return 2
}
fu_gnome_extension_disable() {
local list
fu_have gsettings || return 0
gnome-extensions disable "$FU_GNOME_EXTENSION" > /dev/null 2>&1 && return 0
list="$(gsettings get org.gnome.shell enabled-extensions 2>/dev/null)" || return 0
list="${list//, \'$FU_GNOME_EXTENSION\'/}"
list="${list//\'$FU_GNOME_EXTENSION\', /}"
list="${list//\'$FU_GNOME_EXTENSION\'/}"
[[ $list == '[]' ]] && list='@as []'
gsettings set org.gnome.shell enabled-extensions "$list" > /dev/null 2>&1 || true
}
fu_agent_disable() { fu_agent_disable() {
systemctl --user disable --now "$FU_UNIT_AGENT" > /dev/null 2>&1 || true systemctl --user disable --now "$FU_UNIT_AGENT" > /dev/null 2>&1 || true
} }