1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-02 03:28:28 -04:00

Compare commits

...

17 Commits

Author SHA1 Message Date
Connor Welsh 11287459c3 popout: re-apply surface geometry after shouldBeVisible (#2983)
Popouts sized from their content sometimes open too short and clip what
they render, then come back correct on the next open.

open() snapshots the surface geometry before setting shouldBeVisible,
and the onAligned{X,Y,Width,Height}Changed handlers are all gated on
that flag. Mapping contentWindow happens in between, and that's what
finally runs the layout Qt deferred while the window was hidden.
Content-sized popouts pick up their real height in that gap, so the
correction is dropped and the surface stays short. Re-snapshot once the
flag is set.
2026-08-02 01:30:21 -04:00
bbedward ef191babb7 tailscale: add missing ID
related #2969
port 1.5
2026-07-31 09:37:01 -04:00
bbedward fe64a342f9 network: rescan when network panel is open 2026-07-31 09:33:17 -04:00
bbedward e54be7d12d i18n: sync 2026-07-30 17:11:29 -04:00
bbedward 81c886784b lock: add separate text input for IMEs
related #2950
2026-07-30 17:08:59 -04:00
bbedward 6682bb120c matugen: tweak qt6ct colors
related #2951
2026-07-30 17:08:59 -04:00
bbedward 5c02ec4789 lock: avoid lock at startup firing when using dms-greeter
fixes #2952
2026-07-30 17:08:59 -04:00
bbedward de1e1757c3 keybinds: preserve raw lua actions in parser
fixes #2953
2026-07-30 17:08:59 -04:00
bbedward 43d331d6cf desktop plugins: ensure transparent frame is shown when desktop widgets
disabled

related #2955
2026-07-30 17:08:59 -04:00
Grant Mosha 01832856d4 fix(network): authenticate Fortinet VPNs natively (#2959)
* fix(network): authenticate Fortinet VPNs natively

* cleanup and add test

---------

Co-authored-by: Grant Mosha <grant.mosha@nida.go.tz>
Co-authored-by: bbedward <bbedward@gmail.com>
2026-07-30 16:45:53 -04:00
Huỳnh Thiện Lộc 0033e3f0e0 feat: add QR Generator launcher (#2941)
* feat: add QR Generator modal with auto-generate on input debounce

- QRGeneratorModal with dual-buffer sequential fade animation
- Auto-generate QR code on typing stop (200ms debounce)
- Clear text button on input field
- Escape key closes modal
- Register modal in PopoutService and AppSearchService
- Go backend for text QR code generation

* fix: add QR Generator toggle to Launcher DMS settings

* qr: also add qrg built in launcher plugin

---------

Co-authored-by: bbedward <bbedward@gmail.com>
2026-07-30 16:33:36 -04:00
bbedward 2d3706321a frame: fix popout IPCs in some situations
related #2956
2026-07-30 15:30:44 -04:00
bbedward 5bb884db57 keybinds: fix labeling of spawn keybinds
fixes #2957
2026-07-30 15:30:44 -04:00
dms-ci[bot] b42763ccbf nix: update vendorHash for go.mod changes 2026-07-30 19:13:28 +00:00
bbedward f2a6d62d65 matugen: add description for vscode template
fixes #2958
2026-07-30 15:10:54 -04:00
bbedward f66693df6b core: bump dankgo 2026-07-30 14:52:14 -04:00
bbedward a710d6d7cc launcher: fix regex escaping launch args
fixes #2961
port 1.5
2026-07-30 14:33:58 -04:00
62 changed files with 9576 additions and 5465 deletions
+1 -1
View File
@@ -69,7 +69,7 @@ require (
)
require (
github.com/AvengeMedia/dankgo v0.0.0-20260724133713-a4ef23371e05
github.com/AvengeMedia/dankgo v0.0.0-20260730184236-239485829b0b
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/charmbracelet/colorprofile v0.4.3 // indirect
+2 -2
View File
@@ -1,7 +1,7 @@
filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=
github.com/AvengeMedia/dankgo v0.0.0-20260724133713-a4ef23371e05 h1:Ij/yzOT8y2HL7V5Rkec1GxJV0rUvhKqfAzyGxVRTk1o=
github.com/AvengeMedia/dankgo v0.0.0-20260724133713-a4ef23371e05/go.mod h1:xt8RldAfti0QCWidwYIzsSSoJWsE61WgEhTu2H9UpD4=
github.com/AvengeMedia/dankgo v0.0.0-20260730184236-239485829b0b h1:UwX1H4BkzazL7ips9ljnHzBXGttYARcIi5Njj9aqIt4=
github.com/AvengeMedia/dankgo v0.0.0-20260730184236-239485829b0b/go.mod h1:xt8RldAfti0QCWidwYIzsSSoJWsE61WgEhTu2H9UpD4=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM=
+45 -5
View File
@@ -4,6 +4,7 @@ import (
"fmt"
"os"
"path/filepath"
"regexp"
"sort"
"strconv"
"strings"
@@ -224,6 +225,44 @@ func (h *HyprlandProvider) validateAction(action string) error {
return nil
}
var luaExprActionPattern = regexp.MustCompile(`^(function\s*\(|hl\.)`)
// isRawLuaActionText reports that action is a Lua expression to re-emit
// verbatim rather than freeform dispatcher text to wrap for hyprctl. The
// balance check keeps malformed input from corrupting the generated file.
func isRawLuaActionText(action string) bool {
if !luaExprActionPattern.MatchString(action) {
return false
}
depth := 0
var quote byte
escaped := false
for i := 0; i < len(action); i++ {
c := action[i]
switch {
case escaped:
escaped = false
case quote != 0:
switch c {
case '\\':
escaped = true
case quote:
quote = 0
}
case c == '"' || c == '\'':
quote = c
case c == '(':
depth++
case c == ')':
depth--
if depth < 0 {
return false
}
}
}
return depth == 0 && quote == 0 && !escaped
}
func (h *HyprlandProvider) SetBind(key, action, description string, options map[string]any) error {
if err := h.ensureWritableConfig(); err != nil {
return err
@@ -254,11 +293,12 @@ func (h *HyprlandProvider) SetBind(key, action, description string, options map[
canonicalKey := canonicalHyprlandOverrideKey(key)
normalizedKey := hyprlandOverrideMapKey(canonicalKey)
existingBinds[normalizedKey] = &hyprlandOverrideBind{
Key: canonicalKey,
Action: action,
Description: description,
Flags: flags,
Options: options,
Key: canonicalKey,
Action: action,
Description: description,
Flags: flags,
Options: options,
RawLuaAction: isRawLuaActionText(action),
}
return h.writeOverrideBinds(existingBinds)
@@ -463,6 +463,56 @@ func TestHyprlandSetBindLeavesConfOnlyInstallReadOnly(t *testing.T) {
}
}
func TestIsRawLuaActionText(t *testing.T) {
cases := []struct {
action string
want bool
}{
{`function() hl.plugin.scrolloverview.overview("toggle") end`, true},
{`hl.dsp.exec_cmd("foo")`, true},
{`hl.dsp.no_op()`, true},
{"workspace 3", false},
{"exec zeditor", false},
{`function() hl.foo( end`, false},
{`function() hl.foo("a) end`, false},
{`hl.foo()) hl.bar((`, false},
}
for _, tc := range cases {
if got := isRawLuaActionText(tc.action); got != tc.want {
t.Errorf("isRawLuaActionText(%q) = %v, want %v", tc.action, got, tc.want)
}
}
}
func TestHyprlandSetBindPreservesRawLuaAction(t *testing.T) {
tmpDir := t.TempDir()
dmsDir := filepath.Join(tmpDir, "dms")
if err := os.MkdirAll(dmsDir, 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dmsDir, "binds-user.lua"), []byte("-- DMS user keybind overrides\n"), 0o644); err != nil {
t.Fatal(err)
}
provider := NewHyprlandProvider(tmpDir)
rawAction := `function() hl.plugin.scrolloverview.overview("toggle") end`
if err := provider.SetBind("SUPER + G", rawAction, "Toggle overview", nil); err != nil {
t.Fatal(err)
}
data, err := os.ReadFile(filepath.Join(dmsDir, "binds-user.lua"))
if err != nil {
t.Fatal(err)
}
got := string(data)
if !strings.Contains(got, `hl.bind("SUPER + G", `+rawAction) {
t.Fatalf("expected raw Lua action to be written verbatim, got:\n%s", got)
}
if strings.Contains(got, "hyprctl dispatch function") {
t.Fatalf("expected raw Lua action to not be wrapped in hyprctl dispatch, got:\n%s", got)
}
}
func TestHyprlandSetBindUpdatesSpacedLuaOverrideWithoutDuplicates(t *testing.T) {
tmpDir := t.TempDir()
dmsDir := filepath.Join(tmpDir, "dms")
+22 -16
View File
@@ -471,12 +471,9 @@ output_path = '%s'
case TemplateKindTerminal:
appendTerminalConfig(opts, cfgFile, tmpDir, tmpl.Commands, tmpl.Flatpaks, tmpl.ConfigFile)
case TemplateKindVSCode:
appendVSCodeConfig(cfgFile, "vscode", filepath.Join(homeDir, ".vscode/extensions"), opts.ShellDir)
appendVSCodeConfig(cfgFile, "codium", filepath.Join(homeDir, ".vscode-oss/extensions"), opts.ShellDir)
appendVSCodeConfig(cfgFile, "codeoss", filepath.Join(homeDir, ".config/Code - OSS/extensions"), opts.ShellDir)
appendVSCodeConfig(cfgFile, "cursor", filepath.Join(homeDir, ".cursor/extensions"), opts.ShellDir)
appendVSCodeConfig(cfgFile, "windsurf", filepath.Join(homeDir, ".windsurf/extensions"), opts.ShellDir)
appendVSCodeConfig(cfgFile, "vscode-insiders", filepath.Join(homeDir, ".vscode-insiders/extensions"), opts.ShellDir)
for _, editor := range vscodeEditors {
appendVSCodeConfig(cfgFile, editor.name, editor.extensionsDir(homeDir), opts.ShellDir)
}
case TemplateKindEmacs:
if utils.EmacsConfigDir() != "" {
appendConfig(opts, cfgFile, tmpl.Commands, tmpl.Flatpaks, tmpl.ConfigDirs, tmpl.ConfigFile)
@@ -633,6 +630,23 @@ func appExists(checker utils.AppChecker, checkCmd []string, checkFlatpaks []stri
return false
}
type vscodeEditor struct {
name string
dataDir string
}
var vscodeEditors = []vscodeEditor{
{"vscode", ".vscode"},
{"codium", ".vscode-oss"},
{"cursor", ".cursor"},
{"windsurf", ".windsurf"},
{"vscode-insiders", ".vscode-insiders"},
}
func (e vscodeEditor) extensionsDir(homeDir string) string {
return filepath.Join(homeDir, e.dataDir, "extensions")
}
func appendVSCodeConfig(cfgFile *os.File, name, extBaseDir, shellDir string) {
pattern := filepath.Join(extBaseDir, "danklinux.dms-theme-*")
matches, err := filepath.Glob(pattern)
@@ -1168,16 +1182,8 @@ func CheckTemplates(checker utils.AppChecker) []TemplateCheck {
}
func checkVSCodeExtension(homeDir string) bool {
extDirs := []string{
filepath.Join(homeDir, ".vscode/extensions"),
filepath.Join(homeDir, ".vscode-oss/extensions"),
filepath.Join(homeDir, ".config/Code - OSS/extensions"),
filepath.Join(homeDir, ".cursor/extensions"),
filepath.Join(homeDir, ".windsurf/extensions"),
}
for _, extDir := range extDirs {
pattern := filepath.Join(extDir, "danklinux.dms-theme-*")
for _, editor := range vscodeEditors {
pattern := filepath.Join(editor.extensionsDir(homeDir), "danklinux.dms-theme-*")
if matches, err := filepath.Glob(pattern); err == nil && len(matches) > 0 {
return true
}
@@ -22,6 +22,16 @@ func TestLockScreenPasswordFieldBypassesTextInputIME(t *testing.T) {
if !strings.Contains(content, "Keys.onPressed") || !strings.Contains(content, "event.text") {
t.Fatalf("passwordField should handle physical key text manually instead of relying on a text input control")
}
// Wayland IMEs commit unconsumed printable keys as text-input text rather
// than forwarding raw keys, so the lock screen needs an IME commit sink
// alongside raw key handling.
if !strings.Contains(content, "id: imeCommitSink") {
t.Fatalf("passwordField must keep the imeCommitSink TextInput so IME-routed keyboards can type (#2950)")
}
if !strings.Contains(content, "Qt.ImhSensitiveData") {
t.Fatalf("imeCommitSink must advertise hidden-text hints so IMEs treat it as a password field")
}
}
func TestLockScreenPamSupportsManagedAndSystemPolicies(t *testing.T) {
@@ -302,17 +302,17 @@ func (a *SecretAgent) GetSecrets(
}
a.backend.cachedVPNCredsMu.Unlock()
a.backend.cachedGPSamlMu.Lock()
cachedGPSaml := a.backend.cachedGPSamlCookie
if cachedGPSaml != nil && cachedGPSaml.ConnectionUUID == connUuid {
a.backend.cachedGPSamlCookie = nil
a.backend.cachedGPSamlMu.Unlock()
a.backend.cachedOpenConnectMu.Lock()
cachedOpenConnect := a.backend.cachedOpenConnectAuth
if cachedOpenConnect != nil && cachedOpenConnect.ConnectionUUID == connUuid {
a.backend.cachedOpenConnectAuth = nil
a.backend.cachedOpenConnectMu.Unlock()
log.Infof("[SecretAgent] Using cached GlobalProtect SAML cookie for %s", connUuid)
log.Infof("[SecretAgent] Using cached OpenConnect authentication for %s", connUuid)
return buildGPSamlSecretsResponse(settingName, cachedGPSaml.Cookie, cachedGPSaml.Host, cachedGPSaml.Fingerprint), nil
return buildOpenConnectSecretsResponse(settingName, cachedOpenConnect.Cookie, cachedOpenConnect.Host, cachedOpenConnect.Fingerprint), nil
}
a.backend.cachedGPSamlMu.Unlock()
a.backend.cachedOpenConnectMu.Unlock()
if len(fields) == 1 && fields[0] == "gp-saml" {
gateway := ""
@@ -347,17 +347,17 @@ func (a *SecretAgent) GetSecrets(
log.Infof("[SecretAgent] GlobalProtect SAML authentication successful, returning cookie to NetworkManager")
a.backend.cachedGPSamlMu.Lock()
a.backend.cachedGPSamlCookie = &cachedGPSamlCookie{
a.backend.cachedOpenConnectMu.Lock()
a.backend.cachedOpenConnectAuth = &cachedOpenConnectAuth{
ConnectionUUID: connUuid,
Cookie: authResult.Cookie,
Host: authResult.Host,
User: authResult.User,
Fingerprint: authResult.Fingerprint,
}
a.backend.cachedGPSamlMu.Unlock()
a.backend.cachedOpenConnectMu.Unlock()
return buildGPSamlSecretsResponse(settingName, authResult.Cookie, authResult.Host, authResult.Fingerprint), nil
return buildOpenConnectSecretsResponse(settingName, authResult.Cookie, authResult.Host, authResult.Fingerprint), nil
}
}
@@ -987,7 +987,7 @@ func buildWiFiSecretsResponse(settingName string, secrets map[string]string) nmS
return out
}
func buildGPSamlSecretsResponse(settingName, cookie, host, fingerprint string) nmSettingMap {
func buildOpenConnectSecretsResponse(settingName, cookie, host, fingerprint string) nmSettingMap {
out := nmSettingMap{}
vpnSec := nmVariantMap{}
@@ -122,7 +122,7 @@ func TestNeedsExternalBrowserAuth(t *testing.T) {
}
}
func TestBuildGPSamlSecretsResponse(t *testing.T) {
func TestBuildOpenConnectSecretsResponse(t *testing.T) {
tests := []struct {
name string
settingName string
@@ -155,7 +155,7 @@ func TestBuildGPSamlSecretsResponse(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := buildGPSamlSecretsResponse(tt.settingName, tt.cookie, tt.host, tt.fingerprint)
result := buildOpenConnectSecretsResponse(tt.settingName, tt.cookie, tt.host, tt.fingerprint)
assert.NotNil(t, result)
assert.Contains(t, result, tt.settingName)
@@ -80,16 +80,16 @@ type NetworkManagerBackend struct {
hotspotPendingDevice string
pendingVPNSave *pendingVPNCredentials
pendingVPNSaveMu sync.Mutex
cachedVPNCreds *cachedVPNCredentials
cachedVPNCredsMu sync.Mutex
cachedPKCS11PIN *cachedPKCS11PIN
cachedPKCS11Mu sync.Mutex
cachedGPSamlCookie *cachedGPSamlCookie
cachedGPSamlMu sync.Mutex
cachedWiFiSecret *cachedWiFiSecret
cachedWiFiSecretMu sync.Mutex
pendingVPNSave *pendingVPNCredentials
pendingVPNSaveMu sync.Mutex
cachedVPNCreds *cachedVPNCredentials
cachedVPNCredsMu sync.Mutex
cachedPKCS11PIN *cachedPKCS11PIN
cachedPKCS11Mu sync.Mutex
cachedOpenConnectAuth *cachedOpenConnectAuth
cachedOpenConnectMu sync.Mutex
cachedWiFiSecret *cachedWiFiSecret
cachedWiFiSecretMu sync.Mutex
onStateChange func()
}
@@ -100,8 +100,9 @@ type pendingVPNCredentials struct {
Password string
// Secrets holds all VPN secret fields keyed by name (e.g. "cert-pass");
// falls back to Password under the "password" key when empty.
Secrets map[string]string
SavePassword bool
Secrets map[string]string
PersistentSecrets map[string]string
SavePassword bool
}
type cachedVPNCredentials struct {
@@ -124,7 +125,7 @@ type cachedWiFiSecret struct {
Secrets map[string]string
}
type cachedGPSamlCookie struct {
type cachedOpenConnectAuth struct {
ConnectionUUID string
Cookie string
Host string
@@ -3,6 +3,7 @@ package network
import (
"bufio"
"context"
"errors"
"fmt"
"os/exec"
"strings"
@@ -10,16 +11,29 @@ import (
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
)
type gpSamlAuthResult struct {
type openConnectAuthResult struct {
Cookie string
Host string
User string
Fingerprint string
}
type openConnectAuthError struct {
cause error
serverCert string
}
func (e *openConnectAuthError) Error() string {
return fmt.Sprintf("openconnect --authenticate failed: %v", e.cause)
}
func (e *openConnectAuthError) Unwrap() error {
return e.cause
}
// runGlobalProtectSAMLAuth handles GlobalProtect SAML/SSO authentication using gp-saml-gui.
// Only supports protocol=gp. Other protocols need their own implementations.
func (b *NetworkManagerBackend) runGlobalProtectSAMLAuth(ctx context.Context, gateway, protocol string) (*gpSamlAuthResult, error) {
func (b *NetworkManagerBackend) runGlobalProtectSAMLAuth(ctx context.Context, gateway, protocol string) (*openConnectAuthResult, error) {
if gateway == "" {
return nil, fmt.Errorf("GP SAML auth: gateway is empty")
}
@@ -63,7 +77,7 @@ func (b *NetworkManagerBackend) runGlobalProtectSAMLAuth(ctx context.Context, ga
}
}()
result := &gpSamlAuthResult{Host: gateway}
result := &openConnectAuthResult{Host: gateway}
var allOutput []string
scanner := bufio.NewScanner(stdout)
@@ -117,13 +131,8 @@ func (b *NetworkManagerBackend) runGlobalProtectSAMLAuth(ctx context.Context, ga
return result, nil
}
func convertGPPreloginCookie(ctx context.Context, gateway, preloginCookie, user string) (*gpSamlAuthResult, error) {
ocPath, err := exec.LookPath("openconnect")
if err != nil {
return nil, fmt.Errorf("openconnect not found: %w", err)
}
args := []string{
func convertGPPreloginCookie(ctx context.Context, gateway, preloginCookie, user string) (*openConnectAuthResult, error) {
return runOpenConnectAuthenticate(ctx, []string{
"--protocol=gp",
"--usergroup=gateway:prelogin-cookie",
"--user=" + user,
@@ -131,18 +140,83 @@ func convertGPPreloginCookie(ctx context.Context, gateway, preloginCookie, user
"--allow-insecure-crypto",
"--authenticate",
gateway,
}, preloginCookie)
}
func runOpenConnectPasswordAuth(
ctx context.Context,
data map[string]string,
username, password, serverCert string,
) (*openConnectAuthResult, error) {
if data["protocol"] != "fortinet" {
return nil, fmt.Errorf("only Fortinet password authentication is supported")
}
gateway := data["gateway"]
if gateway == "" {
return nil, fmt.Errorf("OpenConnect gateway is empty")
}
if username == "" || password == "" {
return nil, fmt.Errorf("OpenConnect username and password are required")
}
args := []string{
"--protocol=fortinet",
"--user=" + username,
"--passwd-on-stdin",
"--non-inter",
}
if usergroup := data["usergroup"]; usergroup != "" {
args = append(args, "--usergroup="+usergroup)
}
if serverCert != "" {
args = append(args, "--servercert="+serverCert)
}
args = append(args, "--authenticate", gateway)
result, err := runOpenConnectAuthenticate(ctx, args, password)
if err == nil {
result.Host = gateway
if result.Fingerprint == "" {
result.Fingerprint = serverCert
}
}
return result, err
}
func runOpenConnectAuthenticate(ctx context.Context, args []string, secret string) (*openConnectAuthResult, error) {
ocPath, err := exec.LookPath("openconnect")
if err != nil {
return nil, fmt.Errorf("openconnect not found: %w", err)
}
cmd := exec.CommandContext(ctx, ocPath, args...)
cmd.Stdin = strings.NewReader(preloginCookie)
cmd.Stdin = strings.NewReader(secret + "\n")
output, err := cmd.CombinedOutput()
result := parseOpenConnectAuthenticateOutput(string(output))
serverCert := suggestedOpenConnectServerCert(string(output))
if err != nil {
return nil, fmt.Errorf("openconnect --authenticate failed: %w\noutput: %s", err, string(output))
if ctx.Err() != nil {
return nil, fmt.Errorf("openconnect authentication timed out or was cancelled: %w", ctx.Err())
}
return nil, &openConnectAuthError{cause: err, serverCert: serverCert}
}
if result.Cookie == "" {
return nil, &openConnectAuthError{
cause: errors.New("no COOKIE in command output"),
serverCert: serverCert,
}
}
result := &gpSamlAuthResult{}
for _, line := range strings.Split(string(output), "\n") {
log.Infof("[OpenConnect] Authentication successful: cookie_len=%d, host=%s, has_fingerprint=%v",
len(result.Cookie), result.Host, result.Fingerprint != "")
return result, nil
}
func parseOpenConnectAuthenticateOutput(output string) *openConnectAuthResult {
result := &openConnectAuthResult{}
for _, line := range strings.Split(output, "\n") {
line = strings.TrimSpace(line)
switch {
case strings.HasPrefix(line, "COOKIE="):
@@ -158,15 +232,7 @@ func convertGPPreloginCookie(ctx context.Context, gateway, preloginCookie, user
}
}
}
if result.Cookie == "" {
return nil, fmt.Errorf("no COOKIE in openconnect --authenticate output: %s", string(output))
}
log.Infof("[GP-SAML] openconnect --authenticate: cookie_len=%d, host=%s, fingerprint=%s",
len(result.Cookie), result.Host, result.Fingerprint)
return result, nil
return result
}
func unshellQuote(s string) string {
@@ -179,7 +245,7 @@ func unshellQuote(s string) string {
return s
}
func parseGPSamlFromCommandLine(line string, result *gpSamlAuthResult) {
func parseGPSamlFromCommandLine(line string, result *openConnectAuthResult) {
if !strings.Contains(line, "openconnect") {
return
}
@@ -1,6 +1,10 @@
package network
import (
"context"
"errors"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
@@ -71,7 +75,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
tests := []struct {
name string
line string
initialResult *gpSamlAuthResult
initialResult *openConnectAuthResult
expectedCookie string
expectedUser string
expectedFP string
@@ -79,7 +83,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "full openconnect command",
line: "openconnect --protocol=gp --cookie=AUTH123 --servercert=pin-sha256:ABC --user=john",
initialResult: &gpSamlAuthResult{},
initialResult: &openConnectAuthResult{},
expectedCookie: "AUTH123",
expectedUser: "john",
expectedFP: "pin-sha256:ABC",
@@ -87,7 +91,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "with equals signs in cookie",
line: "openconnect --cookie=authcookie=xyz123&portal=GATE --user=jane",
initialResult: &gpSamlAuthResult{},
initialResult: &openConnectAuthResult{},
expectedCookie: "authcookie=xyz123&portal=GATE",
expectedUser: "jane",
expectedFP: "",
@@ -95,7 +99,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "non-openconnect line",
line: "some other output",
initialResult: &gpSamlAuthResult{},
initialResult: &openConnectAuthResult{},
expectedCookie: "",
expectedUser: "",
expectedFP: "",
@@ -103,7 +107,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "preserves existing values",
line: "openconnect --user=newuser",
initialResult: &gpSamlAuthResult{Cookie: "existing", Fingerprint: "existing-fp"},
initialResult: &openConnectAuthResult{Cookie: "existing", Fingerprint: "existing-fp"},
expectedCookie: "existing",
expectedUser: "newuser",
expectedFP: "existing-fp",
@@ -111,7 +115,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "only updates empty fields",
line: "openconnect --cookie=NEW --user=NEW",
initialResult: &gpSamlAuthResult{Cookie: "OLD"},
initialResult: &openConnectAuthResult{Cookie: "OLD"},
expectedCookie: "OLD",
expectedUser: "NEW",
expectedFP: "",
@@ -119,7 +123,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "real gp-saml-gui output",
line: "openconnect --protocol=gp --user=john.doe@example.com --os=linux-64 --usergroup=gateway:prelogin-cookie --passwd-on-stdin",
initialResult: &gpSamlAuthResult{},
initialResult: &openConnectAuthResult{},
expectedCookie: "",
expectedUser: "john.doe@example.com",
expectedFP: "",
@@ -127,7 +131,7 @@ func TestParseGPSamlFromCommandLine(t *testing.T) {
{
name: "with server cert flag",
line: "openconnect --servercert=pin-sha256:xp3scfzy3rOgQEXnfPiYKrUk7D66a8b8O+gEXaMPleE= vpn.example.com",
initialResult: &gpSamlAuthResult{},
initialResult: &openConnectAuthResult{},
expectedCookie: "",
expectedUser: "",
expectedFP: "pin-sha256:xp3scfzy3rOgQEXnfPiYKrUk7D66a8b8O+gEXaMPleE=",
@@ -158,7 +162,7 @@ func TestParseGPSamlFromCommandLine_MultipleLines(t *testing.T) {
"",
}
result := &gpSamlAuthResult{}
result := &openConnectAuthResult{}
for _, line := range lines {
parseGPSamlFromCommandLine(line, result)
}
@@ -167,3 +171,19 @@ func TestParseGPSamlFromCommandLine_MultipleLines(t *testing.T) {
assert.Empty(t, result.Cookie, "cookie should not be parsed from command line")
assert.Empty(t, result.Fingerprint)
}
func TestRunOpenConnectAuthenticateSanitizesFailure(t *testing.T) {
binDir := t.TempDir()
openConnectPath := filepath.Join(binDir, "openconnect")
script := "#!/bin/sh\nprintf '%s\\n' 'Cookie: should-not-leak' 'Add --servercert pin-sha256:TEST-FINGERPRINT' >&2\nexit 1\n"
assert.NoError(t, os.WriteFile(openConnectPath, []byte(script), 0o755))
t.Setenv("PATH", binDir)
_, err := runOpenConnectAuthenticate(context.Background(), []string{"--authenticate", "vpn.example.test"}, "password")
assert.Error(t, err)
assert.NotContains(t, err.Error(), "should-not-leak")
var authErr *openConnectAuthError
assert.True(t, errors.As(err, &authErr))
assert.Equal(t, "pin-sha256:TEST-FINGERPRINT", authErr.serverCert)
}
@@ -326,6 +326,7 @@ func (b *NetworkManagerBackend) ConnectVPN(uuidOrName string, singleActive bool)
}
authAction := detectVPNAuthAction(vpnServiceType, vpnData)
var openConnectAuth *openConnectAuthResult
switch authAction {
case "openvpn_username":
@@ -335,6 +336,19 @@ func (b *NetworkManagerBackend) ConnectVPN(uuidOrName string, singleActive bool)
if err := b.handleOpenVPNUsernameAuth(targetConn, connName, targetUUID, vpnServiceType); err != nil {
return err
}
case "openconnect_password":
if err := b.ensureOpenConnectAgentFlags(targetConn, vpnData); err != nil {
return fmt.Errorf("failed to prepare OpenConnect connection: %w", err)
}
authCtx, authCancel := context.WithTimeout(context.Background(), 5*time.Minute)
openConnectAuth, err = b.handleOpenConnectPasswordAuth(
authCtx, targetConn, connName, targetUUID, vpnServiceType, vpnData,
)
authCancel()
if err != nil {
return fmt.Errorf("OpenConnect authentication failed: %w", err)
}
case "gp_saml":
gateway := vpnData["gateway"]
protocol := vpnData["protocol"]
@@ -345,7 +359,7 @@ func (b *NetworkManagerBackend) ConnectVPN(uuidOrName string, singleActive bool)
log.Infof("[ConnectVPN] GlobalProtect SAML/SSO authentication required for %s (gateway=%s)", connName, gateway)
samlCtx, samlCancel := context.WithTimeout(context.Background(), 5*time.Minute)
authResult, err := b.runGlobalProtectSAMLAuth(samlCtx, gateway, protocol)
openConnectAuth, err = b.runGlobalProtectSAMLAuth(samlCtx, gateway, protocol)
samlCancel()
if err != nil {
errMsg := err.Error()
@@ -363,16 +377,6 @@ func (b *NetworkManagerBackend) ConnectVPN(uuidOrName string, singleActive bool)
}
}
b.cachedGPSamlMu.Lock()
b.cachedGPSamlCookie = &cachedGPSamlCookie{
ConnectionUUID: targetUUID,
Cookie: authResult.Cookie,
Host: authResult.Host,
User: authResult.User,
Fingerprint: authResult.Fingerprint,
}
b.cachedGPSamlMu.Unlock()
if err := targetConn.ClearSecrets(); err != nil {
log.Warnf("[ConnectVPN] ClearSecrets failed (non-fatal): %v", err)
} else {
@@ -382,6 +386,19 @@ func (b *NetworkManagerBackend) ConnectVPN(uuidOrName string, singleActive bool)
log.Infof("[ConnectVPN] GlobalProtect SAML cookie cached for %s, proceeding with activation", connName)
}
if openConnectAuth != nil {
b.cachedOpenConnectMu.Lock()
b.cachedOpenConnectAuth = &cachedOpenConnectAuth{
ConnectionUUID: targetUUID,
Cookie: openConnectAuth.Cookie,
Host: openConnectAuth.Host,
User: openConnectAuth.User,
Fingerprint: openConnectAuth.Fingerprint,
}
b.cachedOpenConnectMu.Unlock()
log.Infof("[ConnectVPN] OpenConnect authentication cached for %s, proceeding with activation", connName)
}
b.stateMutex.Lock()
b.state.IsConnectingVPN = true
b.state.ConnectingVPNUUID = targetUUID
@@ -394,6 +411,13 @@ func (b *NetworkManagerBackend) ConnectVPN(uuidOrName string, singleActive bool)
nm := b.nmConn.(gonetworkmanager.NetworkManager)
_, err = nm.ActivateConnection(targetConn, nil, nil)
if err != nil {
b.cachedOpenConnectMu.Lock()
b.cachedOpenConnectAuth = nil
b.cachedOpenConnectMu.Unlock()
b.pendingVPNSaveMu.Lock()
b.pendingVPNSave = nil
b.pendingVPNSaveMu.Unlock()
b.stateMutex.Lock()
b.state.IsConnectingVPN = false
b.state.ConnectingVPNUUID = ""
@@ -425,6 +449,9 @@ func detectVPNAuthAction(serviceType string, data map[string]string) string {
log.Infof("[VPN] External browser auth detected for protocol '%s' but only GlobalProtect (gp) is currently supported", protocol)
}
}
if protocol == "fortinet" && data["authtype"] == "password" {
return "openconnect_password"
}
case strings.Contains(serviceType, "openvpn"):
connType := data["connection-type"]
username := data["username"]
@@ -435,6 +462,200 @@ func detectVPNAuthAction(serviceType string, data map[string]string) string {
return ""
}
func setOpenConnectAgentFlags(data map[string]string) bool {
changed := false
for _, field := range []string{"cookie", "gateway", "gwcert"} {
key := field + "-flags"
if data[key] != "2" {
data[key] = "2"
changed = true
}
}
return changed
}
func (b *NetworkManagerBackend) ensureOpenConnectAgentFlags(conn gonetworkmanager.Connection, data map[string]string) error {
if !setOpenConnectAgentFlags(data) {
return nil
}
if b.dbusConn == nil {
return fmt.Errorf("NetworkManager D-Bus connection is unavailable")
}
connObj := b.dbusConn.Object("org.freedesktop.NetworkManager", conn.GetPath())
var existingSettings map[string]map[string]dbus.Variant
if err := connObj.Call("org.freedesktop.NetworkManager.Settings.Connection.GetSettings", 0).Store(&existingSettings); err != nil {
return fmt.Errorf("failed to get connection settings: %w", err)
}
vpn, ok := existingSettings["vpn"]
if !ok {
return fmt.Errorf("VPN settings are missing")
}
vpn["data"] = dbus.MakeVariant(data)
var stored map[string]map[string]dbus.Variant
if err := connObj.Call("org.freedesktop.NetworkManager.Settings.Connection.GetSecrets", 0, "vpn").Store(&stored); err != nil {
return fmt.Errorf("failed to preserve VPN secrets: %w", err)
}
if storedVPN, ok := stored["vpn"]; ok {
if secrets, ok := storedVPN["secrets"]; ok {
vpn["secrets"] = secrets
}
}
settings := map[string]map[string]dbus.Variant{"vpn": vpn}
if connection, ok := existingSettings["connection"]; ok {
settings["connection"] = connection
}
var result map[string]dbus.Variant
if err := connObj.Call("org.freedesktop.NetworkManager.Settings.Connection.Update2", 0,
settings, uint32(0x1), map[string]dbus.Variant{}).Store(&result); err != nil {
return fmt.Errorf("failed to set NetworkManager secret-agent flags: %w", err)
}
return nil
}
func (b *NetworkManagerBackend) handleOpenConnectPasswordAuth(
ctx context.Context,
targetConn gonetworkmanager.Connection,
connName, targetUUID, vpnServiceType string,
data map[string]string,
) (*openConnectAuthResult, error) {
username := data["username"]
secrets := map[string]string{}
if stored, err := targetConn.GetSecrets("vpn"); err == nil {
if vpn, ok := stored["vpn"]; ok {
if saved, ok := vpn["secrets"].(map[string]string); ok {
secrets = saved
}
}
}
password := secrets["password"]
serverCert := secrets["certificate:"+data["gateway"]]
if serverCert == "" {
serverCert = secrets["gwcert"]
}
var reply PromptReply
if username == "" || password == "" {
if b.promptBroker == nil {
return nil, fmt.Errorf("password authentication requires an interactive prompt")
}
fields := []string{}
fieldsInfo := []FieldInfo{}
if username == "" {
fields = append(fields, "username")
fieldsInfo = append(fieldsInfo, FieldInfo{Name: "username", Label: "Username", IsSecret: false})
}
if password == "" {
fields = append(fields, "password")
fieldsInfo = append(fieldsInfo, FieldInfo{Name: "password", Label: "Password", IsSecret: true})
}
token, err := b.promptBroker.Ask(ctx, PromptRequest{
Name: connName,
ConnType: "vpn",
VpnService: vpnServiceType,
SettingName: "vpn",
Fields: fields,
FieldsInfo: fieldsInfo,
Reason: "required",
ConnectionId: connName,
ConnectionUuid: targetUUID,
ConnectionPath: string(targetConn.GetPath()),
})
if err != nil {
return nil, fmt.Errorf("failed to request credentials: %w", err)
}
reply, err = b.promptBroker.Wait(ctx, token)
if err != nil {
return nil, fmt.Errorf("credentials prompt failed: %w", err)
}
if username == "" {
username = reply.Secrets["username"]
}
if password == "" {
password = reply.Secrets["password"]
}
}
auth, err := runOpenConnectPasswordAuth(ctx, data, username, password, serverCert)
persistentSecrets := map[string]string{}
var authErr *openConnectAuthError
if err != nil && errors.As(err, &authErr) && authErr.serverCert != "" && authErr.serverCert != serverCert {
if b.promptBroker == nil {
return nil, fmt.Errorf("VPN server certificate is untrusted: %s", authErr.serverCert)
}
reason := "server-certificate"
if serverCert != "" {
reason = "server-certificate-changed"
}
token, promptErr := b.promptBroker.Ask(ctx, PromptRequest{
Name: connName,
ConnType: "vpn",
VpnService: vpnServiceType,
SettingName: "vpn",
Hints: []string{authErr.serverCert},
Reason: reason,
ConnectionId: connName,
ConnectionUuid: targetUUID,
ConnectionPath: string(targetConn.GetPath()),
})
if promptErr != nil {
return nil, fmt.Errorf("failed to request certificate confirmation: %w", promptErr)
}
if _, promptErr = b.promptBroker.Wait(ctx, token); promptErr != nil {
return nil, fmt.Errorf("certificate confirmation failed: %w", promptErr)
}
auth, err = runOpenConnectPasswordAuth(ctx, data, username, password, authErr.serverCert)
if err == nil {
persistentSecrets["certificate:"+data["gateway"]] = authErr.serverCert
}
}
if err != nil {
return nil, err
}
if len(reply.Secrets) > 0 || len(persistentSecrets) > 0 {
creds := &pendingVPNCredentials{
ConnectionPath: string(targetConn.GetPath()),
PersistentSecrets: persistentSecrets,
}
if _, ok := reply.Secrets["username"]; ok {
creds.Username = username
}
if reply.Save {
creds.Username = username
creds.Password = password
creds.Secrets = map[string]string{"password": password}
creds.SavePassword = true
}
b.pendingVPNSaveMu.Lock()
b.pendingVPNSave = creds
b.pendingVPNSaveMu.Unlock()
}
return auth, nil
}
func suggestedOpenConnectServerCert(output string) string {
for _, field := range strings.Fields(output) {
field = strings.Trim(field, "'\".,")
if strings.HasPrefix(field, "pin-sha256:") {
return field
}
}
return ""
}
func (b *NetworkManagerBackend) handleOpenVPNUsernameAuth(targetConn gonetworkmanager.Connection, connName, targetUUID, vpnServiceType string) error {
log.Infof("[ConnectVPN] OpenVPN requires username in vpn.data - prompting before activation")
@@ -758,13 +979,13 @@ func (b *NetworkManagerBackend) updateVPNConnectionState() {
b.state.VPNErrorUuid = ""
b.stateMutex.Unlock()
// Clear cached PKCS11 PIN and SAML cookie on success
// Clear cached one-shot authentication values on success.
b.cachedPKCS11Mu.Lock()
b.cachedPKCS11PIN = nil
b.cachedPKCS11Mu.Unlock()
b.cachedGPSamlMu.Lock()
b.cachedGPSamlCookie = nil
b.cachedGPSamlMu.Unlock()
b.cachedOpenConnectMu.Lock()
b.cachedOpenConnectAuth = nil
b.cachedOpenConnectMu.Unlock()
b.pendingVPNSaveMu.Lock()
pending := b.pendingVPNSave
@@ -787,13 +1008,16 @@ func (b *NetworkManagerBackend) updateVPNConnectionState() {
b.state.VPNErrorUuid = connectingVPNUUID
b.stateMutex.Unlock()
// Clear cached PKCS11 PIN and SAML cookie on failure
// Clear cached one-shot authentication values on failure.
b.cachedPKCS11Mu.Lock()
b.cachedPKCS11PIN = nil
b.cachedPKCS11Mu.Unlock()
b.cachedGPSamlMu.Lock()
b.cachedGPSamlCookie = nil
b.cachedGPSamlMu.Unlock()
b.cachedOpenConnectMu.Lock()
b.cachedOpenConnectAuth = nil
b.cachedOpenConnectMu.Unlock()
b.pendingVPNSaveMu.Lock()
b.pendingVPNSave = nil
b.pendingVPNSaveMu.Unlock()
return
}
}
@@ -811,13 +1035,16 @@ func (b *NetworkManagerBackend) updateVPNConnectionState() {
b.state.VPNErrorUuid = connectingVPNUUID
b.stateMutex.Unlock()
// Clear cached PKCS11 PIN and SAML cookie
// Clear cached one-shot authentication values.
b.cachedPKCS11Mu.Lock()
b.cachedPKCS11PIN = nil
b.cachedPKCS11Mu.Unlock()
b.cachedGPSamlMu.Lock()
b.cachedGPSamlCookie = nil
b.cachedGPSamlMu.Unlock()
b.cachedOpenConnectMu.Lock()
b.cachedOpenConnectAuth = nil
b.cachedOpenConnectMu.Unlock()
b.pendingVPNSaveMu.Lock()
b.pendingVPNSave = nil
b.pendingVPNSaveMu.Unlock()
}
}
@@ -863,17 +1090,40 @@ func (b *NetworkManagerBackend) saveVPNCredentials(creds *pendingVPNCredentials)
log.Infof("[saveVPNCredentials] Saving username")
}
// Save secrets if requested
if creds.SavePassword {
secs := creds.Secrets
if len(secs) == 0 {
secs = map[string]string{"password": creds.Password}
secs := map[string]string{}
if len(creds.PersistentSecrets) > 0 {
var stored map[string]map[string]dbus.Variant
if err := connObj.Call("org.freedesktop.NetworkManager.Settings.Connection.GetSecrets", 0, "vpn").Store(&stored); err != nil {
log.Warnf("[saveVPNCredentials] GetSecrets failed: %v", err)
return
}
for field := range secs {
if storedVPN, ok := stored["vpn"]; ok {
if storedSecrets, ok := storedVPN["secrets"]; ok {
saved, _ := storedSecrets.Value().(map[string]string)
for field, value := range saved {
secs[field] = value
}
}
}
for field, value := range creds.PersistentSecrets {
secs[field] = value
data[field+"-flags"] = "0"
}
}
if creds.SavePassword {
toSave := creds.Secrets
if len(toSave) == 0 {
toSave = map[string]string{"password": creds.Password}
}
for field, value := range toSave {
secs[field] = value
data[field+"-flags"] = "0"
}
}
if len(secs) > 0 {
vpn["secrets"] = dbus.MakeVariant(secs)
log.Infof("[saveVPNCredentials] Saving %d secret field(s) with flags=0", len(secs))
log.Infof("[saveVPNCredentials] Saving %d secret field(s)", len(secs))
}
vpn["data"] = dbus.MakeVariant(data)
@@ -1,10 +1,14 @@
package network
import (
"context"
"os"
"path/filepath"
"testing"
mock_gonetworkmanager "github.com/AvengeMedia/DankMaterialShell/core/internal/mocks/github.com/Wifx/gonetworkmanager/v2"
"github.com/Wifx/gonetworkmanager/v2"
"github.com/godbus/dbus/v5"
"github.com/stretchr/testify/assert"
)
@@ -136,3 +140,137 @@ func TestNetworkManagerBackend_UpdateVPNConnectionState_EmptyUUID(t *testing.T)
backend.updateVPNConnectionState()
})
}
func TestDetectVPNAuthAction_FortinetPasswordOnly(t *testing.T) {
service := "org.freedesktop.NetworkManager.openconnect"
assert.Equal(t, "openconnect_password", detectVPNAuthAction(service, map[string]string{
"protocol": "fortinet",
"authtype": "password",
}))
assert.Empty(t, detectVPNAuthAction(service, map[string]string{
"protocol": "anyconnect",
"authtype": "password",
}))
assert.Empty(t, detectVPNAuthAction(service, map[string]string{
"protocol": "fortinet",
"authtype": "saml",
}))
}
func TestEnsureOpenConnectAgentFlags(t *testing.T) {
data := map[string]string{"protocol": "fortinet"}
assert.True(t, setOpenConnectAgentFlags(data))
assert.Equal(t, "2", data["cookie-flags"])
assert.Equal(t, "2", data["gateway-flags"])
assert.Equal(t, "2", data["gwcert-flags"])
assert.False(t, setOpenConnectAgentFlags(data))
}
func TestOpenConnectCertificateConfirmation(t *testing.T) {
binDir := t.TempDir()
openConnectPath := filepath.Join(binDir, "openconnect")
script := `#!/bin/sh
case "$*" in
*--servercert=pin-sha256:TEST-FINGERPRINT*)
printf '%s\n' "COOKIE='SVPNCOOKIE=test'" "HOST='vpn.example.test'" "FINGERPRINT='pin-sha256:TEST-FINGERPRINT'"
exit 0
;;
esac
printf '%s\n' 'Add --servercert pin-sha256:TEST-FINGERPRINT' >&2
exit 1
`
assert.NoError(t, os.WriteFile(openConnectPath, []byte(script), 0o755))
t.Setenv("PATH", binDir)
conn := mock_gonetworkmanager.NewMockConnection(t)
connPath := dbus.ObjectPath("/org/freedesktop/NetworkManager/Settings/999")
conn.EXPECT().GetSecrets("vpn").Return(gonetworkmanager.ConnectionSettings{
"vpn": {"secrets": map[string]string{"password": "test-password"}},
}, nil)
conn.EXPECT().GetPath().Return(connPath).Twice()
broker := &fakePromptBroker{
asked: make(chan PromptRequest, 1),
reply: PromptReply{},
}
backend := &NetworkManagerBackend{promptBroker: broker}
data := map[string]string{
"gateway": "vpn.example.test:443",
"protocol": "fortinet",
"authtype": "password",
"username": "test-user",
}
result, err := backend.handleOpenConnectPasswordAuth(
context.Background(), conn, "Test VPN", "test-uuid",
"org.freedesktop.NetworkManager.openconnect", data,
)
assert.NoError(t, err)
assert.Equal(t, "SVPNCOOKIE=test", result.Cookie)
assert.Equal(t, "vpn.example.test:443", result.Host)
prompt := <-broker.asked
assert.Equal(t, "server-certificate", prompt.Reason)
assert.Equal(t, []string{"pin-sha256:TEST-FINGERPRINT"}, prompt.Hints)
assert.Equal(t, map[string]string{
"certificate:vpn.example.test:443": "pin-sha256:TEST-FINGERPRINT",
}, backend.pendingVPNSave.PersistentSecrets)
}
func TestOpenConnectCertificateRotationReprompts(t *testing.T) {
binDir := t.TempDir()
openConnectPath := filepath.Join(binDir, "openconnect")
script := `#!/bin/sh
case "$*" in
*--servercert=pin-sha256:NEW-FINGERPRINT*)
printf '%s\n' "COOKIE='SVPNCOOKIE=test'" "HOST='vpn.example.test'" "FINGERPRINT='pin-sha256:NEW-FINGERPRINT'"
exit 0
;;
esac
printf '%s\n' 'Add --servercert pin-sha256:NEW-FINGERPRINT' >&2
exit 1
`
assert.NoError(t, os.WriteFile(openConnectPath, []byte(script), 0o755))
t.Setenv("PATH", binDir)
conn := mock_gonetworkmanager.NewMockConnection(t)
connPath := dbus.ObjectPath("/org/freedesktop/NetworkManager/Settings/999")
conn.EXPECT().GetSecrets("vpn").Return(gonetworkmanager.ConnectionSettings{
"vpn": {"secrets": map[string]string{
"password": "test-password",
"certificate:vpn.example.test:443": "pin-sha256:OLD-FINGERPRINT",
}},
}, nil)
conn.EXPECT().GetPath().Return(connPath).Twice()
broker := &fakePromptBroker{
asked: make(chan PromptRequest, 1),
reply: PromptReply{},
}
backend := &NetworkManagerBackend{promptBroker: broker}
data := map[string]string{
"gateway": "vpn.example.test:443",
"protocol": "fortinet",
"authtype": "password",
"username": "test-user",
}
result, err := backend.handleOpenConnectPasswordAuth(
context.Background(), conn, "Test VPN", "test-uuid",
"org.freedesktop.NetworkManager.openconnect", data,
)
assert.NoError(t, err)
assert.Equal(t, "SVPNCOOKIE=test", result.Cookie)
prompt := <-broker.asked
assert.Equal(t, "server-certificate-changed", prompt.Reason)
assert.Equal(t, []string{"pin-sha256:NEW-FINGERPRINT"}, prompt.Hints)
assert.Equal(t, map[string]string{
"certificate:vpn.example.test:443": "pin-sha256:NEW-FINGERPRINT",
}, backend.pendingVPNSave.PersistentSecrets)
assert.False(t, backend.pendingVPNSave.SavePassword)
assert.Empty(t, backend.pendingVPNSave.Secrets)
}
+18
View File
@@ -43,6 +43,8 @@ func HandleRequest(conn *models.Conn, req models.Request, manager *Manager) {
handleGetNetworkQRCode(conn, req, manager)
case "network.qrcode-content":
handleGetNetworkQRCodeContent(conn, req, manager)
case "network.generate-qrcode":
handleGenerateQRCode(conn, req)
case "network.delete-qrcode":
handleDeleteQRCode(conn, req, manager)
case "network.ethernet.info":
@@ -365,6 +367,22 @@ func handleGetNetworkQRCodeContent(conn *models.Conn, req models.Request, manage
models.Respond(conn, req.ID, content)
}
func handleGenerateQRCode(conn *models.Conn, req models.Request) {
text, err := params.String(req.Params, "text")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
return
}
paths, err := generateTextQRCode(text)
if err != nil {
models.RespondError(conn, req.ID, err.Error())
return
}
models.Respond(conn, req.ID, paths)
}
func handleDeleteQRCode(conn *models.Conn, req models.Request, _ *Manager) {
path, err := params.String(req.Params, "path")
if err != nil {
@@ -0,0 +1,64 @@
package network
import (
"crypto/sha256"
"fmt"
"os"
"time"
"github.com/yeqown/go-qrcode/v2"
"github.com/yeqown/go-qrcode/writer/standard"
)
const textQRCodeTmpPrefix = "/tmp/dank-text-qrcode-"
func generateTextQRCode(text string) ([2]string, error) {
qrc, err := qrcode.New(text)
if err != nil {
return [2]string{}, fmt.Errorf("failed to create QR code for text: %w", err)
}
pathThemed, pathNormal := textQRCodePaths(text)
if err := saveQRCodePNG(qrc, pathThemed, standard.WithBgTransparent(), standard.WithFgColorRGBHex("#ffffff")); err != nil {
return [2]string{}, err
}
if err := saveQRCodePNG(qrc, pathNormal); err != nil {
return [2]string{}, err
}
return [2]string{pathThemed, pathNormal}, nil
}
// Write to a temp file and rename into place so the shell's Image never
// observes a partially written PNG.
func saveQRCodePNG(qrc *qrcode.QRCode, path string, opts ...standard.ImageOption) error {
tmpPath := path + ".tmp"
opts = append(opts, standard.WithBuiltinImageEncoder(standard.PNG_FORMAT))
w, err := standard.New(tmpPath, opts...)
if err != nil {
return fmt.Errorf("failed to create QR code writer: %w", err)
}
if err := qrc.Save(w); err != nil {
os.Remove(tmpPath)
return fmt.Errorf("failed to save QR code: %w", err)
}
if err := os.Rename(tmpPath, path); err != nil {
os.Remove(tmpPath)
return fmt.Errorf("failed to move QR code into place: %w", err)
}
return nil
}
// Paths are unique per generation, not per text: the library's mask selection
// is non-deterministic, so regenerating the same text produces different
// bytes, and reusing a path lets the shell's URL-keyed pixmap cache serve a
// stale pattern over the new file.
func textQRCodePaths(text string) (themed, normal string) {
hash := fmt.Sprintf("%x", sha256.Sum256([]byte(text)))[:8]
nonce := time.Now().UnixNano()
themed = fmt.Sprintf("%s%s-%d-themed.png", textQRCodeTmpPrefix, hash, nonce)
normal = fmt.Sprintf("%s%s-%d-normal.png", textQRCodeTmpPrefix, hash, nonce)
return
}
+1 -1
View File
@@ -24,7 +24,7 @@ func qrCodePaths(ssid string) (themed, normal string) {
func isValidQRCodePath(path string) bool {
clean := filepath.Clean(path)
return strings.HasPrefix(clean, qrCodeTmpPrefix) && strings.HasSuffix(clean, ".png")
return (strings.HasPrefix(clean, qrCodeTmpPrefix) || strings.HasPrefix(clean, textQRCodeTmpPrefix)) && strings.HasSuffix(clean, ".png")
}
var safePathChar = regexp.MustCompile(`[^a-zA-Z0-9_-]`)
Generated
+3 -3
View File
@@ -3,11 +3,11 @@
"dank-qml-common": {
"flake": false,
"locked": {
"lastModified": 1785121997,
"narHash": "sha256-/MslqFCpjxws8DZqipEKCCTBa0m/SCV3+v1NRT6EuvQ=",
"lastModified": 1785445867,
"narHash": "sha256-l9IRsLIVZ7bV+KMuTdCga89tGt4lpdMXhQR7f/2qoe4=",
"owner": "AvengeMedia",
"repo": "dank-qml-common",
"rev": "7cc4564e5903a2955fe7da76969f20252cacf9bf",
"rev": "3b06bd9372e18bc8086cc3958d4f677d57fbfdd8",
"type": "github"
},
"original": {
+1 -1
View File
@@ -111,7 +111,7 @@
inherit version;
pname = "dms-shell";
src = ./core;
vendorHash = "sha256-ZvaOPC92ZFRPqSyLJa2TA9OUKQ3QnWCIMxrnYLGnC58=";
vendorHash = "sha256-pjaRyB6E2TZvVd5a4xcdGSRVr9Dg9wEG/5e+HdtZJCg=";
subPackages = [ "cmd/dms" ];
+17
View File
@@ -445,6 +445,23 @@ Item {
}
}
LazyLoader {
id: qrGeneratorModalLoader
active: false
Component.onCompleted: {
PopoutService.qrGeneratorModalLoader = qrGeneratorModalLoader;
}
QRGeneratorModal {
id: qrGeneratorModalItem
Component.onCompleted: {
PopoutService.qrGeneratorModal = qrGeneratorModalItem;
}
}
}
LazyLoader {
id: polkitAuthModalLoader
active: false
+17 -19
View File
@@ -25,32 +25,30 @@ Item {
required property var windowRuleModalLoader
function getPreferredBar(refPropertyName) {
if (!root.dankBarRepeater || root.dankBarRepeater.count === 0)
return null;
const focusedScreenName = BarWidgetService.getFocusedScreenName();
const loaders = Array.from({
length: root.dankBarRepeater.count
}, (_, i) => root.dankBarRepeater.itemAt(i));
const bars = [];
if (root.dankBarRepeater) {
for (let i = 0; i < root.dankBarRepeater.count; i++)
bars.push(...(root.dankBarRepeater.itemAt(i)?.item?.barVariants?.instances || []));
}
const frameBars = BarWidgetService.frameHostedBars;
for (const screenName in frameBars)
bars.push(frameBars[screenName]);
let currentBar = null;
for (const bar of bars) {
if (!bar)
continue;
for (const loader of loaders) {
const instances = loader?.item?.barVariants?.instances || [];
for (const bar of instances) {
if (!bar)
continue;
const onFocusedScreen = focusedScreenName && bar.modelData?.name === focusedScreenName;
const hasRef = !refPropertyName || !!bar[refPropertyName];
const onFocusedScreen = focusedScreenName && bar.modelData?.name === focusedScreenName;
const hasRef = !refPropertyName || !!bar[refPropertyName];
if (hasRef) {
currentBar = bar;
if (hasRef) {
currentBar = bar;
if (onFocusedScreen)
break;
}
if (onFocusedScreen)
break;
}
}
+285
View File
@@ -0,0 +1,285 @@
import QtQuick
import QtQuick.Layouts
import QtQuick.Effects
import Quickshell
import Quickshell.Io
import qs.Modals.Common
import qs.Modals.FileBrowser
import qs.Common
import qs.Services
import qs.Widgets
DankModal {
id: root
visible: false
layerNamespace: "dms:qr-generator"
property bool disablePopupTransparency: true
property bool generating: false
property string themedQrCodePath: ""
property string normalQrCodePath: ""
property string initialText: ""
property string _pendingPayload: ""
property string _generatingPayload: ""
property string _displayedPayload: ""
modalWidth: 420
modalHeight: 440
onBackgroundClicked: hide()
onOpened: {
Qt.callLater(() => {
modalFocusScope.forceActiveFocus();
const item = contentLoader.item;
if (!item)
return;
item.saveBrowserLoader = saveBrowserLoader;
if (item.textInput) {
item.textInput.text = initialText;
item.textInput.forceActiveFocus();
}
if (initialText.length > 0) {
_pendingPayload = initialText;
generateQR(initialText);
}
});
}
function show(text) {
generating = false;
initialText = text || "";
_pendingPayload = "";
_generatingPayload = "";
_displayedPayload = "";
themedQrCodePath = "";
normalQrCodePath = "";
open();
}
function hide() {
deleteQrCodeFiles(themedQrCodePath, normalQrCodePath);
themedQrCodePath = "";
normalQrCodePath = "";
close();
}
function deleteQrCodeFiles(themed, normal) {
if (themed.length > 0)
DMSService.sendRequest("network.delete-qrcode", {
path: themed
});
if (normal.length > 0)
DMSService.sendRequest("network.delete-qrcode", {
path: normal
});
}
Timer {
id: genTimer
interval: 200
repeat: false
onTriggered: root.generateQR(root._pendingPayload)
}
function generateQR(text) {
const trimmed = (text || "").trim();
if (trimmed.length === 0 || trimmed === _displayedPayload || generating)
return;
_generatingPayload = trimmed;
generating = true;
DMSService.sendRequest("network.generate-qrcode", {
text: trimmed
}, response => {
root.generating = false;
if (response.error) {
ToastService.showError(I18n.tr("Failed to generate QR code: %1").arg(JSON.stringify(response.error)));
return;
}
if (!response.result)
return;
if (root._generatingPayload !== root._pendingPayload.trim()) {
root.deleteQrCodeFiles(response.result[0], response.result[1]);
genTimer.restart();
return;
}
const oldThemed = root.themedQrCodePath;
const oldNormal = root.normalQrCodePath;
root._displayedPayload = root._generatingPayload;
root.themedQrCodePath = response.result[0];
root.normalQrCodePath = response.result[1];
root.deleteQrCodeFiles(oldThemed, oldNormal);
});
}
function onTextChanged(text) {
_pendingPayload = text;
const trimmed = text.trim();
if (trimmed.length === 0 || trimmed === _displayedPayload) {
genTimer.stop();
return;
}
genTimer.restart();
}
LazyLoader {
id: saveBrowserLoader
active: false
FileBrowserSurfaceModal {
id: saveBrowser
browserTitle: I18n.tr("Save QR Code")
browserIcon: "qr_code"
browserType: "default"
fileExtensions: ["*.png"]
allowStacking: true
saveMode: true
defaultFileName: "qrcode.png"
onFileSelected: path => {
const cleanPath = decodeURI(path.toString().replace(/^file:\/\//, ''));
copyQrCodeProcess.exec(["cp", "-f", root.normalQrCodePath, cleanPath]);
}
Process {
id: copyQrCodeProcess
stdout: StdioCollector {
onStreamFinished: {
saveBrowser.close();
}
}
}
}
}
content: Component {
Item {
id: contentItem
property alias textInput: textInput
property var saveBrowserLoader: null
anchors.fill: parent
Column {
anchors.fill: parent
anchors.margins: Theme.spacingL
spacing: Theme.spacingL
RowLayout {
id: modalTitle
width: parent.width
StyledText {
text: I18n.tr("QR Generator")
font.pixelSize: Theme.fontSizeLarge
color: Theme.surfaceText
font.weight: Font.Bold
Layout.alignment: Qt.AlignLeft
Layout.fillWidth: true
}
DankActionButton {
iconName: "close"
iconSize: Theme.iconSize - 4
iconColor: Theme.surfaceText
onClicked: root.hide()
Layout.alignment: Qt.AlignRight
}
}
DankTextField {
id: textInput
width: parent.width
placeholderText: I18n.tr("Enter text to encode")
showClearButton: true
focus: true
onTextEdited: root.onTextChanged(text)
Keys.onEscapePressed: event => {
event.accepted = true;
root.hide();
}
}
Item {
id: qrContainer
height: Math.min(parent.height - parent.spacing - modalTitle.height - textInput.height - parent.spacing * 4, 260)
width: height
anchors.horizontalCenter: parent.horizontalCenter
opacity: 1
Behavior on opacity {
NumberAnimation {
duration: 80
easing.type: Easing.OutCubic
}
}
Image {
id: qrCodeImg
anchors.fill: parent
source: root.themedQrCodePath
fillMode: Image.PreserveAspectFit
asynchronous: true
cache: false
visible: false
onSourceChanged: qrContainer.opacity = 0
onStatusChanged: {
if (status === Image.Ready)
qrContainer.opacity = 1;
}
}
MultiEffect {
source: qrCodeImg
anchors.fill: qrCodeImg
colorization: 1.0
colorizationColor: Theme.primary
}
}
RowLayout {
width: parent.width
visible: root.themedQrCodePath.length > 0
Layout.alignment: Qt.AlignHCenter
Item {
Layout.fillWidth: true
}
DankButton {
text: I18n.tr("Save")
iconName: "save"
backgroundColor: Theme.surfaceContainer
textColor: Theme.surfaceText
onClicked: {
contentItem.saveBrowserLoader.active = true;
if (contentItem.saveBrowserLoader.item) {
contentItem.saveBrowserLoader.item.open();
}
}
}
DankButton {
text: I18n.tr("Copy")
iconName: "content_copy"
backgroundColor: Theme.primary
textColor: Theme.onPrimary
onClicked: {
if (root.normalQrCodePath.length > 0)
DMSService.sendRequest("clipboard.copyFile", {
filePath: root.normalQrCodePath
});
}
}
Item {
Layout.fillWidth: true
}
}
}
}
}
}
+83 -3
View File
@@ -31,6 +31,7 @@ DankModal {
property string promptToken: ""
property string promptReason: ""
property var promptFields: []
property var promptHints: []
property string promptSetting: ""
property bool isVpnPrompt: false
@@ -40,17 +41,21 @@ DankModal {
property var fieldsInfo: []
property var secretValues: ({})
readonly property bool isCertificateChangedPrompt: promptReason === "server-certificate-changed"
readonly property bool isCertificatePrompt: promptReason === "server-certificate" || isCertificateChangedPrompt
readonly property string serverCertificateFingerprint: promptHints.length > 0 ? promptHints[0] : ""
readonly property bool showUsernameField: requiresEnterprise && !isVpnPrompt && fieldsInfo.length === 0
readonly property bool showPasswordField: fieldsInfo.length === 0
readonly property bool showPasswordField: fieldsInfo.length === 0 && !isCertificatePrompt
readonly property bool showAnonField: requiresEnterprise && !isVpnPrompt
readonly property bool showDomainField: requiresEnterprise && !isVpnPrompt
readonly property bool showSavePasswordCheckbox: (isVpnPrompt || fieldsInfo.length > 0) && promptReason !== "pkcs11"
readonly property bool showSavePasswordCheckbox: (isVpnPrompt || fieldsInfo.length > 0) && promptReason !== "pkcs11" && !isCertificatePrompt
readonly property int inputFieldHeight: Theme.fontSizeMedium + Theme.spacingL * 2
readonly property int inputFieldWithSpacing: inputFieldHeight + Theme.spacingM
readonly property int checkboxRowHeight: Theme.fontSizeMedium + Theme.spacingS
readonly property int headerHeight: Theme.fontSizeLarge + Theme.fontSizeMedium + Theme.spacingM * 2
readonly property int buttonRowHeight: 36 + Theme.spacingM
readonly property int certificateWarningHeight: certificateWarningColumn.implicitHeight + Theme.spacingM * 2
property int calculatedHeight: {
let h = headerHeight + buttonRowHeight + Theme.spacingL * 2;
@@ -67,10 +72,16 @@ DankModal {
h += inputFieldWithSpacing;
if (showSavePasswordCheckbox)
h += checkboxRowHeight;
if (isCertificatePrompt)
h += certificateWarningHeight + Theme.spacingM;
return h;
}
function focusFirstField() {
if (isCertificatePrompt) {
connectButton.forceActiveFocus();
return;
}
if (fieldsInfo.length > 0) {
if (dynamicFieldsRepeater.count > 0) {
const firstItem = dynamicFieldsRepeater.itemAt(0);
@@ -101,6 +112,7 @@ DankModal {
promptToken = "";
promptReason = "";
promptFields = [];
promptHints = [];
promptSetting = "";
isVpnPrompt = false;
connectionName = "";
@@ -127,6 +139,7 @@ DankModal {
promptToken = "";
promptReason = "";
promptFields = [];
promptHints = [];
promptSetting = "";
isVpnPrompt = false;
connectionName = "";
@@ -145,6 +158,7 @@ DankModal {
promptToken = token;
promptReason = reason;
promptFields = fields || [];
promptHints = hints || [];
promptSetting = setting || "802-11-wireless-security";
connectionType = connType || "802-11-wireless";
connectionName = connName || ssid || "";
@@ -324,6 +338,8 @@ DankModal {
text: {
if (promptReason === "pkcs11")
return I18n.tr("Smartcard Authentication");
if (isCertificatePrompt)
return I18n.tr("Untrusted VPN certificate", "Title for VPN server certificate trust confirmation");
if (isVpnPrompt)
return I18n.tr("Connect to VPN");
if (isHiddenNetwork)
@@ -343,6 +359,8 @@ DankModal {
text: {
if (promptReason === "pkcs11")
return I18n.tr("Enter PIN for ") + wifiPasswordSSID;
if (isCertificatePrompt)
return wifiPasswordSSID;
if (fieldsInfo.length > 0)
return I18n.tr("Enter credentials for ") + wifiPasswordSSID;
if (isVpnPrompt)
@@ -383,6 +401,45 @@ DankModal {
}
}
Rectangle {
id: certificateWarningBox
readonly property color warningTone: isCertificateChangedPrompt ? Theme.error : Theme.warning
width: parent.width
height: certificateWarningHeight
radius: Theme.cornerRadius
color: Theme.withAlpha(warningTone, 0.12)
border.color: Theme.withAlpha(warningTone, 0.5)
border.width: 1
visible: isCertificatePrompt
Column {
id: certificateWarningColumn
anchors.fill: parent
anchors.margins: Theme.spacingM
spacing: Theme.spacingS
StyledText {
width: parent.width
text: isCertificateChangedPrompt ? I18n.tr("The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.", "Warning shown when a trusted VPN server certificate no longer matches") : I18n.tr("Only continue if you recognize this server certificate fingerprint.", "Warning shown before trusting an unverified VPN server certificate")
wrapMode: Text.Wrap
font.pixelSize: Theme.fontSizeSmall
color: Theme.surfaceText
}
StyledText {
width: parent.width
text: serverCertificateFingerprint
wrapMode: Text.WrapAnywhere
font.family: SettingsData.monoFontFamily
font.pixelSize: Theme.fontSizeSmall
color: certificateWarningBox.warningTone
}
}
}
Rectangle {
width: parent.width
height: inputFieldHeight
@@ -690,10 +747,15 @@ DankModal {
}
Rectangle {
id: connectButton
width: Math.max(80, connectText.contentWidth + Theme.spacingM * 2)
height: 36
radius: Theme.cornerRadius
color: connectArea.containsMouse ? Qt.darker(Theme.primary, 1.1) : Theme.primary
border.color: activeFocus ? Theme.surfaceText : "transparent"
border.width: activeFocus ? 2 : 0
activeFocusOnTab: true
enabled: {
if (fieldsInfo.length > 0) {
for (var i = 0; i < fieldsInfo.length; i++) {
@@ -705,6 +767,8 @@ DankModal {
}
return true;
}
if (isCertificatePrompt)
return serverCertificateFingerprint.length > 0;
if (isVpnPrompt)
return passwordInput.text.length > 0;
if (isHiddenNetwork)
@@ -716,7 +780,7 @@ DankModal {
StyledText {
id: connectText
anchors.centerIn: parent
text: I18n.tr("Connect")
text: isCertificatePrompt ? I18n.tr("Trust", "Button that approves a VPN server certificate fingerprint") : I18n.tr("Connect")
font.pixelSize: Theme.fontSizeMedium
color: Theme.background
font.weight: Font.Medium
@@ -731,6 +795,22 @@ DankModal {
onClicked: submitCredentialsAndClose()
}
Keys.onReturnPressed: event => {
if (enabled)
submitCredentialsAndClose();
event.accepted = true;
}
Keys.onEnterPressed: event => {
if (enabled)
submitCredentialsAndClose();
event.accepted = true;
}
Keys.onSpacePressed: event => {
if (enabled)
submitCredentialsAndClose();
event.accepted = true;
}
Behavior on color {
ColorAnimation {
duration: Theme.shortDuration
@@ -469,6 +469,8 @@ PluginComponent {
}
MouseArea {
id: peerMouseArea
z: -1
anchors.fill: parent
hoverEnabled: true
@@ -41,7 +41,11 @@ Rectangle {
property bool hasWifiAvailable: (NetworkService.wifiDevices?.length ?? 0) > 0
property bool hasBothConnectionTypes: hasEthernetAvailable && hasWifiAvailable
property int maxPinnedNetworks: 3
readonly property int hotspotContentHeight: currentPreferenceIndex === 1 && NetworkService.hotspotAvailable ? 56 + Theme.spacingS : 0
// Hosting on the only wifi adapter with no ethernet uplink just drops connectivity,
// so the hotspot row only shows where sharing can actually work (or is already on).
readonly property bool hotspotRelevant: NetworkService.hotspotEnabled || NetworkService.hotspotActivating || NetworkService.hotspotBusy || NetworkService.ethernetConnected || (NetworkService.wifiDevices?.length ?? 0) > 1
readonly property bool showHotspotRow: currentPreferenceIndex === 1 && NetworkService.hotspotAvailable && hotspotRelevant
readonly property int hotspotContentHeight: showHotspotRow ? 56 + Theme.spacingS : 0
property var hotspotStartConfirm: ConfirmModal {}
@@ -184,7 +188,7 @@ Rectangle {
anchors.right: parent.right
anchors.margins: Theme.spacingM
anchors.topMargin: Theme.spacingM
visible: currentPreferenceIndex === 1 && NetworkService.hotspotAvailable
visible: root.showHotspotRow
height: visible ? 56 : 0
Rectangle {
+9 -1
View File
@@ -66,9 +66,17 @@ Scope {
IdleService.lockPowerOffRequested = false;
}
// Avoid startup lock when using dms-greeter (#2952)
function freshGreeterLogin() {
const authTime = Number(Quickshell.env("DMS_GREETER_AUTH_TIME") || 0);
if (!authTime)
return false;
return (Date.now() / 1000 - authTime) < 120;
}
Component.onCompleted: {
IdleService.lockComponent = this;
if (SettingsData.lockAtStartup)
if (SettingsData.lockAtStartup && !freshGreeterLogin())
lock();
}
+33 -1
View File
@@ -932,7 +932,9 @@ Item {
pam.passwd.start();
}
}
Keys.onPressed: event => {
Keys.onPressed: event => handleKey(event)
function handleKey(event) {
if (demoMode) {
return;
}
@@ -1042,6 +1044,36 @@ Item {
}
}
// Wayland IMEs commit unconsumed printable keys as text-input text
// (ibus ibuswaylandim.c) instead of forwarding raw keys, so an active
// text input must exist to receive them; the hidden-text hints put
// fcitx5 into plain keyboard passthrough (CapabilityFlag::Password).
// Raw keys stay in handleKey (#2950).
TextInput {
id: imeCommitSink
focus: true
width: 1
height: 1
opacity: 0
echoMode: TextInput.Password
inputMethodHints: Qt.ImhHiddenText | Qt.ImhSensitiveData | Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase
Keys.onPressed: event => {
passwordField.handleKey(event);
if (!event.accepted && (event.modifiers & (Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier)))
event.accepted = true;
}
onTextChanged: {
if (text.length === 0)
return;
const committed = text;
text = "";
if (demoMode || root.unlocking || pam.passwd.active)
return;
passwordField.insertText(committed);
}
}
Component.onCompleted: {
if (!demoMode) {
forceActiveFocus();
@@ -29,6 +29,28 @@ Item {
readonly property bool clickThrough: instanceData?.config?.clickThrough ?? false
readonly property bool syncPositionAcrossScreens: instanceData?.config?.syncPositionAcrossScreens ?? false
// Unmapping with the widget still in the last buffer leaves a stale image in
// Hyprland's blur cache behind transparent tiled windows (#2955), so hide the
// content, present a transparent frame, then unmap.
readonly property bool contentShowing: widgetEnabled && activeComponent !== null && (!showOnOverviewOnly || overviewActive)
property bool surfaceLingering: false
onContentShowingChanged: {
if (contentShowing) {
lingerTimer.stop();
surfaceLingering = false;
return;
}
surfaceLingering = true;
lingerTimer.restart();
}
Timer {
id: lingerTimer
interval: 64
onTriggered: root.surfaceLingering = false
}
Connections {
target: PluginService
enabled: !root.isBuiltin
@@ -273,13 +295,7 @@ Item {
PanelWindow {
id: widgetWindow
screen: root.screen
visible: {
if (!root.widgetEnabled || root.activeComponent === null)
return false;
if (root.showOnOverviewOnly)
return root.overviewActive;
return true;
}
visible: root.contentShowing || root.surfaceLingering
color: "transparent"
Region {
@@ -358,6 +374,7 @@ Item {
id: contentLoader
anchors.fill: parent
active: root.widgetEnabled && root.activeComponent !== null
visible: root.contentShowing
sourceComponent: root.activeComponent
opacity: 0
+1 -1
View File
@@ -869,7 +869,7 @@ Item {
readonly property var tooltipTexts: ({
"dms": I18n.tr("DMS shell actions (launcher, clipboard, etc.)"),
"compositor": I18n.tr("Niri compositor actions (focus, move, etc.)"),
"compositor": I18n.tr("Compositor actions (focus, move, etc.)", "keybind action type tooltip"),
"spawn": I18n.tr("Run a program (e.g., firefox, kitty)"),
"shell": I18n.tr("Run a shell command (e.g., notify-send)")
})
+1 -1
View File
@@ -822,7 +822,7 @@ Item {
spacing: Theme.spacingS
Repeater {
model: ["dms_settings", "dms_notepad", "dms_sysmon", "dms_settings_search", "dms_clipboard_search", "dms_colorpicker"]
model: ["dms_settings", "dms_notepad", "dms_sysmon", "dms_settings_search", "dms_clipboard_search", "dms_colorpicker", "dms_qr_generator"]
delegate: Rectangle {
id: pluginDelegate
@@ -2780,7 +2780,7 @@ Item {
tags: ["matugen", "vscode", "code", "template"]
settingKey: "matugenTemplateVscode"
text: "VS Code"
description: getTemplateDescription("vscode", "")
description: getTemplateDescription("vscode", I18n.tr("Requires the DMS Theme extension from the editor marketplace", "vscode matugen template description"))
descriptionColor: getTemplateDescriptionColor("vscode")
visible: SettingsData.runDmsMatugenTemplates
checked: SettingsData.matugenTemplateVscode
+45 -9
View File
@@ -210,6 +210,19 @@ Singleton {
defaultTrigger: "",
isLauncher: false
},
"dms_qr_generator": {
id: "dms_qr_generator",
name: I18n.tr("QR Generator"),
icon: "svg+corner:" + dmsLogoPath + "|qr_code",
cornerIcon: "qr_code",
comment: "DMS",
action: "ipc:qr-generator",
categories: ["Utility"],
defaultTrigger: "qrg",
isLauncher: true,
viewMode: "list",
viewModeEnforced: true
},
"dms_settings_search": {
id: "dms_settings_search",
name: I18n.tr("Settings Search"),
@@ -244,7 +257,7 @@ Singleton {
if (!SettingsData.getBuiltInPluginSetting(pluginId, "enabled", true))
continue;
const plugin = builtInPlugins[pluginId];
if (plugin.isLauncher)
if (plugin.isLauncher && !plugin.action)
continue;
apps.push({
name: plugin.name,
@@ -309,6 +322,20 @@ Singleton {
}));
}
if (pluginId === "dms_qr_generator") {
const text = (query || "").toString().trim();
return [
{
name: text.length > 0 ? text : I18n.tr("Enter text to encode"),
icon: "material:qr_code",
comment: I18n.tr("QR Generator"),
action: "qr_generate:" + text,
isBuiltInLauncher: true,
builtInPluginId: pluginId
}
];
}
if (pluginId !== "dms_settings_search")
return [];
@@ -340,14 +367,20 @@ Singleton {
return false;
const parts = item.action.split(":");
if (parts[0] !== "settings_nav")
return false;
const tabIndex = parseInt(parts[1]);
const section = parts.slice(2).join(":");
SettingsSearchService.navigateToSection(section);
PopoutService.openSettingsWithTabIndex(tabIndex);
return true;
switch (parts[0]) {
case "settings_nav":
{
const tabIndex = parseInt(parts[1]);
const section = parts.slice(2).join(":");
SettingsSearchService.navigateToSection(section);
PopoutService.openSettingsWithTabIndex(tabIndex);
return true;
}
case "qr_generate":
PopoutService.showQRGeneratorModal(parts.slice(1).join(":"));
return true;
}
return false;
}
function getCoreApps(query) {
@@ -378,6 +411,9 @@ Singleton {
case "color-picker":
PopoutService.showColorPicker();
return true;
case "qr-generator":
PopoutService.showQRGeneratorModal();
return true;
}
return false;
}
@@ -793,6 +793,13 @@ Singleton {
autoRefreshEnabled = false;
}
Timer {
interval: 10000
repeat: true
running: root.autoScan && root.networkAvailable && root.wifiEnabled
onTriggered: root.scanWifi()
}
function fetchWiredNetworkInfo(uuid) {
if (!networkAvailable)
return;
+2
View File
@@ -388,6 +388,8 @@ Singleton {
const binds = bindsData[cat];
for (var i = 0; i < binds.length; i++) {
const bind = binds[i];
if (currentProvider === "hyprland" && bind.action && bind.action.startsWith("exec "))
bind.action = "spawn " + bind.action.slice(5);
const targetCat = Actions.isDmsAction(bind.action) ? "DMS" : cat;
if (!processed[targetCat])
processed[targetCat] = [];
+9
View File
@@ -47,6 +47,8 @@ Singleton {
property var wifiPasswordModalLoader: null
property var wifiQRCodeModal: null
property var wifiQRCodeModalLoader: null
property var qrGeneratorModal: null
property var qrGeneratorModalLoader: null
property var polkitAuthModal: null
property var polkitAuthModalLoader: null
property var bluetoothPairingModal: null
@@ -891,6 +893,13 @@ Singleton {
wifiQRCodeModal.show(ssid);
}
function showQRGeneratorModal(initialText) {
if (qrGeneratorModalLoader)
qrGeneratorModalLoader.active = true;
if (qrGeneratorModal)
qrGeneratorModal.show(initialText || "");
}
function showHiddenNetworkModal() {
if (wifiPasswordModalLoader)
wifiPasswordModalLoader.active = true;
+59 -2
View File
@@ -219,6 +219,64 @@ Singleton {
return envObj;
}
function splitShellArgs(str) {
const args = [];
let current = "";
let hasToken = false;
let quote = "";
let escaped = false;
for (const ch of str) {
if (escaped) {
current += ch;
escaped = false;
continue;
}
switch (quote) {
case "'":
if (ch === "'") {
quote = "";
continue;
}
current += ch;
continue;
case "\"":
switch (ch) {
case "\"":
quote = "";
continue;
case "\\":
escaped = true;
continue;
}
current += ch;
continue;
}
switch (ch) {
case "\\":
escaped = true;
continue;
case "'":
case "\"":
quote = ch;
hasToken = true;
continue;
case " ":
case "\t":
case "\n":
if (!hasToken && current.length === 0)
continue;
args.push(current);
current = "";
hasToken = false;
continue;
}
current += ch;
}
if (current.length > 0 || hasToken)
args.push(current);
return args;
}
function launchDesktopEntry(desktopEntry, useNvidia) {
if (!desktopEntry || !desktopEntry.command)
return;
@@ -232,8 +290,7 @@ Singleton {
cmd = [nvidiaCommand].concat(cmd);
if (override?.extraFlags) {
const extraArgs = override.extraFlags.trim().split(/\s+/).filter(arg => arg.length > 0);
cmd = cmd.concat(extraArgs);
cmd = cmd.concat(splitShellArgs(override.extraFlags));
}
const userPrefix = SettingsData.launchPrefix?.trim() || "";
@@ -379,6 +379,9 @@ Item {
animationsEnabled = true;
shouldBeVisible = true;
// Content-sized popouts lay out when contentWindow maps, while the geometry
// handlers are still gated off. Re-snapshot so the surface isn't left short.
_setSettledSurfaceGeometry();
if (screen) {
PopoutManager.showPopout(popoutHandle);
opened();
@@ -1,5 +1,5 @@
[ColorScheme]
active_colors={{colors.on_surface.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface_container.default.hex}}, {{colors.outline.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.outline_variant.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.on_primary.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.background.default.hex}}, {{colors.background.default.hex}}, {{colors.shadow.default.hex}}, {{colors.primary.default.hex}}, {{colors.on_primary.default.hex}}, {{colors.secondary.default.hex}}, {{colors.secondary.default.hex}}, {{colors.surface_container_low.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}
active_colors={{colors.on_surface.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface_container.default.hex}}, {{colors.outline.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.outline_variant.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.background.default.hex}}, {{colors.background.default.hex}}, {{colors.shadow.default.hex}}, {{colors.primary.default.hex}}, {{colors.on_primary.default.hex}}, {{colors.secondary.default.hex}}, {{colors.secondary.default.hex}}, {{colors.surface_container_low.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}
disabled_colors={{colors.on_surface_variant.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.surface_container.default.hex}}, {{colors.outline.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.outline_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.shadow.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}
inactive_colors={{colors.on_surface_variant.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface_container.default.hex}}, {{colors.outline.default.hex}}, {{colors.surface_variant.default.hex}}, {{colors.outline_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface.default.hex}}, {{colors.shadow.default.hex}}, {{colors.secondary.default.hex}}, {{colors.on_secondary.default.hex}}, {{colors.secondary.default.hex}}, {{colors.secondary.default.hex}}, {{colors.surface_container_low.default.hex}}, {{colors.surface.default.hex}}, {{colors.surface.default.hex}}, {{colors.on_surface_variant.default.hex}}, {{colors.on_surface_variant.default.hex}}
File diff suppressed because it is too large Load Diff
+207 -102
View File
@@ -198,7 +198,7 @@
"2 seconds": "ثانيتان"
},
"2.4 GHz": {
"2.4 GHz": ""
"2.4 GHz": "2.4 GHz"
},
"20 minutes": {
"20 minutes": "20 دقيقة"
@@ -264,7 +264,7 @@
"45 seconds": "45 ثانية"
},
"5 GHz": {
"5 GHz": ""
"5 GHz": "5 GHz"
},
"5 min before": {
"5 min before": "قبل 5 دقائق"
@@ -335,6 +335,9 @@
"About": {
"About": "حول"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "لون التمييز"
},
@@ -378,7 +381,7 @@
"Activate the DMS greeter? A terminal will open for sudo authentication. Run Sync after activation to apply your settings.": "هل تريد تفعيل شاشة ترحيب DMS؟ سيتم فتح نافذة طرفية لمصادقة sudo. قم بتشغيل 'مزامنة' (Sync) بعد التفعيل لتطبيق إعداداتك."
},
"Activates immediately": {
"Activates immediately": ""
"Activates immediately": "يتفعل فوراً"
},
"Activation": {
"Activation": "التنشيط"
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "المحولات"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "عرض الوسائط التكيفي"
},
@@ -423,7 +429,7 @@
"Add \"%1\" to the %2 group? They must log out and back in, then run dms greeter sync --profile to publish their login-screen theme.": "هل تريد إضافة \"%1\" إلى مجموعة %2؟ يجب عليهم تسجيل الخروج ثم الدخول مرة أخرى، ثم تشغيل dms greeter sync --profile لنشر سمة شاشة تسجيل الدخول الخاصة بهم."
},
"Add \"%1\" to the %2 group? They must log out and back in, then run dms-greeter sync --profile to publish their login-screen theme.": {
"Add \"%1\" to the %2 group? They must log out and back in, then run dms-greeter sync --profile to publish their login-screen theme.": ""
"Add \"%1\" to the %2 group? They must log out and back in, then run dms-greeter sync --profile to publish their login-screen theme.": "هل تريد إضافة \"%1\" إلى مجموعة %2؟ يجب عليهم تسجيل الخروج وإعادة تسجيل الدخول، ثم تشغيل dms-greeter sync --profile لنشر سمة شاشة تسجيل الدخول الخاصة بهم."
},
"Add Bar": {
"Add Bar": "إضافة شريط"
@@ -477,7 +483,7 @@
"Add the new user to the %1 group so they can run dms greeter sync --profile.": "أضف المستخدم الجديد إلى مجموعة %1 حتى يتمكن من تشغيل dms greeter sync --profile."
},
"Add the new user to the %1 group so they can run dms-greeter sync --profile.": {
"Add the new user to the %1 group so they can run dms-greeter sync --profile.": ""
"Add the new user to the %1 group so they can run dms-greeter sync --profile.": "أضف المستخدم الجديد إلى المجموعة %1 ليتمكن من تشغيل dms-greeter sync --profile."
},
"Add the new user to the %1 group so they can use sudo.": {
"Add the new user to the %1 group so they can use sudo.": "أضف المستخدم الجديد إلى مجموعة %1 حتى يتمكن من استخدام sudo."
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "إضافة إلى التشغيل التلقائي"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "ضبط ارتفاع الشريط عبر الحشوة الداخلية"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "تعديل عدد الأعمدة في وضع العرض الشبكي."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "ضبط مستوى الصوت لكل خطوة تمرير"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "عرض دائم عند وجود شاشة واحدة متصلة فقط"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "استخدم هذا التطبيق دائمًا لـ %1"
},
@@ -660,7 +678,7 @@
"Applications and commands to start automatically when you log in": "التطبيقات والأوامر التي تبدأ تلقائياً عند تسجيل الدخول"
},
"Applies on the next greeter sync": {
"Applies on the next greeter sync": ""
"Applies on the next greeter sync": "يُطبق عند مزامنة الgreeter التالية"
},
"Apply Changes": {
"Apply Changes": "تطبيق التغييرات"
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": "تم التحقق بنجاح!"
},
"Authenticating...": {
"Authenticating...": "جاري المصادقة..."
},
"Authentication": {
"Authentication": "المصادقة"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "تتطلب تغييرات المصادقة صلاحيات sudo. جاري فتح المحطة الطرفية حتى تتمكن من استخدام كلمة المرور أو بصمة الإصبع."
},
"Authentication error - try again": {
"Authentication error - try again": "خطأ في المصادقة - حاول مرة أخرى"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": "فشل التحقق من الهوية - المحاولة %1 من %2"
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": "فشل التحقق - قد يؤدي ذلك إلى قفل حسابك"
},
"Authentication failed - try again": {
"Authentication failed - try again": "فشل التحقق - يرجى المحاولة مرة أخرى"
},
"Authorize": {
"Authorize": "منح الإذن"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "إخفاء شريط التطبيقات تلقائياً"
},
"Auto-login": {
"Auto-login": "تسجيل الدخول التلقائي"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": "تغيير تسجيل الدخول التلقائي يحتاج إلى مزامنة"
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "متاح في أوضاع العرض التفصيلي والتوقعات"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": "بانتظار التحقق ببصمة الإصبع"
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": "بانتظار التحقق ببصمة الإصبع أو مفتاح الأمان"
},
"Awaiting security key authentication": {
"Awaiting security key authentication": "بانتظار التحقق بمفتاح الأمان"
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "رجوع"
},
"Back to user list": {
"Back to user list": "العودة إلى قائمة المستخدمين"
},
"Backend": {
"Backend": "النظام الخلفي"
},
@@ -1035,7 +1023,7 @@
"Balanced palette with focused accents (default).": "ألوان متوازنة بلمسات محددة (افتراضي)."
},
"Band": {
"Band": ""
"Band": "Band"
},
"Bar": {
"Bar": "شريط المهام"
@@ -1293,7 +1281,7 @@
"Calendar Backend": "الخلفية التقويمية"
},
"Calls / Headset": {
"Calls / Headset": ""
"Calls / Headset": "المكالمات / سماعة الرأس"
},
"Camera": {
"Camera": "الكاميرا"
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": "اختر مجلد خلفية الشاشة"
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "اختر مكان ظهور النوافذ المنبثقة للإشعارات على الشاشة"
},
@@ -1581,16 +1572,16 @@
"Close Window": "إغلاق النافذة"
},
"Codec switched successfully": {
"Codec switched successfully": ""
"Codec switched successfully": "تم تبديل الترميز بنجاح"
},
"Codec switching is unavailable because WirePlumber was not found": {
"Codec switching is unavailable because WirePlumber was not found": ""
"Codec switching is unavailable because WirePlumber was not found": "تبديل الترميز غير متاح لأن WirePlumber لم يتم العثور عليه"
},
"Codec switching is unavailable because pactl was not found": {
"Codec switching is unavailable because pactl was not found": "تبديل الترميز غير متاح لأنه لم يتم العثور على pactl"
},
"Codec switching is unavailable. WirePlumber wpexec was not found.": {
"Codec switching is unavailable. WirePlumber wpexec was not found.": ""
"Codec switching is unavailable. WirePlumber wpexec was not found.": "تبديل الترميز غير متاح. لم يتم العثور على WirePlumber wpexec."
},
"Color": {
"Color": "اللون"
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "إعدادات مدير النوافذ"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "تنسيق التكوين"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "التباين"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "مساهم"
},
@@ -1905,7 +1902,7 @@
"Corners & Background": "الزوايا والخلفية"
},
"Couldn't load hotspot password": {
"Couldn't load hotspot password": ""
"Couldn't load hotspot password": "تعذر تحميل كلمة مرور نقطة الاتصال"
},
"Count Only": {
"Count Only": "العد فقط"
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "تعطيل المخرج"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "غير نشط"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "الباب مفتوح"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": "اسحب أداة من مقبضها إلى هنا لإعادة ترتيبها أو إسقاطها في مجموعة أخرى"
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "ديناميكي: منحنى زنبركي مع تجاوز - الدخول يتجاوز هدفه لفترة وجيزة ثم يستقر. معبر وحيوي."
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": "كشف حافة التمرير"
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "إفراغ المهملات (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "تمكين عمق لون 10 بت للحصول على نطاق ألوان أوسع ودعم HDR"
},
@@ -2706,7 +2721,7 @@
"Enable WiFi": "تمكين الـ Wi-Fi"
},
"Enable WiFi before starting the hotspot.": {
"Enable WiFi before starting the hotspot.": ""
"Enable WiFi before starting the hotspot.": "قم بتمكين الواي فاي قبل بدء نقطة الاتصال."
},
"Enable a custom override below to set per-bar shadow intensity, opacity, and color.": {
"Enable a custom override below to set per-bar shadow intensity, opacity, and color.": "قم بتفعيل تجاوز مخصص أدناه لضبط شدة الظل، والشفافية، واللون لكل شريط."
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "ادخال كلمة المرور ل "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "أدخل مفتاح المرور هذا في "
},
@@ -2934,7 +2952,7 @@
"Failed to check pin limit": "فشل التحقق من حد التثبيت"
},
"Failed to configure hotspot": {
"Failed to configure hotspot": ""
"Failed to configure hotspot": "فشل في إعداد نقطة الاتصال"
},
"Failed to connect VPN": {
"Failed to connect VPN": "فشل الاتصال بشبكة VPN"
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "فشل جلب رمز QR للشبكة: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "فشل في إنشاء تجاوز systemd"
},
@@ -3066,7 +3087,7 @@
"Failed to run 'dms greeter status'. Ensure DMS is installed and dms is in PATH.": "فشل تشغيل 'dms greeter status'. تأكد من تثبيت DMS وأن dms موجود في مسار النظام (PATH)."
},
"Failed to run 'dms-greeter status'. Ensure the dms-greeter package is installed.": {
"Failed to run 'dms-greeter status'. Ensure the dms-greeter package is installed.": ""
"Failed to run 'dms-greeter status'. Ensure the dms-greeter package is installed.": "فشل تشغيل 'dms-greeter status'. تأكد من تثبيت حزمة dms-greeter."
},
"Failed to save VPN credentials": {
"Failed to save VPN credentials": "فشل حفظ بيانات اعتماد VPN"
@@ -3123,13 +3144,13 @@
"Failed to start connection to %1": "فشل بدء الاتصال بـ %1"
},
"Failed to start hotspot": {
"Failed to start hotspot": ""
"Failed to start hotspot": "فشل بدء نقطة الاتصال"
},
"Failed to stop hotspot": {
"Failed to stop hotspot": ""
"Failed to stop hotspot": "فشل إيقاف نقطة الاتصال"
},
"Failed to switch codec": {
"Failed to switch codec": ""
"Failed to switch codec": "تعذر تبديل الترميز"
},
"Failed to unpin entry": {
"Failed to unpin entry": "فشل في إلغاء تثبيت الإدخال"
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "الأعلام"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": "Flatpak"
},
@@ -3621,7 +3648,7 @@
"Greeter group members can sync their login-screen theme with dms greeter sync --profile after logging out and back in.": "يمكن لأعضاء مجموعة الترحيب مزامنة سمة شاشة تسجيل الدخول الخاصة بهم باستخدام dms greeter sync --profile بعد تسجيل الخروج والدخول مرة أخرى."
},
"Greeter group members can sync their login-screen theme with dms-greeter sync --profile after logging out and back in.": {
"Greeter group members can sync their login-screen theme with dms-greeter sync --profile after logging out and back in.": ""
"Greeter group members can sync their login-screen theme with dms-greeter sync --profile after logging out and back in.": "يمكن لأعضاء مجموعة Greeter مزامنة سمة شاشة تسجيل الدخول الخاصة بهم باستخدام الأمر dms-greeter sync --profile بعد تسجيل الخروج والدخول مرة أخرى."
},
"Greeter group:": {
"Greeter group:": "مجموعة الترحيب:"
@@ -3837,22 +3864,22 @@
"Hotkey overlay title (optional)": "عنوان تراكب اختصار لوحة المفاتيح (اختياري)"
},
"Hotspot": {
"Hotspot": ""
"Hotspot": "نقطة اتصال"
},
"Hotspot activation failed.": {
"Hotspot activation failed.": ""
"Hotspot activation failed.": "فشل تنشيط نقطة الاتصال."
},
"Hotspot name": {
"Hotspot name": ""
"Hotspot name": "اسم نقطة الاتصال"
},
"Hotspot saved": {
"Hotspot saved": ""
"Hotspot saved": "تم حفظ نقطة الاتصال"
},
"Hotspot started": {
"Hotspot started": ""
"Hotspot started": "تم تشغيل نقطة الاتصال"
},
"Hotspot stopped": {
"Hotspot stopped": ""
"Hotspot stopped": "تم إيقاف نقطة الاتصال"
},
"Hour": {
"Hour": "الساعة"
@@ -3912,7 +3939,7 @@
"IP address or hostname": "عنوان IP أو اسم المضيف"
},
"IP sharing setup failed. Check that dnsmasq is installed.": {
"IP sharing setup failed. Check that dnsmasq is installed.": ""
"IP sharing setup failed. Check that dnsmasq is installed.": "فشل إعداد مشاركة بروتوكول الإنترنت (IP). تأكد من تثبيت dnsmasq."
},
"ISO Date": {
"ISO Date": "تاريخ ISO"
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "إذا كان الحقل مخفياً، فسيظهر بمجرد الضغط على مفتاح."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "تجاهل تمامًا"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "الاحتفاظ بتعديلاتي"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "الاحتفاظ في الشريط"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "القسم الأيسر"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "خفيف"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "مقفل"
},
"Logging in...": {
"Logging in...": "جاري تسجيل الدخول..."
},
"Login": {
"Login": "تسجيل الدخول"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "التحكم في مستوى صوت الميكروفون"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "القسم الأوسط"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "نقاط التحميل"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "نقرات الفأرة تمر عبر الشريط إلى النوافذ خلفه"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "أصلي: مصير النظام الأساسي (FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "تمرير لوحة اللمس الطبيعي"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "بدون تقريب الزوايا"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "بدون ظل"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "لم يتم الكشف عنه"
},
"Not listed?": {
"Not listed?": "غير مدرج؟"
},
"Not paired": {
"Not paired": "غير مقترن"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "مفعل"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "مفعل للأبد"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "تعديل حرارة الألوان بناءً على قواعد الوقت أو الموقع فقط."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": "فقط عند استخدام البطارية"
},
@@ -5511,7 +5562,7 @@
"Open in terminal": "فتح في الطرفية"
},
"Open network": {
"Open network": ""
"Open network": "شبكة مفتوحة"
},
"Open search bar to find text": {
"Open search bar to find text": "افتح شريط البحث للعثور على نص"
@@ -5541,7 +5592,7 @@
"Opens the connected launcher in Connected Frame Mode.": "يفتح المشغل المتصل في وضع الإطار المتصل."
},
"Optional": {
"Optional": ""
"Optional": "اختياري"
},
"Optional description": {
"Optional description": "وصف اختياري"
@@ -5553,7 +5604,7 @@
"Optional state-based conditions applied to the first match.": "شروط اختيارية تعتمد على الحالة مطبقة على التطابق الأول."
},
"Optional; leave blank for open hotspot": {
"Optional; leave blank for open hotspot": ""
"Optional; leave blank for open hotspot": "اختياري؛ اتركه فارغاً لنقطة اتصال مفتوحة"
},
"Options": {
"Options": "الخيارات"
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "جاري الاقتران..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "غائم جزئياً"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "تم تحديث كلمة المرور"
},
"Password...": {
"Password...": "كلمة المرور..."
},
"Passwords do not match.": {
"Passwords do not match.": "كلمات المرور غير متطابقة."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "المؤشر"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "تم تعطيل تكامل Polkit. تتطلب إدارة المستخدمين Polkit لرفع الامتيازات."
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "الضغط"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "منع إيقاف تشغيل الشاشة"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "البروتوكول"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6189,7 +6249,7 @@
"Re-enter password": "أعد إدخال كلمة المرور"
},
"Re-enter the password before saving.": {
"Re-enter the password before saving.": ""
"Re-enter the password before saving.": "أعد إدخال كلمة المرور قبل الحفظ."
},
"Reach local network devices while using an exit node": {
"Reach local network devices while using an exit node": "الوصول إلى أجهزة الشبكة المحلية أثناء استخدام عقدة الخروج"
@@ -6201,7 +6261,7 @@
"Read:": "قراءة:"
},
"Ready": {
"Ready": ""
"Ready": "مستعد"
},
"Reason": {
"Reason": "السبب"
@@ -6249,7 +6309,7 @@
"Release": "تحرير"
},
"Release to confirm": {
"Release to confirm": ""
"Release to confirm": "أفلِت للتأكيد"
},
"Reload From Disk": {
"Reload From Disk": "إعادة التحميل من القرص"
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "يتطلب تذكر المستخدم الأخير والجلسة. قم بتمكين تلك الخيارات أولاً."
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "إعادة تعيين"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "عكس اتجاه التمرير"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "عكس اتجاه تبديل اسطح المكتب عند التمرير فوق الشريط"
},
@@ -6519,7 +6588,7 @@
"Run paru/yay with AUR enabled when 'Update All' is clicked.": "تشغيل paru/yay مع تمكين AUR عند النقر على \"تحديث الكل\"."
},
"Running": {
"Running": ""
"Running": "مشغل"
},
"Running Apps": {
"Running Apps": "التطبيقات المشغلة"
@@ -6546,13 +6615,13 @@
"SMS sent successfully": "تم إرسال الرسالة القصيرة بنجاح"
},
"SSID": {
"SSID": ""
"SSID": "SSID"
},
"Saturation": {
"Saturation": "التشبع"
},
"Save & Start": {
"Save & Start": ""
"Save & Start": "حفظ وابدأ"
},
"Save Notepad File": {
"Save Notepad File": "حفظ ملف الملاحظة"
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "تمرير GitHub"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "عجلة التمرير"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "شريطي"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "البحث في إجراءات التطبيقات"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "اختر خوارزمية لوحة الألوان المستخدمة لاستخراج الألوان من خلفية الشاشة"
},
"Select user...": {
"Select user...": "اختر مستخدماً..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "اختر مزودي اختصارات المفاتيح المراد تضمينهم"
},
@@ -6903,13 +6975,13 @@
"Set the percentage at which the battery is considered low.": "حدد النسبة المئوية التي تعتبر عندها البطارية منخفضة."
},
"Set up a WiFi hotspot for sharing this connection.": {
"Set up a WiFi hotspot for sharing this connection.": ""
"Set up a WiFi hotspot for sharing this connection.": "قم بإعداد نقطة اتصال WiFi لمشاركة هذا الاتصال."
},
"Set up hotspot": {
"Set up hotspot": ""
"Set up hotspot": "إعداد نقطة اتصال"
},
"Set up hotspot in Settings": {
"Set up hotspot in Settings": ""
"Set up hotspot in Settings": "إعداد نقطة اتصال في الإعدادات"
},
"Setting": {
"Setting": "إعداد"
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "إظهار"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "إظهار الطرف الثالث"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": "إظهار إشعار عندما تصل البطارية إلى حد الشحن."
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": "إظهار نافذة تحذير منبثقة عندما تكون البطارية منخفضة."
},
@@ -7413,7 +7491,7 @@
"Start": "ابدأ"
},
"Start Hotspot?": {
"Start Hotspot?": ""
"Start Hotspot?": "بدء نقطة الاتصال؟"
},
"Start KDE Connect or Valent to use this plugin": {
"Start KDE Connect or Valent to use this plugin": "ابدأ KDE Connect أو Valent لاستخدام هذه الملحق"
@@ -7422,19 +7500,19 @@
"Start typing your notes here...": "ابدأ بكتابة ملاحظاتك هنا..."
},
"Starting hotspot...": {
"Starting hotspot...": ""
"Starting hotspot...": "جاري بدء نقطة الاتصال..."
},
"Starting the hotspot will disconnect WiFi from \"%1\" — the radio can't do both at once. Sharing internet then requires another connection, such as Ethernet.": {
"Starting the hotspot will disconnect WiFi from \"%1\" — the radio can't do both at once. Sharing internet then requires another connection, such as Ethernet.": ""
"Starting the hotspot will disconnect WiFi from \"%1\" — the radio can't do both at once. Sharing internet then requires another connection, such as Ethernet.": "سيؤدي بدء نقطة الاتصال إلى قطع اتصال WiFi بـ \"%1\" — لا يمكن للراديو القيام بالأمرين معاً في وقت واحد. تتطلب مشاركة الإنترنت بعد ذلك اتصالاً آخر، مثل الإيثرنت (Ethernet)."
},
"Starting...": {
"Starting...": ""
"Starting...": "جاري البدء..."
},
"State": {
"State": "الحالة"
},
"Stop": {
"Stop": ""
"Stop": "قف"
},
"Stop ignoring %1": {
"Stop ignoring %1": "إلغاء تجاهل %1"
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "تعليق ثم إسبات"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "موقع Sway"
},
@@ -7560,7 +7641,7 @@
"Sync applies your theme and settings to the login screen. Shared users should run dms greeter sync --profile instead of a primary user sync.": "يقوم المزامنة بتطبيق السمة والإعدادات الخاصة بك على شاشة تسجيل الدخول. يجب على المستخدمين المشتركين تشغيل dms greeter sync --profile بدلاً من المزامنة للمستخدم الأساسي."
},
"Sync applies your theme and settings to the login screen. Shared users should run dms-greeter sync --profile instead of a primary user sync.": {
"Sync applies your theme and settings to the login screen. Shared users should run dms-greeter sync --profile instead of a primary user sync.": ""
"Sync applies your theme and settings to the login screen. Shared users should run dms-greeter sync --profile instead of a primary user sync.": "يطبق Sync السمة والإعدادات الخاصة بك على شاشة تسجيل الدخول. يجب على المستخدمين المشتركين تشغيل dms-greeter sync --profile بدلاً من المزامنة للمستخدم الأساسي."
},
"Sync completed successfully.": {
"Sync completed successfully.": "تمت المزامنة بنجاح."
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscale غير متاح"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "محطة طرفية"
},
@@ -7665,7 +7758,7 @@
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms greeter sync' manually.": "فشل الاحتياط للطرفية. قم بتثبيت أحد محاكيات الطرفية المدعومة أو قم بتشغيل 'dms greeter sync' يدوياً."
},
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms-greeter sync' manually.": {
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms-greeter sync' manually.": ""
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms-greeter sync' manually.": "فشل الاحتياط للطرفية. قم بتثبيت أحد محاكيات الطرفية المدعومة أو قم بتشغيل 'dms-greeter sync' يدوياً."
},
"Terminal fallback opened. Complete authentication there; it will close automatically when done.": {
"Terminal fallback opened. Complete authentication there; it will close automatically when done.": "تم فتح الاحطياط للطرفية. أكمل المصادقة هناك؛ سيتم إغلاقه تلقائيًا عند الانتهاء."
@@ -7713,7 +7806,7 @@
"The DMS_SOCKET environment variable is not set or the socket is unavailable. Automated plugin management requires the DMS_SOCKET.": "متغير البيئة DMS_SOCKET غير معين أو أن المقبس غير متاح. تتطلب الإدارة التلقائية للملحقات وجود DMS_SOCKET."
},
"The WiFi adapter could not start access point mode.": {
"The WiFi adapter could not start access point mode.": ""
"The WiFi adapter could not start access point mode.": "تعذر على محول WiFi بدء وضع نقطة الوصول."
},
"The below settings will modify your GTK and Qt settings. If you wish to preserve your current configurations, please back them up (qt5ct.conf|qt6ct.conf and ~/.config/gtk-3.0|gtk-4.0).": {
"The below settings will modify your GTK and Qt settings. If you wish to preserve your current configurations, please back them up (qt5ct.conf|qt6ct.conf and ~/.config/gtk-3.0|gtk-4.0).": "الإعدادات أدناه ستعدل إعدادات GTK و Qt الخاصة بك. إذا كنت ترغب في الحفاظ على تكويناتك الحالية، يرجى أخذ نسخة احتياطية منها (qt5ct.conf|qt6ct.conf و ~/.config/gtk-3.0|gtk-4.0)."
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "تنطبق القاعدة على أي نافذة تطابق واحدة من هذه."
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "المظهر والألوان"
},
@@ -7788,7 +7884,7 @@
"This will delete all unpinned entries. %1 pinned entries will be kept.": "سيؤدي هذا إلى حذف جميع الإدخالات غير المثبتة. سيتم الاحتفاظ بـ %1 من الإدخالات المثبتة."
},
"This will disconnect WiFi from \"%1\" — the radio can't host a hotspot and stay connected at the same time. Internet sharing will need another connection, such as Ethernet.": {
"This will disconnect WiFi from \"%1\" — the radio can't host a hotspot and stay connected at the same time. Internet sharing will need another connection, such as Ethernet.": ""
"This will disconnect WiFi from \"%1\" — the radio can't host a hotspot and stay connected at the same time. Internet sharing will need another connection, such as Ethernet.": "سيؤدي هذا إلى قطع اتصال WiFi من \"%1\" — لا يمكن للراديو استضافة نقطة اتصال والبقاء متصلاً في الوقت نفسه. ستحتاج مشاركة الإنترنت إلى اتصال آخر، مثل إيثرنت."
},
"This will permanently delete all clipboard history.": {
"This will permanently delete all clipboard history.": "سيؤدي هذا إلى حذف كل سجل الحافظة نهائياً."
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "الكثير من المحاولات - تم القفل"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "عدد كبير جداً من المحاولات الفاشلة - قد يكون الحساب مقفلاً"
},
"Tools": {
"Tools": "الأدوات"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "المس مفتاح الأمان الخاص بك..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "تحويل"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "إيقاف التشغيل الآن"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "اكتب حرفين على الأقل"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "إلغاء حفظ"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "محدث"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "يجب أن يبدأ اسم المستخدم بحرف صغير أو شرطة سفلية ويحتوي فقط على أحرف صغيرة، أرقام، شرطات، أو شرطات سفلية."
},
"Username...": {
"Username...": "اسم المستخدم..."
},
"Users": {
"Users": "المستخدمون"
},
@@ -8481,13 +8583,13 @@
"W": "W"
},
"WCAG %1 body": {
"WCAG %1 body": ""
"WCAG %1 body": "WCAG %1 الجسم"
},
"WPA/WPA2": {
"WPA/WPA2": "WPA/WPA2"
},
"WPA2 password": {
"WPA2 password": ""
"WPA2 password": "كلمة مرور WPA2"
},
"Wallpaper": {
"Wallpaper": "خلفية الشاشة"
@@ -8577,10 +8679,10 @@
"WiFi enabled": "الWi-Fi مفعل"
},
"WiFi is disabled": {
"WiFi is disabled": ""
"WiFi is disabled": "WiFi غير مفعل"
},
"WiFi is disabled. You can still edit and save hotspot settings, but starting the hotspot requires WiFi to be enabled.": {
"WiFi is disabled. You can still edit and save hotspot settings, but starting the hotspot requires WiFi to be enabled.": ""
"WiFi is disabled. You can still edit and save hotspot settings, but starting the hotspot requires WiFi to be enabled.": "WiFi غير مفعل. لا يزال بإمكانك تعديل وحفظ إعدادات نقطة الاتصال، ولكن بدء تشغيل نقطة الاتصال يتطلب تمكين WiFi."
},
"WiFi is off": {
"WiFi is off": "WiFi غير مفعل"
@@ -8640,7 +8742,7 @@
"Width of window border and focus ring": "عرض حدود النافذة وحلقة التركيز"
},
"Will disconnect \"%1": {
"Will disconnect \"%1\"": ""
"Will disconnect \"%1\"": "سيتم قطع اتصال \"%1\""
},
"Wind": {
"Wind": "الرياح"
@@ -8751,10 +8853,10 @@
"Your compositor does not support background blur (ext-background-effect-v1)": "مدير النوافذ الخاص بك لا يدعم ميزة تخبيش الخلفية (ext-background-effect-v1)"
},
"Your hotspot is running.": {
"Your hotspot is running.": ""
"Your hotspot is running.": "نقطة الاتصال الخاصة بك قيد التشغيل."
},
"Your hotspot profile is saved and ready to start.": {
"Your hotspot profile is saved and ready to start.": ""
"Your hotspot profile is saved and ready to start.": "تم حفظ ملف تعريف نقطة الاتصال الخاص بك وهو جاهز للبدء."
},
"Your system is up to date!": {
"Your system is up to date!": "نظامك محدث!"
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "متصل"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
File diff suppressed because it is too large Load Diff
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "Pri"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Akcenta Koloro"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adaptiloj"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "Adapta aŭdvidaĵa larĝo"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "Aldoni al memlanĉo"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "Alĝustigu la baran altecon per interna remburaĵo"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Alĝustigi la nombron de kolumnoj en krada vida reĝimo."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Alĝustigi la laŭtecon per rula dentaĵo"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Ĉiam montri kiam estas nur unu konektita ekrano"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "Ĉiam uzu ĉi tiun programon por %1"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "Aŭtentigante..."
},
"Authentication": {
"Authentication": "Aŭtentigo"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "Aŭtentigaj ŝanĝoj bezonas sudo-on. Malfermas terminalon por ke vi povu uzi pasvorton aŭ fingrospuron."
},
"Authentication error - try again": {
"Authentication error - try again": "Aŭtentiga eraro - provu denove"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Rajtigi"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Aŭtomata kaŝo de doko"
},
"Auto-login": {
"Auto-login": "Aŭtomata ensaluto"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Havebla en Detala kaj Prognoza vidreĝimoj"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Reen"
},
"Back to user list": {
"Back to user list": "Reen al listo de uzantoj"
},
"Backend": {
"Backend": "Interna programo"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Elekti kie sciigaj ŝprucfenestroj aperas sur la ekrano"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Komponilaj agordoj"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Agorda formato"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Kontrasto"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "kontribuanto"
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Malŝalti eligon"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Malŝaltita"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Pordo malfermita"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "Dinamika: Printempa bezier kun superfluo — eniro nelonge superas sian celon kaj poste ekloĝas. "
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "Malplenigi Rubujon (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Ŝalti 10-bitan kolorprofundon por pli larĝa kolorgamo kaj HDR-subteno"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Enigu pasvorton por "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Enigu ĉi tiun pasŝlosilon sur "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "Malsukcesis alporti retan QR-kodon: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "Malsukcesis generi sisteman anstataŭigon"
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Flagoj"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Se la kampo estas kaŝita, ĝi aperos tuj kiam klavo estas premita."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Tute malatenti"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "Konservu Miajn Redaktojn"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "Konservu en Trinkejo"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Maldekstra sekcio"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "Hela"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Ŝlosita"
},
"Logging in...": {
"Logging in...": "Salutante..."
},
"Login": {
"Login": "Saluti"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Regado de mikrofona laŭteco"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Meza sekcio"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Munt-punktoj"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "Musklakoj pasas tra la trinkejo al fenestroj malantaŭ ĝi"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "Denaska: platforma bildilo (FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "Natura Tuŝpad Scrolling"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Sen rondigo"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Sen ombro"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Ne detektita"
},
"Not listed?": {
"Not listed?": "Ĉu ne en listo?"
},
"Not paired": {
"Not paired": "Ne parigita"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "Ŝaltita"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "Sur senfine"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Nur alĝustigi gamaon baze de tempo- aŭ lok-reguloj."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Parigante..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Parte nuba"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "Pasvorto ĝisdatigita"
},
"Password...": {
"Password...": "Pasvorto..."
},
"Passwords do not match.": {
"Passwords do not match.": "Pasvortoj ne kongruas."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Kursoro"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "Polkit-integriĝo estas malŝaltita. "
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Premo"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Malhelpi ekranan templimon"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protokolo"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "Necesas memori la lastan uzanton kaj sesion. "
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Rekomencigi"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Inversigi rulan direkton"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Inversigi direkton de laborspaca ŝanĝo kiam oni rulas super la breto"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "Ruli GitHub-on"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Rul-radeto"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Rulado"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "Serĉi aplikaĵajn agojn"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Elekti la paletran algoritmon uzatan por fonbild-bazitaj koloroj"
},
"Select user...": {
"Select user...": "Elektu uzanton..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Elektu kiujn provizantojn de klavoligiloj inkluzivi"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Montri"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Montri triajn partiojn"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Dormeti poste pasivigi"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Retejo de Sway"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Vostoskalo ne havebla"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "Terminalo"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "La regulo validas por iu ajn fenestro kongrua kun unu el ĉi tiuj."
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Etoso kaj koloroj"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "Tro da provoj - ŝlosita"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "Tro da malsukcesaj provoj - la konto eble estas ŝlosita"
},
"Tools": {
"Tools": "Iloj"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "Tuŝu vian sekurecŝlosilon..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Transformi"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "Malŝaltu nun"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Tajpu almenaŭ 2 signojn"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Malestimata"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "Aktualigita"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "Uzantnomo devas komenci per minuskla litero aŭ substreko kaj enhavi nur minusklajn literojn, ciferojn, streketojn aŭ substrekojn."
},
"Username...": {
"Username...": "Uzantnomo..."
},
"Users": {
"Users": "Uzantoj"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "aligita"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
File diff suppressed because it is too large Load Diff
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "درباره"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "رنگ تأکیدی"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "آداپتور‌ها"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "پهنای رسانه سازگار"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": ""
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "ارتفاع نوار را از طریق فاصله درونی تنظیم کن"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "تعداد ستون‌ها در حالت نمای جدولی را تنظیم کنید."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "تنظیم حجم صدا به‌ازای هر پله اسکرول"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "همیشه وقتی فقط یک نمایشگر متصل وجود دارد، نشان بده"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "همیشه از این برنامه برای %1 استفاده کن"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "درحال احراز هویت..."
},
"Authentication": {
"Authentication": "احراز هویت"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "تغییرات احراز هویت به sudo نیاز دارد. درحال باز کردن ترمینال تا بتوانید از گذرواژه یا اثرانگشت استفاده کنید."
},
"Authentication error - try again": {
"Authentication error - try again": "خطای احراز هویت - دوباره تلاش کنید"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "اجازه دادن"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "پنهان خودکار داک"
},
"Auto-login": {
"Auto-login": ""
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "در حالت‌های نمایش با جزئیات و پیش‌بینی در دسترس است"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "بازگشت"
},
"Back to user list": {
"Back to user list": ""
},
"Backend": {
"Backend": "بک‌اند"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "انتخاب کنید پاپ‌آپ اعلان کجای صفحه ظاهر شود"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "تنظیمات کامپازیتور"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "تنظیم قالب"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "کنتراست"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": ""
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "غیرفعال‌کردن خروجی"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "غیرفعال"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "درب باز"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": ""
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "خالی کردن زباله‌دان (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "فعال‌کردن عمق رنگ ۱۰ بیت برای طیف رنگ عریض‌تر و پشتیبانی HDR"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "ورود گذرواژه برای "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "ورود این کلید عبور در "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "دریافت کد QR شبکه ناموفق بود: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": ""
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "فلگ‌ها"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "اگر فیلد پنهان باشد، به محض فشردن کلید پدیدار می‌شود."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "کلاً نادیده بگیر"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "بخش چپ"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "کم‌رنگ"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "قفل شده"
},
"Logging in...": {
"Logging in...": "درحال ورود..."
},
"Login": {
"Login": "ورود"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "کنترل حجم صدای میکروفون"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "بخش میانی"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "نقاط اتصال"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "کلیک موس از نوار عبور کند تا به پنجره پشت آن برسد"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "محلی: نماپرداز سکو (FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "بدون گردی"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "بدون سایه"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "تشخیص داده نشد"
},
"Not listed?": {
"Not listed?": ""
},
"Not paired": {
"Not paired": "جفت نشده"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "روشن"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "روشن بصورت نامحدود"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "گاما را فقط بر اساس قواعد زمانی یا مکانی تنظیم کن."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "درحال جفت شدن..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "نیمه ابری"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "گذرواژه بروز شد"
},
"Password...": {
"Password...": "گذرواژه..."
},
"Passwords do not match.": {
"Passwords do not match.": "گذرواژه‌ها مطابقت ندارند."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "اشاره‌گر"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "یکپارچه‌سازی polkit غیرفعال است. مدیریت کاربر برای بالابردن دسترسی‌ها نیاز به polkit دارد."
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "فشار"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "وقفه جلوگیری از خاموش‌شدن صفحه"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "پروتکل"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": ""
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": ""
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "تنظیم مجدد"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "جهت اسکرول معکوس"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "جهت تغییر محیط‌کار را هنگام اسکرول‌کردن روی نوار معکوس کن"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "گیتهاب اسکرول"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "چرخ اسکرول"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "اسکرولینگ"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "جستجوی اقدام برنامه‌ها"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "انتخاب الگوریتم پالت رنگی استفاده شده برای رنگ‌های بر اساس تصویر پس‌زمینه"
},
"Select user...": {
"Select user...": "انتخاب کاربر..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "انتخاب کنید که کدام ارائه دهنده نگاشت‌کلید‌ها include شود"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "نمایش"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "نمایش شخص ثالث"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "تعلیق سپس هایبرنیت"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "وبسایت Sway"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailcale در دسترس نیست"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "ترمینال"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": ""
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "تم و رنگ‌ها"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "تلاش‌های بیش از حد - حساب بسته شد"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "تعداد تلاش‌های ناموفق زیاد است - حساب ممکن است قفل شده باشد"
},
"Tools": {
"Tools": "ابزارها"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "کلید امنیتی خود را لمس کنید..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "تبدیل"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "الان خاموش کن"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "حداقل ۲ کاراکتر تایپ کنید"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "لغو اعتماد"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "بروز"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "نام کاربری باید با حرف کوچک یا زیرخط شروع شود و تنها شامل حروف کوچک، اعداد، خط تیره یا زیرخط باشد."
},
"Username...": {
"Username...": "نام کاربری..."
},
"Users": {
"Users": "کاربران"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "پیوست شد"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "براندون"
},
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "À propos"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Couleur daccentuation"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adaptateurs"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": ""
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": ""
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": ""
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Ajuster le nombre de colonnes en mode vue en grille."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Ajuster le volume à la molette"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Toujours afficher lorsquun seul écran est connecté"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": ""
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "Authentification..."
},
"Authentication": {
"Authentication": "Authentification"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": ""
},
"Authentication error - try again": {
"Authentication error - try again": "Erreur d'authentification - essayez à nouveau"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Autoriser"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Masquer automatiquement le dock"
},
"Auto-login": {
"Auto-login": ""
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Disponible dans les modes Vue détaillée et Prévisions"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Retour"
},
"Back to user list": {
"Back to user list": ""
},
"Backend": {
"Backend": "Backend"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Choisir lemplacement daffichage des notifications"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Paramètres du compositeur"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Format de configuration"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Contraste"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": ""
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Désactiver la sortie"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Désactivé"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Porte ouverte"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": ""
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": ""
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Activer la profondeur de couleur 10 bits pour une gamme de couleurs étendue et la prise en charge du HDR"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Saisir le mot de passe pour "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Saisir cette clé sur "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": ""
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": ""
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Indicateurs"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Si le champ est masqué, il apparaîtra dès qu'une touche est pressée."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Ignorer complètement"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Partie gauche"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": ""
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Verrouillé"
},
"Logging in...": {
"Logging in...": "Connexion..."
},
"Login": {
"Login": ""
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Contrôle du volume du microphone"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Section centrale"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Points de montage"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": ""
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": ""
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Pas d'arrondi"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Pas d'ombre"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Non détecté"
},
"Not listed?": {
"Not listed?": ""
},
"Not paired": {
"Not paired": "Non appairé"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "Activé"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": ""
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Ajuster le gamma uniquement en fonction de lheure ou de lemplacement."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Appairage en cours..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Partiellement nuageux"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": ""
},
"Password...": {
"Password...": "Mot de passe..."
},
"Passwords do not match.": {
"Passwords do not match.": ""
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Curseur"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": ""
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Pression"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Empêcher la mise en veille de l’écran"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protocole"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": ""
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": ""
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Réinitialiser"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Inverser la direction du défilement"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Inverser la direction du changement despace lors du défilement sur la barre"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": ""
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Molette"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Défilement"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "Chercher des actions d'appli"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Sélectionner la palette utilisée pour les couleurs basées sur le fond d’écran"
},
"Select user...": {
"Select user...": ""
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Sélectionner les fournisseurs de raccourcis à inclure"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Montrer"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Montrer les tiers"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Suspendre puis mettre en veille prolongée"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Site Sway"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": ""
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "Terminal"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": ""
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Thème et couleurs"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": ""
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "Trop de tentatives échouées - le compte peut être verrouillé"
},
"Tools": {
"Tools": "Outils"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": ""
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Transformer"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": ""
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Tapez au moins 2 caractères"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Révoquer"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "À jour"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": ""
},
"Username...": {
"Username...": "Nom d'utilisateur..."
},
"Users": {
"Users": ""
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "attaché"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+212 -107
View File
@@ -198,7 +198,7 @@
"2 seconds": "2 secondi"
},
"2.4 GHz": {
"2.4 GHz": ""
"2.4 GHz": "2.4 GHz"
},
"20 minutes": {
"20 minutes": "20 minuti"
@@ -264,7 +264,7 @@
"45 seconds": "45 secondi"
},
"5 GHz": {
"5 GHz": ""
"5 GHz": "5 GHz"
},
"5 min before": {
"5 min before": "5 min prima"
@@ -335,6 +335,9 @@
"About": {
"About": "Informazioni"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Colore di Accento"
},
@@ -378,7 +381,7 @@
"Activate the DMS greeter? A terminal will open for sudo authentication. Run Sync after activation to apply your settings.": "Attivare il greeter DMS? Si aprirà un terminale per l'autenticazione sudo. Esegui Sincronizza dopo l'attivazione per applicare le tue impostazioni."
},
"Activates immediately": {
"Activates immediately": ""
"Activates immediately": "Si attiva immediatamente"
},
"Activation": {
"Activation": "Attivazione"
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adattatori"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "Larghezza Adattiva del Widget Media"
},
@@ -423,7 +429,7 @@
"Add \"%1\" to the %2 group? They must log out and back in, then run dms greeter sync --profile to publish their login-screen theme.": "Aggiungere \"%1\" al gruppo %2? Devono disconnettersi e accedere di nuovo, quindi eseguire dms greeter sync --profile per pubblicare il tema della schermata di accesso."
},
"Add \"%1\" to the %2 group? They must log out and back in, then run dms-greeter sync --profile to publish their login-screen theme.": {
"Add \"%1\" to the %2 group? They must log out and back in, then run dms-greeter sync --profile to publish their login-screen theme.": ""
"Add \"%1\" to the %2 group? They must log out and back in, then run dms-greeter sync --profile to publish their login-screen theme.": "Aggiungi \"%1\" al gruppo %2? L'utente deve disconnettersi e accedere di nuovo, dopo deve eseguire dms-greeter sync --profile per pubblicare il tema della schermata di accesso."
},
"Add Bar": {
"Add Bar": "Aggiungi Barra"
@@ -477,7 +483,7 @@
"Add the new user to the %1 group so they can run dms greeter sync --profile.": "Aggiungi il nuovo utente al gruppo %1 in modo che possa eseguire il comando dms greeter sync --profile."
},
"Add the new user to the %1 group so they can run dms-greeter sync --profile.": {
"Add the new user to the %1 group so they can run dms-greeter sync --profile.": ""
"Add the new user to the %1 group so they can run dms-greeter sync --profile.": "Aggiungi il nuovo utente al gruppo %1 in modo che possa eseguire dms-greeter sync --profile."
},
"Add the new user to the %1 group so they can use sudo.": {
"Add the new user to the %1 group so they can use sudo.": "Aggiungi il nuovo utente al gruppo %1 in modo che possa utilizzare sudo."
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "Aggiungi all'Avvio Automatico"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "Regola l'altezza della barra tramite spaziatura interna"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Regola il numero di colonne nella modalità di visualizzazione a griglia."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Regola volume per scatto rotellina"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Mostra sempre quando è presente un solo schermo connesso"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "Usa sempre quest'app per %1"
},
@@ -660,7 +678,7 @@
"Applications and commands to start automatically when you log in": "Applicazioni e Comandi da Avviare Automaticamente all'Accesso"
},
"Applies on the next greeter sync": {
"Applies on the next greeter sync": ""
"Applies on the next greeter sync": "Verrà applicato alla prossima sincronizzazione del greeter"
},
"Apply Changes": {
"Apply Changes": "Applica Modifiche"
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": "Autenticato!"
},
"Authenticating...": {
"Authenticating...": "Autenticazione in corso..."
},
"Authentication": {
"Authentication": "Autenticazione"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "Le modifiche di autenticazione richiedono sudo. Apertura del terminale per consentirti l'uso della password o dell'impronta digitale."
},
"Authentication error - try again": {
"Authentication error - try again": "Errore di autenticazione - riprova"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": "Autenticazione non riuscita - tentativo %1 di %2"
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": "Autenticazione non riuscita - possibile blocco dell'account"
},
"Authentication failed - try again": {
"Authentication failed - try again": "Autenticazione non riuscita - riprova"
},
"Authorize": {
"Authorize": "Autorizza"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Nascondi Automaticamente il Dock"
},
"Auto-login": {
"Auto-login": "Accesso Automatico"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": "La modifica dell'accesso automatico richiede una sincronizzazione"
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Disponibile nelle modalità Dettagliata e Previsioni"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": "In attesa dell'autenticazione tramite impronta digitale"
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": "In attesa dell'autenticazione tramite impronta digitale o chiave di sicurezza"
},
"Awaiting security key authentication": {
"Awaiting security key authentication": "In attesa dell'autenticazione tramite chiave di sicurezza"
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Indietro"
},
"Back to user list": {
"Back to user list": "Torna alla Lista Utenti"
},
"Backend": {
"Backend": "Backend"
},
@@ -1035,7 +1023,7 @@
"Balanced palette with focused accents (default).": "Tavolozza bilanciata con accenti focalizzati (predefinito)."
},
"Band": {
"Band": ""
"Band": "Banda"
},
"Bar": {
"Bar": "Barra"
@@ -1293,7 +1281,7 @@
"Calendar Backend": "Backend Calendario"
},
"Calls / Headset": {
"Calls / Headset": ""
"Calls / Headset": "Chiamate / Auricolare"
},
"Camera": {
"Camera": "Fotocamera"
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": "Scegli cartella sfondi"
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Scegli dove i popup delle notifiche appaiono sullo schermo"
},
@@ -1581,16 +1572,16 @@
"Close Window": "Chiudi Finestra"
},
"Codec switched successfully": {
"Codec switched successfully": ""
"Codec switched successfully": "Codec cambiato correttamente"
},
"Codec switching is unavailable because WirePlumber was not found": {
"Codec switching is unavailable because WirePlumber was not found": ""
"Codec switching is unavailable because WirePlumber was not found": "Il cambio codec non è disponibile perché WirePlumber non è stato trovato"
},
"Codec switching is unavailable because pactl was not found": {
"Codec switching is unavailable because pactl was not found": "Il passaggio del codec non è disponibile perché pactl non è stato trovato"
},
"Codec switching is unavailable. WirePlumber wpexec was not found.": {
"Codec switching is unavailable. WirePlumber wpexec was not found.": ""
"Codec switching is unavailable. WirePlumber wpexec was not found.": "Il cambio codec non è disponibile. WirePlumber wpexec non è stato trovato."
},
"Color": {
"Color": "Colore"
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Impostazioni del Compositor"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Formato di Configurazione"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Contrasto"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "Contributore"
},
@@ -1905,7 +1902,7 @@
"Corners & Background": "Angoli e Sfondo"
},
"Couldn't load hotspot password": {
"Couldn't load hotspot password": ""
"Couldn't load hotspot password": "Impossibile caricare la password dell'hotspot"
},
"Count Only": {
"Count Only": "Solo Conteggio"
@@ -2049,7 +2046,7 @@
"Custom Lock Command": "Comando Personalizzato per il Blocco"
},
"Custom Logout Command": {
"Custom Logout Command": "Comando Personalizzato Terminare la Sessione"
"Custom Logout Command": "Comando Personalizzato per Terminare la Sessione"
},
"Custom Name": {
"Custom Name": "Nome Personalizzato"
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Disabilita Output"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Disattivato"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Sportello Aperto"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": "Trascina un widget dalla sua maniglia qui per riordinarlo o rilascialo in un altro gruppo"
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "Dinamico: bezier a molla con overshooting — l'entrata supera brevemente il bersaglio poi si stabilizza. Espressivo e vitale."
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": "Rivelazione al Passaggio sul Bordo"
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "Svuota Cestino (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Abilita profondità colore a 10 bit per una gamma cromatica più ampia e supporto HDR"
},
@@ -2706,7 +2721,7 @@
"Enable WiFi": "Abilita WiFi"
},
"Enable WiFi before starting the hotspot.": {
"Enable WiFi before starting the hotspot.": ""
"Enable WiFi before starting the hotspot.": "Abilita WiFi prima di avviare l'hotspot."
},
"Enable a custom override below to set per-bar shadow intensity, opacity, and color.": {
"Enable a custom override below to set per-bar shadow intensity, opacity, and color.": "Abilita una sovrascrittura personalizzata qui sotto per impostare intensità, opacità e colore dell'ombra per ogni barra."
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Inserisci password per "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Inserisci questa passkey su "
},
@@ -2934,7 +2952,7 @@
"Failed to check pin limit": "Impossibile verificare il limite delle voci fissate"
},
"Failed to configure hotspot": {
"Failed to configure hotspot": ""
"Failed to configure hotspot": "Impossibile configurare l'hotspot"
},
"Failed to connect VPN": {
"Failed to connect VPN": "Impossibile connettersi alla VPN"
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "Impossibile recuperare il codice QR di rete: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "Impossibile generare override systemd"
},
@@ -3066,7 +3087,7 @@
"Failed to run 'dms greeter status'. Ensure DMS is installed and dms is in PATH.": "Impossibile eseguire \"dms greeter status\". Assicurati che DMS sia installato e dms sia nel PATH."
},
"Failed to run 'dms-greeter status'. Ensure the dms-greeter package is installed.": {
"Failed to run 'dms-greeter status'. Ensure the dms-greeter package is installed.": ""
"Failed to run 'dms-greeter status'. Ensure the dms-greeter package is installed.": "Impossibile eseguire \"dms-greeter status\". Assicurati che il pacchetto dms-greeter sia installato."
},
"Failed to save VPN credentials": {
"Failed to save VPN credentials": "Impossibile salvare le credenziali VPN"
@@ -3123,13 +3144,13 @@
"Failed to start connection to %1": "Impossibile avviare la connessione a %1"
},
"Failed to start hotspot": {
"Failed to start hotspot": ""
"Failed to start hotspot": "Impossibile avviare l'hotspot"
},
"Failed to stop hotspot": {
"Failed to stop hotspot": ""
"Failed to stop hotspot": "Impossibile fermare l'hotspot"
},
"Failed to switch codec": {
"Failed to switch codec": ""
"Failed to switch codec": "Impossibile cambiare codec"
},
"Failed to unpin entry": {
"Failed to unpin entry": "Impossibile rimuovere la voce"
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Flag"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": "Flatpak"
},
@@ -3558,7 +3585,7 @@
"Generic": "Generico"
},
"Geometric Centering": {
"Geometric Centering": "Centratura Geometrico"
"Geometric Centering": "Centratura Geometrica"
},
"Get Started": {
"Get Started": "Inizia"
@@ -3621,7 +3648,7 @@
"Greeter group members can sync their login-screen theme with dms greeter sync --profile after logging out and back in.": "I membri del gruppo Greeter possono sincronizzare il tema della schermata di accesso con il comando dms greeter sync --profile dopo aver effettuato il logout e aver effettuato nuovamente l'accesso."
},
"Greeter group members can sync their login-screen theme with dms-greeter sync --profile after logging out and back in.": {
"Greeter group members can sync their login-screen theme with dms-greeter sync --profile after logging out and back in.": ""
"Greeter group members can sync their login-screen theme with dms-greeter sync --profile after logging out and back in.": "I membri del gruppo greeter possono sincronizzare il tema della schermata di accesso con dms-greeter sync --profile dopo aver effettuato il logout e l'accesso."
},
"Greeter group:": {
"Greeter group:": "Gruppo greeter:"
@@ -3837,22 +3864,22 @@
"Hotkey overlay title (optional)": "Titolo della sovrapposizione per scorciatoie (opzionale)"
},
"Hotspot": {
"Hotspot": ""
"Hotspot": "Hotspot"
},
"Hotspot activation failed.": {
"Hotspot activation failed.": ""
"Hotspot activation failed.": "Attivazione dell'hotspot non riuscita."
},
"Hotspot name": {
"Hotspot name": ""
"Hotspot name": "Nome hotspot"
},
"Hotspot saved": {
"Hotspot saved": ""
"Hotspot saved": "Hotspot salvato"
},
"Hotspot started": {
"Hotspot started": ""
"Hotspot started": "Hotspot avviato"
},
"Hotspot stopped": {
"Hotspot stopped": ""
"Hotspot stopped": "Hotspot fermato"
},
"Hour": {
"Hour": "Ora"
@@ -3912,7 +3939,7 @@
"IP address or hostname": "Indirizzo IP o nome host"
},
"IP sharing setup failed. Check that dnsmasq is installed.": {
"IP sharing setup failed. Check that dnsmasq is installed.": ""
"IP sharing setup failed. Check that dnsmasq is installed.": "Configurazione della condivisione IP non riuscita. Controlla che dnsmasq sia installato."
},
"ISO Date": {
"ISO Date": "Data ISO"
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Se il campo è nascosto, apparirà non appena viene premuto un tasto."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Ignora Completamente"
},
@@ -4029,7 +4059,7 @@
"Incorrect password - try again": "Password errata - riprova"
},
"Index Centering": {
"Index Centering": "Centratura indice"
"Index Centering": "Centratura Indice"
},
"Indicator Style": {
"Indicator Style": "Stile Indicatore"
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "Mantieni le Mie Modifiche"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "Mantieni nella Barra"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Sezione Sinistra"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "Chiaro"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Bloccato"
},
"Logging in...": {
"Logging in...": "Accesso in corso..."
},
"Login": {
"Login": "Accesso"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Controllo volume microfono"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Sezione Centrale"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Punti di Montaggio"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "I clic del mouse attraversano la barra e raggiungono le finestre dietro di essa."
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "Native: renderer di piattaforma (FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "Scorrimento Naturale del Touchpad"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Squadrato"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Nessuna Ombra"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Non rilevato"
},
"Not listed?": {
"Not listed?": "Non elencato?"
},
"Not paired": {
"Not paired": "Non associato"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "Attivo"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "Attivo a tempo indeterminato"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Regola la gamma solo in base alle regole di tempo o di posizione."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": "Solo sulla Batteria"
},
@@ -5511,7 +5562,7 @@
"Open in terminal": "Apri nel terminale"
},
"Open network": {
"Open network": ""
"Open network": "Rete aperta"
},
"Open search bar to find text": {
"Open search bar to find text": "Apri barra di ricerca per cercare testo"
@@ -5541,7 +5592,7 @@
"Opens the connected launcher in Connected Frame Mode.": "Apre il launcher connesso in modalità Connected Frame."
},
"Optional": {
"Optional": ""
"Optional": "Opzionale"
},
"Optional description": {
"Optional description": "Descrizione facoltativa"
@@ -5553,7 +5604,7 @@
"Optional state-based conditions applied to the first match.": "Condizioni opzionali basate sullo stato applicate alla prima corrispondenza."
},
"Optional; leave blank for open hotspot": {
"Optional; leave blank for open hotspot": ""
"Optional; leave blank for open hotspot": "Opzionale; lascia vuoto per un hotspot aperto"
},
"Options": {
"Options": "Opzioni"
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Associazione in corso..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Parzialmente Nuvoloso"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "Password aggiornata"
},
"Password...": {
"Password...": "Password..."
},
"Passwords do not match.": {
"Passwords do not match.": "Le password non corrispondono."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Puntatore"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "L'integrazione con Polkit è disabilitata. La gestione degli utenti richiede che Polkit elevi i privilegi."
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Pressione"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Disattiva sospensione schermo"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protocollo"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6189,7 +6249,7 @@
"Re-enter password": "Reinserisci la password"
},
"Re-enter the password before saving.": {
"Re-enter the password before saving.": ""
"Re-enter the password before saving.": "Reinserisci la password prima di salvare."
},
"Reach local network devices while using an exit node": {
"Reach local network devices while using an exit node": "Raggiungi i dispositivi della rete locale durante l'uso di un nodo di uscita"
@@ -6201,7 +6261,7 @@
"Read:": "Lettura:"
},
"Ready": {
"Ready": ""
"Ready": "Pronto"
},
"Reason": {
"Reason": "Motivo"
@@ -6249,7 +6309,7 @@
"Release": "Rilascio"
},
"Release to confirm": {
"Release to confirm": ""
"Release to confirm": "Rilascia per confermare"
},
"Reload From Disk": {
"Reload From Disk": "Ricarica Dal Disco"
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "Richiede di ricordare l'ultimo utente e sessione. Abilita prima quelle opzioni."
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Reimposta"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Inverti Direzione Scorrimento"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Inverti direzione cambio spazio di lavoro quando si scorre sulla barra"
},
@@ -6519,7 +6588,7 @@
"Run paru/yay with AUR enabled when 'Update All' is clicked.": "Esegui paru/yay con AUR abilitato quando si fa clic su \"Aggiorna tutto\"."
},
"Running": {
"Running": ""
"Running": "In esecuzione"
},
"Running Apps": {
"Running Apps": "App in Esecuzione"
@@ -6546,13 +6615,13 @@
"SMS sent successfully": "SMS inviato correttamente"
},
"SSID": {
"SSID": ""
"SSID": "SSID"
},
"Saturation": {
"Saturation": "Saturazione"
},
"Save & Start": {
"Save & Start": ""
"Save & Start": "Salva e Avvia"
},
"Save Notepad File": {
"Save Notepad File": "Salva File Blocco Note"
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "GitHub di Scroll"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Rotella di Scorrimento"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Scorrimento"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "Cerca Azioni App"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Seleziona l'algoritmo della tavolozza usato per i colori basati sullo sfondo"
},
"Select user...": {
"Select user...": "Seleziona l'utente..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Seleziona quali fornitori di scorciatoie includere"
},
@@ -6903,13 +6975,13 @@
"Set the percentage at which the battery is considered low.": "Imposta la percentuale a cui la batteria è considerata scarica."
},
"Set up a WiFi hotspot for sharing this connection.": {
"Set up a WiFi hotspot for sharing this connection.": ""
"Set up a WiFi hotspot for sharing this connection.": "Configura un hotspot WiFi per condividere questa connessione."
},
"Set up hotspot": {
"Set up hotspot": ""
"Set up hotspot": "Configura hotspot"
},
"Set up hotspot in Settings": {
"Set up hotspot in Settings": ""
"Set up hotspot in Settings": "Configura l'hotspot nelle Impostazioni"
},
"Setting": {
"Setting": "Impostazione"
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Mostra"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Mostra Terze Parti"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": "Mostra una notifica quando la batteria raggiunge il limite di carica."
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": "Mostra un popup di avviso quando la batteria è in esaurimento."
},
@@ -7413,7 +7491,7 @@
"Start": "Avvia"
},
"Start Hotspot?": {
"Start Hotspot?": ""
"Start Hotspot?": "Avvia l'hotspot?"
},
"Start KDE Connect or Valent to use this plugin": {
"Start KDE Connect or Valent to use this plugin": "Avvia KDE Connect o Valent per usare questo plugin"
@@ -7422,19 +7500,19 @@
"Start typing your notes here...": "Inizia a scrivere i tuoi appunti qui..."
},
"Starting hotspot...": {
"Starting hotspot...": ""
"Starting hotspot...": "Avvio dell'hotspot..."
},
"Starting the hotspot will disconnect WiFi from \"%1\" — the radio can't do both at once. Sharing internet then requires another connection, such as Ethernet.": {
"Starting the hotspot will disconnect WiFi from \"%1\" — the radio can't do both at once. Sharing internet then requires another connection, such as Ethernet.": ""
"Starting the hotspot will disconnect WiFi from \"%1\" — the radio can't do both at once. Sharing internet then requires another connection, such as Ethernet.": "L'avvio dell'hotspot disconnetterà il WiFi da \"%1\" — la radio non può fare entrambe le cose contemporaneamente. Per condividere Internet sarà necessaria un'altra connessione, ad esempio Ethernet."
},
"Starting...": {
"Starting...": ""
"Starting...": "Avviando..."
},
"State": {
"State": "Stato"
},
"Stop": {
"Stop": ""
"Stop": "Ferma"
},
"Stop ignoring %1": {
"Stop ignoring %1": "Smetti di ignorare %1"
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Sospendi e poi Iberna"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Sito Web di Sway"
},
@@ -7560,7 +7641,7 @@
"Sync applies your theme and settings to the login screen. Shared users should run dms greeter sync --profile instead of a primary user sync.": "La sincronizzazione applica il tuo tema e le tue impostazioni alla schermata di accesso. Gli utenti condivisi dovrebbero eseguire dms greeter sync --profile invece della sincronizzazione dell'utente principale."
},
"Sync applies your theme and settings to the login screen. Shared users should run dms-greeter sync --profile instead of a primary user sync.": {
"Sync applies your theme and settings to the login screen. Shared users should run dms-greeter sync --profile instead of a primary user sync.": ""
"Sync applies your theme and settings to the login screen. Shared users should run dms-greeter sync --profile instead of a primary user sync.": "La sincronizzazione applica il tuo tema e le tue impostazioni alla schermata di accesso. Gli utenti condivisi dovrebbero eseguire dms-greeter sync --profile invece di una sincronizzazione dell'utente principale."
},
"Sync completed successfully.": {
"Sync completed successfully.": "Sincronizzazione completata con successo."
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscale non disponibile"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "Terminale"
},
@@ -7665,7 +7758,7 @@
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms greeter sync' manually.": "Impossibile utilizzare il terminale di ripiego. Installa uno degli emulatori di terminale supportati oppure esegui manualmente 'dms greeter sync'."
},
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms-greeter sync' manually.": {
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms-greeter sync' manually.": ""
"Terminal fallback failed. Install one of the supported terminal emulators or run 'dms-greeter sync' manually.": "Terminale di ripiego non riuscito. Installa uno degli emulatori di terminale supportati o esegui manualmente 'dms-greeter sync'."
},
"Terminal fallback opened. Complete authentication there; it will close automatically when done.": {
"Terminal fallback opened. Complete authentication there; it will close automatically when done.": "Terminale di ripiego aperto. Completa lì l'autenticazione; si chiuderà automaticamente al termine."
@@ -7713,7 +7806,7 @@
"The DMS_SOCKET environment variable is not set or the socket is unavailable. Automated plugin management requires the DMS_SOCKET.": "La variabile d'ambiente DMS_SOCKET non è impostata o il socket non è disponibile. La gestione automatica dei plugin richiede il DMS_SOCKET."
},
"The WiFi adapter could not start access point mode.": {
"The WiFi adapter could not start access point mode.": ""
"The WiFi adapter could not start access point mode.": "L'adattatore WiFi non è riuscito ad avviare la modalità access point."
},
"The below settings will modify your GTK and Qt settings. If you wish to preserve your current configurations, please back them up (qt5ct.conf|qt6ct.conf and ~/.config/gtk-3.0|gtk-4.0).": {
"The below settings will modify your GTK and Qt settings. If you wish to preserve your current configurations, please back them up (qt5ct.conf|qt6ct.conf and ~/.config/gtk-3.0|gtk-4.0).": "Le seguenti impostazioni modificheranno le tue impostazioni GTK e Qt. Se vuoi preservare la tua configurazione attuale, per favore fai il backup (qt5ct.conf|qt6ct.conf e ~/.config/gtk-3.0|gtk-4.0)."
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "La regola si applica a qualsiasi finestra che corrisponda a una di queste."
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Tema e Colori"
},
@@ -7749,7 +7845,7 @@
"Themes": "Temi"
},
"These add entries to the XDG autostart directory (~/.config/autostart/*.desktop)": {
"These add entries to the XDG autostart directory (~/.config/autostart/*.desktop)": "> Queste aggiungono voci alla directory di avvio automatico XDG (~/.config/autostart/*.desktop)"
"These add entries to the XDG autostart directory (~/.config/autostart/*.desktop)": "Queste aggiungono voci alla directory di avvio automatico XDG (~/.config/autostart/*.desktop)"
},
"Thickness": {
"Thickness": "Spessore"
@@ -7788,7 +7884,7 @@
"This will delete all unpinned entries. %1 pinned entries will be kept.": "Questo eliminerà tutte le voci non fissate. %1 voci fissate verranno mantenute."
},
"This will disconnect WiFi from \"%1\" — the radio can't host a hotspot and stay connected at the same time. Internet sharing will need another connection, such as Ethernet.": {
"This will disconnect WiFi from \"%1\" — the radio can't host a hotspot and stay connected at the same time. Internet sharing will need another connection, such as Ethernet.": ""
"This will disconnect WiFi from \"%1\" — the radio can't host a hotspot and stay connected at the same time. Internet sharing will need another connection, such as Ethernet.": "Questa operazione disconnetterà il WiFi da \"%1\" — la radio non può ospitare un hotspot e rimanere connessa contemporaneamente. La condivisione di Internet richiederà un'altra connessione, ad esempio Ethernet."
},
"This will permanently delete all clipboard history.": {
"This will permanently delete all clipboard history.": "La cronologia degli appunti verrà cancellata definitivamente."
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "Troppi tentativi - accesso bloccato"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "Troppi tentativi falliti - l'account potrebbe essere bloccato"
},
"Tools": {
"Tools": "Strumenti"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "Tocca la tua chiave di sicurezza..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Trasforma"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "Spegni ora"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Digita almeno 2 caratteri"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Non Fidarti"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "Aggiornato"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "Il nome utente deve iniziare con una lettera minuscola o un trattino basso e deve contenere solo lettere minuscole, cifre, trattini o trattini bassi."
},
"Username...": {
"Username...": "Nome utente..."
},
"Users": {
"Users": "Utenti"
},
@@ -8481,13 +8583,13 @@
"W": "W"
},
"WCAG %1 body": {
"WCAG %1 body": ""
"WCAG %1 body": "WCAG %1 corpo"
},
"WPA/WPA2": {
"WPA/WPA2": "WPA/WPA2"
},
"WPA2 password": {
"WPA2 password": ""
"WPA2 password": "Password WPA2"
},
"Wallpaper": {
"Wallpaper": "Sfondo"
@@ -8577,10 +8679,10 @@
"WiFi enabled": "WiFi attivato"
},
"WiFi is disabled": {
"WiFi is disabled": ""
"WiFi is disabled": "WiFi disattivato"
},
"WiFi is disabled. You can still edit and save hotspot settings, but starting the hotspot requires WiFi to be enabled.": {
"WiFi is disabled. You can still edit and save hotspot settings, but starting the hotspot requires WiFi to be enabled.": ""
"WiFi is disabled. You can still edit and save hotspot settings, but starting the hotspot requires WiFi to be enabled.": "WiFi disattivato. Puoi comunque modificare e salvare le impostazioni dell'hotspot, ma l'avvio dell'hotspot richiede che il WiFi sia abilitato."
},
"WiFi is off": {
"WiFi is off": "WiFi spento"
@@ -8640,7 +8742,7 @@
"Width of window border and focus ring": "Larghezza del bordo e dell'anello di focus"
},
"Will disconnect \"%1": {
"Will disconnect \"%1\"": ""
"Will disconnect \"%1\"": "Disconnetterà \"%1\""
},
"Wind": {
"Wind": "Vento"
@@ -8751,10 +8853,10 @@
"Your compositor does not support background blur (ext-background-effect-v1)": "Il tuo compositor non supporta la sfocatura dello sfondo (ext-background-effect-v1)"
},
"Your hotspot is running.": {
"Your hotspot is running.": ""
"Your hotspot is running.": "Il tuo hotspot è in esecuzione."
},
"Your hotspot profile is saved and ready to start.": {
"Your hotspot profile is saved and ready to start.": ""
"Your hotspot profile is saved and ready to start.": "Il profilo del tuo hotspot è salvato e pronto per l'avvio."
},
"Your system is up to date!": {
"Your system is up to date!": "Il tuo sistema è aggiornato!"
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "agganciato"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
@@ -8871,7 +8976,7 @@
"mangowc GitHub": "GitHub di mangowc"
},
"matugen not available or disabled - cannot apply %1 colors": {
"matugen not available or disabled - cannot apply %1 colors": "atugen non è disponibile o disabilitato - impossibile applicare i colori %1"
"matugen not available or disabled - cannot apply %1 colors": "matugen non è disponibile o disabilitato - impossibile applicare i colori %1"
},
"matugen not found - install matugen package for dynamic theming": {
"matugen not found - install matugen package for dynamic theming": "matugen non trovato - installa il pacchetto matugen per il theming dinamico"
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "バージョン情報"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "アクセントカラー"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "アダプター"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "メディア幅の自動調整"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "自動起動に追加"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "内側の余白でバーの高さを調整"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "グリッド表示モードでの列数を調整します。"
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "スクロール1段ごとの音量調整"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "接続されたディスプレイが1つだけのときは常に表示"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "%1 は常にこのアプリ使用する"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "認証中..."
},
"Authentication": {
"Authentication": "認証"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "認証の変更には sudo が必要です。パスワードまたは指紋を使用できるよう端末を開きます。"
},
"Authentication error - try again": {
"Authentication error - try again": "認証エラー - もう一度試してください"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "許可"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "ドックを自動的に隠す"
},
"Auto-login": {
"Auto-login": "自動ログイン"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "詳細表示と予報表示で利用可能"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "戻る"
},
"Back to user list": {
"Back to user list": "ユーザー一覧に戻る"
},
"Backend": {
"Backend": "バックエンド"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "通知ポップアップが画面に表示される場所を選ぶ"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "コンポジター設定"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "設定形式"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "コントラスト"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "貢献者"
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "出力を無効化"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "無効"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "ドアオープン"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "ダイナミック:オーバーシュート付きスプリングベジェ曲線 ― 開始点が目標値を一時的に超えた後、落ち着きます。表現力豊かで生き生きとした曲線です。"
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "ゴミ箱を空にする (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "より広い色域と HDR サポートのために 10 ビット色深度を有効にします"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "パスワードを入力"
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "ここでパスキーを入力してください "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "ネットワークQRコードの取得に失敗しました: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "systemd override の生成に失敗しました"
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "フラグ"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "フィールドが非表示の場合、キーが押されるとすぐに表示されます。"
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "完全に無視"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "自分の編集を保持"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "バーに残す"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "左セクション"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "ライト"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "ロック済み"
},
"Logging in...": {
"Logging in...": "ログイン中..."
},
"Login": {
"Login": "ログイン"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "マイク音量コントロール"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "中間区間"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "マウントポイント"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "マウスクリックをバーの背後のウィンドウへ通す"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "ネイティブ: プラットフォームレンダラー (FreeType)。"
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "タッチパッドのナチュラルスクロール"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "角丸なし"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "影なし"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "未検出"
},
"Not listed?": {
"Not listed?": "一覧にありませんか?"
},
"Not paired": {
"Not paired": "未ペアリング"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "オン"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "無期限にオン"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "ガンマは、時間または場所のルールに基づいてのみ調整します。"
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": "バッテリー駆動時のみ"
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "ペアリング中..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "晴れ時々曇り"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "パスワードを更新しました"
},
"Password...": {
"Password...": "パスワード..."
},
"Passwords do not match.": {
"Passwords do not match.": "パスワードが一致しません。"
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "ポインター"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "Polkit 連携が無効です。ユーザー管理には Polkit による権限昇格が必要です。"
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "気圧"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "画面のタイムアウトを防止"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "プロトコル"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "最後のユーザーとセッションの記憶が必要です。先にそれらのオプションを有効にしてください。"
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "リセット"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "スクロール方向を反転"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "バー上でスクロールしたときのワークスペース切り替え方向を反転"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "GitHub をスクロール"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "スクロールホイール"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "スクロール"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "アプリのアクションを検索"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "壁紙ベースの色で、使用するパレットアルゴリズムを選ぶ"
},
"Select user...": {
"Select user...": "ユーザーを選択..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "含めるキーバインドプロバイダーを選択"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "表示"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "サードパーティを表示"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": "バッテリーが充電上限に達したら通知を表示します。"
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": "バッテリー残量が少ないとき警告ポップアップを表示します。"
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "サスペンド後に休止"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Sway ウェブサイト"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscaleを利用できません"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "ターミナル"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "このルールは、これらのいずれかに一致するウィンドウに適用されます。"
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "テーマおよびカラー"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "試行回数が多すぎます - ロックされました"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "失敗回数が多すぎます - アカウントがロックされている可能性があります"
},
"Tools": {
"Tools": "ツール"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "セキュリティキーに触れてください..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "変形"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "今すぐオフにする"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "少なくとも 2 文字入力してください"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "信頼を解除"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "最新です"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "ユーザー名は小文字またはアンダースコアで始め、小文字、数字、ハイフン、アンダースコアだけを含める必要があります。"
},
"Username...": {
"Username...": "ユーザー名..."
},
"Users": {
"Users": "ユーザー"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "接続済み"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "정보"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "강조 색상"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "어댑터"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "적응형 미디어 너비"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "자동 시작에 추가"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "내부 패딩을 통해 표시줄 높이 조정"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "그리드 뷰 모드에서 열 수를 조정합니다."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "스크롤 단계별 볼륨 조정"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "연결된 디스플레이가 하나만 있을 때 항상 표시"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "%1에 항상 이 앱 사용"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "인증 중..."
},
"Authentication": {
"Authentication": "인증"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "인증 변경 사항에는 sudo가 필요합니다. 비밀번호나 지문을 사용할 수 있도록 터미널을 엽니다."
},
"Authentication error - try again": {
"Authentication error - try again": "인증 오류 - 다시 시도"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "권한 부여"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "독 자동 숨기기"
},
"Auto-login": {
"Auto-login": "자동 로그인"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": "자동 로그인 변경 시 동기화가 필요합니다"
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "상세 및 일기예보 보기 모드에서 사용 가능"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "뒤로"
},
"Back to user list": {
"Back to user list": "사용자 목록으로 돌아가기"
},
"Backend": {
"Backend": "백엔드"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": "배경화면 폴더 선택"
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "화면에서 알림 팝업이 나타날 위치를 선택하세요"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "컴포지터 설정"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "구성 형식"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "대비"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "기여자"
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "출력 비활성화"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "비활성화됨"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "문 열림"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": "위젯의 핸들을 잡고 드래그하여 순서를 변경하거나 다른 그룹에 놓으세요"
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "다이내믹: 오버슛이 있는 스프링 베지에 — 항목이 대상 위치를 짧게 넘어갔다가 안착합니다. 생동감 넘치고 표현력이 풍부합니다."
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": "가장자리 호버 시 드러내기"
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "휴지통 비우기 (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "더 넓은 색 영역과 HDR 지원을 위해 10비트 색 심도 활성화"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "비밀번호 입력:"
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "이 패스키를 입력할 곳:"
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "네트워크 QR 코드 가져오기 실패: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "systemd 덮어쓰기 생성 실패"
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "플래그"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "필드가 숨겨져 있어도 키를 누르는 즉시 나타납니다."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "완전히 무시"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "내 편집 내용 유지"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "바에 유지"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "왼쪽 구역"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "얇게"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "잠김"
},
"Logging in...": {
"Logging in...": "로그인 중..."
},
"Login": {
"Login": "로그인"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "마이크 볼륨 제어"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "가운데 구역"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "마운트 지점"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "마우스 클릭이 바를 통과하여 뒤에 있는 창으로 전달됨"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "네이티브: 플랫폼 렌더러(FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "터치패드 자연스러운 스크롤"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "둥글게 처리 없음"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "그림자 없음"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "감지되지 않음"
},
"Not listed?": {
"Not listed?": "목록에 없습니까?"
},
"Not paired": {
"Not paired": "페어링되지 않음"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "켜짐"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "무기한 켜짐"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "시간 또는 위치 규칙에 따라서만 감마를 조정합니다."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": "배터리 사용 시만"
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "페어링 중..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "대체로 흐림"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "비밀번호 업데이트됨"
},
"Password...": {
"Password...": "비밀번호..."
},
"Passwords do not match.": {
"Passwords do not match.": "비밀번호가 일치하지 않습니다."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "포인터"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "Polkit 통합이 비활성화되었습니다. 사용자 관리를 위해서는 권한을 높이려면 Polkit이 필요합니다."
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "기압"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "화면 시간 초과 방지"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "프로토콜"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "마지막 사용자 및 세션을 기억해야 합니다. 먼저 해당 옵션을 활성화하세요."
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "재설정"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "스크롤 방향 반전"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "바 위에서 스크롤할 때 작업 공간 전환 방향 반전"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "GitHub 스크롤"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "스크롤 휠"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "스크롤"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "앱 작업 검색"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "배경화면 기반 색상에 사용할 팔레트 알고리즘 선택"
},
"Select user...": {
"Select user...": "사용자 선택..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "포함할 단축키 제공자 선택"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "표시"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "타사 표시"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": "배터리가 충전 한도에 도달하면 알림을 표시합니다."
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": "배터리가 부족할 때 경고 팝업을 표시합니다."
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "절전 후 최대 절전 모드"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Sway 웹사이트"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscale을 사용할 수 없음"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "터미널"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "규칙은 이 중 하나와 일치하는 모든 창에 적용됩니다."
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "테마 및 색상"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "시도 횟수 너무 많음 - 잠김"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "실패한 시도 횟수 너무 많음 - 계정이 잠길 수 있음"
},
"Tools": {
"Tools": "도구"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "보안 키를 터치하세요..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "변환"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "지금 끄기"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "2자 이상 입력"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "신뢰 해제"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "최신 상태"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "사용자 이름은 소문자나 밑줄로 시작해야 하며 소문자, 숫자, 하이픈 또는 밑줄만 포함해야 합니다."
},
"Username...": {
"Username...": "사용자 이름..."
},
"Users": {
"Users": "사용자"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "연결됨"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "Over"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Accentkleur"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adapters"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "Adaptieve mediabreedte"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "Toevoegen aan automatisch opstarten"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "De balkhoogte aanpassen via binnenmarge (padding)"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Pas het aantal kolommen in rasterweergave aan."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Volume per scrollstap aanpassen"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Altijd tonen wanneer er slechts één beeldscherm is aangesloten"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "Gebruik deze app altijd voor %1"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": "Geauthenticeerd!"
},
"Authenticating...": {
"Authenticating...": "Controleren..."
},
"Authentication": {
"Authentication": "Authenticatie"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "Verificatiewijzigingen vereisen sudo. Terminal wordt geopend zodat u een wachtwoord of vingerafdruk kunt gebruiken."
},
"Authentication error - try again": {
"Authentication error - try again": "Authenticatiefout - probeer het opnieuw"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": "Authenticatie mislukt - poging %1 van %2"
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": "Authenticatie mislukt - uitsluiting kan optreden"
},
"Authentication failed - try again": {
"Authentication failed - try again": "Authenticatie mislukt - probeer het opnieuw"
},
"Authorize": {
"Authorize": "Autoriseren"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Dock automatisch verbergen"
},
"Auto-login": {
"Auto-login": "Automatisch inloggen"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": "Wijziging aan automatisch inloggen vereist synchronisatie"
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Beschikbaar in weergavemodi Gedetailleerd en Voorspelling"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": "Wachten op vingerafdrukauthenticatie"
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": "Wachten op vingerafdruk- of beveiligingssleutelauthenticatie"
},
"Awaiting security key authentication": {
"Awaiting security key authentication": "Wachten op beveiligingssleutelauthenticatie"
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Terug"
},
"Back to user list": {
"Back to user list": "Terug naar gebruikerslijst"
},
"Backend": {
"Backend": "Backend"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": "Achtergrondmap kiezen"
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Kies waar meldingen op het scherm verschijnen"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Compositor-instellingen"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Config-formaat"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Contrast"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "Bijdrager"
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Uitvoer uitschakelen"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Uitgeschakeld"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Deur open"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": "Sleep een widget aan de handgreep hiernaartoe om de volgorde te wijzigen of zet hem in een andere groep"
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "Dynamisch: Verende bézier met doorschieten — de binnenkomst gaat kort voorbij het doel en komt dan tot rust. Expressief en levendig."
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": "Weergeven bij rand-hover"
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "Prullenbak legen (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Schakel 10-bits kleurdiepte in voor een breder kleurengamma en HDR-ondersteuning"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Voer wachtwoord in voor "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Voer deze toegangscode in op "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "Ophalen van netwerk-QR-code mislukt: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "Genereren van systemd-override mislukt"
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Vlaggen"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": "Flatpak"
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Als het veld verborgen is, verschijnt het zodra een toets wordt ingedrukt."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Volledig negeren"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "Mijn bewerkingen behouden"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "In de balk houden"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Linkersectie"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "Licht"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Vergrendeld"
},
"Logging in...": {
"Logging in...": "Inloggen..."
},
"Login": {
"Login": "Inloggen"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Microfoonvolumeregeling"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Middensectie"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Aankoppelpunten"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "Muisklikken gaan door de balk heen naar vensters erachter"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "Native: platform-renderer (FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "Natuurlijk scrollen via touchpad"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Geen afronding"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Geen schaduw"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Niet gedetecteerd"
},
"Not listed?": {
"Not listed?": "Niet in de lijst?"
},
"Not paired": {
"Not paired": "Niet gekoppeld"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "Aan"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "Voor onbepaalde tijd ingeschakeld"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Gamma alleen aanpassen op basis van tijd- of locatieregels."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": "Alleen op accustroom"
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Koppelen..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Half bewolkt"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "Wachtwoord bijgewerkt"
},
"Password...": {
"Password...": "Wachtwoord..."
},
"Passwords do not match.": {
"Passwords do not match.": "Wachtwoorden komen niet overeen."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Aanwijzer"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "Polkit-integratie is uitgeschakeld. Gebruikersbeheer vereist Polkit voor het verhogen van bevoegdheden."
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Luchtdruk"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Scherm-time-out voorkomen"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protocol"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "Vereist het onthouden van de laatste gebruiker en sessie. Schakel die opties eerst in."
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Herstellen"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Scrollrichting omkeren"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Werkbladwisselrichting omkeren bij scrollen over de balk"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "Scroll GitHub"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Scrollwiel"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Scrollen"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "App-acties zoeken"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Selecteer het paletalgoritme voor op achtergrond gebaseerde kleuren"
},
"Select user...": {
"Select user...": "Gebruiker selecteren..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Selecteer welke sneltoetsproviders moeten worden opgenomen"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Tonen"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Derde partijen tonen"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": "Toon een melding wanneer de accu de laadlimiet bereikt."
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": "Toon een waarschuwingspop-up als de accu bijna leeg is."
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Onderbreken dan Sluimerstand"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Sway-website"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscale niet beschikbaar"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "Terminal"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "De regel is van toepassing op elk venster dat overeenkomt met een van deze."
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Thema & Kleuren"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "Te veel pogingen - toegang geblokkeerd"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "Te veel mislukte pogingen - account is mogelijk geblokkeerd"
},
"Tools": {
"Tools": "Hulpmiddelen"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "Raak uw beveiligingssleutel aan..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Transformatie"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "Nu uitschakelen"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Typ minstens 2 tekens"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Niet vertrouwen"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "Bijgewerkt"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "Gebruikersnaam moet beginnen met een kleine letter of underscore en mag alleen kleine letters, cijfers, koppeltekens of underscores bevatten."
},
"Username...": {
"Username...": "Gebruikersnaam..."
},
"Users": {
"Users": "Gebruikers"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "gekoppeld"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "O programie"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Kolor akcentu"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adaptery"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": ""
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": ""
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": ""
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Dostosuj liczbę kolumn w widoku siatki."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": ""
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Zawsze pokazuj gdy podłączony jest tylko jeden wyświetlacz"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": ""
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": ""
},
"Authentication": {
"Authentication": "Uwierzytelnianie"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": ""
},
"Authentication error - try again": {
"Authentication error - try again": ""
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Autoryzuj"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Automatyczne ukrywanie doku"
},
"Auto-login": {
"Auto-login": ""
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": ""
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Wstecz"
},
"Back to user list": {
"Back to user list": ""
},
"Backend": {
"Backend": "Backend"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Wybierz, gdzie na ekranie mają pojawiać się powiadomienia"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Ustawienia Kompozytora"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Format konfiguracji"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Kontrast"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": ""
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Wyłącz wyjście"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Wyłączony"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Drzwi otwarte"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": ""
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": ""
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Włącz 10 bitową głębię kolorów dla szerszej gamety kolorów i wsparcia HDR"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Wprowadź hasło dla "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Wprowadź ten klucz dostępu "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": ""
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": ""
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Flagi"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Jeśli pole jest ukryte pokaże się gdy klawisz zostanie wciśnięty."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": ""
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Sekcja lewa"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": ""
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Zablokowane"
},
"Logging in...": {
"Logging in...": ""
},
"Login": {
"Login": ""
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Kontrola głośności mikrofonu"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Sekcja środkowa"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Punkty montowania"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": ""
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": ""
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": ""
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": ""
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Nie wykryto"
},
"Not listed?": {
"Not listed?": ""
},
"Not paired": {
"Not paired": ""
},
@@ -5432,6 +5477,9 @@
"On": {
"On": ""
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": ""
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Dostosuj gamma tylko na podstawie reguł czasu lub lokalizacji."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Parowanie..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": ""
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": ""
},
"Password...": {
"Password...": ""
},
"Passwords do not match.": {
"Passwords do not match.": ""
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Wskaźnik"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": ""
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Ciśnienie"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Zapobiegaj wygaszaniu ekranu"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protokół"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": ""
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": ""
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Resetuj"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Odwróć Kierunek Przewijania"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Odwróc kierunek przełączania obszarów roboczych podczas przewijania nad paskiem"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": ""
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Kółko przewijania"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Przewijanie"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": ""
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Wybierz algorytm palety używany dla kolorów tapet."
},
"Select user...": {
"Select user...": ""
},
"Select which keybind providers to include": {
"Select which keybind providers to include": ""
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": ""
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": ""
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": ""
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": ""
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": ""
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": ""
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": ""
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Motyw i kolory"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": ""
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": ""
},
"Tools": {
"Tools": "Narzędzia"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": ""
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Przekształć"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": ""
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": ""
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": ""
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": ""
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": ""
},
"Username...": {
"Username...": ""
},
"Users": {
"Users": ""
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": ""
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": ""
},
+160 -55
View File
@@ -335,6 +335,9 @@
"About": {
"About": "Sobre"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Cor de Destaque"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adaptadores"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": ""
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": ""
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": ""
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Ajusta o número de colunas no modo de visualização em grade"
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Ajustar volume por rolagem"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Sempre mostrar quando houver apenas um monitor conectado"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": ""
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "Autenticando..."
},
"Authentication": {
"Authentication": "Autenticação"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": ""
},
"Authentication error - try again": {
"Authentication error - try again": "Erro de autenticação - tente novamente"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Autorizar"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Esconder Automaticamente o Dock"
},
"Auto-login": {
"Auto-login": ""
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Disponível em modos de visualização Detalhada e Previsão"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Voltar"
},
"Back to user list": {
"Back to user list": ""
},
"Backend": {
"Backend": "Backend"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Escolher onde as notificações irão aparecer na tela"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Configurações do Compositor"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Formato de Configuração"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Contraste"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": ""
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Desabilitar Saída"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Desativado"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Porta Aberta"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": ""
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "Lixeira Vazia (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Ativar a profundidade de cores de 10 bits para uma gama de cores mais ampla e suporte HDR"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Insira senha para "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Entre esse código em "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": ""
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": ""
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Bandeiras"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Se o campo está escondido, ele aparecerá no momento que uma tecla e pressionada."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Ignorar Completamente"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Seção da Esquerda"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": ""
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Bloqueado"
},
"Logging in...": {
"Logging in...": ""
},
"Login": {
"Login": ""
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Controle de volume de microfone"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Seção do Meio"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Pontos de Montagem"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": ""
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": ""
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Sem Arredondamento"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Sem Sombra"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Não detectado"
},
"Not listed?": {
"Not listed?": ""
},
"Not paired": {
"Not paired": "Não pareado"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "Ligado"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": ""
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Apenas ajustar gama baseada em regras de tempo ou localização."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Pareando..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Parcialmente Nublado"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "Senha atualizada"
},
"Password...": {
"Password...": "Senha..."
},
"Passwords do not match.": {
"Passwords do not match.": ""
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Ponteiro"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": ""
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Pressão"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Impedir suspensão da tela"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protocolo"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": ""
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": ""
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Resetar"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Inverter Direção do Scroll"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Inverter direção de troca de área de trabalho ao rolar sobre a barra"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": ""
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Roda de Rolagem"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Scrolling"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "Pesquisar Ações do Aplicativo"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Selecione o algoritmo usado para cores baseadas no papel de parede"
},
"Select user...": {
"Select user...": ""
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Selecionar quais provedores de combinações de teclas incluir"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Mostrar"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Mostrar Terceiros"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Suspender e Hibernar"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": ""
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": ""
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": ""
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": ""
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Tema & Cores"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": ""
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": ""
},
"Tools": {
"Tools": "Ferramentas"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": ""
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Transformar"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": ""
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Digite pelo menos 2 caracteres"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Deixar de confiar"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": ""
},
@@ -8316,25 +8421,25 @@
"User Window Rules (%1)": ""
},
"User already exists": {
"User already exists": ""
"User already exists": "Usuário já existe"
},
"User created": {
"User created": ""
"User created": "Usuário criado"
},
"User created with administrator and greeter login access": {
"User created with administrator and greeter login access": ""
},
"User created with administrator privileges": {
"User created with administrator privileges": ""
"User created with administrator privileges": "Usuário criado com privilégios de administrador"
},
"User created with greeter login access": {
"User created with greeter login access": ""
"User created with greeter login access": "Usuário criado com login via greeter"
},
"User deleted": {
"User deleted": ""
"User deleted": "Usuário excluído"
},
"User not found": {
"User not found": ""
"User not found": "Usuário não encontrado"
},
"Username": {
"Username": "Nome de usuário"
@@ -8342,11 +8447,8 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": ""
},
"Username...": {
"Username...": ""
},
"Users": {
"Users": ""
"Users": "Usuários"
},
"Uses sunrise/sunset times based on your location.": {
"Uses sunrise/sunset times based on your location.": "Usa horários de nascer/pôr do sol com base na sua localização."
@@ -8765,6 +8867,9 @@
"attached": {
"attached": ""
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
File diff suppressed because it is too large Load Diff
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "Om"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Accentfärg"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Adaptrar"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": ""
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": ""
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": ""
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Justera antalet kolumner i rutnätsvy."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Justera volym per rullningsindrag"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Visa alltid när bara en bildskärm är ansluten"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": ""
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "Autentiserar..."
},
"Authentication": {
"Authentication": "Autentisering"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": ""
},
"Authentication error - try again": {
"Authentication error - try again": "Autentiseringsfel försök igen"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Auktorisera"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Göm Dock automatiskt"
},
"Auto-login": {
"Auto-login": ""
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Tillgänglig i detaljerade och prognosvyer"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Tillbaka"
},
"Back to user list": {
"Back to user list": ""
},
"Backend": {
"Backend": "Bakgrundstjänst"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Välj var notisbanderoller visas på skärmen"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Kompositoriminställningar"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Konfigurationsformat"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Kontrast"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": ""
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Avaktivera utgång"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Avaktiverat"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Dörr öppen"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": ""
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": ""
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Aktivera 10-bitars färgdjup för bredare färgomfång och HDR-stöd"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Ange lösenord för "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Ange denna lösenkod på "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": ""
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": ""
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Flaggor"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Om fältet är dolt visas det så snart en tangent trycks ned."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Ignorera helt"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Vänster avdelning"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": ""
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Låst"
},
"Logging in...": {
"Logging in...": "Loggar in..."
},
"Login": {
"Login": ""
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Mikrofonvolymkontroll"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Mittenavdelning"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Monteringspunkter"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": ""
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": ""
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Ingen avrundning"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Ingen skugga"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Inte detekterat"
},
"Not listed?": {
"Not listed?": ""
},
"Not paired": {
"Not paired": "Inte parkopplad"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "På"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": ""
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Justera bara gamma baserat på tids- eller platsregler."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Parkopplar..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Delvis molnigt"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": ""
},
"Password...": {
"Password...": "Lösenord..."
},
"Passwords do not match.": {
"Passwords do not match.": ""
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Pekare"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": ""
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Lufttryck"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Förhindra att skärmen stängs av"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protokoll"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": ""
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": ""
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Återställ"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Omvänd rullningsriktning"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Omvänd växlingsriktning på arbetsytor vid rullning över menyraden"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "Scroll GitHub"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Scrollhjul"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Rullning"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "Sök appåtgärder"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Välj palettalgoritm för färger baserade på bakgrundsbilden"
},
"Select user...": {
"Select user...": ""
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Välj vilka kortkommandoleverantörer som ska inkluderas"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Visa"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Visa tredjepartsappar"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Sätt i strömsparläge och sedan viloläge"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Sways webbplats"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": ""
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "Terminal"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": ""
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Teman och färger"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": ""
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "För många misslyckade försök kontot kan vara låst"
},
"Tools": {
"Tools": "Verktyg"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": ""
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Transformera"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": ""
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Skriv minst 2 tecken"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Lita inte på"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "Uppdaterat"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": ""
},
"Username...": {
"Username...": "Användarnamn..."
},
"Users": {
"Users": ""
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "ansluten"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon"
},
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "Hakkında"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": ""
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Bağdaştırıcılar"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": ""
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": ""
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": ""
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Izgara görünümü modunda sütun sayısını ayarla"
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": ""
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Yalnızca bir ekran bağlı olduğunda her zaman göster"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": ""
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": ""
},
"Authentication": {
"Authentication": "Kimlik Doğrulama"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": ""
},
"Authentication error - try again": {
"Authentication error - try again": ""
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Yetkilendir"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Dock'u Otomatik Gizle"
},
"Auto-login": {
"Auto-login": ""
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": ""
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Geri"
},
"Back to user list": {
"Back to user list": ""
},
"Backend": {
"Backend": "Arka Uç"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Bildirim açılır pencerelerinin ekranda nerede görüneceğini seçin"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Kompozitör Ayarları"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Yapılandırma Biçimi"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Kontrast"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": ""
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Çıkışı Devre Dışı Bırak"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Devre Dışı"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Kapı Açık"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": ""
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": ""
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Daha geniş renk gamı ve HDR desteği için 10 bit renk derinliğini etkinleştirin"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Parolayı girin "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Bu şifreyi şuraya gir: "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": ""
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": ""
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": ""
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Alan gizliyse, bir tuşa basıldığında görünür."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": ""
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Sol Bölüm"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": ""
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": ""
},
"Logging in...": {
"Logging in...": ""
},
"Login": {
"Login": ""
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Mikrofon ses seviyesi kontrolü"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Orta Bölüm"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": ""
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": ""
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": ""
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": ""
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": ""
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Algılanmadı"
},
"Not listed?": {
"Not listed?": ""
},
"Not paired": {
"Not paired": ""
},
@@ -5432,6 +5477,9 @@
"On": {
"On": ""
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": ""
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Gamayı yalnızca zaman veya konum kurallarına göre ayarlayın."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Eşleşiyor..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": ""
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": ""
},
"Password...": {
"Password...": ""
},
"Passwords do not match.": {
"Passwords do not match.": ""
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "İşaretçi"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": ""
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Basınç"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Ekran zaman aşımını önle"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Protokol"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": ""
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": ""
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Sıfırla"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Ters Kaydırma Yönü"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Bar üzerinde kaydırırken çalışma alanı geçiş yönünü tersine çevir"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": ""
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Kaydırma Tekerleği"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Kaydırma"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": ""
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Duvar kağıdı tabanlı renkler için kullanılan palet algoritmasını seçin"
},
"Select user...": {
"Select user...": ""
},
"Select which keybind providers to include": {
"Select which keybind providers to include": ""
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": ""
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": ""
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": ""
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": ""
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": ""
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": ""
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": ""
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Tema & Renkler"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": ""
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": ""
},
"Tools": {
"Tools": ""
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": ""
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Dönüştür"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": ""
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": ""
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": ""
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": ""
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": ""
},
"Username...": {
"Username...": ""
},
"Users": {
"Users": ""
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": ""
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": ""
},
File diff suppressed because it is too large Load Diff
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "Giới thiệu"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "Màu nhấn"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "Bộ chuyển đổi"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "Chiều rộng phương tiện thích ứng"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "Thêm vào Tự động khởi động"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "Điều chỉnh chiều cao của thanh thông qua khoảng đệm bên trong"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "Điều chỉnh số cột trong chế độ xem lưới."
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "Điều chỉnh âm lượng theo từng nấc cuộn"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "Luôn hiển thị khi chỉ có một màn hình được kết nối"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "Luôn sử dụng ứng dụng này cho %1"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "Đang xác thực..."
},
"Authentication": {
"Authentication": "Xác thực"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "Các thay đổi xác thực cần sudo. Đang mở cửa sổ dòng lệnh để bạn có thể sử dụng mật khẩu hoặc vân tay."
},
"Authentication error - try again": {
"Authentication error - try again": "Lỗi xác thực - hãy thử lại"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "Ủy quyền"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "Tự động ẩn thanh dock"
},
"Auto-login": {
"Auto-login": "Tự động đăng nhập"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": "Thay đổi tự động đăng nhập cần đồng bộ hóa"
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "Có sẵn trong chế độ xem Chi tiết và Dự báo"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "Quay lại"
},
"Back to user list": {
"Back to user list": "Quay lại danh sách người dùng"
},
"Backend": {
"Backend": "Backend"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": "Chọn thư mục hình nền"
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "Chọn nơi hộp thông báo nổi được hiển thị"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "Cài đặt Compositor"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "Định dạng cấu hình"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "Độ tương phản"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "Người đóng góp"
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "Tắt đầu ra"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "Đã tắt"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "Cửa mở"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": "Kéo một widget bằng tay cầm của nó tại đây để sắp xếp lại hoặc thả nó vào một nhóm khác"
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "Động: Đường cong bezier lò xo với độ vọt lố — phần nhập vượt quá mục tiêu một thời gian ngắn rồi ổn định. Sống động và đầy biểu cảm."
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": "Tiết lộ Khi Di chuột Qua Cạnh"
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "Dọn sạch thùng rác (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "Bật độ sâu màu 10-bit cho gam màu rộng hơn và hỗ trợ HDR"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "Nhập mật khẩu cho "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "Nhập mã xác nhận này trên "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "Lấy mã QR mạng thất bại: %1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "Không thể tạo ghi đè systemd"
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "Cờ"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "Nếu trường bị ẩn, nó sẽ xuất hiện ngay khi một phím được nhấn."
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "Bỏ qua hoàn toàn"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": "Giữ các chỉnh sửa của tôi"
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": "Giữ trong thanh"
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "Phần bên trái"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "Nhẹ / Sáng"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "Đã khóa"
},
"Logging in...": {
"Logging in...": "Đang đăng nhập..."
},
"Login": {
"Login": "Đăng nhập"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "Điều khiển âm lượng micro"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "Mục giữa"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "Điểm gắn (Mount points)"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "Các cú nhấp chuột đi xuyên qua thanh tới các cửa sổ phía sau"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "Gốc: trình kết xuất nền tảng (FreeType)."
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": "Cuộn tự nhiên trên bàn di chuột"
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "Không bo góc"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "Không có bóng"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "Không phát hiện được"
},
"Not listed?": {
"Not listed?": "Không có trong danh sách?"
},
"Not paired": {
"Not paired": "Chưa ghép đôi"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "Bật"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "Bật vô thời hạn"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "Chỉ điều chỉnh gamma dựa trên quy tắc thời gian hoặc địa điểm."
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": "Chỉ Trên Pin"
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "Đang ghép đôi..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "Có mây rải rác"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "Đã cập nhật mật khẩu"
},
"Password...": {
"Password...": "Mật khẩu..."
},
"Passwords do not match.": {
"Passwords do not match.": "Mật khẩu không khớp."
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "Con trỏ"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "Tích hợp Polkit đã bị tắt. Quản lý người dùng yêu cầu Polkit để nâng cao đặc quyền."
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "Áp suất"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "Ngăn tắt màn hình"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "Giao thức"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "Yêu cầu ghi nhớ người dùng và phiên làm việc cuối. Hãy bật các tùy chọn đó trước."
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "Đặt lại"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "Đảo ngược hướng cuộn"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "Đảo ngược hướng chuyển đổi không gian làm việc khi cuộn trên thanh"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "Cuộn GitHub"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "Bánh xe chuột"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "Cuộn"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "Tìm kiếm hành động ứng dụng"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "Chọn thuật toán bảng màu được sử dụng cho màu dựa trên hình nền"
},
"Select user...": {
"Select user...": "Chọn người dùng..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "Chọn các nhà cung cấp phím tắt nào để bao gồm"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "Hiển thị"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "Hiển thị ứng dụng Bên thứ ba"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": "Hiển thị thông báo khi pin đạt giới hạn sạc."
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": "Hiển thị cửa sổ cảnh báo khi pin sắp hết."
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "Ngủ rồi Ngủ đông"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Trang web Sway"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscale không khả dụng"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "Cửa sổ dòng lệnh"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "Quy tắc áp dụng cho bất kỳ cửa sổ nào khớp với một trong các điều kiện này."
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "Chủ đề & Màu"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "Quá nhiều lần thử - đã bị khóa"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "Quá nhiều lần thử thất bại - tài khoản có thể đã bị khóa"
},
"Tools": {
"Tools": "Công cụ"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "Chạm vào khóa bảo mật của bạn..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "Biến đổi"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "Tắt ngay"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "Nhập ít nhất 2 ký tự"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "Ngừng tin cậy"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "Đã cập nhật"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "Tên người dùng phải bắt đầu bằng chữ thường hoặc dấu gạch dưới và chỉ chứa các chữ cái thường, chữ số, dấu gạch nối hoặc dấu gạch dưới."
},
"Username...": {
"Username...": "Tên người dùng..."
},
"Users": {
"Users": "Người dùng"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "đã đính kèm"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "brandon (Kiểu)"
},
File diff suppressed because it is too large Load Diff
+153 -48
View File
@@ -335,6 +335,9 @@
"About": {
"About": "關於"
},
"Acceleration Profile": {
"Acceleration Profile": ""
},
"Accent Color": {
"Accent Color": "強調色"
},
@@ -410,6 +413,9 @@
"Adapters": {
"Adapters": "轉接器"
},
"Adaptive": {
"Adaptive": ""
},
"Adaptive Media Width": {
"Adaptive Media Width": "自適應媒體寬度"
},
@@ -485,12 +491,21 @@
"Add to Autostart": {
"Add to Autostart": "加入自動啟動"
},
"Adjust pointer sensitivity speed": {
"Adjust pointer sensitivity speed": ""
},
"Adjust scrolling sensitivity multiplier": {
"Adjust scrolling sensitivity multiplier": ""
},
"Adjust the bar height via inner padding": {
"Adjust the bar height via inner padding": "透過內部邊距調整工具列高度"
},
"Adjust the number of columns in grid view mode.": {
"Adjust the number of columns in grid view mode.": "調整網格檢視模式中的欄數。"
},
"Adjust touchpad pointer speed": {
"Adjust touchpad pointer speed": ""
},
"Adjust volume per scroll indent": {
"Adjust volume per scroll indent": "調整每滾動縮排的音量"
},
@@ -575,6 +590,9 @@
"Always show when there's only one connected display": {
"Always show when there's only one connected display": "僅連接一個顯示器時一律顯示"
},
"Always use the durations above, even if an app requests a shorter or longer one": {
"Always use the durations above, even if an app requests a shorter or longer one": ""
},
"Always use this app for %1": {
"Always use this app for %1": "始終使用此應用程式開啟 %1"
},
@@ -782,9 +800,6 @@
"Authenticated!": {
"Authenticated!": ""
},
"Authenticating...": {
"Authenticating...": "正在驗證..."
},
"Authentication": {
"Authentication": "驗證"
},
@@ -803,18 +818,6 @@
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": {
"Authentication changes need sudo. Opening terminal so you can use password or fingerprint.": "身份驗證變更需要 sudo。正在開啟終端機,以便您使用密碼或指紋。"
},
"Authentication error - try again": {
"Authentication error - try again": "驗證錯誤 - 請再試一次"
},
"Authentication failed - attempt %1 of %2": {
"Authentication failed - attempt %1 of %2": ""
},
"Authentication failed - lockout can occur": {
"Authentication failed - lockout can occur": ""
},
"Authentication failed - try again": {
"Authentication failed - try again": ""
},
"Authorize": {
"Authorize": "授權"
},
@@ -878,9 +881,6 @@
"Auto-hide Dock": {
"Auto-hide Dock": "自動隱藏 Dock"
},
"Auto-login": {
"Auto-login": "自動登入"
},
"Auto-login change needs a sync": {
"Auto-login change needs a sync": ""
},
@@ -980,24 +980,12 @@
"Available in Detailed and Forecast view modes": {
"Available in Detailed and Forecast view modes": "可於詳細和預報檢視模式中顯示"
},
"Awaiting fingerprint authentication": {
"Awaiting fingerprint authentication": ""
},
"Awaiting fingerprint or security key authentication": {
"Awaiting fingerprint or security key authentication": ""
},
"Awaiting security key authentication": {
"Awaiting security key authentication": ""
},
"BSSID": {
"BSSID": "BSSID"
},
"Back": {
"Back": "返回"
},
"Back to user list": {
"Back to user list": "返回使用者列表"
},
"Backend": {
"Backend": "後端"
},
@@ -1454,6 +1442,9 @@
"Choose wallpaper folder": {
"Choose wallpaper folder": ""
},
"Choose when to generate scrolling events": {
"Choose when to generate scrolling events": ""
},
"Choose where notification popups appear on screen": {
"Choose where notification popups appear on screen": "選擇通知彈出視窗在螢幕上出現的位置"
},
@@ -1688,6 +1679,9 @@
"Compositor Settings": {
"Compositor Settings": "合成器設定"
},
"Compositor actions (focus, move, etc.)": {
"Compositor actions (focus, move, etc.)": ""
},
"Config Format": {
"Config Format": "配置格式"
},
@@ -1805,6 +1799,9 @@
"Contrast": {
"Contrast": "對比"
},
"Contrast by variant": {
"Contrast by variant": ""
},
"Contributor": {
"Contributor": "貢獻者"
},
@@ -2390,6 +2387,15 @@
"Disable Output": {
"Disable Output": "停用輸出"
},
"Disable While Typing": {
"Disable While Typing": ""
},
"Disable on External Mouse": {
"Disable on External Mouse": ""
},
"Disable touchpad when an external mouse is connected": {
"Disable touchpad when an external mouse is connected": ""
},
"Disabled": {
"Disabled": "已停用"
},
@@ -2549,6 +2555,9 @@
"Door Open": {
"Door Open": "門開啟"
},
"Drag Lock": {
"Drag Lock": ""
},
"Drag a widget by its handle here to reorder it or drop it into another group": {
"Drag a widget by its handle here to reorder it or drop it into another group": ""
},
@@ -2621,6 +2630,9 @@
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": {
"Dynamic: Spring bezier with overshoot — entry briefly exceeds its target then settles. Expressive and alive.": "動態:帶有過衝的彈簧貝茲曲線 — 進入時會短暫超出目標然後穩定下來。富有表現力且生動。"
},
"Edge": {
"Edge": ""
},
"Edge Hover Reveal": {
"Edge Hover Reveal": ""
},
@@ -2669,6 +2681,9 @@
"Empty Trash (%1)": {
"Empty Trash (%1)": "清空垃圾桶 (%1)"
},
"Emulate middle click by pressing left and right buttons": {
"Emulate middle click by pressing left and right buttons": ""
},
"Enable 10-bit color depth for wider color gamut and HDR support": {
"Enable 10-bit color depth for wider color gamut and HDR support": "啟用 10 位元色彩深度以獲得更寬廣的色域和 HDR 支援"
},
@@ -2795,6 +2810,9 @@
"Enter password for ": {
"Enter password for ": "輸入密碼 "
},
"Enter text to encode": {
"Enter text to encode": ""
},
"Enter this passkey on ": {
"Enter this passkey on ": "輸入此密碼 "
},
@@ -2993,6 +3011,9 @@
"Failed to fetch network QR code: %1": {
"Failed to fetch network QR code: %1": "擷取網路 QR 碼失敗:%1"
},
"Failed to generate QR code: %1": {
"Failed to generate QR code: %1": ""
},
"Failed to generate systemd override": {
"Failed to generate systemd override": "產生 systemd 覆蓋檔失敗"
},
@@ -3263,6 +3284,12 @@
"Flags": {
"Flags": "標幟"
},
"Flat": {
"Flat": ""
},
"Flat uses constant speed; Adaptive scales with movement speed": {
"Flat uses constant speed; Adaptive scales with movement speed": ""
},
"Flatpak": {
"Flatpak": ""
},
@@ -3962,6 +3989,9 @@
"If the field is hidden, it will appear as soon as a key is pressed.": {
"If the field is hidden, it will appear as soon as a key is pressed.": "如果此欄位已隱藏,只要按下按鍵便會顯示。"
},
"Ignore App-Requested Timeout": {
"Ignore App-Requested Timeout": ""
},
"Ignore Completely": {
"Ignore Completely": "完全忽略"
},
@@ -4199,6 +4229,9 @@
"Keep My Edits": {
"Keep My Edits": ""
},
"Keep dragging when finger is briefly lifted": {
"Keep dragging when finger is briefly lifted": ""
},
"Keep in Bar": {
"Keep in Bar": ""
},
@@ -4334,6 +4367,9 @@
"Left Section": {
"Left Section": "左方區塊"
},
"Left-Handed Mode": {
"Left-Handed Mode": ""
},
"Light": {
"Light": "細"
},
@@ -4439,9 +4475,6 @@
"Locked": {
"Locked": "已鎖定"
},
"Logging in...": {
"Logging in...": "正在登入..."
},
"Login": {
"Login": "登入"
},
@@ -4748,6 +4781,9 @@
"Microphone volume control": {
"Microphone volume control": "麥克風音量控制"
},
"Middle Click Emulation": {
"Middle Click Emulation": ""
},
"Middle Section": {
"Middle Section": "中間部分"
},
@@ -4823,6 +4859,12 @@
"Mount Points": {
"Mount Points": "掛載點"
},
"Mouse & Touchpad": {
"Mouse & Touchpad": ""
},
"Mouse Settings": {
"Mouse Settings": ""
},
"Mouse clicks pass through the bar to windows behind it": {
"Mouse clicks pass through the bar to windows behind it": "滑鼠點擊可穿透工具列並作用於後方的視窗"
},
@@ -4886,6 +4928,9 @@
"Native: platform renderer (FreeType).": {
"Native: platform renderer (FreeType).": "原生:平台渲染器 (FreeType)。"
},
"Natural Scrolling": {
"Natural Scrolling": ""
},
"Natural Touchpad Scrolling": {
"Natural Touchpad Scrolling": ""
},
@@ -5033,6 +5078,9 @@
"No Rounding": {
"No Rounding": "無圓角"
},
"No Scroll": {
"No Scroll": ""
},
"No Shadow": {
"No Shadow": "無陰影"
},
@@ -5336,9 +5384,6 @@
"Not detected": {
"Not detected": "未偵測到"
},
"Not listed?": {
"Not listed?": "未列出?"
},
"Not paired": {
"Not paired": "未配對"
},
@@ -5432,6 +5477,9 @@
"On": {
"On": "開啟"
},
"On Button Down": {
"On Button Down": ""
},
"On indefinitely": {
"On indefinitely": "無限期"
},
@@ -5450,6 +5498,9 @@
"Only adjust gamma based on time or location rules.": {
"Only adjust gamma based on time or location rules.": "僅根據時間或位置規則調整 gamma。"
},
"Only continue if you recognize this server certificate fingerprint.": {
"Only continue if you recognize this server certificate fingerprint.": ""
},
"Only on Battery": {
"Only on Battery": ""
},
@@ -5687,6 +5738,9 @@
"Pairing...": {
"Pairing...": "正在配對..."
},
"Partial": {
"Partial": ""
},
"Partly Cloudy": {
"Partly Cloudy": "多雲"
},
@@ -5708,9 +5762,6 @@
"Password updated": {
"Password updated": "密碼已更新"
},
"Password...": {
"Password...": "密碼..."
},
"Passwords do not match.": {
"Passwords do not match.": "密碼不符。"
},
@@ -5894,6 +5945,9 @@
"Pointer": {
"Pointer": "指標"
},
"Pointer Speed": {
"Pointer Speed": ""
},
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": {
"Polkit integration is disabled. User management requires Polkit to elevate privileges.": "Polkit 整合已停用。使用者管理需要 Polkit 來提升權限。"
},
@@ -6014,6 +6068,9 @@
"Pressure": {
"Pressure": "氣壓"
},
"Prevent accidental cursor jumps while typing": {
"Prevent accidental cursor jumps while typing": ""
},
"Prevent screen timeout": {
"Prevent screen timeout": "防止螢幕超時"
},
@@ -6131,6 +6188,9 @@
"Protocol": {
"Protocol": "協定"
},
"QR Generator": {
"QR Generator": ""
},
"Qt": {
"Qt": "Qt"
},
@@ -6383,6 +6443,9 @@
"Requires remembering the last user and session. Enable those options first.": {
"Requires remembering the last user and session. Enable those options first.": "需要記憶最後使用的使用者與工作階段。請先啟用這些選項。"
},
"Requires the DMS Theme extension from the editor marketplace": {
"Requires the DMS Theme extension from the editor marketplace": ""
},
"Reset": {
"Reset": "重設"
},
@@ -6437,6 +6500,12 @@
"Reverse Scrolling Direction": {
"Reverse Scrolling Direction": "反轉捲動方向"
},
"Reverse mouse wheel scrolling direction": {
"Reverse mouse wheel scrolling direction": ""
},
"Reverse two-finger scrolling direction": {
"Reverse two-finger scrolling direction": ""
},
"Reverse workspace switch direction when scrolling over the bar": {
"Reverse workspace switch direction when scrolling over the bar": "在工具列上捲動時反轉工作區切換方向"
},
@@ -6644,6 +6713,9 @@
"Scroll GitHub": {
"Scroll GitHub": "捲動 GitHub"
},
"Scroll Method": {
"Scroll Method": ""
},
"Scroll Wheel": {
"Scroll Wheel": "滾輪"
},
@@ -6659,6 +6731,9 @@
"Scrolling": {
"Scrolling": "滾動"
},
"Scrolling Speed": {
"Scrolling Speed": ""
},
"Search App Actions": {
"Search App Actions": "搜尋應用程式動作"
},
@@ -6821,9 +6896,6 @@
"Select the palette algorithm used for wallpaper-based colors": {
"Select the palette algorithm used for wallpaper-based colors": "請選擇調色板演算法,以桌布的顏色為基底。"
},
"Select user...": {
"Select user...": "選擇使用者..."
},
"Select which keybind providers to include": {
"Select which keybind providers to include": "選擇要包含哪些快捷鍵提供者"
},
@@ -6992,6 +7064,9 @@
"Show": {
"Show": "顯示"
},
"Show \"config reloaded\" Toast": {
"Show \"config reloaded\" Toast": ""
},
"Show 3rd Party": {
"Show 3rd Party": "顯示第三方"
},
@@ -7187,6 +7262,9 @@
"Show a notification when battery reaches the charge limit.": {
"Show a notification when battery reaches the charge limit.": ""
},
"Show a toast when the compositor config is reloaded": {
"Show a toast when the compositor config is reloaded": ""
},
"Show a warning popup when battery is running low.": {
"Show a warning popup when battery is running low.": ""
},
@@ -7529,6 +7607,9 @@
"Suspend then Hibernate": {
"Suspend then Hibernate": "掛起後休眠"
},
"Swap primary and secondary mouse buttons": {
"Swap primary and secondary mouse buttons": ""
},
"Sway Website": {
"Sway Website": "Sway 網站"
},
@@ -7652,6 +7733,18 @@
"Tailscale not available": {
"Tailscale not available": "Tailscale 不可用"
},
"Tap and Drag": {
"Tap and Drag": ""
},
"Tap and drag on the touchpad to move items": {
"Tap and drag on the touchpad to move items": ""
},
"Tap the touchpad surface to trigger left click clicks": {
"Tap the touchpad surface to trigger left click clicks": ""
},
"Tap to Click": {
"Tap to Click": ""
},
"Terminal": {
"Terminal": "終端機"
},
@@ -7727,6 +7820,9 @@
"The rule applies to any window matching one of these.": {
"The rule applies to any window matching one of these.": "該規則適用於任何符合其中一項條件的視窗。"
},
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": {
"The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.": ""
},
"Theme & Colors": {
"Theme & Colors": "主題和顏色"
},
@@ -7919,9 +8015,6 @@
"Too many attempts - locked out": {
"Too many attempts - locked out": "嘗試次數過多 - 已鎖定"
},
"Too many failed attempts - account may be locked": {
"Too many failed attempts - account may be locked": "嘗試失敗次數過多 - 帳戶可能已鎖定"
},
"Tools": {
"Tools": "工具"
},
@@ -7958,6 +8051,12 @@
"Touch your security key...": {
"Touch your security key...": "輕觸您的安全金鑰..."
},
"Touchpad Settings": {
"Touchpad Settings": ""
},
"Touchpad Speed": {
"Touchpad Speed": ""
},
"Transform": {
"Transform": "變形"
},
@@ -8018,6 +8117,9 @@
"Turn off now": {
"Turn off now": "立即關閉"
},
"Two Finger": {
"Two Finger": ""
},
"Type at least 2 characters": {
"Type at least 2 characters": "請輸入至少 2 個字元"
},
@@ -8159,6 +8261,9 @@
"Untrust": {
"Untrust": "不信任"
},
"Untrusted VPN certificate": {
"Untrusted VPN certificate": ""
},
"Up to date": {
"Up to date": "最新"
},
@@ -8342,9 +8447,6 @@
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": {
"Username must start with a lowercase letter or underscore and contain only lowercase letters, digits, hyphens, or underscores.": "使用者名稱必須以小寫字母或底線開頭,且只能包含小寫字母、數字、連字號或底線。"
},
"Username...": {
"Username...": "使用者名稱..."
},
"Users": {
"Users": "使用者"
},
@@ -8765,6 +8867,9 @@
"attached": {
"attached": "已附加"
},
"below AA": {
"below AA": ""
},
"brandon": {
"brandon": "布蘭登"
},
@@ -4692,14 +4692,20 @@
"appearance",
"code",
"colors",
"colour",
"editor",
"extension",
"look",
"marketplace",
"matugen",
"requires",
"scheme",
"style",
"template",
"theme",
"vscode"
]
],
"description": "Requires the DMS Theme extension from the editor marketplace"
},
{
"section": "matugenTemplateWezterm",
+358 -57
View File
@@ -783,6 +783,13 @@
"reference": "",
"comment": ""
},
{
"term": "Acceleration Profile",
"translation": "",
"context": "Acceleration Profile",
"reference": "",
"comment": ""
},
{
"term": "Accent Color",
"translation": "",
@@ -965,6 +972,13 @@
"reference": "",
"comment": ""
},
{
"term": "Adaptive",
"translation": "",
"context": "Adaptive",
"reference": "",
"comment": ""
},
{
"term": "Adaptive Media Width",
"translation": "",
@@ -1126,6 +1140,20 @@
"reference": "",
"comment": ""
},
{
"term": "Adjust pointer sensitivity speed",
"translation": "",
"context": "Adjust pointer sensitivity speed",
"reference": "",
"comment": ""
},
{
"term": "Adjust scrolling sensitivity multiplier",
"translation": "",
"context": "Adjust scrolling sensitivity multiplier",
"reference": "",
"comment": ""
},
{
"term": "Adjust the bar height via inner padding",
"translation": "",
@@ -1140,6 +1168,13 @@
"reference": "",
"comment": ""
},
{
"term": "Adjust touchpad pointer speed",
"translation": "",
"context": "Adjust touchpad pointer speed",
"reference": "",
"comment": ""
},
{
"term": "Adjust volume per scroll indent",
"translation": "",
@@ -1336,6 +1371,13 @@
"reference": "",
"comment": ""
},
{
"term": "Always use the durations above, even if an app requests a shorter or longer one",
"translation": "",
"context": "Always use the durations above, even if an app requests a shorter or longer one",
"reference": "",
"comment": ""
},
{
"term": "Always use this app for %1",
"translation": "",
@@ -3331,6 +3373,13 @@
"reference": "",
"comment": ""
},
{
"term": "Choose when to generate scrolling events",
"translation": "",
"context": "Choose when to generate scrolling events",
"reference": "",
"comment": ""
},
{
"term": "Choose where notification popups appear on screen",
"translation": "",
@@ -3870,6 +3919,13 @@
"reference": "",
"comment": ""
},
{
"term": "Compositor actions (focus, move, etc.)",
"translation": "",
"context": "Compositor actions (focus, move, etc.)",
"reference": "",
"comment": "keybind action type tooltip"
},
{
"term": "Config Format",
"translation": "",
@@ -4143,6 +4199,13 @@
"reference": "",
"comment": ""
},
{
"term": "Contrast by variant",
"translation": "",
"context": "Contrast by variant",
"reference": "",
"comment": "WCAG breakdown popup heading"
},
{
"term": "Contributor",
"translation": "",
@@ -5522,6 +5585,27 @@
"reference": "",
"comment": ""
},
{
"term": "Disable While Typing",
"translation": "",
"context": "Disable While Typing",
"reference": "",
"comment": ""
},
{
"term": "Disable on External Mouse",
"translation": "",
"context": "Disable on External Mouse",
"reference": "",
"comment": ""
},
{
"term": "Disable touchpad when an external mouse is connected",
"translation": "",
"context": "Disable touchpad when an external mouse is connected",
"reference": "",
"comment": ""
},
{
"term": "Disabled",
"translation": "",
@@ -5900,6 +5984,13 @@
"reference": "",
"comment": ""
},
{
"term": "Drag Lock",
"translation": "",
"context": "Drag Lock",
"reference": "",
"comment": ""
},
{
"term": "Drag a widget by its handle here to reorder it or drop it into another group",
"translation": "",
@@ -6068,6 +6159,13 @@
"reference": "",
"comment": ""
},
{
"term": "Edge",
"translation": "",
"context": "Edge",
"reference": "",
"comment": ""
},
{
"term": "Edge Hover Reveal",
"translation": "",
@@ -6180,6 +6278,13 @@
"reference": "",
"comment": ""
},
{
"term": "Emulate middle click by pressing left and right buttons",
"translation": "",
"context": "Emulate middle click by pressing left and right buttons",
"reference": "",
"comment": ""
},
{
"term": "Enable 10-bit color depth for wider color gamut and HDR support",
"translation": "",
@@ -6474,6 +6579,13 @@
"reference": "",
"comment": ""
},
{
"term": "Enter text to encode",
"translation": "",
"context": "Enter text to encode",
"reference": "",
"comment": ""
},
{
"term": "Enter this passkey on ",
"translation": "",
@@ -6740,13 +6852,6 @@
"reference": "",
"comment": ""
},
{
"term": "Failed to add printer to class",
"translation": "",
"context": "Failed to add printer to class",
"reference": "",
"comment": ""
},
{
"term": "Failed to apply %1 colors",
"translation": "",
@@ -6936,6 +7041,13 @@
"reference": "",
"comment": ""
},
{
"term": "Failed to generate QR code: %1",
"translation": "",
"context": "Failed to generate QR code: %1",
"reference": "",
"comment": ""
},
{
"term": "Failed to generate systemd override",
"translation": "",
@@ -6978,13 +7090,6 @@
"reference": "",
"comment": ""
},
{
"term": "Failed to move job",
"translation": "",
"context": "Failed to move job",
"reference": "",
"comment": ""
},
{
"term": "Failed to move to trash",
"translation": "",
@@ -7062,13 +7167,6 @@
"reference": "",
"comment": ""
},
{
"term": "Failed to remove printer from class",
"translation": "",
"context": "Failed to remove printer from class",
"reference": "",
"comment": ""
},
{
"term": "Failed to restart audio system",
"translation": "",
@@ -7286,27 +7384,6 @@
"reference": "",
"comment": ""
},
{
"term": "Failed to update description",
"translation": "",
"context": "Failed to update description",
"reference": "",
"comment": ""
},
{
"term": "Failed to update location",
"translation": "",
"context": "Failed to update location",
"reference": "",
"comment": ""
},
{
"term": "Failed to update sharing",
"translation": "",
"context": "Failed to update sharing",
"reference": "",
"comment": ""
},
{
"term": "Failed to write autostart entry",
"translation": "",
@@ -7559,6 +7636,20 @@
"reference": "",
"comment": ""
},
{
"term": "Flat",
"translation": "",
"context": "Flat",
"reference": "",
"comment": ""
},
{
"term": "Flat uses constant speed; Adaptive scales with movement speed",
"translation": "",
"context": "Flat uses constant speed; Adaptive scales with movement speed",
"reference": "",
"comment": ""
},
{
"term": "Flatpak",
"translation": "",
@@ -9211,6 +9302,13 @@
"reference": "",
"comment": ""
},
{
"term": "Ignore App-Requested Timeout",
"translation": "",
"context": "Ignore App-Requested Timeout",
"reference": "",
"comment": ""
},
{
"term": "Ignore Completely",
"translation": "",
@@ -9757,6 +9855,13 @@
"reference": "",
"comment": ""
},
{
"term": "Keep dragging when finger is briefly lifted",
"translation": "",
"context": "Keep dragging when finger is briefly lifted",
"reference": "",
"comment": ""
},
{
"term": "Keep in Bar",
"translation": "",
@@ -10072,6 +10177,13 @@
"reference": "",
"comment": ""
},
{
"term": "Left-Handed Mode",
"translation": "",
"context": "Left-Handed Mode",
"reference": "",
"comment": ""
},
{
"term": "Light",
"translation": "",
@@ -11038,6 +11150,13 @@
"reference": "",
"comment": ""
},
{
"term": "Middle Click Emulation",
"translation": "",
"context": "Middle Click Emulation",
"reference": "",
"comment": ""
},
{
"term": "Middle Section",
"translation": "",
@@ -11220,6 +11339,20 @@
"reference": "",
"comment": "mount points header in system monitor"
},
{
"term": "Mouse & Touchpad",
"translation": "",
"context": "Mouse & Touchpad",
"reference": "",
"comment": ""
},
{
"term": "Mouse Settings",
"translation": "",
"context": "Mouse Settings",
"reference": "",
"comment": ""
},
{
"term": "Mouse clicks pass through the bar to windows behind it",
"translation": "",
@@ -11374,6 +11507,13 @@
"reference": "",
"comment": ""
},
{
"term": "Natural Scrolling",
"translation": "",
"context": "Natural Scrolling",
"reference": "",
"comment": ""
},
{
"term": "Natural Touchpad Scrolling",
"translation": "",
@@ -11591,13 +11731,6 @@
"reference": "",
"comment": ""
},
{
"term": "Niri compositor actions (focus, move, etc.)",
"translation": "",
"context": "Niri compositor actions (focus, move, etc.)",
"reference": "",
"comment": ""
},
{
"term": "No",
"translation": "",
@@ -11710,6 +11843,13 @@
"reference": "",
"comment": ""
},
{
"term": "No Scroll",
"translation": "",
"context": "No Scroll",
"reference": "",
"comment": ""
},
{
"term": "No Shadow",
"translation": "",
@@ -12641,6 +12781,13 @@
"reference": "",
"comment": ""
},
{
"term": "On Button Down",
"translation": "",
"context": "On Button Down",
"reference": "",
"comment": ""
},
{
"term": "On indefinitely",
"translation": "",
@@ -12683,6 +12830,13 @@
"reference": "",
"comment": ""
},
{
"term": "Only continue if you recognize this server certificate fingerprint.",
"translation": "",
"context": "Only continue if you recognize this server certificate fingerprint.",
"reference": "",
"comment": "Warning shown before trusting an unverified VPN server certificate"
},
{
"term": "Only on Battery",
"translation": "",
@@ -13243,6 +13397,13 @@
"reference": "",
"comment": "KDE Connect pairing in progress status"
},
{
"term": "Partial",
"translation": "",
"context": "Partial",
"reference": "",
"comment": "contrast badge suffix: only some variants pass"
},
{
"term": "Partly Cloudy",
"translation": "",
@@ -13719,6 +13880,13 @@
"reference": "",
"comment": ""
},
{
"term": "Pointer Speed",
"translation": "",
"context": "Pointer Speed",
"reference": "",
"comment": ""
},
{
"term": "Polkit integration is disabled. User management requires Polkit to elevate privileges.",
"translation": "",
@@ -14006,6 +14174,13 @@
"reference": "",
"comment": ""
},
{
"term": "Prevent accidental cursor jumps while typing",
"translation": "",
"context": "Prevent accidental cursor jumps while typing",
"reference": "",
"comment": ""
},
{
"term": "Prevent screen timeout",
"translation": "",
@@ -14286,6 +14461,13 @@
"reference": "",
"comment": "Label for printer protocol selector, e.g. ipp, ipps, lpd, socket"
},
{
"term": "QR Generator",
"translation": "",
"context": "QR Generator",
"reference": "",
"comment": ""
},
{
"term": "Qt",
"translation": "",
@@ -14881,6 +15063,13 @@
"reference": "",
"comment": ""
},
{
"term": "Requires the DMS Theme extension from the editor marketplace",
"translation": "",
"context": "Requires the DMS Theme extension from the editor marketplace",
"reference": "",
"comment": "vscode matugen template description"
},
{
"term": "Reset",
"translation": "",
@@ -15007,6 +15196,20 @@
"reference": "",
"comment": ""
},
{
"term": "Reverse mouse wheel scrolling direction",
"translation": "",
"context": "Reverse mouse wheel scrolling direction",
"reference": "",
"comment": ""
},
{
"term": "Reverse two-finger scrolling direction",
"translation": "",
"context": "Reverse two-finger scrolling direction",
"reference": "",
"comment": ""
},
{
"term": "Reverse workspace switch direction when scrolling over the bar",
"translation": "",
@@ -15497,6 +15700,13 @@
"reference": "",
"comment": ""
},
{
"term": "Scroll Method",
"translation": "",
"context": "Scroll Method",
"reference": "",
"comment": ""
},
{
"term": "Scroll Wheel",
"translation": "",
@@ -15532,6 +15742,13 @@
"reference": "",
"comment": ""
},
{
"term": "Scrolling Speed",
"translation": "",
"context": "Scrolling Speed",
"reference": "",
"comment": ""
},
{
"term": "Search App Actions",
"translation": "",
@@ -16309,6 +16526,13 @@
"reference": "",
"comment": ""
},
{
"term": "Show \"config reloaded\" Toast",
"translation": "",
"context": "Show \"config reloaded\" Toast",
"reference": "",
"comment": ""
},
{
"term": "Show 3rd Party",
"translation": "",
@@ -16764,6 +16988,13 @@
"reference": "",
"comment": ""
},
{
"term": "Show a toast when the compositor config is reloaded",
"translation": "",
"context": "Show a toast when the compositor config is reloaded",
"reference": "",
"comment": ""
},
{
"term": "Show a warning popup when battery is running low.",
"translation": "",
@@ -17590,6 +17821,13 @@
"reference": "",
"comment": ""
},
{
"term": "Swap primary and secondary mouse buttons",
"translation": "",
"context": "Swap primary and secondary mouse buttons",
"reference": "",
"comment": ""
},
{
"term": "Sway Website",
"translation": "",
@@ -17884,6 +18122,34 @@
"reference": "",
"comment": "Warning when Tailscale service is not running"
},
{
"term": "Tap and Drag",
"translation": "",
"context": "Tap and Drag",
"reference": "",
"comment": ""
},
{
"term": "Tap and drag on the touchpad to move items",
"translation": "",
"context": "Tap and drag on the touchpad to move items",
"reference": "",
"comment": ""
},
{
"term": "Tap the touchpad surface to trigger left click clicks",
"translation": "",
"context": "Tap the touchpad surface to trigger left click clicks",
"reference": "",
"comment": ""
},
{
"term": "Tap to Click",
"translation": "",
"context": "Tap to Click",
"reference": "",
"comment": ""
},
{
"term": "Terminal",
"translation": "",
@@ -18052,6 +18318,13 @@
"reference": "",
"comment": ""
},
{
"term": "The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.",
"translation": "",
"context": "The server certificate has changed since it was last trusted. Only continue if you recognize the new fingerprint.",
"reference": "",
"comment": "Warning shown when a trusted VPN server certificate no longer matches"
},
{
"term": "Theme & Colors",
"translation": "",
@@ -18584,6 +18857,20 @@
"reference": "",
"comment": ""
},
{
"term": "Touchpad Settings",
"translation": "",
"context": "Touchpad Settings",
"reference": "",
"comment": ""
},
{
"term": "Touchpad Speed",
"translation": "",
"context": "Touchpad Speed",
"reference": "",
"comment": ""
},
{
"term": "Transform",
"translation": "",
@@ -18666,7 +18953,7 @@
"translation": "",
"context": "Trust",
"reference": "",
"comment": ""
"comment": "Button that approves a VPN server certificate fingerprint"
},
{
"term": "Try a different search",
@@ -18724,6 +19011,13 @@
"reference": "",
"comment": ""
},
{
"term": "Two Finger",
"translation": "",
"context": "Two Finger",
"reference": "",
"comment": ""
},
{
"term": "Type",
"translation": "",
@@ -19039,6 +19333,13 @@
"reference": "",
"comment": ""
},
{
"term": "Untrusted VPN certificate",
"translation": "",
"context": "Untrusted VPN certificate",
"reference": "",
"comment": "Title for VPN server certificate trust confirmation"
},
{
"term": "Up to date",
"translation": "",
@@ -19781,13 +20082,6 @@
"reference": "",
"comment": ""
},
{
"term": "WCAG %1 body",
"translation": "",
"context": "WCAG %1 body",
"reference": "",
"comment": "contrast badge when only body text passes"
},
{
"term": "WPA/WPA2",
"translation": "",
@@ -20453,6 +20747,13 @@
"reference": "",
"comment": ""
},
{
"term": "below AA",
"translation": "",
"context": "below AA",
"reference": "",
"comment": "contrast level below the AA threshold"
},
{
"term": "brandon",
"translation": "",