feat: show the bubble on gnome
This commit is contained in:
1 parent
f232f796fc
commit
2a9b0d3f91
28 files changed
+2278
-1077
No files matched your search
@@ -149,6 +149,7 @@ if(FU_BUILD_AGENT)
|
||||
src/agent/agentsocket.cpp
|
||||
src/agent/bubblewindow.cpp
|
||||
src/agent/bubblecontroller.cpp
|
||||
src/agent/bubbleservice.cpp
|
||||
src/agent/lockcontroller.cpp
|
||||
src/agent/lockwatcher.cpp
|
||||
src/agent/lockers.cpp
|
||||
|
||||
@@ -23,6 +23,8 @@ MANDIR ?= $(DATADIR)/man
|
||||
APPDIR ?= $(DATADIR)/applications
|
||||
POLKITDIR ?= $(DATADIR)/polkit-1/actions
|
||||
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.
|
||||
# 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"
|
||||
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
|
||||
@for l in $(LINGUAS); do \
|
||||
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)$(POLKITDIR)/io.github.loonixtools.face-unlock.policy"
|
||||
rm -f "$(DESTDIR)$(ICONDIR)/face-unlock.svg"
|
||||
rm -rf "$(DESTDIR)$(GNOMEEXTDIR)/$(GNOMEEXT)"
|
||||
rm -f "$(DESTDIR)$(MANDIR)/man1/face-unlock.1"
|
||||
rm -rf "$(DESTDIR)$(DATADIR)/doc/face-unlock"
|
||||
@for l in $(LINGUAS); do rm -f "$(DESTDIR)$(LOCALEDIR)/$$l/LC_MESSAGES/face-unlock.mo"; done
|
||||
|
||||
@@ -73,10 +73,13 @@ desktops, on Wayland:
|
||||
| | Lock screen | sudo and admin prompts | Bubble |
|
||||
|---|---|---|---|
|
||||
| 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 |
|
||||
| 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
|
||||
(for example hyprpolkitagent). Hyprland without uwsm does not start the lock
|
||||
screen part by itself: the menu shows what to add to its config.
|
||||
|
||||
+23
-14
@@ -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
|
||||
in a terminal and the admin password prompts can all take a face instead of a
|
||||
password, on KDE Plasma, GNOME, Hyprland and Niri (see *DESKTOPS*). A photo of somebody on a phone or tablet does not get
|
||||
in, and with the strict photo check a printed one does not either.
|
||||
password, on KDE Plasma, GNOME, Hyprland and Niri (see *DESKTOPS*). A photo of
|
||||
somebody on a phone or tablet does not get in, and with the strict photo check
|
||||
a printed one does not either.
|
||||
|
||||
A bubble at the top of the screen shows what is going on: it drops down when
|
||||
the camera starts looking, the face in it looks around, and when it recognises
|
||||
somebody two green rings spin and land around a tick. On Plasma it shows above
|
||||
the lock screen too. *Animation speed* makes all of it faster or slower.
|
||||
somebody two green rings spin and land around a tick. On Plasma and GNOME it
|
||||
shows above the lock screen too. *Animation speed* makes all of it faster or
|
||||
slower.
|
||||
|
||||
Run without a command it shows an interactive menu. Everything it can be told
|
||||
is reachable from there; the settings files behind it do not need to be edited
|
||||
@@ -31,7 +33,8 @@ It is a convenience, not a security upgrade. See *HOW SAFE IS THIS*.
|
||||
*enable*
|
||||
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
|
||||
they were on before.
|
||||
they were on before. On GNOME it switches on the extension that draws the
|
||||
bubble.
|
||||
|
||||
*disable*
|
||||
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
|
||||
never lock the account.
|
||||
|
||||
The bubble is a layer-shell surface that KWin keeps above the lock screen
|
||||
(kde_lockscreen_overlay_v1). KWin only allows that for a program whose desktop
|
||||
file asks for it, which is
|
||||
_io.github.loonixtools.face-unlock-agent.desktop_.
|
||||
On Plasma the bubble is a layer-shell surface that KWin keeps above the lock
|
||||
screen (kde_lockscreen_overlay_v1). KWin only allows that for a program whose
|
||||
desktop file asks for it, which is
|
||||
_io.github.loonixtools.face-unlock-agent.desktop_. How it gets there elsewhere
|
||||
is under *DESKTOPS*.
|
||||
|
||||
# DESKTOPS
|
||||
|
||||
All of them on Wayland. sudo and admin prompts work the same everywhere.
|
||||
|
||||
*KDE Plasma 6*
|
||||
Everything. The lock is seen through org.freedesktop.ScreenSaver and
|
||||
logind, and the bubble shows above the lock screen.
|
||||
The lock is seen through org.freedesktop.ScreenSaver and logind, and
|
||||
the bubble shows above the lock screen (kde_lockscreen_overlay_v1).
|
||||
|
||||
*GNOME*
|
||||
The lock is seen through logind, where GNOME sets *LockedHint*. There is
|
||||
no bubble: GNOME has no layer-shell, and a normal window can neither stay
|
||||
on top nor pick its place.
|
||||
The lock is seen through logind, where GNOME sets *LockedHint*. GNOME
|
||||
lets no program draw above its windows, so a GNOME Shell extension
|
||||
(_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*
|
||||
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
|
||||
bubble.
|
||||
|
||||
_/usr/share/gnome-shell/extensions/face-unlock@loonixtools.github.io/_
|
||||
The GNOME Shell extension that draws the bubble on GNOME.
|
||||
|
||||
# ENVIRONMENT
|
||||
|
||||
*NO_COLOR*
|
||||
|
||||
@@ -105,6 +105,7 @@ make install DESTDIR=%{buildroot} PREFIX=%{_prefix} VERSION=%{upstream_version}
|
||||
%{_datadir}/applications/io.github.loonixtools.face-unlock-agent.desktop
|
||||
%{_datadir}/polkit-1/actions/io.github.loonixtools.face-unlock.policy
|
||||
%{_datadir}/icons/hicolor/scalable/apps/face-unlock.svg
|
||||
%{_datadir}/gnome-shell/extensions/face-unlock@loonixtools.github.io/
|
||||
%{_mandir}/man1/%{name}.1*
|
||||
|
||||
%changelog
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: German\n"
|
||||
@@ -59,8 +59,8 @@ msgstr "Es wurde kein Gesicht hinzugefügt."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Richte zuerst dein Gesicht ein."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Einstellung konnte nicht gespeichert werden."
|
||||
|
||||
@@ -74,98 +74,108 @@ msgstr ""
|
||||
"Keine systemd-Benutzersitzung, daher wurde der Sperrbildschirm-Dienst nicht "
|
||||
"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."
|
||||
msgstr ""
|
||||
"Die Gesichtsentsperrung ist an. Sperre den Bildschirm und schau ihn an, um "
|
||||
"es auszuprobieren."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr "Sie kann auch sudo und Admin-Abfragen übernehmen. Siehe Einstellungen."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
msgstr ""
|
||||
"Die Gesichtsentsperrung ist aus. Deine Gesichter bleiben erhalten; löschen "
|
||||
"kannst du sie unter Gesichter."
|
||||
|
||||
#: src/face-unlock:145 src/lib/daemon.sh:109
|
||||
#: src/face-unlock:156 src/lib/daemon.sh:109
|
||||
msgid "No face is set up yet."
|
||||
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"
|
||||
msgstr "an"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "aus"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s Aufnahmen, %s dazugelernt"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Welches Gesicht? Die IDs zeigt `%s faces`."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Gelöscht."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Aufruf: face-unlock [Befehl]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Befehle:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Gesichtsentsperrung einschalten"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Gesicht hinzufügen"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Gesichter auflisten"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Ein Gesicht löschen"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "In die Kamera schauen und sehen, was sie sieht"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Anzeigen, was eingeschaltet ist"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Diese Hilfe anzeigen"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Die Version anzeigen"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Ohne Befehl wird ein interaktives Menü angezeigt."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -173,7 +183,7 @@ msgstr ""
|
||||
"Starte das als dein eigener Benutzer, nicht als root. Wenn nötig, wird nach "
|
||||
"deinem Passwort gefragt."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Unbekannter Befehl: %s"
|
||||
@@ -352,11 +362,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "AN"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "AUS"
|
||||
|
||||
@@ -397,7 +407,7 @@ msgstr "langsam"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automatisch"
|
||||
|
||||
@@ -417,8 +427,8 @@ msgstr "läuft nicht"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Die Gesichtsentsperrung erneut einzuschalten startet ihn."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Gesichter"
|
||||
|
||||
@@ -473,13 +483,13 @@ msgstr "Der Sperrbildschirm-Dienst läuft nicht."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME lässt andere Programme nicht über seinen Fenstern erscheinen, daher "
|
||||
"gibt es auf GNOME keine Bubble."
|
||||
"Unter GNOME zeigt eine kleine GNOME-Erweiterung die Bubble. Beim Einschalten "
|
||||
"der Gesichtsentsperrung wird sie mit eingeschaltet."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -487,7 +497,7 @@ msgstr ""
|
||||
"Entsperrt den Sperrbildschirm, wenn er dein Gesicht sieht. Aus: Dort geht "
|
||||
"nur dein Passwort."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -495,7 +505,7 @@ msgstr ""
|
||||
"Scannt, wenn du auf dem Sperrbildschirm eine Taste drückst oder die Maus "
|
||||
"bewegst, und wenn der Computer aufwacht."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -503,7 +513,7 @@ msgstr ""
|
||||
"Scannt, sobald der Bildschirm gesperrt wird. Normalerweise aus: Sperrst du "
|
||||
"selbst, würde er gleich wieder entsperren."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -511,7 +521,7 @@ msgstr ""
|
||||
"sudo nimmt dein Gesicht statt des Passworts. Passt es nicht, tippst du wie "
|
||||
"gewohnt dein Passwort."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
@@ -519,18 +529,18 @@ msgstr ""
|
||||
"Die Passwort-Fenster deines Desktops und von Apps, zum Beispiel beim "
|
||||
"Installieren. Passt das Gesicht nicht, tippst du dein Passwort."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Du musst blinzeln oder den Kopf leicht drehen. Das hält auch ausgedruckte "
|
||||
"Fotos auf."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Keine Prüfung. Nur zum Ausprobieren einer Kamera."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
@@ -538,22 +548,22 @@ msgstr ""
|
||||
"Hält Fotos auf Handy, Tablet oder Hochglanzpapier auf. Blinzeln ist nicht "
|
||||
"nötig. Ein matter Ausdruck kann durchkommen."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Seltener Verwechslungen, aber mit Brille oder bei schlechtem Licht erkennt "
|
||||
"es dich vielleicht nicht."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr "Erkennt dich leichter, aber auch jemanden, der dir sehr ähnlich sieht."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "Der Standard. Passt für die meisten."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -561,7 +571,7 @@ msgstr ""
|
||||
"Deine Augen müssen offen sein und auf den Bildschirm schauen. So entsperrt "
|
||||
"es nicht, wenn du wegschaust oder schläfst."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -570,11 +580,11 @@ msgstr ""
|
||||
"neu einrichten. Eine Infrarot-Kamera braucht ihr Licht (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."
|
||||
msgstr "Wie lange die Kamera nach deinem Gesicht sucht, bevor sie aufgibt."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -582,7 +592,7 @@ msgstr ""
|
||||
"Nach einem sicheren Treffer merkt es sich, wie du gerade aussiehst. So musst "
|
||||
"du nach neuer Frisur oder Brille nichts neu einrichten."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -590,82 +600,82 @@ msgstr ""
|
||||
"Kein Scan bei zugeklapptem Laptop, zum Beispiel am Schreibtisch mit externem "
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"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."
|
||||
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."
|
||||
msgstr ""
|
||||
"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
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automatisch (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(Infrarot)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "für alle Nutzer, fragt nach deinem Passwort"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Hoch/Runter: wählen, Leertaste: an/aus, r: umbenennen, d: löschen, a: "
|
||||
"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."
|
||||
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:"
|
||||
msgstr "Neuer Name:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "„%s“ löschen?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Gesichtsentsperrung ein- oder ausschalten"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Ausprobieren"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
@@ -887,23 +897,23 @@ msgstr ""
|
||||
msgid "The face could not be added (%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"
|
||||
msgstr "Gesichtsentsperrung für Sperrbildschirm, sudo und Admin-Abfragen"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Ein Gesicht einrichten."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
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."
|
||||
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."
|
||||
msgstr "Bubble-Stil für die Demo: full oder minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Spanish\n"
|
||||
@@ -58,8 +58,8 @@ msgstr "No se añadió ninguna cara."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Primero, configura tu cara."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
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 "
|
||||
"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."
|
||||
msgstr ""
|
||||
"El desbloqueo facial está activado. Bloquea la pantalla y mírala para "
|
||||
"probarlo."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr ""
|
||||
"También funciona con sudo y las solicitudes de administrador. Consulta "
|
||||
"Ajustes."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
msgstr ""
|
||||
"El desbloqueo facial está desactivado. Tus caras se conservan; bórralas en "
|
||||
"Caras."
|
||||
|
||||
#: 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."
|
||||
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"
|
||||
msgstr "activado"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "desactivado"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s muestras, %s aprendidas"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "¿Qué cara? Consulta `%s faces` para ver los ID."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Borrado."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Uso: face-unlock [comando]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Comandos:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Activar el desbloqueo facial"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Añadir una cara"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Listar las caras"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Borrar una cara"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Mirar a la cámara y ver lo que ve"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Mostrar qué está activado"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Mostrar esta ayuda"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Mostrar la versión"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Sin comando se muestra un menú interactivo."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -174,7 +184,7 @@ msgstr ""
|
||||
"Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando "
|
||||
"la necesita."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Comando desconocido: %s"
|
||||
@@ -353,11 +363,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "ACTIVADO"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "DESACTIVADO"
|
||||
|
||||
@@ -398,7 +408,7 @@ msgstr "lenta"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automática"
|
||||
|
||||
@@ -418,8 +428,8 @@ msgstr "detenido"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Al volver a activar el desbloqueo facial, se inicia."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Caras"
|
||||
|
||||
@@ -474,13 +484,13 @@ msgstr "El agente de la pantalla de bloqueo no se está ejecutando."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME no deja que otros programas se muestren sobre sus ventanas, así que en "
|
||||
"GNOME no hay burbuja."
|
||||
"En GNOME, una pequeña extensión de GNOME muestra la burbuja. Al activar el "
|
||||
"desbloqueo facial se activa también."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -488,7 +498,7 @@ msgstr ""
|
||||
"Desbloquea la pantalla de bloqueo cuando ve tu cara. Desactivado: ahí solo "
|
||||
"sirve tu contraseña."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -496,7 +506,7 @@ msgstr ""
|
||||
"Escanea cuando pulsas una tecla o mueves el ratón en la pantalla de bloqueo, "
|
||||
"y cuando el equipo se despierta."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -504,7 +514,7 @@ msgstr ""
|
||||
"Escanea en cuanto se bloquea la pantalla. Desactivado por defecto: si la "
|
||||
"bloqueas tú, se desbloquearía enseguida."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -512,7 +522,7 @@ msgstr ""
|
||||
"sudo usa tu cara en lugar de la contraseña. Si no coincide, escribes la "
|
||||
"contraseña como siempre."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"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 "
|
||||
"ejemplo al instalar software. Si no coincide, escribes la contraseña."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Tienes que parpadear o girar un poco la cabeza. Esto también frena las fotos "
|
||||
"impresas."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Sin comprobación. Solo para probar una cámara."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"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 "
|
||||
"parpadear. Una foto impresa en papel mate puede pasar."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Menos coincidencias erróneas, pero puede que no te reconozca con gafas o con "
|
||||
"poca luz."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr ""
|
||||
"Te reconoce con más facilidad, pero también a alguien que se parezca mucho a "
|
||||
"ti."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "El valor por defecto. Adecuado para la mayoría."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -564,7 +574,7 @@ msgstr ""
|
||||
"Tus ojos tienen que estar abiertos y mirando a la pantalla. Así no se "
|
||||
"desbloquea mientras miras a otro lado o duermes."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -573,11 +583,11 @@ msgstr ""
|
||||
"tu cara. Una cámara infrarroja necesita su luz encendida (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."
|
||||
msgstr "Cuánto tiempo busca la cámara tu cara antes de rendirse."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -585,7 +595,7 @@ msgstr ""
|
||||
"Tras una coincidencia segura, recuerda tu aspecto actual. Así, un corte de "
|
||||
"pelo nuevo o unas gafas no piden configurar de nuevo."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -593,85 +603,85 @@ msgstr ""
|
||||
"Sin escaneo mientras el portátil está cerrado, por ejemplo en un escritorio "
|
||||
"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."
|
||||
msgstr ""
|
||||
"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."
|
||||
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."
|
||||
msgstr ""
|
||||
"Una isla con una cara que mira alrededor, luego anillos y una marca de "
|
||||
"verificación."
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr ""
|
||||
"Muestra la burbuja también cuando sudo o una solicitud de administrador "
|
||||
"escanea tu cara."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automática (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(infrarroja)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Ajustes"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "para todos los usuarios, pide tu contraseña"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Arriba/Abajo: elegir, Espacio: activar/desactivar, r: renombrar, d: borrar, "
|
||||
"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."
|
||||
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:"
|
||||
msgstr "Nuevo nombre:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "¿Borrar «%s»?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Activar o desactivar el desbloqueo facial"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Probarlo"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
@@ -890,25 +900,25 @@ msgstr ""
|
||||
msgid "The face could not be added (%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"
|
||||
msgstr ""
|
||||
"Desbloqueo facial para la pantalla de bloqueo, sudo y las solicitudes de "
|
||||
"administrador"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Configurar una cara."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
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."
|
||||
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."
|
||||
msgstr "Estilo de burbuja para la demo: full o minimal."
|
||||
|
||||
|
||||
+81
-73
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -54,8 +54,8 @@ msgstr ""
|
||||
msgid "First, set up your face."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr ""
|
||||
|
||||
@@ -67,100 +67,108 @@ msgstr ""
|
||||
msgid "No systemd user session, so the lock screen agent was not started."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
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."
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:177 src/lib/menu.sh:692
|
||||
#: src/face-unlock:188 src/lib/menu.sh:691
|
||||
msgid "Add a face"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
msgstr ""
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr ""
|
||||
@@ -335,11 +343,11 @@ msgstr ""
|
||||
msgid "[y/N]"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:172 src/lib/menu.sh:509
|
||||
#: src/lib/menu.sh:172 src/lib/menu.sh:510
|
||||
msgid "ON"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr ""
|
||||
|
||||
@@ -380,7 +388,7 @@ msgstr ""
|
||||
msgid "%s seconds"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:421
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:422
|
||||
msgid "automatic"
|
||||
msgstr ""
|
||||
|
||||
@@ -400,8 +408,8 @@ msgstr ""
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr ""
|
||||
|
||||
@@ -456,168 +464,168 @@ msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:325
|
||||
#: src/lib/menu.sh:326
|
||||
msgid "How long the camera looks for your face before it gives up."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:506 src/lib/menu.sh:694
|
||||
#: src/lib/menu.sh:507 src/lib/menu.sh:693
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:508
|
||||
#: src/lib/menu.sh:509
|
||||
msgid "for all users, asks for your password"
|
||||
msgstr ""
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:607
|
||||
#: src/lib/menu.sh:606
|
||||
msgid "No face is set up yet. Press a to add one."
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr ""
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
@@ -829,23 +837,23 @@ msgstr ""
|
||||
msgid "The face could not be added (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: src/agent/main.cpp:86
|
||||
#: src/agent/main.cpp:87
|
||||
msgid "Face unlock for the lock screen, sudo and admin prompts"
|
||||
msgstr ""
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr ""
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr ""
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
msgstr ""
|
||||
|
||||
#: src/agent/main.cpp:93
|
||||
#: src/agent/main.cpp:94
|
||||
msgid "Bubble style for the demo: full or minimal."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: French\n"
|
||||
@@ -60,8 +60,8 @@ msgstr "Aucun visage n'a été ajouté."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Configurez d'abord votre visage."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
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 "
|
||||
"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."
|
||||
msgstr ""
|
||||
"Le déverrouillage facial est activé. Verrouillez l'écran et regardez-le pour "
|
||||
"essayer."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr ""
|
||||
"Il fonctionne aussi pour sudo et les demandes d'administration. Voir "
|
||||
"Réglages."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
msgstr ""
|
||||
"Le déverrouillage facial est désactivé. Vos visages sont conservés ; "
|
||||
"supprimez-les dans Visages."
|
||||
|
||||
#: 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."
|
||||
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"
|
||||
msgstr "activé"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "désactivé"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s échantillons, %s appris"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Quel visage ? Voir `%s faces` pour les identifiants."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Supprimé."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Utilisation : face-unlock [commande]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Commandes :"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Activer le déverrouillage facial"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Ajouter un visage"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Lister les visages"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Supprimer un visage"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Regarder la caméra et voir ce qu'elle voit"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Afficher ce qui est activé"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Afficher cette aide"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Afficher la version"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Sans commande, un menu interactif s'affiche."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -176,7 +186,7 @@ msgstr ""
|
||||
"Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est "
|
||||
"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
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Commande inconnue : %s"
|
||||
@@ -357,11 +367,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "ACTIVÉ"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "DÉSACTIVÉ"
|
||||
|
||||
@@ -402,7 +412,7 @@ msgstr "lent"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automatique"
|
||||
|
||||
@@ -422,8 +432,8 @@ msgstr "arrêté"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Réactiver le déverrouillage facial le démarre."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Visages"
|
||||
|
||||
@@ -478,13 +488,13 @@ msgstr "L'agent de l'écran de verrouillage ne tourne pas."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME ne laisse pas d'autres programmes s'afficher au-dessus de ses "
|
||||
"fenêtres, il n'y a donc pas de bulle sous GNOME."
|
||||
"Sous GNOME, une petite extension GNOME affiche la bulle. Activer le "
|
||||
"déverrouillage facial l'active aussi."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -492,7 +502,7 @@ msgstr ""
|
||||
"Déverrouille l'écran de verrouillage quand il voit votre visage. Désactivé : "
|
||||
"seul votre mot de passe fonctionne."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -500,7 +510,7 @@ msgstr ""
|
||||
"Scanne quand vous appuyez sur une touche ou bougez la souris sur l'écran de "
|
||||
"verrouillage, et au réveil de l'ordinateur."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"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 "
|
||||
"verrouillez vous-même, il se déverrouillerait aussitôt."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -516,7 +526,7 @@ msgstr ""
|
||||
"sudo prend votre visage au lieu du mot de passe. Sinon, vous tapez le mot de "
|
||||
"passe comme d'habitude."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"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 "
|
||||
"exemple pour installer un logiciel. Sinon, vous tapez le mot de passe."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Vous devez cligner des yeux ou tourner un peu la tête. Cela bloque aussi les "
|
||||
"photos imprimées."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Aucun contrôle. Seulement pour essayer une caméra."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"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 "
|
||||
"besoin de cligner des yeux. Une photo imprimée mate peut passer."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Moins d'erreurs de correspondance, mais il peut ne pas vous reconnaître avec "
|
||||
"des lunettes ou sous une mauvaise lumière."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr ""
|
||||
"Vous reconnaît plus facilement, mais aussi quelqu'un qui vous ressemble "
|
||||
"beaucoup."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "La valeur par défaut. Convient à la plupart des gens."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -568,7 +578,7 @@ msgstr ""
|
||||
"Vos yeux doivent être ouverts et tournés vers l'écran. Ainsi, rien ne se "
|
||||
"déverrouille quand vous regardez ailleurs ou dormez."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -577,11 +587,11 @@ msgstr ""
|
||||
"reconfigurez votre visage. Une caméra infrarouge doit avoir sa lumière "
|
||||
"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."
|
||||
msgstr "Combien de temps la caméra cherche votre visage avant d'abandonner."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -590,7 +600,7 @@ msgstr ""
|
||||
"nouvelle coupe ou des lunettes ne demandent donc pas de nouvelle "
|
||||
"configuration."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -598,84 +608,84 @@ msgstr ""
|
||||
"Pas de scan quand le portable est fermé, par exemple à un bureau avec un "
|
||||
"é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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"Un îlot avec un visage qui regarde autour de lui, puis des anneaux et une "
|
||||
"coche."
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr ""
|
||||
"Affiche aussi la bulle quand sudo ou une demande d'administration scanne "
|
||||
"votre visage."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automatique (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(infrarouge)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Réglages"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "pour tous, demande votre mot de passe"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Haut/Bas : choisir, Espace : activer/désactiver, r : renommer, d : "
|
||||
"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."
|
||||
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:"
|
||||
msgstr "Nouveau nom :"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "Supprimer « %s » ?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Activer ou désactiver le déverrouillage facial"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Essayer"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
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)."
|
||||
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"
|
||||
msgstr ""
|
||||
"Déverrouillage facial pour l'écran de verrouillage, sudo et les demandes "
|
||||
"d'administration"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Configurer un visage."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Le nom du nouveau visage."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
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."
|
||||
msgstr "Style de bulle pour la démo : full ou minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Italian\n"
|
||||
@@ -58,8 +58,8 @@ msgstr "Nessun volto aggiunto."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Per prima cosa, configura il tuo volto."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Impossibile salvare l'impostazione."
|
||||
|
||||
@@ -73,98 +73,106 @@ msgstr ""
|
||||
"Nessuna sessione utente di systemd, quindi l'agente della schermata di "
|
||||
"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."
|
||||
msgstr ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Lo sblocco con il volto è disattivato. I tuoi volti restano salvati; "
|
||||
"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."
|
||||
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"
|
||||
msgstr "attivo"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "disattivo"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s campioni, %s appresi"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Quale volto? Vedi `%s faces` per gli ID."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Eliminato."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Uso: face-unlock [comando]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Comandi:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Attiva lo sblocco con il volto"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Aggiungi un volto"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Elenca i volti"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Elimina un volto"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Guarda la fotocamera e vedi cosa vede"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Mostra cosa è attivo"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Mostra questo aiuto"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Mostra la versione"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Senza comando viene mostrato un menu interattivo."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -172,7 +180,7 @@ msgstr ""
|
||||
"Esegui questo con il tuo utente, non come root. Chiede la password quando "
|
||||
"serve."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Comando sconosciuto: %s"
|
||||
@@ -352,11 +360,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "ATTIVO"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "DISATTIVO"
|
||||
|
||||
@@ -397,7 +405,7 @@ msgstr "lenta"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automatica"
|
||||
|
||||
@@ -417,8 +425,8 @@ msgstr "non in esecuzione"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Riattivare lo sblocco con il volto lo avvia."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Volti"
|
||||
|
||||
@@ -473,13 +481,13 @@ msgstr "L'agente della schermata di blocco non è in esecuzione."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME non permette ad altri programmi di comparire sopra le sue finestre, "
|
||||
"quindi su GNOME non c'è la bolla."
|
||||
"Su GNOME una piccola estensione di GNOME mostra la bolla. Attivando lo "
|
||||
"sblocco con il volto si attiva anche lei."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -487,7 +495,7 @@ msgstr ""
|
||||
"Sblocca la schermata di blocco quando vede il tuo volto. Disattivo: lì "
|
||||
"funziona solo la password."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -495,7 +503,7 @@ msgstr ""
|
||||
"Esegue la scansione quando premi un tasto o muovi il mouse sulla schermata "
|
||||
"di blocco, e quando il computer si riattiva."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -503,7 +511,7 @@ msgstr ""
|
||||
"Esegue la scansione appena lo schermo si blocca. Disattivo di norma: se lo "
|
||||
"blocchi tu, si sbloccherebbe subito."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -511,7 +519,7 @@ msgstr ""
|
||||
"sudo usa il tuo volto al posto della password. Se non corrisponde, digiti la "
|
||||
"password come al solito."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"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 "
|
||||
"installi software. Se non corrisponde, digiti la password."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Devi sbattere le palpebre o girare un po' la testa. Questo ferma anche le "
|
||||
"foto stampate."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Nessun controllo. Solo per provare una fotocamera."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"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 "
|
||||
"le palpebre. Una foto stampata opaca può passare."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Meno scambi di persona, ma potrebbe non riconoscerti con gli occhiali o con "
|
||||
"poca luce."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr "Ti riconosce più facilmente, ma anche qualcuno che ti somiglia molto."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "Il valore predefinito. Va bene per la maggior parte delle persone."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -561,7 +569,7 @@ msgstr ""
|
||||
"I tuoi occhi devono essere aperti e rivolti allo schermo. Così non si "
|
||||
"sblocca mentre guardi altrove o dormi."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -570,11 +578,11 @@ msgstr ""
|
||||
"nuovo il tuo volto. Una fotocamera a infrarossi ha bisogno della sua luce "
|
||||
"(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."
|
||||
msgstr "Per quanto tempo la fotocamera cerca il tuo volto prima di arrendersi."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -583,7 +591,7 @@ msgstr ""
|
||||
"nuovo taglio di capelli o gli occhiali non richiedono una nuova "
|
||||
"configurazione."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -591,82 +599,82 @@ msgstr ""
|
||||
"Nessuna scansione quando il portatile è chiuso, per esempio alla scrivania "
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"Mostra la bolla anche quando sudo o una richiesta di amministratore "
|
||||
"scansiona il tuo volto."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automatica (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(infrarossi)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Impostazioni"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "per tutti gli utenti, chiede la tua password"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Su/Giù: scegli, Spazio: attiva/disattiva, r: rinomina, d: elimina, a: "
|
||||
"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."
|
||||
msgstr "Nessun volto ancora configurato. Premi a per aggiungerne uno."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "Nuovo nome:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "Eliminare «%s»?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Attiva o disattiva lo sblocco con il volto"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Provalo"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "Esci"
|
||||
|
||||
@@ -886,25 +894,25 @@ msgstr ""
|
||||
msgid "The face could not be added (%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"
|
||||
msgstr ""
|
||||
"Sblocco con il volto per la schermata di blocco, sudo e le richieste di "
|
||||
"amministratore"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Configura un volto."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Come chiamare il nuovo volto."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
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."
|
||||
msgstr "Stile della bolla per la demo: full o minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Japanese\n"
|
||||
@@ -57,8 +57,8 @@ msgstr "顔は追加されませんでした。"
|
||||
msgid "First, set up your face."
|
||||
msgstr "まず顔を登録してください。"
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "設定を保存できませんでした。"
|
||||
|
||||
@@ -72,94 +72,103 @@ 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."
|
||||
msgstr "顔認証はオンです。画面をロックして、画面を見て試してください。"
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr "sudo や管理者の認証にも使えます。「設定」を参照してください。"
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
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."
|
||||
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"
|
||||
msgstr "オン"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "オフ"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "サンプル %s 件、学習 %s 件"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "どの顔ですか? ID は `%s faces` で確認できます。"
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "削除しました。"
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "使い方: face-unlock [コマンド]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "コマンド:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "顔認証をオンにする"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
msgstr "オフにする(顔データは残ります)"
|
||||
|
||||
#: src/face-unlock:177 src/lib/menu.sh:692
|
||||
#: src/face-unlock:188 src/lib/menu.sh:691
|
||||
msgid "Add a face"
|
||||
msgstr "顔を追加"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "顔の一覧"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "顔を削除"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "カメラを見て、カメラに映るものを確認する"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "オンになっている機能を表示"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "このヘルプを表示"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "バージョンを表示"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "コマンドなしで起動すると、対話式メニューが表示されます。"
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -167,7 +176,7 @@ msgstr ""
|
||||
"root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ね"
|
||||
"ます。"
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "不明なコマンド: %s"
|
||||
@@ -346,11 +355,11 @@ msgstr ""
|
||||
msgid "[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"
|
||||
msgstr "オン"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "オフ"
|
||||
|
||||
@@ -391,7 +400,7 @@ msgstr "遅い"
|
||||
msgid "%s seconds"
|
||||
msgstr "%s 秒"
|
||||
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:421
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:422
|
||||
msgid "automatic"
|
||||
msgstr "自動"
|
||||
|
||||
@@ -411,8 +420,8 @@ msgstr "停止中"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "顔認証をもう一度オンにすると起動します。"
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "顔"
|
||||
|
||||
@@ -467,13 +476,13 @@ msgstr "ロック画面エージェントが動いていません。"
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME はほかのプログラムを自分のウィンドウの上に表示させないため、GNOME では"
|
||||
"バブルは表示されません。"
|
||||
"GNOME では小さな GNOME 拡張機能がバブルを表示します。顔認証をオンにすると一緒"
|
||||
"に有効になります。"
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -481,7 +490,7 @@ msgstr ""
|
||||
"顔を認識するとロック画面を解除します。オフ: ロック画面ではパスワードだけが使"
|
||||
"えます。"
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -489,7 +498,7 @@ msgstr ""
|
||||
"ロック画面でキーを押すかマウスを動かしたとき、そしてコンピューターがスリープ"
|
||||
"から復帰したときにスキャンします。"
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -497,7 +506,7 @@ msgstr ""
|
||||
"画面がロックされるとすぐにスキャンします。既定はオフ: 自分でロックすると、す"
|
||||
"ぐに解除されてしまうためです。"
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -505,7 +514,7 @@ msgstr ""
|
||||
"sudo でパスワードの代わりに顔を使います。一致しなければ、いつも通りパスワード"
|
||||
"を入力します。"
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
@@ -513,16 +522,16 @@ msgstr ""
|
||||
"デスクトップやアプリのパスワード画面です(ソフトウェアのインストール時な"
|
||||
"ど)。一致しなければパスワードを入力します。"
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr "まばたきするか、少し顔を動かす必要があります。印刷した写真も防げます。"
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "チェックしません。カメラを試すときだけ使ってください。"
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
@@ -530,22 +539,22 @@ msgstr ""
|
||||
"スマホ、タブレット、光沢紙に映った写真を防ぎます。まばたきは不要です。つや消"
|
||||
"しの印刷写真は通ることがあります。"
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
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."
|
||||
msgstr "認識されやすくなりますが、あなたによく似た人も認識されやすくなります。"
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "既定値です。ほとんどの人に適しています。"
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -553,7 +562,7 @@ msgstr ""
|
||||
"目を開けて画面を見ている必要があります。よそ見や居眠りの間にロック解除されま"
|
||||
"せん。"
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -561,11 +570,11 @@ msgstr ""
|
||||
"「自動」は最初の通常のカメラを使います。変更したら顔を登録し直してください。"
|
||||
"赤外線カメラはライトをオンにする必要があります(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."
|
||||
msgstr "カメラが顔を探してからあきらめるまでの時間です。"
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -573,7 +582,7 @@ msgstr ""
|
||||
"確実に一致したとき、今の見た目を覚えます。髪型を変えたり眼鏡をかけたりして"
|
||||
"も、登録し直す必要はありません。"
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"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."
|
||||
msgstr "画面上部のバブルに、カメラの状態が表示されます。"
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr "あたりを見回す顔のアイランド。そのあとリングとチェックマークが出ます。"
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr "sudo や管理者の認証で顔をスキャンするときにもバブルを表示します。"
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "自動(%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(赤外線)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
msgstr "(未接続)"
|
||||
|
||||
#: src/lib/menu.sh:506 src/lib/menu.sh:694
|
||||
#: src/lib/menu.sh:507 src/lib/menu.sh:693
|
||||
msgid "Settings"
|
||||
msgstr "設定"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
msgstr "↑↓ 選択 ←→ またはスペース: 変更 q: 戻る"
|
||||
|
||||
#: src/lib/menu.sh:508
|
||||
#: src/lib/menu.sh:509
|
||||
msgid "for all users, asks for your password"
|
||||
msgstr "全ユーザー共通、パスワードが必要"
|
||||
|
||||
#. 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"
|
||||
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."
|
||||
msgstr "まだ顔が登録されていません。a を押して追加してください。"
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "新しい名前:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "「%s」を削除しますか?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "顔認証のオン/オフ"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "試す"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "終了"
|
||||
|
||||
@@ -868,23 +877,23 @@ msgstr "カメラは別のスキャン中です。少ししてからもう一度
|
||||
msgid "The face could not be added (%1)."
|
||||
msgstr "顔を追加できませんでした(%1)。"
|
||||
|
||||
#: src/agent/main.cpp:86
|
||||
#: src/agent/main.cpp:87
|
||||
msgid "Face unlock for the lock screen, sudo and admin prompts"
|
||||
msgstr "ロック画面、sudo、管理者の認証のための顔認証"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "顔を登録します。"
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "新しい顔の名前。"
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
msgstr "バブルのアニメーションを一度再生します。"
|
||||
|
||||
#: src/agent/main.cpp:93
|
||||
#: src/agent/main.cpp:94
|
||||
msgid "Bubble style for the demo: full or minimal."
|
||||
msgstr "デモのバブルスタイル: full または minimal。"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Korean\n"
|
||||
@@ -57,8 +57,8 @@ msgstr "얼굴이 추가되지 않았습니다."
|
||||
msgid "First, set up your face."
|
||||
msgstr "먼저 얼굴을 등록하세요."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "설정을 저장하지 못했습니다."
|
||||
|
||||
@@ -70,103 +70,112 @@ msgstr "잠금 화면 에이전트를 시작하지 못했습니다."
|
||||
msgid "No systemd user session, so the lock screen agent was not started."
|
||||
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."
|
||||
msgstr ""
|
||||
"얼굴 잠금 해제가 켜졌습니다. 화면을 잠그고 화면을 바라보며 사용해 보세요."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr "sudo와 관리자 인증 창에서도 쓸 수 있습니다. 설정을 참고하세요."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
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."
|
||||
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"
|
||||
msgstr "켜짐"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "꺼짐"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "샘플 %s개, 학습 %s개"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "어떤 얼굴인가요? ID는 `%s faces`에서 확인하세요."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "삭제했습니다."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "사용법: face-unlock [명령]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "명령:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "얼굴 잠금 해제 켜기"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
msgstr "끄기 (얼굴 데이터는 유지)"
|
||||
|
||||
#: src/face-unlock:177 src/lib/menu.sh:692
|
||||
#: src/face-unlock:188 src/lib/menu.sh:691
|
||||
msgid "Add a face"
|
||||
msgstr "얼굴 추가"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "얼굴 목록"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "얼굴 삭제"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "카메라를 보고 카메라에 보이는 것을 확인"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "켜져 있는 기능 보기"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "이 도움말 보기"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "버전 보기"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "명령 없이 실행하면 대화형 메뉴가 나옵니다."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
msgstr "root가 아닌 본인 사용자로 실행하세요. 필요하면 비밀번호를 묻습니다."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "알 수 없는 명령: %s"
|
||||
@@ -345,11 +354,11 @@ msgstr ""
|
||||
msgid "[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"
|
||||
msgstr "켜짐"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "꺼짐"
|
||||
|
||||
@@ -390,7 +399,7 @@ msgstr "느리게"
|
||||
msgid "%s seconds"
|
||||
msgstr "%s초"
|
||||
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:421
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:422
|
||||
msgid "automatic"
|
||||
msgstr "자동"
|
||||
|
||||
@@ -410,8 +419,8 @@ msgstr "실행 중 아님"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "얼굴 잠금 해제를 다시 켜면 시작됩니다."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "얼굴"
|
||||
|
||||
@@ -466,20 +475,20 @@ msgstr "잠금 화면 에이전트가 실행 중이 아닙니다."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME은 다른 프로그램이 자기 창 위에 표시되는 것을 허용하지 않으므로 GNOME에"
|
||||
"서는 버블이 없습니다."
|
||||
"GNOME에서는 작은 GNOME 확장이 버블을 보여 줍니다. 얼굴 잠금 해제를 켜면 함께 "
|
||||
"켜집니다."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
msgstr ""
|
||||
"얼굴을 보면 잠금 화면을 해제합니다. 꺼짐: 잠금 화면에서는 비밀번호만 됩니다."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -487,7 +496,7 @@ msgstr ""
|
||||
"잠금 화면에서 키를 누르거나 마우스를 움직일 때, 그리고 컴퓨터가 깨어날 때 스"
|
||||
"캔합니다."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -495,7 +504,7 @@ msgstr ""
|
||||
"화면이 잠기자마자 스캔합니다. 기본값은 꺼짐: 직접 잠그면 곧바로 다시 풀려 버"
|
||||
"리기 때문입니다."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -503,7 +512,7 @@ msgstr ""
|
||||
"sudo가 비밀번호 대신 얼굴을 사용합니다. 일치하지 않으면 평소처럼 비밀번호를 "
|
||||
"입력합니다."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
@@ -511,16 +520,16 @@ msgstr ""
|
||||
"데스크톱과 앱의 비밀번호 창입니다. 예를 들어 소프트웨어를 설치할 때입니다. 일"
|
||||
"치하지 않으면 비밀번호를 입력합니다."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr "눈을 깜빡이거나 고개를 살짝 돌려야 합니다. 인쇄한 사진도 막아 줍니다."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "검사하지 않습니다. 카메라를 시험할 때만 쓰세요."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
@@ -528,22 +537,22 @@ msgstr ""
|
||||
"휴대폰, 태블릿, 광택지에 있는 사진을 막습니다. 눈을 깜빡일 필요는 없습니다. "
|
||||
"무광 인쇄 사진은 통과할 수 있습니다."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
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."
|
||||
msgstr "더 쉽게 알아보지만, 당신과 많이 닮은 사람도 알아볼 수 있습니다."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "기본값입니다. 대부분의 사람에게 알맞습니다."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -551,7 +560,7 @@ msgstr ""
|
||||
"눈을 뜨고 화면을 보고 있어야 합니다. 그래서 다른 곳을 보거나 자는 동안에는 풀"
|
||||
"리지 않습니다."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -559,11 +568,11 @@ msgstr ""
|
||||
"자동은 첫 번째 일반 카메라를 사용합니다. 바꾼 뒤에는 얼굴을 다시 등록하세요. "
|
||||
"적외선 카메라는 조명을 켜야 합니다 (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."
|
||||
msgstr "카메라가 포기하기 전까지 얼굴을 찾는 시간입니다."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -571,7 +580,7 @@ msgstr ""
|
||||
"확실히 일치하면 지금 모습을 기억합니다. 그래서 머리 모양이 바뀌거나 안경을 써"
|
||||
"도 다시 등록할 필요가 없습니다."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"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."
|
||||
msgstr "화면 위쪽의 버블이 카메라가 하는 일을 보여 줍니다."
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr "주위를 둘러보는 얼굴이 있는 아일랜드, 그다음 링과 체크 표시입니다."
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr "sudo나 관리자 인증 창이 얼굴을 스캔할 때도 버블을 보여 줍니다."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "자동 (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(적외선)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
msgstr "(연결 안 됨)"
|
||||
|
||||
#: src/lib/menu.sh:506 src/lib/menu.sh:694
|
||||
#: src/lib/menu.sh:507 src/lib/menu.sh:693
|
||||
msgid "Settings"
|
||||
msgstr "설정"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
msgstr "↑↓ 선택 ←→ 또는 스페이스: 변경 q: 뒤로"
|
||||
|
||||
#: src/lib/menu.sh:508
|
||||
#: src/lib/menu.sh:509
|
||||
msgid "for all users, asks for your password"
|
||||
msgstr "모든 사용자에게 적용, 비밀번호 필요"
|
||||
|
||||
#. 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"
|
||||
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."
|
||||
msgstr "아직 등록된 얼굴이 없습니다. a를 눌러 추가하세요."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "새 이름:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "\"%s\" 항목을 삭제할까요?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "얼굴 잠금 해제 켜기/끄기"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "사용해 보기"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "끝내기"
|
||||
|
||||
@@ -868,23 +877,23 @@ msgstr "카메라가 다른 스캔으로 사용 중입니다. 잠시 후 다시
|
||||
msgid "The face could not be added (%1)."
|
||||
msgstr "얼굴을 추가하지 못했습니다 (%1)."
|
||||
|
||||
#: src/agent/main.cpp:86
|
||||
#: src/agent/main.cpp:87
|
||||
msgid "Face unlock for the lock screen, sudo and admin prompts"
|
||||
msgstr "잠금 화면, sudo, 관리자 인증 창을 위한 얼굴 잠금 해제"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "얼굴을 등록합니다."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "새 얼굴의 이름."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
msgstr "버블 애니메이션을 한 번 재생합니다."
|
||||
|
||||
#: src/agent/main.cpp:93
|
||||
#: src/agent/main.cpp:94
|
||||
msgid "Bubble style for the demo: full or minimal."
|
||||
msgstr "데모용 버블 스타일: full 또는 minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Dutch\n"
|
||||
@@ -58,8 +58,8 @@ msgstr "Er is geen gezicht toegevoegd."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Stel eerst je gezicht in."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Kon de instelling niet opslaan."
|
||||
|
||||
@@ -73,98 +73,106 @@ msgstr ""
|
||||
"Geen systemd-gebruikerssessie, dus de agent voor het vergrendelscherm is "
|
||||
"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."
|
||||
msgstr ""
|
||||
"Gezichtsontgrendeling staat aan. Vergrendel het scherm en kijk ernaar om het "
|
||||
"te proberen."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
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."
|
||||
msgstr ""
|
||||
"Gezichtsontgrendeling staat uit. Je gezichten blijven bewaard; verwijder ze "
|
||||
"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."
|
||||
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"
|
||||
msgstr "aan"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "uit"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s opnames, %s bijgeleerd"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Welk gezicht? Zie `%s faces` voor de ID's."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Verwijderd."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Gebruik: face-unlock [opdracht]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Opdrachten:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Gezichtsontgrendeling aanzetten"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Een gezicht toevoegen"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "De gezichten tonen"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Een gezicht verwijderen"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "In de camera kijken en zien wat hij ziet"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Tonen wat er aan staat"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Deze hulp tonen"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "De versie tonen"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Zonder opdracht verschijnt een interactief menu."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -172,7 +180,7 @@ msgstr ""
|
||||
"Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je "
|
||||
"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
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Onbekende opdracht: %s"
|
||||
@@ -351,11 +359,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "AAN"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "UIT"
|
||||
|
||||
@@ -396,7 +404,7 @@ msgstr "langzaam"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automatisch"
|
||||
|
||||
@@ -416,8 +424,8 @@ msgstr "draait niet"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Gezichtsontgrendeling opnieuw aanzetten start hem."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Gezichten"
|
||||
|
||||
@@ -472,13 +480,13 @@ msgstr "De agent voor het vergrendelscherm draait niet."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME laat andere programma's niet boven zijn vensters verschijnen, dus op "
|
||||
"GNOME is er geen bubbel."
|
||||
"Op GNOME toont een kleine GNOME-extensie de bubbel. Als je "
|
||||
"gezichtsontgrendeling inschakelt, gaat die ook aan."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -486,7 +494,7 @@ msgstr ""
|
||||
"Ontgrendelt het vergrendelscherm als het je gezicht ziet. Uit: daar werkt "
|
||||
"alleen je wachtwoord."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -494,7 +502,7 @@ msgstr ""
|
||||
"Scant als je op het vergrendelscherm een toets indrukt of de muis beweegt, "
|
||||
"en als de computer ontwaakt."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -502,7 +510,7 @@ msgstr ""
|
||||
"Scant zodra het scherm vergrendelt. Standaard uit: vergrendel je zelf, dan "
|
||||
"zou het meteen weer ontgrendelen."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -510,7 +518,7 @@ msgstr ""
|
||||
"sudo neemt je gezicht in plaats van het wachtwoord. Geen match: je typt "
|
||||
"zoals gewoonlijk je wachtwoord."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
@@ -518,18 +526,18 @@ msgstr ""
|
||||
"De wachtwoordvensters van je bureaublad en apps, bijvoorbeeld bij het "
|
||||
"installeren van software. Geen match: je typt je wachtwoord."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Je moet knipperen of je hoofd een beetje draaien. Dat houdt ook geprinte "
|
||||
"foto's tegen."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Helemaal geen controle. Alleen om een camera uit te proberen."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"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 "
|
||||
"niet nodig. Een matte geprinte foto kan erdoor komen."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Minder verwisselingen, maar met een bril of bij slecht licht herkent het je "
|
||||
"misschien niet."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr "Herkent je makkelijker, maar ook iemand die veel op je lijkt."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "De standaard. Goed voor de meeste mensen."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -560,7 +568,7 @@ msgstr ""
|
||||
"Je ogen moeten open zijn en naar het scherm kijken. Zo ontgrendelt het niet "
|
||||
"als je wegkijkt of slaapt."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -569,11 +577,11 @@ msgstr ""
|
||||
"opnieuw in. Een infraroodcamera heeft zijn lampje nodig (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."
|
||||
msgstr "Hoe lang de camera naar je gezicht zoekt voordat hij opgeeft."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -581,7 +589,7 @@ msgstr ""
|
||||
"Na een zekere match onthoudt het hoe je er nu uitziet. Een nieuw kapsel of "
|
||||
"een bril vraagt dus niet om opnieuw instellen."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -589,80 +597,80 @@ msgstr ""
|
||||
"Geen scan als de laptop dicht is, bijvoorbeeld aan een bureau met een extern "
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automatisch (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(infrarood)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "voor alle gebruikers, vraagt om je wachtwoord"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Omhoog/Omlaag: kiezen, Spatie: aan/uit, r: hernoemen, d: verwijderen, a: "
|
||||
"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."
|
||||
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:"
|
||||
msgstr "Nieuwe naam:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "“%s” verwijderen?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Gezichtsontgrendeling aan- of uitzetten"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Uitproberen"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
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)."
|
||||
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"
|
||||
msgstr ""
|
||||
"Gezichtsontgrendeling voor het vergrendelscherm, sudo en beheerdersvragen"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Een gezicht instellen."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Hoe het nieuwe gezicht moet heten."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
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."
|
||||
msgstr "Bubbelstijl voor de demo: full of minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Polish\n"
|
||||
@@ -59,8 +59,8 @@ msgstr "Nie dodano żadnej twarzy."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Najpierw skonfiguruj swoją twarz."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Nie udało się zapisać ustawienia."
|
||||
|
||||
@@ -74,98 +74,106 @@ msgstr ""
|
||||
"Brak sesji użytkownika systemd, więc agent ekranu blokady nie został "
|
||||
"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."
|
||||
msgstr ""
|
||||
"Odblokowywanie twarzą jest włączone. Zablokuj ekran i spójrz na niego, aby "
|
||||
"wypróbować."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr "Działa też dla sudo i okien administratora. Zobacz Ustawienia."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
msgstr ""
|
||||
"Odblokowywanie twarzą jest wyłączone. Twoje twarze zostają zachowane; "
|
||||
"usuniesz je w Twarzach."
|
||||
|
||||
#: 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."
|
||||
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"
|
||||
msgstr "wł."
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "wył."
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "próbki: %s, wyuczone: %s"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Która twarz? Identyfikatory pokazuje `%s faces`."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Usunięto."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Użycie: face-unlock [polecenie]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Polecenia:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Włącz odblokowywanie twarzą"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Dodaj twarz"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Pokaż listę twarzy"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Usuń twarz"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Spójrz w kamerę i zobacz, co widzi"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Pokaż, co jest włączone"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Pokaż tę pomoc"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Pokaż wersję"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Bez polecenia wyświetla się interaktywne menu."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -173,7 +181,7 @@ msgstr ""
|
||||
"Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy "
|
||||
"będzie potrzebne."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Nieznane polecenie: %s"
|
||||
@@ -352,11 +360,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "WŁ."
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "WYŁ."
|
||||
|
||||
@@ -397,7 +405,7 @@ msgstr "wolna"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automatyczna"
|
||||
|
||||
@@ -417,8 +425,8 @@ msgstr "nie działa"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Ponowne włączenie odblokowywania twarzą ją uruchomi."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Twarze"
|
||||
|
||||
@@ -473,13 +481,13 @@ msgstr "Agent ekranu blokady nie działa."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME nie pozwala innym programom wyświetlać się nad swoimi oknami, więc w "
|
||||
"GNOME nie ma dymka."
|
||||
"W GNOME dymek pokazuje małe rozszerzenie GNOME. Włączenie odblokowywania "
|
||||
"twarzą włącza też je."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -487,7 +495,7 @@ msgstr ""
|
||||
"Odblokowuje ekran blokady, gdy widzi twoją twarz. Wyłączone: działa tam "
|
||||
"tylko hasło."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -495,7 +503,7 @@ msgstr ""
|
||||
"Skanuje, gdy naciśniesz klawisz lub poruszysz myszą na ekranie blokady, oraz "
|
||||
"gdy komputer się wybudzi."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -503,7 +511,7 @@ msgstr ""
|
||||
"Skanuje od razu po zablokowaniu ekranu. Domyślnie wyłączone: gdy zablokujesz "
|
||||
"sam, od razu by się odblokował."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -511,7 +519,7 @@ msgstr ""
|
||||
"sudo przyjmuje twarz zamiast hasła. Gdy nie pasuje, wpisujesz hasło jak "
|
||||
"zwykle."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"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 "
|
||||
"twarz nie pasuje, wpisujesz hasło."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Musisz mrugnąć albo lekko obrócić głowę. To zatrzymuje też wydrukowane "
|
||||
"zdjęcia."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Bez żadnej kontroli. Tylko do wypróbowania kamery."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
@@ -538,22 +546,22 @@ msgstr ""
|
||||
"Zatrzymuje zdjęcia na telefonie, tablecie lub błyszczącym papierze. Nie "
|
||||
"trzeba mrugać. Matowy wydruk może przejść."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Mniej pomyłek, ale może cię nie rozpoznać w okularach albo przy słabym "
|
||||
"świetle."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr "Łatwiej cię rozpoznaje, ale też kogoś bardzo do ciebie podobnego."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "Domyślna. Pasuje większości osób."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -561,7 +569,7 @@ msgstr ""
|
||||
"Twoje oczy muszą być otwarte i patrzeć na ekran. Dzięki temu nie odblokuje, "
|
||||
"gdy patrzysz w bok lub śpisz."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -570,11 +578,11 @@ msgstr ""
|
||||
"nowa. Kamera na podczerwień potrzebuje włączonego światła (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."
|
||||
msgstr "Jak długo kamera szuka twojej twarzy, zanim się podda."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -582,7 +590,7 @@ msgstr ""
|
||||
"Po pewnym dopasowaniu zapamiętuje, jak teraz wyglądasz. Nowa fryzura czy "
|
||||
"okulary nie wymagają więc ponownej konfiguracji."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -590,81 +598,81 @@ msgstr ""
|
||||
"Bez skanowania, gdy laptop jest zamknięty, na przykład przy biurku z "
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"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
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automatyczna (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(podczerwień)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Ustawienia"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "dla wszystkich użytkowników, pyta o hasło"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Góra/Dół: wybierz, Spacja: wł./wył., r: zmień nazwę, d: usuń, a: dodaj, q: "
|
||||
"wstecz"
|
||||
|
||||
#: src/lib/menu.sh:607
|
||||
#: src/lib/menu.sh:606
|
||||
msgid "No face is set up yet. Press a to add one."
|
||||
msgstr "Nie skonfigurowano jeszcze żadnej twarzy. Naciśnij a, aby dodać."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "Nowa nazwa:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "Usunąć „%s”?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Włącz lub wyłącz odblokowywanie twarzą"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Wypróbuj"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
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)."
|
||||
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"
|
||||
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."
|
||||
msgstr "Skonfiguruj twarz."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Jak nazwać nową twarz."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
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."
|
||||
msgstr "Styl dymka w demo: full lub minimal."
|
||||
|
||||
|
||||
+83
-75
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Brazilian Portuguese\n"
|
||||
@@ -58,8 +58,8 @@ msgstr "Nenhum rosto foi adicionado."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Primeiro, configure o seu rosto."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
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 "
|
||||
"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."
|
||||
msgstr ""
|
||||
"O desbloqueio facial está ativado. Bloqueie a tela e olhe para ela para "
|
||||
"testar."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr ""
|
||||
"Ele também funciona com sudo e pedidos de administrador. Veja Configurações."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
msgstr ""
|
||||
"O desbloqueio facial está desativado. Seus rostos são mantidos; apague-os em "
|
||||
"Rostos."
|
||||
|
||||
#: 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."
|
||||
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"
|
||||
msgstr "ativado"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "desativado"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s amostras, %s aprendidas"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Qual rosto? Veja `%s faces` para os IDs."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Apagado."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Uso: face-unlock [comando]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Comandos:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Ativar o desbloqueio facial"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Adicionar um rosto"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Listar os rostos"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Apagar um rosto"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Olhar para a câmera e ver o que ela vê"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Mostrar o que está ativado"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Mostrar esta ajuda"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Mostrar a versão"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Sem comando, um menu interativo é exibido."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"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 "
|
||||
"quando precisa."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Comando desconhecido: %s"
|
||||
@@ -352,11 +360,11 @@ msgstr ""
|
||||
msgid "[y/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"
|
||||
msgstr "ATIVADO"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "DESATIVADO"
|
||||
|
||||
@@ -397,7 +405,7 @@ msgstr "lenta"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "automática"
|
||||
|
||||
@@ -417,8 +425,8 @@ msgstr "parado"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Ativar o desbloqueio facial de novo o inicia."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Rostos"
|
||||
|
||||
@@ -473,13 +481,13 @@ msgstr "O agente da tela de bloqueio não está em execução."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"O GNOME não deixa outros programas aparecerem sobre as janelas dele, então "
|
||||
"no GNOME não há bolha."
|
||||
"No GNOME, uma pequena extensão do GNOME mostra a bolha. Ativar o desbloqueio "
|
||||
"facial também a ativa."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -487,7 +495,7 @@ msgstr ""
|
||||
"Desbloqueia a tela de bloqueio quando vê o seu rosto. Desativado: lá só a "
|
||||
"sua senha funciona."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -495,7 +503,7 @@ msgstr ""
|
||||
"Faz a leitura quando você aperta uma tecla ou mexe o mouse na tela de "
|
||||
"bloqueio, e quando o computador acorda."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"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ê "
|
||||
"mesmo bloquear, ela desbloquearia logo em seguida."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"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 "
|
||||
"senha como sempre."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"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 "
|
||||
"instalar programas. Se não corresponder, você digita a senha."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Você precisa piscar ou virar um pouco a cabeça. Isso também barra fotos "
|
||||
"impressas."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Nenhuma verificação. Só para testar uma câmera."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"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 "
|
||||
"foto impressa em papel fosco pode passar."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Menos confusões, mas talvez não reconheça você de óculos ou com pouca luz."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr ""
|
||||
"Reconhece você com mais facilidade, mas também alguém muito parecido com "
|
||||
"você."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "O padrão. Serve para a maioria das pessoas."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -562,7 +570,7 @@ msgstr ""
|
||||
"Seus olhos precisam estar abertos e voltados para a tela. Assim não "
|
||||
"desbloqueia enquanto você olha para outro lado ou dorme."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -571,11 +579,11 @@ msgstr ""
|
||||
"rosto de novo. Uma câmera infravermelha precisa da luz ligada (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."
|
||||
msgstr "Quanto tempo a câmera procura o seu rosto antes de desistir."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -583,7 +591,7 @@ msgstr ""
|
||||
"Após uma correspondência segura, ele guarda a sua aparência atual. Assim, um "
|
||||
"corte de cabelo novo ou óculos não exigem nova configuração."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
@@ -591,82 +599,82 @@ msgstr ""
|
||||
"Nenhuma leitura com o notebook fechado, por exemplo numa mesa com uma tela "
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"Mostra a bolha também quando o sudo ou um pedido de administrador lê o seu "
|
||||
"rosto."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "automática (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(infravermelha)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Configurações"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "para todos os usuários, pede a sua senha"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Cima/Baixo: escolher, Espaço: ativar/desativar, r: renomear, d: apagar, a: "
|
||||
"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."
|
||||
msgstr "Nenhum rosto configurado ainda. Aperte a para adicionar um."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "Novo nome:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "Apagar \"%s\"?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Ativar ou desativar o desbloqueio facial"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Testar"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
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)."
|
||||
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"
|
||||
msgstr ""
|
||||
"Desbloqueio facial para a tela de bloqueio, o sudo e os pedidos de "
|
||||
"administrador"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Configurar um rosto."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Como chamar o novo rosto."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
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."
|
||||
msgstr "Estilo da bolha para a demonstração: full ou minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Russian\n"
|
||||
@@ -59,8 +59,8 @@ msgstr "Лицо не добавлено."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Сначала настройте своё лицо."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Не удалось сохранить настройку."
|
||||
|
||||
@@ -74,98 +74,106 @@ 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."
|
||||
msgstr ""
|
||||
"Разблокировка по лицу включена. Заблокируйте экран и посмотрите на него, "
|
||||
"чтобы попробовать."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr "Она работает и для sudo, и для запросов администратора. См. Настройки."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
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."
|
||||
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"
|
||||
msgstr "вкл."
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "выкл."
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "образцов: %s, выучено: %s"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Какое лицо? Номера показывает `%s faces`."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Удалено."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Использование: face-unlock [команда]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Команды:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Включить разблокировку по лицу"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
msgstr "Выключить её (лица сохраняются)"
|
||||
|
||||
#: src/face-unlock:177 src/lib/menu.sh:692
|
||||
#: src/face-unlock:188 src/lib/menu.sh:691
|
||||
msgid "Add a face"
|
||||
msgstr "Добавить лицо"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Показать список лиц"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Удалить лицо"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Посмотреть в камеру и увидеть, что она видит"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Показать, что включено"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Показать эту справку"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Показать версию"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Без команды открывается интерактивное меню."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -173,7 +181,7 @@ msgstr ""
|
||||
"Запускайте это от своего пользователя, не от root. Пароль будет запрошен, "
|
||||
"когда он понадобится."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Неизвестная команда: %s"
|
||||
@@ -352,11 +360,11 @@ msgstr ""
|
||||
msgid "[y/N]"
|
||||
msgstr "[д/Н]"
|
||||
|
||||
#: src/lib/menu.sh:172 src/lib/menu.sh:509
|
||||
#: src/lib/menu.sh:172 src/lib/menu.sh:510
|
||||
msgid "ON"
|
||||
msgstr "ВКЛ"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "ВЫКЛ"
|
||||
|
||||
@@ -397,7 +405,7 @@ msgstr "медленная"
|
||||
msgid "%s seconds"
|
||||
msgstr "%s с"
|
||||
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:421
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:422
|
||||
msgid "automatic"
|
||||
msgstr "автоматически"
|
||||
|
||||
@@ -417,8 +425,8 @@ msgstr "не запущена"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Повторное включение разблокировки по лицу запустит её."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Лица"
|
||||
|
||||
@@ -473,13 +481,13 @@ msgstr "Агент экрана блокировки не запущен."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME не позволяет другим программам показываться поверх своих окон, поэтому "
|
||||
"в GNOME пузыря нет."
|
||||
"В GNOME пузырь показывает небольшое расширение GNOME. Оно включается вместе "
|
||||
"с разблокировкой по лицу."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -487,7 +495,7 @@ msgstr ""
|
||||
"Снимает блокировку экрана, когда видит ваше лицо. Выкл.: там работает только "
|
||||
"пароль."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -495,7 +503,7 @@ msgstr ""
|
||||
"Сканирует, когда вы нажимаете клавишу или двигаете мышь на экране "
|
||||
"блокировки, и когда компьютер просыпается."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -503,7 +511,7 @@ msgstr ""
|
||||
"Сканирует сразу после блокировки экрана. По умолчанию выкл.: если вы "
|
||||
"блокируете сами, он тут же разблокировался бы."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -511,7 +519,7 @@ msgstr ""
|
||||
"sudo принимает ваше лицо вместо пароля. Не совпало: вы вводите пароль как "
|
||||
"обычно."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
@@ -519,18 +527,18 @@ msgstr ""
|
||||
"Окна ввода пароля рабочего стола и приложений, например при установке "
|
||||
"программ. Не совпало: вы вводите пароль."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Нужно моргнуть или слегка повернуть голову. Это также останавливает "
|
||||
"распечатанные фото."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Никакой проверки. Только чтобы опробовать камеру."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
@@ -538,22 +546,22 @@ msgstr ""
|
||||
"Останавливает фото на телефоне, планшете или глянцевой бумаге. Моргать не "
|
||||
"нужно. Матовое распечатанное фото может пройти."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
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."
|
||||
msgstr "Узнаёт вас легче, но и того, кто очень на вас похож."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "По умолчанию. Подходит большинству."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -561,7 +569,7 @@ msgstr ""
|
||||
"Ваши глаза должны быть открыты и смотреть на экран. Так он не "
|
||||
"разблокируется, пока вы смотрите в сторону или спите."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -570,11 +578,11 @@ msgstr ""
|
||||
"заново. Инфракрасной камере нужна включённая подсветка (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."
|
||||
msgstr "Как долго камера ищет ваше лицо, прежде чем сдаться."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -582,7 +590,7 @@ msgstr ""
|
||||
"После уверенного совпадения запоминает, как вы выглядите сейчас. Новая "
|
||||
"стрижка или очки не требуют новой настройки."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"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."
|
||||
msgstr "Пузырь вверху экрана показывает, что делает камера."
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr "Остров с лицом, которое оглядывается, затем кольца и галочка."
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr ""
|
||||
"Показывает пузырь и тогда, когда sudo или запрос администратора сканирует "
|
||||
"ваше лицо."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "автоматически (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(инфракрасная)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
msgstr "(не подключена)"
|
||||
|
||||
#: src/lib/menu.sh:506 src/lib/menu.sh:694
|
||||
#: src/lib/menu.sh:507 src/lib/menu.sh:693
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
msgstr "↑↓ выбор ←→ или Пробел: изменить q: назад"
|
||||
|
||||
#: src/lib/menu.sh:508
|
||||
#: src/lib/menu.sh:509
|
||||
msgid "for all users, asks for your password"
|
||||
msgstr "для всех пользователей, запрашивает пароль"
|
||||
|
||||
#. 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"
|
||||
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."
|
||||
msgstr "Ещё не настроено ни одного лица. Нажмите a, чтобы добавить."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "Новое имя:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "Удалить «%s»?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Включить или выключить разблокировку по лицу"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Попробовать"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "Выход"
|
||||
|
||||
@@ -882,24 +890,24 @@ msgstr "Камера занята другим сканированием. По
|
||||
msgid "The face could not be added (%1)."
|
||||
msgstr "Не удалось добавить лицо (%1)."
|
||||
|
||||
#: src/agent/main.cpp:86
|
||||
#: src/agent/main.cpp:87
|
||||
msgid "Face unlock for the lock screen, sudo and admin prompts"
|
||||
msgstr ""
|
||||
"Разблокировка по лицу для экрана блокировки, sudo и запросов администратора"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Настроить лицо."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Как назвать новое лицо."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
msgstr "Один раз проиграть анимации пузыря."
|
||||
|
||||
#: src/agent/main.cpp:93
|
||||
#: src/agent/main.cpp:94
|
||||
msgid "Bubble style for the demo: full or minimal."
|
||||
msgstr "Стиль пузыря для демо: full или minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Turkish\n"
|
||||
@@ -57,8 +57,8 @@ msgstr "Hiç yüz eklenmedi."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Önce yüzünüzü kurun."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Ayar kaydedilemedi."
|
||||
|
||||
@@ -71,96 +71,105 @@ msgid "No systemd user session, so the lock screen agent was not started."
|
||||
msgstr ""
|
||||
"systemd kullanıcı oturumu yok, bu yüzden kilit ekranı aracısı başlatılmadı."
|
||||
|
||||
#: 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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"Yüzle kilit açma kapalı. Yüzleriniz saklanıyor; Yüzler bölümünden "
|
||||
"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."
|
||||
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"
|
||||
msgstr "açık"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "kapalı"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s örnek, %s öğrenilen"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Hangi yüz? Kimlikler için `%s faces` komutuna bakın."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Silindi."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Kullanım: face-unlock [komut]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Komutlar:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Yüzle kilit açmayı aç"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
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"
|
||||
msgstr "Yüz ekle"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Yüzleri listele"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Bir yüzü sil"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Kameraya bak ve onun ne gördüğünü gör"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Neyin açık olduğunu göster"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Bu yardımı göster"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Sürümü göster"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Komut verilmezse etkileşimli bir menü gösterilir."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -168,7 +177,7 @@ msgstr ""
|
||||
"Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde "
|
||||
"parolanızı sorar."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Bilinmeyen komut: %s"
|
||||
@@ -347,11 +356,11 @@ msgstr ""
|
||||
msgid "[y/N]"
|
||||
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"
|
||||
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"
|
||||
msgstr "KAPALI"
|
||||
|
||||
@@ -392,7 +401,7 @@ msgstr "yavaş"
|
||||
msgid "%s seconds"
|
||||
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"
|
||||
msgstr "otomatik"
|
||||
|
||||
@@ -412,8 +421,8 @@ msgstr "çalışmıyor"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Yüzle kilit açmayı yeniden açmak onu başlatır."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Yüzler"
|
||||
|
||||
@@ -468,13 +477,13 @@ msgstr "Kilit ekranı aracısı çalışmıyor."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME başka programların kendi pencerelerinin üstünde görünmesine izin "
|
||||
"vermez, bu yüzden GNOME'da baloncuk yoktur."
|
||||
"GNOME'da baloncuğu küçük bir GNOME uzantısı gösterir. Yüzle kilit açmayı "
|
||||
"açınca o da açılır."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"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 "
|
||||
"çalışır."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"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 "
|
||||
"bilgisayar uyandığında tarar."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -498,7 +507,7 @@ msgstr ""
|
||||
"Ekran kilitlenir kilitlenmez tarar. Varsayılan olarak kapalı: kendiniz "
|
||||
"kilitlerseniz hemen yeniden açılırdı."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -506,7 +515,7 @@ msgstr ""
|
||||
"sudo parola yerine yüzünüzü kullanır. Eşleşmezse parolayı her zamanki gibi "
|
||||
"yazarsınız."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"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. "
|
||||
"Eşleşmezse parolayı yazarsınız."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Göz kırpmanız ya da başınızı biraz çevirmeniz gerekir. Bu, basılı "
|
||||
"fotoğrafları da durdurur."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Hiç denetim yok. Yalnızca bir kamerayı denemek için."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"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 "
|
||||
"gerekmez. Mat basılı bir fotoğraf geçebilir."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
msgstr ""
|
||||
"Daha az yanlış eşleşme, ama gözlükle ya da kötü ışıkta sizi tanımayabilir."
|
||||
|
||||
#: src/lib/menu.sh:321
|
||||
#: src/lib/menu.sh:322
|
||||
msgid "Knows you more easily, but also somebody who looks a lot like you."
|
||||
msgstr "Sizi daha kolay tanır, ama size çok benzeyen birini de."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "Varsayılan. Çoğu kişi için uygun."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"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 "
|
||||
"uyurken kilit açılmaz."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -564,11 +573,11 @@ msgstr ""
|
||||
"kurun. Kızılötesi kameranın ışığının açık olması gerekir (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."
|
||||
msgstr "Kameranın vazgeçmeden önce yüzünüzü ne kadar aradığı."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"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ç "
|
||||
"kesimi ya da gözlük yeniden kurulum gerektirmez."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
msgstr "Dizüstü kapalıyken tarama yok, örneğin harici ekranlı bir masada."
|
||||
|
||||
#: src/lib/menu.sh:328
|
||||
#: src/lib/menu.sh:329
|
||||
msgid "The bubble at the top of the screen shows what the camera is doing."
|
||||
msgstr "Ekranın üstündeki baloncuk kameranın ne yaptığını gösterir."
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr ""
|
||||
"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."
|
||||
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."
|
||||
msgstr ""
|
||||
"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
|
||||
msgid "automatic (%s)"
|
||||
msgstr "otomatik (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(kızılötesi)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
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"
|
||||
msgstr "Ayarlar"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
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"
|
||||
msgstr "tüm kullanıcılar için, parolanızı sorar"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
"Yukarı/Aşağı: seç, Boşluk: aç/kapat, r: yeniden adlandır, d: sil, a: ekle, "
|
||||
"q: geri"
|
||||
|
||||
#: src/lib/menu.sh:607
|
||||
#: src/lib/menu.sh:606
|
||||
msgid "No face is set up yet. Press a to add one."
|
||||
msgstr "Henüz hiç yüz kurulmadı. Eklemek için a tuşuna basın."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "Yeni ad:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "\"%s\" silinsin mi?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Yüzle kilit açmayı aç ya da kapat"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Dene"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
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)."
|
||||
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"
|
||||
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."
|
||||
msgstr "Bir yüz kur."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Yeni yüzün adı."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
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."
|
||||
msgstr "Demo için baloncuk stili: full ya da minimal."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
@@ -59,8 +59,8 @@ msgstr "Обличчя не додано."
|
||||
msgid "First, set up your face."
|
||||
msgstr "Спершу налаштуйте своє обличчя."
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "Не вдалося зберегти налаштування."
|
||||
|
||||
@@ -74,99 +74,107 @@ 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."
|
||||
msgstr ""
|
||||
"Розблокування обличчям увімкнено. Заблокуйте екран і подивіться на нього, "
|
||||
"щоб спробувати."
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr ""
|
||||
"Воно працює і для sudo, і для запитів адміністратора. Див. Налаштування."
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
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."
|
||||
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"
|
||||
msgstr "увімк."
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "вимк."
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "зразків: %s, вивчено: %s"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "Яке обличчя? Номери показує `%s faces`."
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "Видалено."
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "Використання: face-unlock [команда]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "Команди:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "Увімкнути розблокування обличчям"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
msgstr "Вимкнути його (обличчя зберігаються)"
|
||||
|
||||
#: src/face-unlock:177 src/lib/menu.sh:692
|
||||
#: src/face-unlock:188 src/lib/menu.sh:691
|
||||
msgid "Add a face"
|
||||
msgstr "Додати обличчя"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "Показати список облич"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "Видалити обличчя"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "Подивитися в камеру і побачити, що вона бачить"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "Показати, що увімкнено"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "Показати цю довідку"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "Показати версію"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "Без команди відкривається інтерактивне меню."
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
@@ -174,7 +182,7 @@ msgstr ""
|
||||
"Запускайте це від свого користувача, не від root. Пароль буде запитано, коли "
|
||||
"він знадобиться."
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "Невідома команда: %s"
|
||||
@@ -353,11 +361,11 @@ msgstr ""
|
||||
msgid "[y/N]"
|
||||
msgstr "[т/Н]"
|
||||
|
||||
#: src/lib/menu.sh:172 src/lib/menu.sh:509
|
||||
#: src/lib/menu.sh:172 src/lib/menu.sh:510
|
||||
msgid "ON"
|
||||
msgstr "УВІМК"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "ВИМК"
|
||||
|
||||
@@ -398,7 +406,7 @@ msgstr "повільна"
|
||||
msgid "%s seconds"
|
||||
msgstr "%s с"
|
||||
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:421
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:422
|
||||
msgid "automatic"
|
||||
msgstr "автоматично"
|
||||
|
||||
@@ -418,8 +426,8 @@ msgstr "не запущена"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "Повторне ввімкнення розблокування обличчям запустить її."
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "Обличчя"
|
||||
|
||||
@@ -474,13 +482,13 @@ msgstr "Агент екрана блокування не запущено."
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"GNOME не дозволяє іншим програмам показуватися поверх своїх вікон, тому в "
|
||||
"GNOME бульбашки немає."
|
||||
"У GNOME бульбашку показує невелике розширення GNOME. Воно вмикається разом "
|
||||
"із розблокуванням обличчям."
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
@@ -488,7 +496,7 @@ msgstr ""
|
||||
"Розблоковує екран блокування, коли бачить ваше обличчя. Вимк.: там працює "
|
||||
"лише пароль."
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
@@ -496,7 +504,7 @@ msgstr ""
|
||||
"Сканує, коли ви натискаєте клавішу або рухаєте мишею на екрані блокування, і "
|
||||
"коли комп'ютер прокидається."
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
@@ -504,7 +512,7 @@ msgstr ""
|
||||
"Сканує одразу після блокування екрана. Типово вимк.: якщо ви блокуєте самі, "
|
||||
"він одразу б розблокувався."
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
@@ -512,7 +520,7 @@ msgstr ""
|
||||
"sudo приймає ваше обличчя замість пароля. Не збіглося: ви вводите пароль як "
|
||||
"зазвичай."
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
@@ -520,17 +528,17 @@ msgstr ""
|
||||
"Вікна введення пароля робочого столу і програм, наприклад під час "
|
||||
"встановлення програм. Не збіглося: ви вводите пароль."
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr ""
|
||||
"Треба кліпнути або трохи повернути голову. Це також зупиняє надруковані фото."
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "Жодної перевірки. Лише щоб випробувати камеру."
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
@@ -538,22 +546,22 @@ msgstr ""
|
||||
"Зупиняє фото на телефоні, планшеті чи глянцевому папері. Кліпати не треба. "
|
||||
"Матове надруковане фото може пройти."
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
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."
|
||||
msgstr "Впізнає вас легше, але й того, хто дуже на вас схожий."
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "Типове значення. Підходить більшості."
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
@@ -561,7 +569,7 @@ msgstr ""
|
||||
"Ваші очі мають бути розплющені й дивитися на екран. Так він не "
|
||||
"розблокується, коли ви дивитеся вбік або спите."
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -570,11 +578,11 @@ msgstr ""
|
||||
"знову. Інфрачервоній камері потрібне ввімкнене підсвічування (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."
|
||||
msgstr "Як довго камера шукає ваше обличчя, перш ніж здатися."
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
@@ -582,7 +590,7 @@ msgstr ""
|
||||
"Після впевненого збігу запам'ятовує, як ви виглядаєте зараз. Нова зачіска чи "
|
||||
"окуляри не потребують нового налаштування."
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"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."
|
||||
msgstr "Бульбашка вгорі екрана показує, що робить камера."
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr "Острів з обличчям, яке озирається, потім кільця і галочка."
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr ""
|
||||
"Показує бульбашку й тоді, коли sudo або запит адміністратора сканує ваше "
|
||||
"обличчя."
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "автоматично (%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(інфрачервона)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
msgstr "(не під'єднана)"
|
||||
|
||||
#: src/lib/menu.sh:506 src/lib/menu.sh:694
|
||||
#: src/lib/menu.sh:507 src/lib/menu.sh:693
|
||||
msgid "Settings"
|
||||
msgstr "Налаштування"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
msgstr "↑↓ вибір ←→ або Пробіл: змінити q: назад"
|
||||
|
||||
#: src/lib/menu.sh:508
|
||||
#: src/lib/menu.sh:509
|
||||
msgid "for all users, asks for your password"
|
||||
msgstr "для всіх користувачів, запитує пароль"
|
||||
|
||||
#. 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"
|
||||
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."
|
||||
msgstr "Ще не налаштовано жодного обличчя. Натисніть a, щоб додати."
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "Нова назва:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "Видалити «%s»?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "Увімкнути або вимкнути розблокування обличчям"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "Спробувати"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "Вийти"
|
||||
|
||||
@@ -881,24 +889,24 @@ msgstr "Камера зайнята іншим скануванням. Спро
|
||||
msgid "The face could not be added (%1)."
|
||||
msgstr "Не вдалося додати обличчя (%1)."
|
||||
|
||||
#: src/agent/main.cpp:86
|
||||
#: src/agent/main.cpp:87
|
||||
msgid "Face unlock for the lock screen, sudo and admin prompts"
|
||||
msgstr ""
|
||||
"Розблокування обличчям для екрана блокування, sudo і запитів адміністратора"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "Налаштувати обличчя."
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "Як назвати нове обличчя."
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
msgstr "Один раз програти анімації бульбашки."
|
||||
|
||||
#: src/agent/main.cpp:93
|
||||
#: src/agent/main.cpp:94
|
||||
msgid "Bubble style for the demo: full or minimal."
|
||||
msgstr "Стиль бульбашки для демо: full або minimal."
|
||||
|
||||
|
||||
+83
-74
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: face-unlock 1.0.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
|
||||
"POT-Creation-Date: 2026-09-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"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: Chinese (simplified)\n"
|
||||
@@ -53,8 +53,8 @@ msgstr "没有添加人脸。"
|
||||
msgid "First, set up your face."
|
||||
msgstr "请先设置你的人脸。"
|
||||
|
||||
#: src/face-unlock:100 src/face-unlock:121 src/lib/menu.sh:446
|
||||
#: src/lib/menu.sh:450 src/lib/menu.sh:456 src/lib/menu.sh:458
|
||||
#: src/face-unlock:100 src/face-unlock:131 src/lib/menu.sh:447
|
||||
#: src/lib/menu.sh:451 src/lib/menu.sh:457 src/lib/menu.sh:459
|
||||
msgid "Could not save the setting."
|
||||
msgstr "无法保存设置。"
|
||||
|
||||
@@ -66,100 +66,108 @@ msgstr "无法启动锁屏代理。"
|
||||
msgid "No systemd user session, so the lock screen agent was not started."
|
||||
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."
|
||||
msgstr "人脸解锁已开启。锁定屏幕并看着它来试试。"
|
||||
|
||||
#: src/face-unlock:116
|
||||
#: src/face-unlock:126
|
||||
msgid "It can do sudo and admin prompts too. See Settings."
|
||||
msgstr "它也可以用于 sudo 和管理员授权。见“设置”。"
|
||||
|
||||
#: src/face-unlock:131
|
||||
#: src/face-unlock:142
|
||||
msgid "Face unlock is off. Your faces are kept; delete them under Faces."
|
||||
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."
|
||||
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"
|
||||
msgstr "开"
|
||||
|
||||
#: src/face-unlock:149 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:609
|
||||
#: src/face-unlock:160 src/lib/menu.sh:182 src/lib/menu.sh:192
|
||||
#: src/lib/menu.sh:608
|
||||
msgid "off"
|
||||
msgstr "关"
|
||||
|
||||
#: src/face-unlock:151 src/lib/menu.sh:626
|
||||
#: src/face-unlock:162 src/lib/menu.sh:625
|
||||
#, sh-printf-format
|
||||
msgid "%s samples, %s learned"
|
||||
msgstr "%s 个样本,已学习 %s 个"
|
||||
|
||||
#: src/face-unlock:157
|
||||
#: src/face-unlock:168
|
||||
#, sh-printf-format
|
||||
msgid "Which face? See `%s faces` for the ids."
|
||||
msgstr "哪张人脸?用 `%s faces` 查看 ID。"
|
||||
|
||||
#: src/face-unlock:161
|
||||
#: src/face-unlock:172
|
||||
msgid "Deleted."
|
||||
msgstr "已删除。"
|
||||
|
||||
#: src/face-unlock:172
|
||||
#: src/face-unlock:183
|
||||
msgid "Usage: face-unlock [command]"
|
||||
msgstr "用法:face-unlock [命令]"
|
||||
|
||||
#: src/face-unlock:174
|
||||
#: src/face-unlock:185
|
||||
msgid "Commands:"
|
||||
msgstr "命令:"
|
||||
|
||||
#: src/face-unlock:175
|
||||
#: src/face-unlock:186
|
||||
msgid "Turn face unlock on"
|
||||
msgstr "开启人脸解锁"
|
||||
|
||||
#: src/face-unlock:176
|
||||
#: src/face-unlock:187
|
||||
msgid "Turn it off (faces are kept)"
|
||||
msgstr "关闭(保留人脸)"
|
||||
|
||||
#: src/face-unlock:177 src/lib/menu.sh:692
|
||||
#: src/face-unlock:188 src/lib/menu.sh:691
|
||||
msgid "Add a face"
|
||||
msgstr "添加人脸"
|
||||
|
||||
#: src/face-unlock:178
|
||||
#: src/face-unlock:189
|
||||
msgid "List the faces"
|
||||
msgstr "列出人脸"
|
||||
|
||||
#: src/face-unlock:179
|
||||
#: src/face-unlock:190
|
||||
msgid "Delete a face"
|
||||
msgstr "删除人脸"
|
||||
|
||||
#: src/face-unlock:180
|
||||
#: src/face-unlock:191
|
||||
msgid "Look at the camera and see what it sees"
|
||||
msgstr "看着摄像头,查看它看到的画面"
|
||||
|
||||
#: src/face-unlock:181
|
||||
#: src/face-unlock:192
|
||||
msgid "Show what is on"
|
||||
msgstr "显示已开启的功能"
|
||||
|
||||
#: src/face-unlock:182
|
||||
#: src/face-unlock:193
|
||||
msgid "Show this help"
|
||||
msgstr "显示此帮助"
|
||||
|
||||
#: src/face-unlock:183
|
||||
#: src/face-unlock:194
|
||||
msgid "Show the version"
|
||||
msgstr "显示版本"
|
||||
|
||||
#: src/face-unlock:185
|
||||
#: src/face-unlock:196
|
||||
msgid "Without a command an interactive menu is shown."
|
||||
msgstr "不带命令时显示交互式菜单。"
|
||||
|
||||
#: src/face-unlock:204
|
||||
#: src/face-unlock:215
|
||||
msgid ""
|
||||
"Run this as your own user, not as root. It asks for your password when it "
|
||||
"needs to."
|
||||
msgstr "请以你自己的用户运行,不要用 root。需要时会询问你的密码。"
|
||||
|
||||
#: src/face-unlock:226 src/lib/system.sh:93
|
||||
#: src/face-unlock:237 src/lib/system.sh:93
|
||||
#, sh-printf-format
|
||||
msgid "Unknown command: %s"
|
||||
msgstr "未知命令:%s"
|
||||
@@ -334,11 +342,11 @@ msgstr "尝试次数过多。人脸解锁已暂停,直到你用密码解锁。
|
||||
msgid "[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"
|
||||
msgstr "开启"
|
||||
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:510
|
||||
#: src/lib/menu.sh:174 src/lib/menu.sh:511
|
||||
msgid "OFF"
|
||||
msgstr "关闭"
|
||||
|
||||
@@ -379,7 +387,7 @@ msgstr "慢"
|
||||
msgid "%s seconds"
|
||||
msgstr "%s 秒"
|
||||
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:421
|
||||
#: src/lib/menu.sh:202 src/lib/menu.sh:422
|
||||
msgid "automatic"
|
||||
msgstr "自动"
|
||||
|
||||
@@ -399,8 +407,8 @@ msgstr "未运行"
|
||||
msgid "Turning face unlock on again starts it."
|
||||
msgstr "重新开启人脸解锁即可启动它。"
|
||||
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:604
|
||||
#: src/lib/menu.sh:693
|
||||
#: src/lib/menu.sh:236 src/lib/menu.sh:238 src/lib/menu.sh:603
|
||||
#: src/lib/menu.sh:692
|
||||
msgid "Faces"
|
||||
msgstr "人脸"
|
||||
|
||||
@@ -455,75 +463,76 @@ msgstr "锁屏代理没有运行。"
|
||||
|
||||
#: src/lib/menu.sh:308
|
||||
msgid ""
|
||||
"GNOME does not let other programs show above its windows, so there is no "
|
||||
"bubble on GNOME."
|
||||
msgstr "GNOME 不允许其他程序显示在它的窗口之上,所以 GNOME 上没有气泡。"
|
||||
"On GNOME a small GNOME extension shows the bubble. Turning face unlock on "
|
||||
"switches it on."
|
||||
msgstr ""
|
||||
"在 GNOME 上,由一个小的 GNOME 扩展显示气泡。开启人脸解锁时会一并开启它。"
|
||||
|
||||
#: src/lib/menu.sh:312
|
||||
#: src/lib/menu.sh:313
|
||||
msgid ""
|
||||
"Unlocks the lock screen when it sees your face. Off: only your password "
|
||||
"works there."
|
||||
msgstr "看到你的脸时解锁锁屏。关闭:锁屏只能用密码。"
|
||||
|
||||
#: src/lib/menu.sh:313
|
||||
#: src/lib/menu.sh:314
|
||||
msgid ""
|
||||
"Scans when you press a key or move the mouse on the lock screen, and when "
|
||||
"the computer wakes up."
|
||||
msgstr "在锁屏上按键或移动鼠标时,以及电脑唤醒时扫描。"
|
||||
|
||||
#: src/lib/menu.sh:314
|
||||
#: src/lib/menu.sh:315
|
||||
msgid ""
|
||||
"Scans as soon as the screen locks. Off by default: if you lock it yourself, "
|
||||
"it would unlock again right away."
|
||||
msgstr "屏幕一锁定就扫描。默认关闭:如果是你自己锁的屏,它会马上又解锁。"
|
||||
|
||||
#: src/lib/menu.sh:315
|
||||
#: src/lib/menu.sh:316
|
||||
msgid ""
|
||||
"sudo takes your face instead of the password. No match: you type the "
|
||||
"password as usual."
|
||||
msgstr "sudo 用你的脸代替密码。不匹配时,照常输入密码。"
|
||||
|
||||
#: src/lib/menu.sh:316
|
||||
#: src/lib/menu.sh:317
|
||||
msgid ""
|
||||
"The password windows of your desktop and apps, for example when you install "
|
||||
"software. No match: you type the password."
|
||||
msgstr "桌面和应用的密码窗口,例如安装软件时。不匹配时,输入密码即可。"
|
||||
|
||||
#: src/lib/menu.sh:317
|
||||
#: src/lib/menu.sh:318
|
||||
msgid ""
|
||||
"You have to blink or turn your head a little. This also stops printed photos."
|
||||
msgstr "你需要眨眼或稍微转头。这也能挡住打印的照片。"
|
||||
|
||||
#: src/lib/menu.sh:318
|
||||
#: src/lib/menu.sh:319
|
||||
msgid "No check at all. Only for trying out a camera."
|
||||
msgstr "完全不检测。仅用于试用摄像头。"
|
||||
|
||||
#: src/lib/menu.sh:319
|
||||
#: src/lib/menu.sh:320
|
||||
msgid ""
|
||||
"Stops photos on a phone, a tablet or glossy paper. You do not have to blink. "
|
||||
"A matte printed photo can get through."
|
||||
msgstr "挡住手机、平板或光面纸上的照片。无需眨眼。哑光纸打印的照片可能会通过。"
|
||||
|
||||
#: src/lib/menu.sh:320
|
||||
#: src/lib/menu.sh:321
|
||||
msgid ""
|
||||
"Fewer wrong matches, but it may not know you with glasses or in bad light."
|
||||
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."
|
||||
msgstr "更容易认出你,但也更容易认出和你长得很像的人。"
|
||||
|
||||
#: src/lib/menu.sh:322
|
||||
#: src/lib/menu.sh:323
|
||||
msgid "The default. Right for most people."
|
||||
msgstr "默认值。适合大多数人。"
|
||||
|
||||
#: src/lib/menu.sh:323
|
||||
#: src/lib/menu.sh:324
|
||||
msgid ""
|
||||
"Your eyes have to be open and on the screen. So it does not unlock while you "
|
||||
"look away or sleep."
|
||||
msgstr "你的眼睛必须睁开并看着屏幕。这样你看向别处或睡着时不会解锁。"
|
||||
|
||||
#: src/lib/menu.sh:324
|
||||
#: src/lib/menu.sh:325
|
||||
msgid ""
|
||||
"Automatic takes the first normal camera. After a change, set up your face "
|
||||
"again. An infrared camera needs its light on (linux-enable-ir-emitter)."
|
||||
@@ -531,94 +540,94 @@ msgstr ""
|
||||
"“自动”会使用第一个普通摄像头。更换后请重新设置人脸。红外摄像头需要打开它的补"
|
||||
"光灯(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."
|
||||
msgstr "摄像头寻找你的脸多久后放弃。"
|
||||
|
||||
#: src/lib/menu.sh:326
|
||||
#: src/lib/menu.sh:327
|
||||
msgid ""
|
||||
"After a sure match it keeps how you look now. So a new haircut or glasses "
|
||||
"need no new setup."
|
||||
msgstr "确定匹配后,会记住你现在的样子。所以换了发型或戴上眼镜也无需重新设置。"
|
||||
|
||||
#: src/lib/menu.sh:327
|
||||
#: src/lib/menu.sh:328
|
||||
msgid ""
|
||||
"No scan while the laptop is closed, for example at a desk with an external "
|
||||
"screen."
|
||||
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."
|
||||
msgstr "屏幕顶部的气泡显示摄像头正在做什么。"
|
||||
|
||||
#: src/lib/menu.sh:329
|
||||
#: src/lib/menu.sh:330
|
||||
msgid "A small pill with a lock that opens."
|
||||
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."
|
||||
msgstr "一个岛,里面有一张四处张望的脸,然后是圆环和一个对勾。"
|
||||
|
||||
#: src/lib/menu.sh:331
|
||||
#: src/lib/menu.sh:332
|
||||
msgid "How fast the bubble moves."
|
||||
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."
|
||||
msgstr "sudo 或管理员授权扫描你的脸时也显示气泡。"
|
||||
|
||||
#: src/lib/menu.sh:417
|
||||
#: src/lib/menu.sh:418
|
||||
#, sh-printf-format
|
||||
msgid "automatic (%s)"
|
||||
msgstr "自动(%s)"
|
||||
|
||||
#: src/lib/menu.sh:427
|
||||
#: src/lib/menu.sh:428
|
||||
msgid "(infrared)"
|
||||
msgstr "(红外)"
|
||||
|
||||
#: src/lib/menu.sh:431
|
||||
#: src/lib/menu.sh:432
|
||||
msgid "(not connected)"
|
||||
msgstr "(未连接)"
|
||||
|
||||
#: src/lib/menu.sh:506 src/lib/menu.sh:694
|
||||
#: src/lib/menu.sh:507 src/lib/menu.sh:693
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
#: src/lib/menu.sh:507
|
||||
#: src/lib/menu.sh:508
|
||||
msgid "↑↓ select ←→ or Space: change q: back"
|
||||
msgstr "↑↓ 选择 ←→ 或空格:更改 q:返回"
|
||||
|
||||
#: src/lib/menu.sh:508
|
||||
#: src/lib/menu.sh:509
|
||||
msgid "for all users, asks for your password"
|
||||
msgstr "对所有用户生效,需要你的密码"
|
||||
|
||||
#. 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"
|
||||
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."
|
||||
msgstr "尚未设置任何人脸。按 a 添加。"
|
||||
|
||||
#: src/lib/menu.sh:653
|
||||
#: src/lib/menu.sh:652
|
||||
msgid "New name:"
|
||||
msgstr "新名称:"
|
||||
|
||||
#: src/lib/menu.sh:660
|
||||
#: src/lib/menu.sh:659
|
||||
#, sh-printf-format
|
||||
msgid "Delete \"%s\"?"
|
||||
msgstr "删除“%s”?"
|
||||
|
||||
#: src/lib/menu.sh:691
|
||||
#: src/lib/menu.sh:690
|
||||
msgid "Turn face unlock on or off"
|
||||
msgstr "开启或关闭人脸解锁"
|
||||
|
||||
#: src/lib/menu.sh:695
|
||||
#: src/lib/menu.sh:694
|
||||
msgid "Try it"
|
||||
msgstr "试一试"
|
||||
|
||||
#: src/lib/menu.sh:696
|
||||
#: src/lib/menu.sh:695
|
||||
msgid "Quit"
|
||||
msgstr "退出"
|
||||
|
||||
@@ -830,23 +839,23 @@ msgstr "摄像头正忙于另一次扫描。请稍后重试。"
|
||||
msgid "The face could not be added (%1)."
|
||||
msgstr "无法添加人脸(%1)。"
|
||||
|
||||
#: src/agent/main.cpp:86
|
||||
#: src/agent/main.cpp:87
|
||||
msgid "Face unlock for the lock screen, sudo and admin prompts"
|
||||
msgstr "用于锁屏、sudo 和管理员授权的人脸解锁"
|
||||
|
||||
#: src/agent/main.cpp:89
|
||||
#: src/agent/main.cpp:90
|
||||
msgid "Set up a face."
|
||||
msgstr "设置一张人脸。"
|
||||
|
||||
#: src/agent/main.cpp:90
|
||||
#: src/agent/main.cpp:91
|
||||
msgid "What to call the new face."
|
||||
msgstr "新人脸的名称。"
|
||||
|
||||
#: src/agent/main.cpp:91
|
||||
#: src/agent/main.cpp:92
|
||||
msgid "Play the bubble's animations once."
|
||||
msgstr "播放一次气泡动画。"
|
||||
|
||||
#: src/agent/main.cpp:93
|
||||
#: src/agent/main.cpp:94
|
||||
msgid "Bubble style for the demo: full or 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"
|
||||
}
|
||||
@@ -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()},
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
@@ -12,9 +12,10 @@
|
||||
// request has to be made for every new surface role, before it is mapped, so
|
||||
// it is repeated each time the window is shown again.
|
||||
//
|
||||
// Other compositors have no such thing. On Hyprland and Niri the lock screen
|
||||
// covers the bubble, which shows again with the tick once it is gone. GNOME
|
||||
// has no layer-shell at all, so there is no bubble there (see main.cpp).
|
||||
// Other compositors have no such thing: on Hyprland and Niri the lock screen
|
||||
// covers the bubble, which shows the tick once it is gone. GNOME has no
|
||||
// layer-shell at all; there face-unlock's GNOME Shell extension draws the
|
||||
// bubble (BubbleService).
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
+8
-3
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "agentsocket.h"
|
||||
#include "bubblecontroller.h"
|
||||
#include "bubbleservice.h"
|
||||
#include "bubblewindow.h"
|
||||
#include "enrollcontroller.h"
|
||||
#include "lockcontroller.h"
|
||||
@@ -112,8 +113,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
BubbleController bubble(&config);
|
||||
// The bubble floats above everything as a layer-shell surface. GNOME has
|
||||
// none, and a normal window cannot stay on top or pick its place, so
|
||||
// there it does without.
|
||||
// none, and a normal window cannot stay on top or pick its place: there
|
||||
// face-unlock's GNOME Shell extension draws it, from what this tells it.
|
||||
std::unique_ptr<BubbleWindow> window;
|
||||
if (Wayland::hasGlobal("zwlr_layer_shell_v1")) {
|
||||
window = std::make_unique<BubbleWindow>(&engine, &bubble);
|
||||
@@ -121,7 +122,7 @@ int main(int argc, char **argv)
|
||||
|
||||
if (parser.isSet(demoOpt)) {
|
||||
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;
|
||||
}
|
||||
scheduleDemo(&bubble);
|
||||
@@ -135,6 +136,10 @@ int main(int argc, char **argv)
|
||||
}
|
||||
socket.listen();
|
||||
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);
|
||||
return app.exec();
|
||||
|
||||
@@ -111,6 +111,16 @@ fu_do_enable() {
|
||||
[[ $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
|
||||
|
||||
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.")"
|
||||
if [[ $CFG_SUDO != yes && $CFG_POLKIT != yes ]]; then
|
||||
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_config_set Enabled no || { fu_bad "$(fu_msg "Could not save the setting.")"; return 1; }
|
||||
fu_agent_available && fu_agent_disable
|
||||
[[ $FU_DESKTOP == gnome ]] && fu_gnome_extension_disable
|
||||
|
||||
local service
|
||||
for service in "${FU_PAM_SERVICES[@]}"; do
|
||||
|
||||
+8
-9
@@ -276,8 +276,7 @@ fu_ui_status() {
|
||||
# heading, with only the label after it
|
||||
# type bool, choice (steps through the choices) or camera
|
||||
# needs a bool setting this one does nothing without; it is dimmed while
|
||||
# that is off. Layers is no setting: whether the desktop can show
|
||||
# the bubble at all (GNOME cannot).
|
||||
# that is off
|
||||
FU_SETTINGS=(
|
||||
"group|Lock screen"
|
||||
"user|LockScreen|bool|yes|Unlock with your face"
|
||||
@@ -295,7 +294,7 @@ FU_SETTINGS=(
|
||||
"sys|Adapt|bool|yes|Learn from every unlock"
|
||||
"sys|SkipLidClosed|bool|yes|Not when the lid is closed"
|
||||
"group|Bubble"
|
||||
"user|Bubble|bool|yes|Show the bubble||Layers"
|
||||
"user|Bubble|bool|yes|Show the bubble"
|
||||
"user|BubbleStyle|choice|full|Style|full,minimal|Bubble"
|
||||
"user|AnimationSpeed|choice|normal|Animation speed|slow,normal,fast|Bubble"
|
||||
"user|BubbleForPrompts|bool|yes|Also for sudo and admin prompts||Bubble"
|
||||
@@ -304,10 +303,12 @@ FU_SETTINGS=(
|
||||
# fu_setting_help <Key> <value>
|
||||
# What a setting does, shown under the list for the selected one.
|
||||
fu_setting_help() {
|
||||
if [[ $FU_DESKTOP == gnome && $1 =~ ^(Bubble|BubbleStyle|AnimationSpeed|BubbleForPrompts)$ ]]; then
|
||||
fu_msg "GNOME does not let other programs show above its windows, so there is no bubble on GNOME."
|
||||
return
|
||||
fi
|
||||
case "$FU_DESKTOP:$1" in
|
||||
gnome:Bubble)
|
||||
fu_msg "On GNOME a small GNOME extension shows the bubble. Turning face unlock on switches it on."
|
||||
return
|
||||
;;
|
||||
esac
|
||||
case "$1:$2" in
|
||||
LockScreen:*) fu_msg "Unlocks the lock screen when it sees your face. Off: only your password works there." ;;
|
||||
ScanOnWake:*) fu_msg "Scans when you press a key or move the mouse on the lock screen, and when the computer wakes up." ;;
|
||||
@@ -523,8 +524,6 @@ fu_ui_settings() {
|
||||
values[i]="$FU_SETTING_VALUE"
|
||||
current[${keys[i]}]="$FU_SETTING_VALUE"
|
||||
done
|
||||
current[Layers]=yes
|
||||
[[ $FU_DESKTOP == gnome ]] && current[Layers]=no current[Bubble]=no
|
||||
dirty=0
|
||||
fi
|
||||
|
||||
|
||||
@@ -145,6 +145,46 @@ fu_agent_hint() {
|
||||
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() {
|
||||
systemctl --user disable --now "$FU_UNIT_AGENT" > /dev/null 2>&1 || true
|
||||
}
|
||||
Reference in new issue
Block a user