Skip to content

feat: auto-probe + override for SSH_AUTH_SOCK (closes #543)#1438

Merged
annejan merged 10 commits into
mainfrom
feat/ssh-auth-sock-543
May 9, 2026
Merged

feat: auto-probe + override for SSH_AUTH_SOCK (closes #543)#1438
annejan merged 10 commits into
mainfrom
feat/ssh-auth-sock-543

Conversation

@annejan
Copy link
Copy Markdown
Member

@annejan annejan commented May 8, 2026

Summary

Closes #543 — long-standing pain point for users running QtPass from a GUI launcher (GNOME app launcher / macOS Dock) instead of a terminal.

GUI launchers don't inherit shell-set environment variables, so SSH_AUTH_SOCK (typically exported in .bashrc/.zshrc for users running gpg-agent's SSH support, often with a YubiKey) is missing when QtPass spawns git push/pull. The result is silent auth failures that have been confusing users across multiple distros and macOS for years.

Change

New Util::initialiseSshAuthSock() called from main() before any subprocess work. Resolution order:

  1. Existing env wins — terminal launches, explicit .desktop Exec= overrides, parent-process exports keep working unchanged.
  2. Settings override — new sshAuthSockOverride setting in QtPass, exposed in the Programs tab.
  3. Auto-probe via gpgconf --list-dirs agent-ssh-socket — canonical for gpg-agent's SSH support.
  4. macOS fallback: launchctl getenv SSH_AUTH_SOCK.

Sets via qputenv so child processes inherit it.

Settings UI

Tests

6 new tests in tests/auto/util/tst_util.cpp (initial 7, then dropped 1 redundant case after review):

  • sshAuthSockOverrideRoundtrip — getter/setter persistence
  • sshAuthSockOverrideEmptyByDefault — default value
  • initialiseSshAuthSockHonoursExistingEnv — env-already-set wins over override and auto-probe
  • initialiseSshAuthSockUsesOverride — override applied when env unset
  • initialiseSshAuthSockNoOverrideNoEnvProbes — auto-probe path runs without crashing
  • initialiseSshAuthSockEmptyOverrideFallsThrough — empty override doesn't pin SSH_AUTH_SOCK to ""

All use a SshAuthSockGuard RAII helper to restore env state and the setting after each case.

Localization

lupdate refreshed; the new "SSH_AUTH_SOCK override:" / placeholder / tooltip source strings appear as type="unfinished" entries across all 60+ locales for Weblate translators.

Review iteration

Initial branch had two issues caught in review (commit 2):

Finding Resolution
Doc block for initialiseEnvironment() got orphaned during insertion of the new function Restored to its original spot above initialiseEnvironment().
initialiseSshAuthSockUsesOverride and initialiseSshAuthSockOverrideWinsOverProbe had identical preconditions and assertions Dropped the latter; can't differentiate from UsesOverride without injecting a fake gpgconf.

Test plan

  • Build clean on Linux Qt 6.8.
  • tst_util passes (112 / 112).
  • doxygen Doxyfile clean (no new warnings; CI-relevant since WARN_AS_ERROR=FAIL_ON_WARNINGS).
  • No regressions on existing tests.
  • CI green.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added SSH agent socket override option with auto-probe hint.
    • Added LTR UI direction entry.
  • Internationalization

    • Wide translation refresh across dialogs: configuration, profiles, templates, tray menu, clipboard modes, connection/GPG guidance (including “Autodetect”), and key-management/status messages.
    • Many locales updated; several new or revised entries marked unfinished.

annejan added 2 commits May 9, 2026 00:39
Long-standing pain point: GUI-launched QtPass doesn't inherit shell-set
environment variables (SSH_AUTH_SOCK, GPG_TTY, etc.) from .bashrc/.zshrc.
Users with gpg-agent's SSH support — particularly YubiKey + GPG SSH auth —
hit "git push/pull" failures when they launch QtPass from the GNOME app
launcher / macOS Dock instead of a terminal. Issue #543 documents this
across multiple distros and the macOS side.

Resolution:

New Util::initialiseSshAuthSock(), called from main() before any
subprocess work happens. Resolution order:

1. If SSH_AUTH_SOCK is already set (terminal launch, .desktop Exec=
   override, parent process), do nothing.
2. If a sshAuthSockOverride setting is configured in QtPass, use it.
3. Probe `gpgconf --list-dirs agent-ssh-socket` (canonical for gpg-agent's
   SSH support).
4. On macOS, fall back to `launchctl getenv SSH_AUTH_SOCK`.

Sets via qputenv() so child processes (git, pass) inherit it.

Settings:

- New QtPassSettings::getSshAuthSockOverride() / setSshAuthSockOverride()
  with corresponding settingsconstants::sshAuthSockOverride key.
- New configdialog.ui field on the Programs tab — labelled
  "SSH_AUTH_SOCK override:" with placeholder text "(auto-probe via
  gpgconf)" and a tooltip referencing the issue. Empty value means
  "auto-probe is fine".

Tests (tests/auto/util/tst_util.cpp):

- sshAuthSockOverrideRoundtrip — getter/setter persistence
- sshAuthSockOverrideEmptyByDefault — default value behaviour
- initialiseSshAuthSockHonoursExistingEnv — env-already-set wins over
  override and over auto-probe (terminal-launch users keep their setup)
- initialiseSshAuthSockUsesOverride — override applied when env unset
- initialiseSshAuthSockOverrideWinsOverProbe — override beats gpgconf
  even on systems where gpgconf would have provided a value
- initialiseSshAuthSockNoOverrideNoEnvProbes — auto-probe path runs
  without crashing; if it sets anything, the value looks like a path
- initialiseSshAuthSockEmptyOverrideFallsThrough — empty override does
  NOT pin SSH_AUTH_SOCK to the empty string (must be a real fallthrough
  to the probe step)

All tests use a SshAuthSockGuard RAII helper to restore env state and
the setting after each case, avoiding cross-test pollution.

Localization: lupdate-refreshed line numbers and added the new
"SSH_AUTH_SOCK override:" + tooltip + placeholder source strings as
type="unfinished" entries for Weblate translators.

Closes #543.
- CRITICAL: restore the orphaned doc block above
  Util::initialiseEnvironment(). The original commit inserted
  Util::initialiseSshAuthSock() between the existing doc block and
  initialiseEnvironment(), leaving two consecutive doc blocks before
  initialiseSshAuthSock() and an undocumented initialiseEnvironment().
  Doxygen tolerated it locally but the structure was wrong; with
  WARN_AS_ERROR=FAIL_ON_WARNINGS in CI any drift would fail the docs
  build.

- Minor: drop initialiseSshAuthSockOverrideWinsOverProbe — it had
  identical preconditions and assertions to
  initialiseSshAuthSockUsesOverride and couldn't actually
  differentiate the two scenarios without injecting a fake gpgconf.
  Net test count drops 113 → 112; coverage unchanged.

Tests pass (112/112). Doxygen clean. Build clean.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 8, 2026

📝 Walkthrough

Walkthrough

Adds SSH_AUTH_SOCK override translation entries and re-anchors many ConfigDialog, QtPass, TrayIcon, UsersDialog, and QObject translation locations across multiple locale .ts files; includes new/unfinished translations and moved runtime/dialog text references.

Translation updates (single cohort)

Layer / File(s) Summary
ConfigDialog UI
localization/.../*.ts
New SSH_AUTH_SOCK override UI strings added and Profiles/Template UI labels re-anchored.
ConfigDialog .cpp messages
localization/.../*.ts
Moved/updated prompts and errors: QtPass version text, clipboard modes, required-field validation, profile/password-store creation flow, dependency checks, and revised GnuPG install guidance.
QtPass runtime
localization/.../*.ts
Re-anchored WebDAV/fusedav connection strings, QProcess error labels, GPG keygen statuses, and clipboard cleared/not-cleared messages.
TrayIcon
localization/.../*.ts
Re-anchored tray menu action translations (Show/Hide/Minimize/Maximize/Restore and Quit).
UsersDialog
localization/.../*.ts
Added/re-anchored keylist fetch/failure strings and key-status markers (created, expires, [INVALID], [EXPIRED], [PARTIAL]).
QObject & misc
localization/.../*.ts
Moved/added LTR entry and re-anchored miscellaneous ellipsis/template-help strings.

Sequence Diagram(s)
(Conditions for sequence diagram generation are not met; none provided.)

Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels
size:XXL

Suggested reviewers

  • nogeenharrie
  • nogeenhenk

Poem

"A rabbit hops through strings and lines,
Translating keys and tiny signs,
I nibble SSH hints with delight,
Re-anchor words through day and night,
Hooray—translations snug and bright! 🐇"

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/ssh-auth-sock-543

@codecov
Copy link
Copy Markdown

codecov Bot commented May 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 33.39%. Comparing base (171f718) to head (1ed63a2).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1438      +/-   ##
==========================================
+ Coverage   32.96%   33.39%   +0.43%     
==========================================
  Files          44       44              
  Lines        4293     4324      +31     
==========================================
+ Hits         1415     1444      +29     
- Misses       2878     2880       +2     
Flag Coverage Δ
qtpass 33.39% <ø> (+0.43%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

CI super-linter caught two long-line argument groups in the
gpgconf and launchctl probe blocks. Reformatted to break after
the opening paren — matches the style clang-format applies
elsewhere when the call doesn't fit on a line.

No semantic change.
@nogeenharrie
Copy link
Copy Markdown
Contributor

Build & Test Report

Build

  • qmake6 && make -j4 — clean build, no errors
  • QtPassSettings() default constructor = delete is safe (no callers found)

Tests

All 436 tests pass across 13 suites:

  • tst_util: 112 passed (incl. 6 new SSH_AUTH_SOCK tests)
  • tst_ui: 46, tst_storemodel: 30, tst_settings: 107, tst_passwordconfig: 7
  • tst_filecontent: 21, tst_simpletransaction: 8, tst_gpgkeystate: 16
  • tst_exportpublickeydialog: 15, tst_importkeydialog: 33
  • TestLocale: 43, tst_executor: 21, tst_integration: 19

Verdict

LGTM. Tilde expansion, WSL caching, raw string literals, and QDir::cleanPath drive-by fixes all look correct. Resolution chain is non-intrusive (no-op when env is already set).

@nogeenhenk
Copy link
Copy Markdown
Contributor

Review Summary

I've reviewed and tested this PR locally. Here are my findings:

SSH_AUTH_SOCK Feature (closes #543)

Feature works correctly:

  • Resolution order implemented correctly: existing env → settings override → gpgconf probe → macOS launchctl
  • Util::initialiseSshAuthSock() called early in main() before any subprocess runs
  • UI in Programs tab with proper tooltip and placeholder
  • All 6 new tests pass:
    • sshAuthSockOverrideRoundtrip
    • sshAuthSockOverrideEmptyByDefault
    • initialiseSshAuthSockHonoursExistingEnv
    • initialiseSshAuthSockUsesOverride
    • initialiseSshAuthSockNoOverrideNoEnvProbes
    • initialiseSshAuthSockEmptyOverrideFallsThrough

Bonus: Superior Segfault Fix

This PR also contains a superior segfault fix compared to PR #1188:

Aspect PR #1188 PR #1438
Widget lookup ui->lineEdit (stale pointer) findChild<QLineEdit *>("lineEdit") (safe lookup)
Root cause Not addressed Handles stale ui-> pointers after setWindowFlags() window rebuild
Deferral QTimer::singleShot(10, ...) QMetaObject::invokeMethod(QueuedConnection)
showEvent() No Yes - proper first-show handling
changeEvent() Inline call Deferred invocation

Root cause properly addressed: setWindowFlags() rebuilds the native window via setParent(nullptr, flags), destroying widgets while ui-> pointers remain stale. This PR uses findChild<>() which safely returns null when the widget is gone.

Test Results

  • ✅ Builds cleanly with Qt 6.11
  • ✅ All tst_util tests pass (112/112)
  • ✅ No regressions observed

Recommendation

This PR should be merged. It:

  1. Fixes QtPass does not honor $SSH_AUTH_SOCK env, requires running from terminal to sync via ssh/github #543 (SSH_AUTH_SOCK for GUI launcher users)
  2. Contains a more robust segfault fix that supersedes PR fix: null check in focusInput to prevent segfault #1188

Once merged, PR #1188 can be closed as this PR's segfault fix is more comprehensive.

Copy link
Copy Markdown
Contributor

@nogeenhenk nogeenhenk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed and tested locally. Build passes, all tests pass. This PR contains both the SSH_AUTH_SOCK feature (closes #543) and a superior segfault fix compared to PR #1188. Recommend merging.

@annejan
Copy link
Copy Markdown
Member Author

annejan commented May 9, 2026

Test plan for users — #1438 (closes #543)

For testers validating the SSH_AUTH_SOCK auto-probe + override behaviour. Tick boxes as you go. Reference the original issue threads in #543 for the scenarios that drove this fix.

Prerequisites

  • A working pass store with a Git remote (HTTPS or SSH).
  • gpg-agent configured with enable-ssh-support in ~/.gnupg/gpg-agent.conf, OR another SSH agent of choice.
  • Build & install QtPass from this branch.

Quick sanity check before each scenario

# What does the SHELL see?
echo "SSH_AUTH_SOCK in shell: ${SSH_AUTH_SOCK:-(unset)}"

# What does gpgconf say?
gpgconf --list-dirs agent-ssh-socket

# Is the agent reachable?
ssh-add -l   # should list keys, not "could not open a connection"

Scenario 1 — auto-probe via gpgconf (the main fix)

The original bug: launch QtPass from GUI launcher; git push fails because SSH_AUTH_SOCK wasn't set.

  • Make sure SSH_AUTH_SOCK is NOT set in the env that launches QtPass. On most Linux desktops this is the default for app-launcher launches.
  • Open QtPass via your GUI app launcher (GNOME Activities / KDE Kickoff / macOS Dock / Windows Start Menu). Do not launch from a terminal.
  • Trigger a Git operation that needs SSH auth: Users panel → make any change → save → check that pull/push actually works.
  • Expected: No "permission denied (publickey)" or "could not open ssh-agent" errors; git operations succeed transparently.
  • Pre-fix behaviour for comparison: the same launch path on main would fail the SSH-backed git op silently or with a confusing error.

If you build a debug binary, you'll see Util::initialiseSshAuthSock(): set from gpgconf: <path> in the QtPass log.

Scenario 2 — Settings override

For users on systems where gpgconf isn't available or reports the wrong socket. Or for users running a non-gpg SSH agent at a known path.

  • Open QtPass → Config → Programs tab.
  • Locate the new field labelled "SSH_AUTH_SOCK override:" with the placeholder (auto-probe via gpgconf).
  • Hover the label; the tooltip should reference issue QtPass does not honor $SSH_AUTH_SOCK env, requires running from terminal to sync via ssh/github #543.
  • Set the field to a deliberate path, e.g. /run/user/1000/keyring/ssh (gnome-keyring) or your ssh-agent socket.
  • Save (OK), close QtPass, relaunch from GUI.
  • Expected: Git operations use the configured socket. If you point it at a non-existent path, git ops fail in a way that proves the override took effect.
  • Clear the field; relaunch; auto-probe should resume.

Scenario 3 — terminal launch / pre-existing setups (no regression)

The fix MUST NOT clobber working setups.

  • In a terminal where echo $SSH_AUTH_SOCK shows your existing socket, launch qtpass directly. Do click around and try git operations.
  • Expected: Behaviour unchanged from main. The existing env value wins; auto-probe and override are bypassed.
  • If you previously edited /usr/share/applications/qtpass.desktop to set Exec=sh -c "SSH_AUTH_SOCK=$(gpgconf …) qtpass" (the old workaround), that should keep working.

Scenario 4 — debug logging

If something doesn't work, point QtPass at qDebug output:

  • On Linux: QT_LOGGING_RULES='qtpass.debug=true' qtpass from a terminal (or set in .desktop).
  • Look for one of:
    • Util::initialiseSshAuthSock(): set from settings override: <path>
    • Util::initialiseSshAuthSock(): set from gpgconf: <path>
    • Util::initialiseSshAuthSock(): set from launchctl: <path> (macOS only)
    • No log line at all = SSH_AUTH_SOCK was already set by the launcher and the function returned early. That's also fine.

Scenario 5 — macOS specifics (Catalina, Big Sur, Ventura, Sonoma, +)

  • Set the variable in launchd's session env: launchctl setenv SSH_AUTH_SOCK $(gpgconf --list-dirs agent-ssh-socket).
  • Launch QtPass from Dock or Spotlight (i.e. NOT from a Terminal).
  • Expected: SSH_AUTH_SOCK arrives via launchctl getenv in the macOS-only fallback branch, and git operations work.
  • If you launch from Terminal, the existing env wins (Scenario 3) so the launchctl fallback is bypassed — that's still correct.

Scenario 6 — YubiKey + GPG SSH (the original reporter's setup)

This was the canonical broken case in the original issue.

  • YubiKey inserted, gpg-card shows it.
  • gpg-agent running with enable-ssh-support, ssh-add -l lists the YubiKey-backed key.
  • Push to a GitHub remote (the issue's specific use case) from QtPass launched via GUI launcher (no terminal).
  • Expected: YubiKey blinks, you tap it, push succeeds.
  • Pre-fix behaviour for comparison: push hangs or fails with agent refused operation/Permission denied (publickey).

Edge cases worth poking

  • Empty override field saved → behaves like "auto-probe", not "force empty SSH_AUTH_SOCK".
  • Override set to a non-existent path → existing env still wins on terminal launches; non-existent path used on GUI launches (we don't validate paths — feature, not bug; gives users "force this and only this" semantics).
  • gpgconf not on PATH → silent fallthrough; SSH_AUTH_SOCK remains unset; behaviour matches pre-fix on those systems.

Reporting back

If anything misbehaves, drop a comment on this PR with:

  • Distro / desktop env / version
  • How QtPass was launched
  • The output of:
    env | grep -i sock
    gpgconf --list-dirs agent-ssh-socket
    ssh-add -l
  • The QtPass debug log (Scenario 4)

Reviewer caught a sharp-edge case in the original auto-probe logic:
when SSH_AUTH_SOCK is unset (typical for GUI-launched apps), the code
unconditionally adopted whatever `gpgconf --list-dirs agent-ssh-socket`
reported. That can silently switch users from a working external SSH
agent (OpenSSH ssh-agent, KeePassXC, 1Password, gnome-keyring,
yubikey-agent, ...) to an empty gpg-agent SSH socket — gpg-agent
exposes that socket even when SSH support is enabled but no keys are
loaded, so the candidate isn't actually useful.

Fix: validate auto-probed candidates by spawning `ssh-add -l` with
SSH_AUTH_SOCK pointed at the candidate (via Executor's env-aware
overload, so the parent process env is undisturbed). OpenSSH's
ssh-add(1) exit codes are well-defined:

  0 = success, identities listed
  1 = agent reachable, no identities (legitimate — YubiKey-backed
      setups enumerate on tap)
  2 = couldn't open a connection
  *  = ssh-add not on PATH, etc.

Treat 0 or 1 as "reachable, adopt"; reject everything else. This
preserves the working external-agent setups while still fixing the
GUI-launch case for users on gpg-agent SSH support.

Settings override is intentionally not validated — the user
explicitly typed a path; QtPass trusts the choice (e.g. user starts
their agent after launching QtPass).

Updated docs in util.h to describe the validation step. Added one
new test (initialiseSshAuthSockOverrideSkipsAgentValidation) that
points the override at a deliberately-dead socket and verifies it's
adopted anyway, demonstrating the override's no-validation contract.

113 tests pass (was 112, +1 new). Test runtime jumps ~100ms in the
auto-probe path due to the ssh-add subprocess; acceptable startup
cost for the safety win.

Refs #543 and the post-merge review of #1438.
@annejan
Copy link
Copy Markdown
Member Author

annejan commented May 9, 2026

Update — validation step added (commit `9ad83578a`)

The previous version of this PR was too aggressive: it would adopt whatever `gpgconf --list-dirs agent-ssh-socket` reported, even when gpg-agent's SSH support exposed the socket but had no keys loaded. That risked silently switching users from a working external SSH agent (whose env got dropped on GUI launch) to an empty gpg-agent socket.

Auto-probed candidates are now validated via `ssh-add -l` before adoption:

  • exit 0 (success, keys listed) → adopt
  • exit 1 (agent reachable, no keys — legit YubiKey "tap to enumerate" pattern) → adopt
  • exit 2 (couldn't open connection) → reject
  • anything else (ssh-add not on PATH, etc.) → reject

The settings override field intentionally skips this validation — when a user explicitly types a path, QtPass trusts it (so e.g. the user can start their agent after QtPass).

Additional test scenarios for the validation behaviour

  • Validation rejects empty/broken gpg-agent socket. Stop gpg-agent (`gpgconf --kill gpg-agent`), launch QtPass via GUI launcher with SSH_AUTH_SOCK unset. Expected: SSH_AUTH_SOCK stays unset (auto-probe gets a path from gpgconf but `ssh-add -l` fails). Debug log shows: `gpgconf reported but ssh-add -l rejected it; not adopting`.

  • Validation accepts agent-with-no-keys-loaded. Set up gpg-agent with SSH support enabled but don't import any keys. Launch QtPass via GUI launcher. Expected: SSH_AUTH_SOCK adopted (ssh-add returns 1 = "no identities" but agent is reachable). Subsequent `ssh` invocation prompts properly when YubiKey is inserted / key is added.

  • Validation skipped for explicit override. Set the Settings override to `/tmp/this-does-not-exist`, save, relaunch QtPass via GUI launcher. Expected: SSH_AUTH_SOCK is set to the dead path anyway (override is trusted), git operations fail with the standard "couldn't connect to agent" error — proving the override took effect.

  • External ssh-agent preservation. If your shell exports SSH_AUTH_SOCK to a working ssh-agent, terminal launch keeps using it (existing-env-wins, unchanged). For GUI launch where the env got dropped, you have two options:

    1. Leave the override field empty — auto-probe will reach gpg-agent but reject it if empty/dead, then leave SSH_AUTH_SOCK unset (no agent for git, but at least no false-positive adoption).
    2. Fill in the override field with your shell agent's known socket path — QtPass will use it directly.

Comparison vs commit `bf5d49086`

Scenario Before validation After validation
gpg-agent SSH support, keys loaded Adopt Adopt
gpg-agent SSH support, no keys (reachable) Adopt Adopt
gpg-agent reports socket but agent dead Adopt (broken!) Reject ✓
External ssh-agent works in shell, lost on GUI launch Adopted gpg-agent over user's intent If gpg-agent unreachable: don't adopt, leave unset. User can fill the override field. ✓

The startup-time cost of the extra `ssh-add -l` invocation is ~100ms in the auto-probe path; we considered this acceptable for the safety win.

🤖 Generated with Claude Code

@nogeenhenk
Copy link
Copy Markdown
Contributor

Update: Reviewed new commit 9ad83578a

The new commit adds important validation for auto-probed SSH sockets via ssh-add -l.

Key Changes

  • New validation function: isSshAgentReachable() that spawns ssh-add -l with the candidate socket
  • Validation logic: Only adopts sockets where ssh-add -l returns exit code 0 (has keys) or 1 (agent alive but no keys - valid for YubiKey setups)
  • Override skips validation: User's explicit sshAuthSockOverride setting is trusted without validation (user may start agent after QtPass)

Why This Matters

Without this validation, QtPass could silently switch users from a working external SSH agent (OpenSSH ssh-agent, KeePassXC, 1Password, gnome-keyring, yubikey-agent) to an empty gpg-agent SSH socket. The gpg-agent exposes that socket even when SSH support is enabled but no keys are loaded.

Test Results

✅ All 9 SSH_AUTH_SOCK tests pass:

  • sshAuthSockOverrideRoundtrip
  • sshAuthSockOverrideEmptyByDefault
  • initialiseSshAuthSockHonoursExistingEnv
  • initialiseSshAuthSockUsesOverride
  • initialiseSshAuthSockNoOverrideNoEnvProbes
  • initialiseSshAuthSockOverrideSkipsAgentValidation (new test)
  • initialiseSshAuthSockEmptyOverrideFallsThrough

Build Status

✅ Builds cleanly with Qt 6.11

This is an excellent improvement that handles edge cases properly. Still approving this PR for merge.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 57

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
localization/localization_ja.ts (1)

238-242: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Translation error: "Automatically pull" is incorrectly translated as "自動 push".

This is a copy-paste of the preceding "Automatically push" translation. The correct translation should use "pull".

🐛 Proposed fix
         <source>Automatically pull</source>
-        <translation>自動 push</translation>
+        <translation>自動 pull</translation>

As per coding guidelines: "Fix translator-flagged bugs in .ts files."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_ja.ts` around lines 238 - 242, The translation for
the message with source "Automatically pull" is incorrectly set to "自動 push";
update the translation element for the source string "Automatically pull" to the
correct Japanese phrasing (e.g., "自動でプル" or "自動で取得") so it correctly uses "pull"
instead of "push" (locate the <message> containing <source>Automatically
pull</source> and replace the current <translation>自動 push</translation>
accordingly).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@localization/localization_af.ts`:
- Around line 157-170: The three new empty translation entries for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" should be filled with best-effort Afrikaans translations (keeping
type="unfinished"); locate the message entries that contain those exact source
texts and replace the empty <translation> content with appropriate Afrikaans
text (for example: "SSH_AUTH_SOCK-omskakeling:", "Opsionele pad om SSH_AUTH_SOCK
te oorleer. Laat leeg om via gpgconf outomaties te bepaal (kwessie `#543`).", and
"(outomaties bepaal via gpgconf)") while preserving the existing attributes and
markup.
- Around line 535-542: Update the Afrikaans translations for the two GnuPG
install messages (the entries whose English source strings begin "Please install
GnuPG on your system.<br>Install <strong>Ubuntu</strong> from the Microsoft
Store to get it..." and "Please install GnuPG on your system.<br>Install
<strong>Ubuntu</strong> from the Microsoft Store<br>or <a
href="https://www.gnupg.org/download/#sec-1-2">download</a> it from GnuPG.org")
to remove machine-translation artifacts: fix capitalization and spacing, correct
punctuation, preserve/normalize HTML tags (no extra spaces inside tags), and
produce natural Afrikaans phrasing (e.g. "Installeer asseblief GnuPG op u
stelsel. Installeer die <strong>Ubuntu</strong>-app in die Microsoft Store om
dit te kry. As u dit reeds geïnstalleer het, maak dit eenkeer oop en klik dan op
„Autodetecteer“ in die volgende dialoog." and a similar clean translation for
the download variant). If uncertain about a translation, mark the translation
element with type="unfinished".

In `@localization/localization_ar.ts`:
- Around line 263-276: Add best-effort Arabic translations for the three empty
entries corresponding to the source strings "SSH_AUTH_SOCK override:", "Optional
path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue
`#543`).", and "(auto-probe via gpgconf)" in localization_ar.ts, but keep each
translation element's attribute type="unfinished" so Weblate can refine them
later; update the <translation> text nodes for those messages with appropriate
Arabic phrases while leaving the surrounding XML structure and attributes
unchanged.

In `@localization/localization_bg.ts`:
- Around line 157-170: The three empty translation entries for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" need to be filled with best-effort Bulgarian translations (e.g. a
concise Bulgarian rendering of each source) and each translation element must
keep type="unfinished" so Weblate can refine them; update the translation text
for those exact source strings in localization_bg.ts while preserving existing
XML structure and attributes.

In `@localization/localization_bn.ts`:
- Around line 1468-1473: The Bengali translation for the source "Failed to
connect WebDAV:\n" in localization/localization_bn.ts is using the wrong word
"ত্রাণক" (rescuer); update the translation at the message corresponding to
../src/qtpass.cpp line 231 to use a failure word such as "ব্যর্থ" — e.g. change
the translation to "WebDAV-এ সংযোগ ব্যর্থ:" or "WebDAV-এ সংযোগ করতে ব্যর্থ:" so
it correctly conveys failure.
- Around line 307-320: Fill the three empty <translation> bodies for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" with best-effort Bangla text while keeping type="unfinished"; update
the translation values (not removing the type attribute) so Bangla users see a
preliminary translation that Weblate can later refine. Locate the translation
entries matching those exact source texts to apply the changes.

In `@localization/localization_ca.ts`:
- Around line 157-170: Add best-effort Catalan translations for the three empty
<translation> entries corresponding to the source strings "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)"; keep each
translation attribute type="unfinished" per guidelines so Weblate can refine
them. Ensure the translations are concise and natural Catalan equivalents for
the UI labels and tooltip text, and place them in the existing <translation>
bodies for those exact source strings.

In `@localization/localization_cs.ts`:
- Around line 251-253: The Czech translation for the UI string "Show all lines
beginning with a word followed by a colon as fields in password fields, not only
the listed ones" incorrectly uses "středníkem" (semicolon); edit the translation
entry in localization_cs.ts for that source string and replace "středníkem" with
"dvojtečkou" so the meaning matches the source exactly (keep the rest of the
sentence and punctuation unchanged).
- Around line 555-568: Replace the three empty Czech translations for the
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" with best-effort Czech equivalents while keeping each translation
attribute type="unfinished"; ensure the translated text matches the
intent/terminology (e.g., use "přepsání SSH_AUTH_SOCK:", "Volitelná cesta pro
přepsání SSH_AUTH_SOCK. Nechte prázdné pro automatické zjištění přes gpgconf
(issue `#543`)." and "(automatické zjištění přes gpgconf)") and preserve
surrounding XML structure and encoding.

In `@localization/localization_cy.ts`:
- Around line 488-489: The Welsh translation string for the GnuPG installation
guidance ("Gosodwch GnuPG ar eich system...") contains extra spaces around HTML
tags; remove the spurious spaces so tags are directly adjacent to text (e.g.
change " . &lt;br&gt; gosod " to ".&lt;br&gt;gosod", " &lt;strong&gt; Ubuntu
&lt;/strong&gt; " to "&lt;strong&gt;Ubuntu&lt;/strong&gt;", and similarly fix
any extra spaces around &lt;br&gt;, &lt;strong&gt; and &lt;a&gt; tags in that
translation occurrence and the other two instances referenced) ensuring only
spacing for natural text remains and the HTML tags are not split by spaces.
- Around line 307-320: Add Welsh translations for the three empty translation
entries for the SSH_AUTH_SOCK UI strings: provide translations for
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" in
localization_cy.ts by replacing the empty <translation
type="unfinished"></translation> nodes with best-effort Welsh text while keeping
type="unfinished" so Weblate can refine; ensure the translated phrases
correspond exactly to those source strings so the UI labels/tooltips
(SSH_AUTH_SOCK override, optional path message, and the auto-probe
parenthetical) appear correctly for Welsh users.

In `@localization/localization_da.ts`:
- Around line 157-170: Three new translation entries for "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`)." and "(auto-probe via gpgconf)" are empty; add
best-effort Danish text for these three <source> strings in
localization/localization_da.ts, keeping the translation attributes as
type="unfinished" (do not change attribute), and ensure the translations
correspond to those exact source strings so the UI uses Danish instead of
falling back to English.

In `@localization/localization_de_DE.ts`:
- Around line 560-573: Fill the three empty translation entries for the messages
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" with
best-effort German strings while keeping type="unfinished" so Weblate can
refine; suggested translations are: "SSH_AUTH_SOCK überschreiben:", "Optionaler
Pfad zum Überschreiben von SSH_AUTH_SOCK. Leer lassen, um per gpgconf
automatisch zu ermitteln (Issue `#543`).", and "(automatisch per gpgconf
ermitteln)". Ensure you replace the empty <translation
type="unfinished"></translation> contents with these strings and keep the
type="unfinished" attribute.

In `@localization/localization_de_LU.ts`:
- Around line 296-299: The translation for the source string "Template" is
incorrectly pluralized as "Templates"; update the <translation> text in the same
message block so it matches the source singular form (replace "Templates" with
"Template") — locate the message containing <source>Template</source> and the
current <translation>Templates</translation> and change the translation to the
singular form.
- Around line 559-571: Fill the three empty translations for the source strings
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" with
best-effort Luxembourgish (de_LU) text, but keep each translation element marked
type="unfinished" so Weblate can refine them later; update the translation
attributes for the corresponding message entries (matching those exact source
strings) in localization_de_LU.ts.

In `@localization/localization_el.ts`:
- Around line 267-280: Fill the three empty Greek translations for the
SSH_AUTH_SOCK UI strings in localization_el.ts: provide best-effort Greek
translations (keep type="unfinished") for the source texts "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)". Update the
corresponding <translation> elements for those messages so they contain the
Greek text but retain type="unfinished" for Weblate refinement; locate them by
the exact source strings in the file (the messages around configdialog.ui lines
referenced in the diff).
- Around line 1549-1560: Fix the typo in the Greek translations for the two
re-anchored messages: locate the translation entries that correspond to the
source strings "fusedav exited unexpectedly" and "Failed to start fusedav to
connect WebDAV:" (these are the message blocks tied to qtpass.cpp) and change
"fusevav" to "fusedav" in both translation values so they match the source text.

In `@localization/localization_en_GB.ts`:
- Around line 157-170: Three new translation entries for the SSH_AUTH_SOCK UI
strings are blank; open localization_en_GB.ts and provide best-effort English
(British) translations for the three source texts "SSH_AUTH_SOCK override:",
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`)." and "(auto-probe via gpgconf)" while keeping each translation tag
as type="unfinished"; ensure wording matches UI tone (e.g. "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-detect
via gpgconf (see issue `#543`).", "(auto-detect via gpgconf)") and preserve
surrounding XML structure and attributes.

In `@localization/localization_en_US.ts`:
- Around line 157-190: Several new en_US entries were left with empty
<translation type="unfinished"> fields; populate each translation with the
original source text (keeping type="unfinished") so the .ts file isn't blank for
those keys. Update the translations for the messages "SSH_AUTH_SOCK override:",
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`).", "(auto-probe via gpgconf)", "Profile name, used to identify this
configuration profile", "Path to the password store directory", "Signing Key",
and "Optional: GPG key to sign .gpg-id files for integrity verification. Leave
empty unless you need to protect the user list from tampering." by copying their
source strings into the corresponding <translation> elements and leave
type="unfinished" intact.

In `@localization/localization_es_AR.ts`:
- Around line 366-379: The three empty Spanish translations for the strings
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" must be
filled with best-effort es_AR text while retaining type="unfinished"; update the
corresponding <translation> entries in localization_es_AR.ts to sensible Spanish
phrases (e.g., a concise label for SSH_AUTH_SOCK override, a short explanatory
sentence for the optional path and gpgconf auto-probe, and a parenthetical note
for auto-probe) and do not change the type attribute so Weblate can refine them
later.

In `@localization/localization_es_EC.ts`:
- Around line 1917-1919: The translation for the status tag "[EXPIRED]"
currently uses the verb form "[VENCIÓ]"; update the translation entry that maps
the source "[EXPIRED]" to an adjective form such as "[VENCIDA]" (or
"[CADUCADA]") so the status reads as an adjective tag rather than a past-tense
verb; locate the translation pair where source is "[EXPIRED]" and change the
translation value from "[VENCIÓ]" to the chosen adjective form.
- Around line 366-379: Translate the three empty Spanish entries for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" by providing concise Spanish translations and keeping
type="unfinished"; update the corresponding translation attributes in
localization_es_EC.ts so the UI shows Spanish (for example: "Anulación de
SSH_AUTH_SOCK:", "Ruta opcional para anular SSH_AUTH_SOCK. Dejar en blanco para
auto-detección vía gpgconf (issue `#543`).", "(auto-detección vía gpgconf)"),
ensuring the original source strings (used in the <source> tags) remain
unchanged.
- Around line 391-394: Update the translation entry for the source string
"Signing Key" in localization_es_EC.ts (the <message> block containing
<source>Signing Key</source>) to use the more precise noun phrase "Clave de
firma" instead of the ambiguous "Firma"; edit the <translation> element for that
message accordingly.

In `@localization/localization_es_ES.ts`:
- Around line 366-379: The three empty Spanish translations for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`)." and "(auto-probe via
gpgconf)" should be filled with best-effort Spanish text while preserving the
attribute type="unfinished"; update the translation elements corresponding to
those exact source texts so they contain appropriate Spanish phrases (e.g., a
concise label for the override, an explanatory sentence about optional
path/auto-probing via gpgconf, and a short parenthetical note) and leave
type="unfinished" so Weblate can refine them later.

In `@localization/localization_es_MX.ts`:
- Around line 366-379: Populate the three empty <translation type="unfinished">
entries for the messages "SSH_AUTH_SOCK override:", "Optional path to override
SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).", and
"(auto-probe via gpgconf)" in localization_es_MX.ts with best-effort Spanish
text (e.g. "Sustitución de SSH_AUTH_SOCK:", "Ruta opcional para sobrescribir
SSH_AUTH_SOCK. Déjelo vacío para detectarlo automáticamente vía gpgconf (issue
`#543`).", and "(detección automática vía gpgconf)"), keeping the
type="unfinished" attribute unchanged so Weblate can refine them later.

In `@localization/localization_es_UY.ts`:
- Around line 366-379: Add best-effort es_UY translations for the three empty
<translation> entries corresponding to the source texts "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)"; update their
<translation> content but keep the attribute type="unfinished". Suggested
strings to insert are: "Sobrescribir SSH_AUTH_SOCK:", "Ruta opcional para
sobrescribir SSH_AUTH_SOCK. Dejar vacío para que se detecte automáticamente vía
gpgconf (issue `#543`).", and "(detección automática vía gpgconf)"; ensure you
edit the entries for those exact source texts so the .ts file remains
consistent.

In `@localization/localization_et.ts`:
- Around line 157-170: The three Estonian translation entries for the UI labels
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" are
empty and marked type="unfinished"; provide best-effort Estonian translations
for those strings in localization/localization_et.ts, keeping the
type="unfinished" attribute so Weblate can refine them (translate the short
label, the explanatory sentence, and the parenthetical note respectively).

In `@localization/localization_fa.ts`:
- Around line 307-320: Fill the three empty translation entries for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" by adding best-effort Persian translations (e.g. for the first:
"بازنویسی SSH_AUTH_SOCK:", second: "مسیر اختیاری برای بازنویسی SSH_AUTH_SOCK.
خالی بگذارید تا به‌صورت خودکار از طریق gpgconf بررسی شود (issue `#543`).", third:
"(بررسی خودکار از طریق gpgconf)"), but keep the translation attributes as
type="unfinished" so Weblate can refine later; update the corresponding
<translation> elements that are currently empty to contain these Persian
strings.

In `@localization/localization_fi.ts`:
- Around line 459-462: The Finnish translation string for the message pairing
the source "Please install GnuPG..." contains a missing space before the anchor
tag ("tai<a..."), causing words to run together; open localization_fi.ts, find
the translation entry matching the source text (the message around
configdialog.cpp line 927) and insert a single space before the <a
href="https://www.gnupg.org/download/#sec-1-2"> tag so the translated fragment
becomes "tai <a ...>lataa</a> se osoitteesta GnuPG.org".
- Around line 157-170: Fill the three empty Finnish translation entries in
localization_fi.ts for the source strings "SSH_AUTH_SOCK override:", "Optional
path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue
`#543`).", and "(auto-probe via gpgconf)" with best-effort Finnish text while
keeping the attribute type="unfinished"; update the <translation> content for
those message blocks (the ones referencing configdialog.ui) to appropriate
Finnish phrases but do not remove or change type="unfinished".

In `@localization/localization_fr_BE.ts`:
- Around line 563-575: Add best-effort French translations for the three new
SSH_AUTH_SOCK strings in localization_fr_BE.ts: translate "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`)." and "(auto-probe via gpgconf)" and populate their
<translation> elements while keeping type="unfinished"; ensure the translated
text preserves the meaning (mention SSH_AUTH_SOCK, override, optional path,
auto-probe via gpgconf) and does not change the surrounding <location> or source
tags so Weblate can pick up the entries for later refinement.

In `@localization/localization_fr_FR.ts`:
- Around line 563-576: Open localization_fr_FR.ts and replace the empty
<translation type="unfinished"></translation> entries for the three
SSH_AUTH_SOCK source strings with best-effort French translations while keeping
type="unfinished"; specifically provide translations for "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" so the <message>
entries contain the French text but still have type="unfinished" for Weblate to
refine.

In `@localization/localization_fr_LU.ts`:
- Around line 563-575: Three translation entries are left empty: the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)"; populate each corresponding <translation> with best-effort French
(Luxembourg) text but keep the attribute type="unfinished" so Weblate can refine
later—for example translate the three sources to something like "Remplacement de
SSH_AUTH_SOCK :", "Chemin optionnel pour remplacer SSH_AUTH_SOCK. Laisser vide
pour autodetection via gpgconf (issue `#543`).", and "(autodétection via
gpgconf)"; ensure you update the <translation> elements for those exact source
strings in localization_fr_LU.ts and do not change other attributes.

In `@localization/localization_fy_NL.ts`:
- Around line 2009-2012: Replace the untranslated marker "[PART]" used for
source "[PARTIAL]" with a proper Frisian equivalent inside the same bracketed
marker format to match sibling translations (e.g. change the translation value
from "[PART]" to "[PARTIEEL]" or "[DIELLIK]"), ensuring you update the
translation string only (keep the source "[PARTIAL]" intact) and follow existing
capitalization/bracket style used by other messages like "[ÛNJILDIGE]" and
"[FERRÛN]".
- Around line 157-170: The three localization entries for the SSH_AUTH_SOCK UI
strings are left empty (message sources: "SSH_AUTH_SOCK override:", "Optional
path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue
`#543`).", and "(auto-probe via gpgconf)") — fill each translation attribute with
a best-effort Frisian translation while keeping type="unfinished" so Weblate can
refine; update the <translation> text for those three messages (located near the
configdialog.ui entries) with concise Frisian equivalents that match the English
meaning and retain the existing XML structure and type="unfinished" attribute.

In `@localization/localization_gl.ts`:
- Around line 267-280: The three empty translation entries for the ConfigDialog
sources "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`)." and "(auto-probe via
gpgconf)" must be filled with best-effort Galician text while preserving
type="unfinished" so Weblate can refine them; update the corresponding
<translation> bodies in localization_gl.ts with Galician phrases (e.g., a
succinct label for SSH_AUTH_SOCK override, a clear explanatory sentence for the
optional path and auto-probing via gpgconf, and a short parenthetical for
"(auto-probe via gpgconf)"), keeping the source strings intact.

In `@localization/localization_he.ts`:
- Around line 287-487: The TS file localization_he.ts contains many empty
translation entries for ConfigDialog UI and messages (e.g., source strings
"Name", "Path", "Signing Key", "System tray is not available", "Create profile
directory?", "Failed to create password-store at: %1", etc. from configdialog.ui
/ configdialog.cpp); fill each empty translation with a best-effort Hebrew
translation while keeping the attribute type="unfinished" so Weblate can refine
later, and be careful to preserve placeholders like %1 and any HTML/markup
(e.g., &lt;a&gt;, &lt;strong&gt;) and escape sequences exactly as in the source.
- Around line 267-279: The three new untranslated UI strings ("SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)") in
localization_he.ts need best-effort Hebrew translations inserted into their
<translation> elements while preserving type="unfinished"; update the respective
<translation type="unfinished">…</translation> entries with concise Hebrew text
that accurately conveys the original English meaning (e.g., a short phrase for
the label, a sentence for the optional-path help text, and a parenthetical note
for the probe hint) and do not remove or change the type="unfinished" attribute.

In `@localization/localization_hi.ts`:
- Around line 307-320: In localization/localization_hi.ts, the three
ConfigDialog translation entries for the source strings "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" are empty; provide
concise Hindi translations for each string, set them as the element value and
keep type="unfinished" on the <translation> attributes, preserving punctuation
and parentheses exactly (e.g., for "(auto-probe via gpgconf)"). Use the same
meaning and technical terms (SSH_AUTH_SOCK, gpgconf) in Latin script if needed
to avoid confusion.

In `@localization/localization_hr.ts`:
- Around line 157-170: Add Croatian translations for the three new SSH_AUTH_SOCK
source strings: "SSH_AUTH_SOCK override:", "Optional path to override
SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)." and
"(auto-probe via gpgconf)". Populate the corresponding <translation> elements
with best-effort Croatian text (e.g., "SSH_AUTH_SOCK nadjačavanje:", "Opcionalna
putanja za nadjačavanje SSH_AUTH_SOCK. Ostavite prazno za automatsko otkrivanje
putem gpgconf (issue `#543`)." and "(automatsko otkrivanje putem gpgconf)"), but
keep type="unfinished" on each <translation> so Weblate can refine them later.
- Around line 1974-1976: Update the Croatian translation for the source string
"Could not fetch list of available GPG keys" in localization_hr.ts: replace the
incorrect "Nije moguće dohvatiti popis dostupne GPG ključeve" with the
grammatically correct "Nije moguće dohvatiti popis dostupnih GPG ključeva" so
the case/number agreement matches the source entry referenced by the location
tag (../src/usersdialog.cpp line="78").
- Around line 1777-1781: The Croatian translation for the source string "fusedav
exited unexpectedly" in localization_hr.ts contains a typo ("prekint"); update
the translation entry for that source (the translation element for fusedav
exited unexpectedly) to the correct Croatian word (e.g., "prekinuo" or
appropriate grammatical form) so the translated message reads properly; locate
the translation matching the source text string in localization_hr.ts and
replace "neočekivano prekint" with the corrected phrase.

In `@localization/localization_hu.ts`:
- Around line 167-180: The new Hungarian translations for the UI strings
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" are
empty; fill them with appropriate Hungarian translations and keep the
type="unfinished" attribute. Edit localization_hu.ts and provide concise
Hungarian text for the three source entries (matching the source punctuation and
casing) so UI shows translations while still marked unfinished for review;
ensure you only modify the <translation> elements corresponding to those exact
source strings.
- Around line 490-492: The Hungarian translation for the GnuPG install hint in
localization_hu.ts is malformed and contains awkward casing and mixed-language
words; update the translation for the source string shown (the translation value
for the GnuPG install hint in the configdialog.cpp entry) to a natural Hungarian
sentence preserving the HTML structure (&lt;br&gt;, &lt;strong&gt;, &lt;a
href="... "&gt;…&lt;/a&gt;) and correct casing (e.g., "gpg" lowercase,
"csomagkezelő"), and if you're not certain about wording mark the translation
entry as type="unfinished" per localization guidelines. Ensure the translated
text conveys: "Please install GnuPG on your system. Install gpg using your
favorite package manager or download it from GnuPG.org," but in proper Hungarian
and with intact HTML tags.

In `@localization/localization_id.ts`:
- Around line 307-320: Add best-effort Indonesian translations for the three
ConfigDialog entries whose source texts are "SSH_AUTH_SOCK override:", "Optional
path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue
`#543`).", and "(auto-probe via gpgconf)"; update their <translation> contents
(inside localization_id.ts) with concise Indonesian equivalents but keep the
attribute type="unfinished" on each translation element so Weblate can refine
them later. Ensure you only replace the empty translation nodes for those three
<message> blocks and do not change any other attributes or message ids.

In `@localization/localization_it.ts`:
- Around line 158-171: Add best-effort Italian translations for the three empty
message entries corresponding to the source strings "SSH_AUTH_SOCK override:",
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`).", and "(auto-probe via gpgconf)" in localization_it.ts; set the
translation text to appropriate Italian phrases (e.g. "Sovrascrittura
SSH_AUTH_SOCK:", "Percorso opzionale per sovrascrivere SSH_AUTH_SOCK. Lasciare
vuoto per rilevamento automatico tramite gpgconf (issue `#543`).", "(rilevamento
automatico tramite gpgconf)") and keep each translation element marked
type="unfinished" so the entries are populated but still flagged for review.
- Around line 1830-1838: Replace the awkward machine-translated Italian strings
for the two GPG status messages: for the source "GPG key pair generation failed"
update the translation to "Generazione della coppia di chiavi GPG non riuscita",
and for the source "GPG key pair generated successfully" update the translation
to "Generazione della coppia di chiavi GPG completata con successo" (or "Coppia
di chiavi GPG generata con successo"); locate the entries by their source
strings in the localization_it.ts and replace the current translations
accordingly.

In `@localization/localization_ja.ts`:
- Around line 1948-1956: The translations for the message entries with source
"created" and "expires" are using incorrect verb forms; open the .ts entries
corresponding to the usersdialog display (message entries for source "created"
and source "expires") and replace the translations "作成しました" → "作成" and
"有効期限が切れます" → "有効期限" so they are proper label/noun forms used in the GPG key
info display.
- Around line 157-170: Fill the three empty <translation type="unfinished">
elements corresponding to the source strings "SSH_AUTH_SOCK override:",
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`).", and "(auto-probe via gpgconf)" with best-effort Japanese
translations (while keeping type="unfinished") so Weblate can refine them;
suggested translations are: "SSH_AUTH_SOCK の上書き:", "SSH_AUTH_SOCK
を上書きする任意のパス。空のままにすると gpgconf により自動検出されます(issue `#543`)。", and "(gpgconf による自動検出)"
respectively.

In `@localization/localization_ko.ts`:
- Around line 157-170: Fill the three empty translation entries for the strings
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" with
best-effort Korean translations while keeping the translation attributes set to
type="unfinished"; e.g., provide concise Korean equivalents for the labels and
explanatory text associated with SSH_AUTH_SOCK and gpgconf so Weblate has a
starting point for refinement.
- Around line 187-190: The Korean translation for the message string that
currently reads "필요한 경우 외에는 공백으로 두고, .gpg-id 파일의Integrity 검증을 위해 서명하는 GPG 키를
입력하세요." has a mixed-script artifact: missing space between "파일의" and
"Integrity"; update the translation in localization_ko.ts for the corresponding
message (the translation for source "Optional: GPG key to sign .gpg-id files for
integrity verification...") to insert a space so it reads "파일의 Integrity 검증을
위해..." (or otherwise separate the Korean particle and the English word) and
ensure surrounding punctuation and spacing follow Korean localization
conventions.

In `@localization/localization_lb_LU.ts`:
- Around line 438-440: The translated href fragment in the translation string
that corresponds to the source "Please install GnuPG..." contains a stray space
in the anchor "#sec-1- 2"; edit the translation for the string that contains the
HTML link (the translation value for the source with &lt;a
href="https://www.gnupg.org/download/#sec-1- 2"&gt;) and remove the space so the
href becomes ".../download/#sec-1-2", preserving the surrounding HTML entities
and markup exactly as in the source.
- Around line 267-279: The three empty translation entries for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)" should be filled with best-effort Luxembourgish translations in
localization_lb_LU.ts while keeping the translation attributes as
type="unfinished"; locate the corresponding message entries (the ones containing
those exact source strings) and replace the empty <translation>...</translation>
content with the Luxembourgish text (e.g., a concise translation of each string)
so Weblate can later refine them.

In `@localization/localization_lt.ts`:
- Around line 307-320: The three empty translation entries for the source
strings "SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`)." and "(auto-probe via
gpgconf)" in localization_lt.ts should be filled with best-effort Lithuanian
text while keeping type="unfinished"; update the corresponding <translation>
elements to something like "SSH_AUTH_SOCK perrašymas:", "Neprivalomas kelias
SSH_AUTH_SOCK perrašymui. Palikite tuščią, kad būtų automatiškai nustatoma per
gpgconf (klaida `#543`).", and "(automatinis nustatymas per gpgconf)" respectively
so Weblate can refine them later, ensuring the original meanings and references
are preserved.
- Around line 1658-1665: The Lithuanian translations for the UsersDialog
key-status labels are incorrect: update the translation for the "created" source
string in UsersDialog (currently "atsimena") to "sukurta", and update the
translation for the "expires" source string (currently "Ištrintas") to
"baigiasi" in the localization_lt.ts file so the UsersDialog labels reflect
correct Lithuanian wording.

In `@localization/localization_lv.ts`:
- Around line 307-320: Add best-effort Latvian translations for the three empty
<translation type="unfinished"></translation> entries corresponding to the
source strings "SSH_AUTH_SOCK override:", "Optional path to override
SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).", and
"(auto-probe via gpgconf)"; keep each translation attribute as type="unfinished"
(do not remove or change the attribute) and ensure the translated text matches
the meaning of the original English phrases.

In `@localization/localization_mr.ts`:
- Around line 307-320: The three new UI strings ("SSH_AUTH_SOCK override:",
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`).", and "(auto-probe via gpgconf)") currently have empty
<translation> entries; fill each with a best-effort Marathi translation while
keeping the attribute type="unfinished" so Weblate can refine later. Locate the
<message> blocks that contain these source texts (use the strings themselves to
find them) and insert appropriate Marathi text into each <translation> element,
preserving existing XML escaping and attributes but not changing other elements
or structure.

---

Outside diff comments:
In `@localization/localization_ja.ts`:
- Around line 238-242: The translation for the message with source
"Automatically pull" is incorrectly set to "自動 push"; update the translation
element for the source string "Automatically pull" to the correct Japanese
phrasing (e.g., "自動でプル" or "自動で取得") so it correctly uses "pull" instead of
"push" (locate the <message> containing <source>Automatically pull</source> and
replace the current <translation>自動 push</translation> accordingly).
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: c84a25b1-3944-4506-a39f-0e60e3639833

📥 Commits

Reviewing files that changed from the base of the PR and between 171f718 and 9ad8357.

📒 Files selected for processing (74)
  • localization/localization_af.ts
  • localization/localization_ar.ts
  • localization/localization_bg.ts
  • localization/localization_bn.ts
  • localization/localization_ca.ts
  • localization/localization_cs.ts
  • localization/localization_cy.ts
  • localization/localization_da.ts
  • localization/localization_de_DE.ts
  • localization/localization_de_LU.ts
  • localization/localization_el.ts
  • localization/localization_en_GB.ts
  • localization/localization_en_US.ts
  • localization/localization_es_AR.ts
  • localization/localization_es_EC.ts
  • localization/localization_es_ES.ts
  • localization/localization_es_MX.ts
  • localization/localization_es_UY.ts
  • localization/localization_et.ts
  • localization/localization_fa.ts
  • localization/localization_fi.ts
  • localization/localization_fr_BE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_fr_LU.ts
  • localization/localization_fy_NL.ts
  • localization/localization_gl.ts
  • localization/localization_he.ts
  • localization/localization_hi.ts
  • localization/localization_hr.ts
  • localization/localization_hu.ts
  • localization/localization_id.ts
  • localization/localization_it.ts
  • localization/localization_ja.ts
  • localization/localization_ko.ts
  • localization/localization_lb_LU.ts
  • localization/localization_lt.ts
  • localization/localization_lv.ts
  • localization/localization_mr.ts
  • localization/localization_nb.ts
  • localization/localization_nl_BE.ts
  • localization/localization_nl_NL.ts
  • localization/localization_pa_IN.ts
  • localization/localization_pl.ts
  • localization/localization_pt_BR.ts
  • localization/localization_pt_PT.ts
  • localization/localization_ro.ts
  • localization/localization_ru.ts
  • localization/localization_si.ts
  • localization/localization_sk.ts
  • localization/localization_sl.ts
  • localization/localization_sq.ts
  • localization/localization_sr_Cyrl.ts
  • localization/localization_sr_RS.ts
  • localization/localization_sv.ts
  • localization/localization_sw.ts
  • localization/localization_ta.ts
  • localization/localization_te.ts
  • localization/localization_th.ts
  • localization/localization_tr.ts
  • localization/localization_uk.ts
  • localization/localization_ur.ts
  • localization/localization_vi.ts
  • localization/localization_zh_CN.ts
  • localization/localization_zh_Hant.ts
  • main/main.cpp
  • src/configdialog.cpp
  • src/configdialog.ui
  • src/qtpasssettings.cpp
  • src/qtpasssettings.h
  • src/settingsconstants.cpp
  • src/settingsconstants.h
  • src/util.cpp
  • src/util.h
  • tests/auto/util/tst_util.cpp

Comment thread localization/localization_af.ts
Comment on lines +157 to +170
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Fill the three new SSH_AUTH_SOCK entries with best-effort Catalan translations.

All three new strings have empty <translation> bodies. Per the repository's coding guidelines, empty entries must be populated with best-effort translations (still marked type="unfinished") so Weblate can pick them up for refinement.

🌐 Proposed Catalan best-effort translations
     <message>
         <location filename="../src/configdialog.ui" line="888"/>
         <source>SSH_AUTH_SOCK override:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Sobreescriptura de SSH_AUTH_SOCK:</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="891"/>
         <source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Camí opcional per sobreescriure SSH_AUTH_SOCK. Deixeu-ho en blanc per a la detecció automàtica via gpgconf (incidència `#543`).</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="898"/>
         <source>(auto-probe via gpgconf)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">(detecció automàtica via gpgconf)</translation>
     </message>

As per coding guidelines: "Fill empty translation entries with best-effort translations marked type="unfinished" for Weblate to refine."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished">Sobreescriptura de SSH_AUTH_SOCK:</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
<translation type="unfinished">Camí opcional per sobreescriure SSH_AUTH_SOCK. Deixeu-ho en blanc per a la detecció automàtica via gpgconf (incidència `#543`).</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished">(detecció automàtica via gpgconf)</translation>
</message>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_ca.ts` around lines 157 - 170, Add best-effort
Catalan translations for the three empty <translation> entries corresponding to
the source strings "SSH_AUTH_SOCK override:", "Optional path to override
SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).", and
"(auto-probe via gpgconf)"; keep each translation attribute type="unfinished"
per guidelines so Weblate can refine them. Ensure the translations are concise
and natural Catalan equivalents for the UI labels and tooltip text, and place
them in the existing <translation> bodies for those exact source strings.

Comment thread localization/localization_cs.ts Outdated
Comment on lines 251 to 253
<location filename="../src/configdialog.ui" line="1086"/>
<source>Show all lines beginning with a word followed by a colon as fields in password fields, not only the listed ones</source>
<translation>Zobrazit všechny řádky začínající slovem následovaným středníkem jako pole v polích hesla, nejen vypsaná</translation>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct “colon” mistranslation in template help text.

Source says “followed by a colon”, but Czech translation currently says “středníkem” (semicolon), which changes the meaning.

💡 Proposed fix
-        <translation>Zobrazit všechny řádky začínající slovem následovaným středníkem jako pole v polích hesla, nejen vypsaná</translation>
+        <translation>Zobrazit všechny řádky začínající slovem následovaným dvojtečkou jako pole hesla, nejen ta uvedená</translation>

As per coding guidelines, "localization/**/*.ts: Fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations marked type="unfinished".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/configdialog.ui" line="1086"/>
<source>Show all lines beginning with a word followed by a colon as fields in password fields, not only the listed ones</source>
<translation>Zobrazit všechny řádky začínající slovem následovaným středníkem jako pole v polích hesla, nejen vypsaná</translation>
<location filename="../src/configdialog.ui" line="1086"/>
<source>Show all lines beginning with a word followed by a colon as fields in password fields, not only the listed ones</source>
<translation>Zobrazit všechny řádky začínající slovem následovaným dvojtečkou jako pole hesla, nejen ta uvedená</translation>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_cs.ts` around lines 251 - 253, The Czech
translation for the UI string "Show all lines beginning with a word followed by
a colon as fields in password fields, not only the listed ones" incorrectly uses
"středníkem" (semicolon); edit the translation entry in localization_cs.ts for
that source string and replace "středníkem" with "dvojtečkou" so the meaning
matches the source exactly (keep the rest of the sentence and punctuation
unchanged).

Comment thread localization/localization_cs.ts
Comment on lines +157 to +170
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the new SSH_AUTH_SOCK entries with best-effort Danish translations

The three new entries are empty. Please provide provisional Danish text (keep type="unfinished"), otherwise the UI falls back to source language.

🌐 Proposed fix
     <message>
         <location filename="../src/configdialog.ui" line="888"/>
         <source>SSH_AUTH_SOCK override:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">SSH_AUTH_SOCK-tilsidesættelse:</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="891"/>
         <source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Valgfri sti til at tilsidesætte SSH_AUTH_SOCK. Lad feltet være tomt for automatisk søgning via gpgconf (issue `#543`).</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="898"/>
         <source>(auto-probe via gpgconf)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">(automatisk søgning via gpgconf)</translation>
     </message>

As per coding guidelines, localization/**/*.ts must “fill empty translation entries with best-effort translations marked type="unfinished".”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished">SSH_AUTH_SOCK-tilsidesættelse:</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
<translation type="unfinished">Valgfri sti til at tilsidesætte SSH_AUTH_SOCK. Lad feltet være tomt for automatisk søgning via gpgconf (issue `#543`).</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished">(automatisk søgning via gpgconf)</translation>
</message>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_da.ts` around lines 157 - 170, Three new
translation entries for "SSH_AUTH_SOCK override:", "Optional path to override
SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)." and
"(auto-probe via gpgconf)" are empty; add best-effort Danish text for these
three <source> strings in localization/localization_da.ts, keeping the
translation attributes as type="unfinished" (do not change attribute), and
ensure the translations correspond to those exact source strings so the UI uses
Danish instead of falling back to English.

Comment on lines +1830 to 1838
<location filename="../src/qtpass.cpp" line="314"/>
<source>GPG key pair generation failed</source>
<translation>GPG chiave coppia generazione fallito</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="380"/>
<location filename="../src/qtpass.cpp" line="388"/>
<source>GPG key pair generated successfully</source>
<translation>Coppia chiave GPG generato con successo</translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct ungrammatical Italian in GPG keypair status messages

Current Italian wording is unnatural/incorrect and reads like machine translation.

💡 Proposed fix
     <message>
         <location filename="../src/qtpass.cpp" line="314"/>
         <source>GPG key pair generation failed</source>
-        <translation>GPG chiave coppia generazione fallito</translation>
+        <translation>Generazione della coppia di chiavi GPG non riuscita</translation>
     </message>
     <message>
         <location filename="../src/qtpass.cpp" line="388"/>
         <source>GPG key pair generated successfully</source>
-        <translation>Coppia chiave GPG generato con successo</translation>
+        <translation>Coppia di chiavi GPG generata con successo</translation>
     </message>

As per coding guidelines, “Fix translation bugs directly in .ts files … including … made-up words from machine translation.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/qtpass.cpp" line="314"/>
<source>GPG key pair generation failed</source>
<translation>GPG chiave coppia generazione fallito</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="380"/>
<location filename="../src/qtpass.cpp" line="388"/>
<source>GPG key pair generated successfully</source>
<translation>Coppia chiave GPG generato con successo</translation>
</message>
<location filename="../src/qtpass.cpp" line="314"/>
<source>GPG key pair generation failed</source>
<translation>Generazione della coppia di chiavi GPG non riuscita</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="388"/>
<source>GPG key pair generated successfully</source>
<translation>Coppia di chiavi GPG generata con successo</translation>
</message>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_it.ts` around lines 1830 - 1838, Replace the
awkward machine-translated Italian strings for the two GPG status messages: for
the source "GPG key pair generation failed" update the translation to
"Generazione della coppia di chiavi GPG non riuscita", and for the source "GPG
key pair generated successfully" update the translation to "Generazione della
coppia di chiavi GPG completata con successo" (or "Coppia di chiavi GPG generata
con successo"); locate the entries by their source strings in the
localization_it.ts and replace the current translations accordingly.

Comment thread localization/localization_lb_LU.ts Outdated
Comment thread localization/localization_lb_LU.ts Outdated
Comment on lines 438 to 440
<location filename="../src/configdialog.cpp" line="927"/>
<source>Please install GnuPG on your system.&lt;br&gt;Install &lt;strong&gt;gpg&lt;/strong&gt; using your favorite package manager&lt;br&gt;or &lt;a href=&quot;https://www.gnupg.org/download/#sec-1-2&quot;&gt;download&lt;/a&gt; it from GnuPG.org</source>
<translation>Installéiert GnuPG op Ärem System. &lt;br&gt; Installéiert &lt;strong&gt; gpg &lt;/strong&gt; mat Ärem Liiblingspakmanager &lt;br&gt; oder &lt;a href=&quot;https://www.gnupg.org/download/#sec-1- 2&quot;&gt; download &lt;/a&gt; et vu GnuPG.org</translation>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix broken translated hyperlink fragment

At Line 440, the translated href contains #sec-1- 2 (with a space), which breaks the anchor and no longer matches the source link.

🔗 Proposed fix
-        <translation>Installéiert GnuPG op Ärem System. &lt;br&gt; Installéiert &lt;strong&gt; gpg &lt;/strong&gt; mat Ärem Liiblingspakmanager &lt;br&gt; oder &lt;a href=&quot;https://www.gnupg.org/download/#sec-1- 2&quot;&gt; download &lt;/a&gt; et vu GnuPG.org</translation>
+        <translation>Installéiert GnuPG op Ärem System. &lt;br&gt; Installéiert &lt;strong&gt; gpg &lt;/strong&gt; mat Ärem Liiblingspakmanager &lt;br&gt; oder &lt;a href=&quot;https://www.gnupg.org/download/#sec-1-2&quot;&gt; download &lt;/a&gt; et vu GnuPG.org</translation>

As per coding guidelines, “fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/configdialog.cpp" line="927"/>
<source>Please install GnuPG on your system.&lt;br&gt;Install &lt;strong&gt;gpg&lt;/strong&gt; using your favorite package manager&lt;br&gt;or &lt;a href=&quot;https://www.gnupg.org/download/#sec-1-2&quot;&gt;download&lt;/a&gt; it from GnuPG.org</source>
<translation>Installéiert GnuPG op Ärem System. &lt;br&gt; Installéiert &lt;strong&gt; gpg &lt;/strong&gt; mat Ärem Liiblingspakmanager &lt;br&gt; oder &lt;a href=&quot;https://www.gnupg.org/download/#sec-1- 2&quot;&gt; download &lt;/a&gt; et vu GnuPG.org</translation>
<location filename="../src/configdialog.cpp" line="927"/>
<source>Please install GnuPG on your system.&lt;br&gt;Install &lt;strong&gt;gpg&lt;/strong&gt; using your favorite package manager&lt;br&gt;or &lt;a href=&quot;https://www.gnupg.org/download/#sec-1-2&quot;&gt;download&lt;/a&gt; it from GnuPG.org</source>
<translation>Installéiert GnuPG op Ärem System. &lt;br&gt; Installéiert &lt;strong&gt; gpg &lt;/strong&gt; mat Ärem Liiblingspakmanager &lt;br&gt; oder &lt;a href=&quot;https://www.gnupg.org/download/#sec-1-2&quot;&gt; download &lt;/a&gt; et vu GnuPG.org</translation>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_lb_LU.ts` around lines 438 - 440, The translated
href fragment in the translation string that corresponds to the source "Please
install GnuPG..." contains a stray space in the anchor "#sec-1- 2"; edit the
translation for the string that contains the HTML link (the translation value
for the source with &lt;a href="https://www.gnupg.org/download/#sec-1- 2"&gt;)
and remove the space so the href becomes ".../download/#sec-1-2", preserving the
surrounding HTML entities and markup exactly as in the source.

Comment on lines +307 to +320
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill new Latvian entries instead of leaving them empty

Line 309, Line 314, and Line 319 are empty translations. Please add best-effort Latvian text and keep them type="unfinished" for later refinement.

🌐 Proposed fix
     <message>
         <location filename="../src/configdialog.ui" line="888"/>
         <source>SSH_AUTH_SOCK override:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">SSH_AUTH_SOCK pārrakstīšana:</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="891"/>
         <source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Neobligāts ceļš SSH_AUTH_SOCK pārrakstīšanai. Atstājiet tukšu, lai automātiski noteiktu caur gpgconf (problēma `#543`).</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="898"/>
         <source>(auto-probe via gpgconf)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">(automātiska noteikšana caur gpgconf)</translation>
     </message>

As per coding guidelines, “localization/**/*.ts: ... fill empty entries with best-effort translations marked type="unfinished".”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished">SSH_AUTH_SOCK pārrakstīšana:</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
<translation type="unfinished">Neobligāts ceļš SSH_AUTH_SOCK pārrakstīšanai. Atstājiet tukšu, lai automātiski noteiktu caur gpgconf (problēma `#543`).</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished">(automātiska noteikšana caur gpgconf)</translation>
</message>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_lv.ts` around lines 307 - 320, Add best-effort
Latvian translations for the three empty <translation
type="unfinished"></translation> entries corresponding to the source strings
"SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)"; keep
each translation attribute as type="unfinished" (do not remove or change the
attribute) and ensure the translated text matches the meaning of the original
English phrases.

Comment on lines +307 to +320
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished"></translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the new Marathi entries instead of leaving them empty

Line 307–320 introduces three new UI strings with empty translations. Please provide best-effort Marathi text and keep type="unfinished" so Weblate can refine later.

Suggested patch
     <message>
         <location filename="../src/configdialog.ui" line="888"/>
         <source>SSH_AUTH_SOCK override:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">SSH_AUTH_SOCK अधिलेखन:</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="891"/>
         <source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">SSH_AUTH_SOCK अधिलेखनासाठी वैकल्पिक मार्ग. gpgconf द्वारे स्वयंचलित शोधासाठी रिक्त ठेवा (issue `#543`).</translation>
     </message>
     <message>
         <location filename="../src/configdialog.ui" line="898"/>
         <source>(auto-probe via gpgconf)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">(gpgconf द्वारे स्वयंचलित शोध)</translation>
     </message>
As per coding guidelines, “localization/**/*.ts: ... fill empty entries with best-effort translations marked `type="unfinished"`.”
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_mr.ts` around lines 307 - 320, The three new UI
strings ("SSH_AUTH_SOCK override:", "Optional path to override SSH_AUTH_SOCK.
Leave empty to auto-probe via gpgconf (issue `#543`).", and "(auto-probe via
gpgconf)") currently have empty <translation> entries; fill each with a
best-effort Marathi translation while keeping the attribute type="unfinished" so
Weblate can refine later. Locate the <message> blocks that contain these source
texts (use the strings themselves to find them) and insert appropriate Marathi
text into each <translation> element, preserving existing XML escaping and
attributes but not changing other elements or structure.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 9, 2026

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 30 file(s) based on 40 unresolved review comments.

Files modified:

  • localization/localization_af.ts
  • localization/localization_ar.ts
  • localization/localization_ca.ts
  • localization/localization_cs.ts
  • localization/localization_da.ts
  • localization/localization_de_DE.ts
  • localization/localization_de_LU.ts
  • localization/localization_en_GB.ts
  • localization/localization_en_US.ts
  • localization/localization_es_AR.ts
  • localization/localization_es_EC.ts
  • localization/localization_es_ES.ts
  • localization/localization_es_MX.ts
  • localization/localization_es_UY.ts
  • localization/localization_et.ts
  • localization/localization_fa.ts
  • localization/localization_fi.ts
  • localization/localization_fr_BE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_fr_LU.ts
  • localization/localization_gl.ts
  • localization/localization_he.ts
  • localization/localization_hi.ts
  • localization/localization_hr.ts
  • localization/localization_hu.ts
  • localization/localization_id.ts
  • localization/localization_it.ts
  • localization/localization_lb_LU.ts
  • localization/localization_lv.ts
  • localization/localization_mr.ts

Commit: 5a981465c9e52df0efa073d6f71bfb10e6739192

The changes have been pushed to the feat/ssh-auth-sock-543 branch.

Time taken: 6m 59s

coderabbitai Bot and others added 2 commits May 9, 2026 00:42
Fixed 30 file(s) based on 40 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
Real translation bugs:

- bn: WebDAV failure message used "ত্রাণক" (rescuer); now "ব্যর্থ"
  (failed).
- cy: install hints had stray spaces around <br>/<strong>/<a> tags and
  an untranslated "or"; tightened tags and replaced with Welsh "neu".
- el: "fusedav" was misspelt "fusevav" in two strings.
- fy_NL: [PARTIAL] tag was rendered as the truncated [PART]; replaced
  with proper Frisian [DIELLIK].
- hu: second GnuPG install hint was malformed (extra spaces around HTML
  tags, capitalised "GPG", awkward wording); rebuilt against the first
  hint's pattern.
- ja: "Automatically pull" was translated as "自動 push" — now "自動
  pull". "created"/"expires" used verb forms (作成しました / 有効期限が
  切れます) that don't read naturally as inline labels before a date;
  switched to noun-form labels (作成日 / 有効期限).
- ko: mixed-script artifact "파일의Integrity" → "파일의 무결성".
- lt: UsersDialog labels were wholly wrong — "atsimena" (remembers) for
  "created" → "sukurta"; "Ištrintas" (deleted) for "expires" → "baigiasi".

SSH_AUTH_SOCK strings: filled the three new source strings in all 8
locales with best-effort translations, kept type="unfinished" so
Weblate can refine. The remaining 30 locales were already filled by
CodeRabbit's auto-fix commit (5a98146).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@annejan
Copy link
Copy Markdown
Member Author

annejan commented May 9, 2026

Addressed the CodeRabbit translation findings batch in 1ed63a2.

Triage approach: for each finding I checked the current file state, applied only the still-valid issues, and skipped the rest with a brief reason.

Fixed (8 locales, real translation bugs):

Locale Bug
bn WebDAV failure used "ত্রাণক" (rescuer) → "ব্যর্থ" (failed)
cy install hints: stray spaces around <br>/<strong>/<a> + untranslated "or" → "neu"
el "fusevav" → "fusedav" (2 strings)
fy_NL [PART] → proper Frisian [DIELLIK]
hu malformed second install hint rebuilt to match the first hint's pattern
ja "Automatically pull" was rendered as "自動 push"; "created"/"expires" verb forms → noun-form labels (作成日 / 有効期限)
ko mixed-script "파일의Integrity" → "파일의 무결성"
lt UsersDialog: "atsimena" (remembers) → "sukurta"; "Ištrintas" (deleted) → "baigiasi"

Each of these locales also had three empty SSH_AUTH_SOCK source-string entries; filled them with best-effort translations and kept type="unfinished" so Weblate can refine.

Skipped — already addressed by 5a98146 (CodeRabbit auto-fixes):

cs (semicolon→colon), de_LU (Template plural), fi (space before <a>), hr (genitive + "prekinuo"), it (GPG key pair generation), lb_LU (URL whitespace), and SSH_AUTH_SOCK fills for ~30 other locales. No double-up needed.

Validation: ran lrelease6 on all 8 touched files — each generates 304 finished + 3 unfinished, no errors. Diff is +34/-34 lines across 8 files.

@nogeenharrie
Copy link
Copy Markdown
Contributor

Checked updated commits 5a981465c and 1ed63a2b3 — only localization fixes (37 locale files, 143 insertions/143 deletions). No source/code changes. All 436 tests green, no rebuild needed.

@nogeenhenk
Copy link
Copy Markdown
Contributor

Verified the latest i18n commits. Build succeeds and tests pass. These are purely localization updates:

  • 5a98146: CodeRabbit auto-fixes - SSH_AUTH_SOCK strings filled in 30+ locales, various minor translation fixes
  • 1ed63a2: Manual fixes on 8 locales (bn, cy, el, fy_NL, hu, ja, ko, lt) - corrected real translation bugs (wrong words, mixed-script artifacts, malformed HTML)

All good - PR remains approved for merge.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 33

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
localization/localization_he.ts (2)

128-130: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the resurrected “Include special symbols” translation

This string was moved back to active (unfinished) but remains empty. Please add a best-effort Hebrew translation and keep type="unfinished".

Suggested patch
     <message>
         <location filename="../src/configdialog.ui" line="460"/>
         <source>Include special symbols</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">כלול סמלים מיוחדים</translation>
     </message>

As per coding guidelines, localization/**/*.ts: “Fix translation bugs directly in .ts files …; fill empty entries with best-effort translations marked type="unfinished".”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_he.ts` around lines 128 - 130, Add a Hebrew
translation for the source string "Include special symbols" in
localization/localization_he.ts by filling the <translation> element for the
<source>Include special symbols</source> entry with a best-effort Hebrew phrase
(e.g., "להוסיף תווים מיוחדים") and keep the attribute type="unfinished"
unchanged so the entry remains marked unfinished; locate the entry by the
<source>Include special symbols</source> text within the same <location> block
and update only the translation content.

1450-1660: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Populate empty translations in changed QtPass/TrayIcon/UsersDialog messages

These changed entries still have empty type="unfinished" translations (e.g., QtPass runtime strings, tray actions, users dialog status labels). Please add best-effort Hebrew text while preserving placeholders/markup exactly.

As per coding guidelines, localization/**/*.ts: “Fix translation bugs directly in .ts files …; fill empty entries with best-effort translations marked type="unfinished".”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_he.ts` around lines 1450 - 1660, Fill in Hebrew
translations for the empty type="unfinished" entries for the changed runtime
strings: messages from qtpass.cpp (e.g., "Generating GPG key pair", "Failed to
connect WebDAV:", "Enter password to connect to WebDAV:", "fusedav exited
unexpectedly", process error names like "QProcess::FailedToStart", "GPG key pair
generation failed", "Copied to clipboard"), tray actions in trayicon.cpp
("&Show", "&Hide", "Mi&nimize", "Ma&ximize", "&Restore", "&Quit"), and
UsersDialog labels/statuses in usersdialog.ui/cpp ("Read access users", help
text, "Search for users", "Show unusable keys", "Import key...", "Keylist
missing", "Key not found in keyring", "created", "expires", "[INVALID] ",
"[EXPIRED] ", "[PARTIAL] "). Preserve all placeholders (like %1/%2), ampersands,
markup and exact spelling of identifiers, and keep the translation attribute as
type="unfinished" while providing accurate Hebrew text for each source string.
♻️ Duplicate comments (2)
localization/localization_es_ES.ts (1)

366-379: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

The three SSH_AUTH_SOCK entries are now filled — the previously raised emptiness concern is resolved.

Backtick formatting artifact in the tooltip translation.

Line 373 wraps #543 in backtick characters (`#543`), but the source string at line 372 contains plain #543 without backticks. Qt does not render Markdown in tooltip strings, so the backticks will appear literally in the UI.

🌐 Proposed fix
-        <translation type="unfinished">Ruta opcional para sustituir SSH_AUTH_SOCK. Dejar en blanco para detección automática vía gpgconf (issue `#543`).</translation>
+        <translation type="unfinished">Ruta opcional para sustituir SSH_AUTH_SOCK. Déjela vacía para detección automática mediante gpgconf (incidencia n.º 543).</translation>

As per coding guidelines, "Fix translator-flagged bugs in .ts files including placeholder mismatches, broken HTML tags, made-up words from machine translation, and mixed-script artifacts."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_es_ES.ts` around lines 366 - 379, Update the
Spanish translation for the tooltip matching the source "Optional path to
override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)." by
removing the literal backtick characters around “#543” so the translated string
reads "Ruta opcional para sustituir SSH_AUTH_SOCK. Dejar en blanco para
detección automática vía gpgconf (issue `#543`)." (edit the translation entry
whose source is that tooltip in localization_es_ES.ts).
localization/localization_en_US.ts (1)

413-508: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Populate touched en_US unfinished entries instead of leaving them blank.

Several changed entries are still empty (for example Line 416, Line 421, Line 426, Line 431, Line 436, Line 441, Line 477, Line 482, Line 497, Line 502, Line 507, Line 1977, Line 1982, Line 1987). Please fill them with best-effort text (typically source text) while keeping type="unfinished".

Suggested fix pattern
     <message>
         <location filename="../src/configdialog.cpp" line="211"/>
         <location filename="../src/configdialog.cpp" line="227"/>
         <source>This field is required</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">This field is required</translation>
     </message>
     <message>
         <location filename="../src/configdialog.cpp" line="722"/>
         <source>Create profile directory?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Create profile directory?</translation>
     </message>
     <message>
         <location filename="../src/usersdialog.cpp" line="334"/>
         <source>[INVALID] </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">[INVALID] </translation>
     </message>

As per coding guidelines, “localization/**/*.ts: Fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations marked type="unfinished".”

Also applies to: 1975-1988

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_en_US.ts` around lines 413 - 508, Several
translation entries in localization_en_US.ts (e.g., the messages whose source
strings "This field is required", "Create profile directory?", "Would you like
to create a password store at %1?", "Could not create profile directory: %1",
"Select recipients for %1", "New Profile", "Error", "Failed to create
password-store at: %1", "New profile: %1 at %2", "Profile: %1 at %2", "Fill in
all required fields") are left with empty <translation
type="unfinished"></translation> tags; populate each empty translation with the
corresponding source text (copy the English source into the translation element)
and preserve any HTML entities/placeholders like %1/%2 and tags (e.g.,
&lt;br&gt;, &lt;strong&gt;) while leaving type="unfinished" intact. Ensure you
update every unfinished entry touched in the diff (and the referenced areas
around the other ranges mentioned) by replacing the empty translation content
with the exact source string.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@localization/localization_af.ts`:
- Around line 157-165: The Afrikaans translations for the two strings for
"SSH_AUTH_SOCK override:" and the long helper line use awkward/machine-like
words ("omskakeling", "oorleer") and include stray backticks around `#543`; update
the translations in localization_af.ts for the message that maps the source
"SSH_AUTH_SOCK override:" and the message for "Optional path to override
SSH_AUTH_SOCK..." to use natural Afrikaans (e.g. use "overskrywing" and
"oorskryf" and remove backticks), keep type="unfinished" as required, and ensure
punctuation is plain (example: "SSH_AUTH_SOCK-overskrywing:" and "Opsionele pad
om SSH_AUTH_SOCK te oorskryf. Laat leeg om via gpgconf outomaties te bepaal
(kwessie `#543`).").

In `@localization/localization_ar.ts`:
- Around line 269-270: The Arabic translation for the tooltip string "Optional
path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue
`#543`)." contains markdown backticks around `#543`; update the translation entry
that starts with "مسار اختياري لتجاوز SSH_AUTH_SOCK..." to remove the backticks
so it reads "...(المشكلة `#543`)." and ensure the translated text otherwise
matches the source punctuation and spacing.

In `@localization/localization_bg.ts`:
- Around line 157-170: Add best-effort Bulgarian translations for the three
SSH_AUTH_SOCK entries introduced in this PR: the source strings "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)". Replace the empty
translation attributes in localization_bg.ts with appropriate Bulgarian text
(e.g., "Презаписване на SSH_AUTH_SOCK:", "Незадължителен път за презаписване на
SSH_AUTH_SOCK. Оставете празно за автоматично откриване чрез gpgconf (проблем
`#543`).", "(автоматично откриване чрез gpgconf)"), and keep the translation
elements marked type="unfinished" so Weblate can refine them.

In `@localization/localization_ca.ts`:
- Around line 161-165: The translated tooltip in localization_ca.ts contains
spurious backticks around the issue number in the <message> translation for the
source "Optional path to override SSH_AUTH_SOCK..." — remove the backticks so
the translation matches the source punctuation: change "issue `#543`" to "issue
`#543`" in the <translation> text (the <message> element referencing
../src/configdialog.ui line="891"), preserving the rest of the Catalan text and
leaving the translation type attribute as-is.

In `@localization/localization_cs.ts`:
- Around line 1769-1771: The Czech translation for the source "Copied to
clipboard" is currently an infinitive ("zkopírovat do schránky") and should be
changed to a past-tense completion message; update the translation entry in
localization_cs.ts for the source "Copied to clipboard" to a past-tense Czech
phrase (e.g., "Zkopírováno do schránky") so it reads as a completed status
notification, and keep the translation entry marked appropriately (add
type="unfinished" only if this is a best-effort translation).

In `@localization/localization_cy.ts`:
- Around line 1683-1685: Replace the incorrect Welsh translation "&Cwffio" for
the source string "&Quit" in the translation entry (the
<source>&amp;Quit</source> / <translation>…</translation> element) with the
standard Welsh label "&Gadael"; ensure the <translation> element text is updated
accordingly and, if you're unsure about completeness, mark it with
type="unfinished" to follow the localization guideline.

In `@localization/localization_da.ts`:
- Around line 163-165: In the Danish translation entry for the message whose
source is "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", remove the literal backticks around `#543` in the
translation (change "issue `#543`" to "issue `#543`") so it matches source
formatting; update the translation string in localization_da.ts accordingly and
save the .ts file.

In `@localization/localization_de_DE.ts`:
- Around line 566-567: In localization_de_DE.ts update the <translation> for the
string matching "Optional path to override SSH_AUTH_SOCK. Leave empty to
auto-probe via gpgconf (issue `#543`)." so it exactly mirrors the source
punctuation and casing: remove the backticks around `#543` and change "Issue" to
lowercase "issue" (i.e., produce "Optionaler Pfad zum Überschreiben von
SSH_AUTH_SOCK. Leer lassen, um per gpgconf automatisch zu ermitteln (issue
`#543`)."); edit the <translation> element accordingly to fix the
placeholder/mixed-script artifact.

In `@localization/localization_de_LU.ts`:
- Around line 357-359: The translation for the source string "Failed to create
password-store at: %1" is grammatically incorrect; update the translation value
in localization_de_LU.ts (the <message> with source "Failed to create
password-store at: %1") to a correct German sentence such as "Passwortspeicher
konnte nicht unter %1 erstellt werden." or "Konnte Passwortspeicher unter %1
nicht erstellen." ensuring the %1 placeholder remains unchanged and placement is
grammatically correct.
- Around line 565-567: Update the translation string in localization_de_LU.ts by
removing the Markdown backticks around the issue number and match the source
wording/format: replace "Issue `#543`" inside the <translation> element with
"(issue `#543`)" so the UI shows plain text "(issue `#543`)" instead of stray
backticks.

In `@localization/localization_el.ts`:
- Around line 1734-1737: Replace the incorrect Greek translation "[ΛΗΞΕ] " for
the message whose source is "[EXPIRED] " in localization_el.ts with the proper
adjective form "[ΛΗΓΜΕΝΟ] " (preserving the trailing space and message element),
so the translation matches the source status-label; update the existing
<translation> text accordingly (do not change the source or message id).

In `@localization/localization_es_AR.ts`:
- Around line 372-373: The translated string for the SSH_AUTH_SOCK note includes
Markdown backticks around the issue reference; edit the translation entry in
localization_es_AR.ts where the source is "Optional path to override
SSH_AUTH_SOCK..." and the current translation contains "issue `#543`" to remove
the backticks so it reads "issue `#543`", preserving the type="unfinished"
attribute and leaving the rest of the Spanish text unchanged.

In `@localization/localization_es_EC.ts`:
- Around line 371-374: The translated tooltip contains spurious backtick
characters around "#543" which will render literally; edit the translation
string for the message that currently reads "Ruta opcional para anular
SSH_AUTH_SOCK. Dejar en blanco para auto-detección vía gpgconf (issue `#543`)."
and remove the backticks so it matches the source punctuation "(issue `#543`)"
exactly.

In `@localization/localization_es_MX.ts`:
- Around line 366-379: In the Spanish translation for the source string
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`)." remove the literal backticks around `#543` and change the formal
"Déjelo vacío" to the informal form used elsewhere (e.g., "Deja vacío") so the
translation reads: "Ruta opcional para sobrescribir SSH_AUTH_SOCK. Deja vacío
para detectarlo automáticamente vía gpgconf (issue `#543`)."

In `@localization/localization_es_UY.ts`:
- Around line 371-374: The translated tooltip for the SSH_AUTH_SOCK option
introduces spurious backticks around the issue reference; update the translation
string for the message containing "Optional path to override SSH_AUTH_SOCK..."
(the translation entry currently showing "Ruta opcional para sobrescribir
SSH_AUTH_SOCK. Dejar vacío para que se detecte automáticamente vía gpgconf
(issue `#543`).") to remove the backticks so it reads "(issue `#543`)" to match
the source.

In `@localization/localization_et.ts`:
- Around line 163-164: The translation string for "Optional path to override
SSH_AUTH_SOCK..." currently wraps the issue number in backticks; update the
<translation> content to remove the backticks so it reads "issue `#543`" (keeping
type="unfinished"), i.e., mirror the source punctuation and plain-text issue
reference rather than using markdown-style backticks in the translation element.

In `@localization/localization_fi.ts`:
- Around line 156-170: The Finnish translation for the tooltip message matching
source "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via
gpgconf (issue `#543`)." contains spurious backticks around `#543`; open the
translation entry for that source (the message with source text starting
"Optional path to override SSH_AUTH_SOCK...") and remove the surrounding
backtick characters so the translation reads "...gpgconf-ohjelman kautta (issue
`#543`)." exactly without backticks, preserving spacing and punctuation.

In `@localization/localization_fr_BE.ts`:
- Around line 568-571: The French translation string in localization_fr_BE.ts
contains Markdown backticks around the issue number in the translation "Chemin
optionnel pour remplacer SSH_AUTH_SOCK. Laisser vide pour la détection
automatique via gpgconf (issue `#543`)." — remove the backtick characters so the
translation matches the source form "(issue `#543`)"; update the translation text
for the message element containing that tooltip (the translation value at the
corresponding message) to eliminate any ` characters and keep the rest
unchanged.

In `@localization/localization_fr_FR.ts`:
- Around line 569-570: The French translation string for the tooltip currently
contains Markdown backticks around `#543`; update the translation in
localization_fr_FR.ts (the translation value for "Optional path to override
SSH_AUTH_SOCK...") to remove the backticks and use plain text such as "issue
`#543`" or "problème n°543", keeping type="unfinished" if appropriate so the
displayed UI does not show literal backticks.

In `@localization/localization_fr_LU.ts`:
- Around line 568-571: Update the French translation for the tooltip string that
corresponds to the source "Optional path to override SSH_AUTH_SOCK. Leave empty
to auto-probe via gpgconf (issue `#543`)." in localization_fr_LU.ts: change
"autodetection" to "autodétection" and replace the English word "issue" with the
French "problème" so the translation reads with correct accents and fully
translated vocabulary.

In `@localization/localization_fy_NL.ts`:
- Around line 535-538: The Frisian translation for the instruction to click the
Autodetect button uses "Autodeteksje", which mismatches the actual translated
button label "Automatyske deteksje"; update the translation string that contains
the click instruction (the translation corresponding to the source containing
click "Autodetect") to use "Automatyske deteksje" instead of "Autodeteksje",
preserving the original HTML/quotes and spacing so the displayed instruction
matches the real button label.

In `@localization/localization_gl.ts`:
- Around line 273-274: The translated string for the SSH_AUTH_SOCK option
includes literal backticks around the issue reference; edit the <translation>
value that currently contains "issue `#543`" to remove the backticks so it
matches the source formatting ("issue `#543`"), keeping the translation marked
type="unfinished" and preserving the rest of the Galician text in that
<translation> element.

In `@localization/localization_hi.ts`:
- Line 314: The translated UI string in the localization_hi.ts translation
element contains Markdown backticks around `#543` which the source does not;
remove the backticks so the translation reads ...सहित (issue `#543`) or simply
replace "`#543`" with "#543" in the translation string within the translation
element to match the source and avoid rendering literal backticks in the UI.

In `@localization/localization_hr.ts`:
- Around line 1754-1757: The translation for the <message> whose <source> is
"Generating GPG key pair" uses the imperative "Generiraj par GPG ključeva";
change it to a gerund/progressive Croatian status form such as "Generiranje GPG
para ključeva" (or another gerund form) so the <translation> matches the
status/progress intent in the message.
- Around line 1746-1749: The translation for the programmatic token must be the
same token, not a human-readable phrase: change the Croatian translation entry
for the source "LTR" to exactly "LTR" (so QObject::tr("LTR") will compare
correctly to "RTL"); update the translation string associated with the QObject
"LTR" source (the entry used by main.cpp's layout-direction check, e.g., where
QObject::tr("LTR") is used) from "Lijevo-na-desno" to "LTR".

In `@localization/localization_hu.ts`:
- Around line 173-175: The Hungarian translation for the source "Optional path
to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)."
contains mixed English/markdown artifacts (`issue` and backticks around
`#543`)—open the <translation> element that currently reads "Opcionális elérési
út az SSH_AUTH_SOCK felülírásához. Hagyja üresen az automatikus felderítéshez
gpgconf segítségével (issue `#543`)." and replace the fragment "(issue `#543`)"
with a clean Hungarian phrase without backticks, e.g. "(hiba `#543`)" or "(`#543`)",
keeping type="unfinished" intact so the full translation becomes something like
"Opcionális elérési út az SSH_AUTH_SOCK felülírásához. Hagyja üresen az
automatikus felderítéshez gpgconf segítségével (hiba `#543`)."

In `@localization/localization_id.ts`:
- Around line 312-315: The Indonesian translation for the tooltip "Optional path
to override SSH_AUTH_SOCK..." contains extraneous backticks around "#543" in the
translation string (the element with translation type="unfinished"); update that
translation to match the source punctuation by removing the backticks so it
reads "(issue `#543`)" instead of "(issue `#543`)", preserving existing spacing
and the surrounding text.

In `@localization/localization_ko.ts`:
- Around line 375-378: The Korean translation for the source string "Show all
lines beginning with a word followed by a colon as fields in password fields,
not only the listed ones" is grammatically awkward and omits the "not only the
listed ones" clause; update the translation entry corresponding to that source
text (the message with location "../src/configdialog.ui" line="1086") so it
reads naturally in Korean and explicitly includes the "not only the listed ones"
meaning (e.g., clarify that all lines starting with "word:" will be treated as
fields, not just the ones listed), preserving punctuation and context for
password fields.
- Around line 187-190: Update the Korean translation for the UI hint that
matches the English source "Optional: GPG key to sign .gpg-id files for
integrity verification. Leave empty unless you need to protect the user list
from tampering." in localization_ko.ts so it explicitly conveys protecting the
user list from tampering; locate the message whose <source> is that exact
English string and modify the <translation> text to include the equivalent
phrase for "protect the user list from tampering" (e.g., mention 사용자 목록 변조로부터
보호) while keeping the rest of the guidance about leaving it empty unless needed.

In `@localization/localization_lb_LU.ts`:
- Around line 272-275: The translation in localization_lb_LU.ts contains
backticks around the issue reference in the translated string (the translation
value for the source "(issue `#543`)") which do not exist in the source; edit the
translated message text to remove the backticks so it reads "(issue `#543`)"
exactly like the source, updating the translation entry that currently contains
"Optionale Pfad fir SSH_AUTH_SOCK ze iwwerschreiwen. Eidel loossen fir
automatesch Detektioun via gpgconf (issue `#543`)." to match the source
formatting.

In `@localization/localization_lt.ts`:
- Around line 307-320: The Lithuanian translations for the SSH_AUTH_SOCK strings
are present but still marked as unfinished; open localization_lt.ts and locate
the <message> entries whose <source> values are "SSH_AUTH_SOCK override:",
"Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf
(issue `#543`).", and "(auto-probe via gpgconf)"; for each corresponding
<translation> element that currently has type="unfinished", remove the
type="unfinished" attribute or change it to a finished state so the translations
are treated as complete (e.g., delete type="unfinished" or set type="finished").
Ensure you only modify those three <translation> tags and do not alter the
translated text content.

In `@localization/localization_lv.ts`:
- Around line 313-314: Update the translation for the source "Optional path to
override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)." by
removing the markdown backticks around `#543` and replacing the English word
"issue" with a Latvian term (e.g., "problēma") and adjust wording for natural
Latvian—edit the translation value currently set to "Neobligāts ceļš, lai
pārrakstītu SSH_AUTH_SOCK. Atstājiet tukšu automātiskai noteikšanai, izmantojot
gpgconf (issue `#543`)." to something like "Neobligāts ceļš, lai pārrakstītu
SSH_AUTH_SOCK. Atstājiet tukšu, lai tas tiktu automātiski noteikts, izmantojot
gpgconf (problēma `#543`)." ensuring no backticks remain.

In `@localization/localization_mr.ts`:
- Around line 313-315: The Marathi translation for the tooltip in
localization_mr.ts includes backticks around the issue number (`#543`) that are
not present in the source; edit the translation string (the message whose source
starts "Optional path to override SSH_AUTH_SOCK...") to remove the backticks so
it reads "...gpgconf द्वारे स्वयं-शोधासाठी रिक्त ठेवा (issue `#543`)." and keep
the translation element marked type="unfinished".

---

Outside diff comments:
In `@localization/localization_he.ts`:
- Around line 128-130: Add a Hebrew translation for the source string "Include
special symbols" in localization/localization_he.ts by filling the <translation>
element for the <source>Include special symbols</source> entry with a
best-effort Hebrew phrase (e.g., "להוסיף תווים מיוחדים") and keep the attribute
type="unfinished" unchanged so the entry remains marked unfinished; locate the
entry by the <source>Include special symbols</source> text within the same
<location> block and update only the translation content.
- Around line 1450-1660: Fill in Hebrew translations for the empty
type="unfinished" entries for the changed runtime strings: messages from
qtpass.cpp (e.g., "Generating GPG key pair", "Failed to connect WebDAV:", "Enter
password to connect to WebDAV:", "fusedav exited unexpectedly", process error
names like "QProcess::FailedToStart", "GPG key pair generation failed", "Copied
to clipboard"), tray actions in trayicon.cpp ("&Show", "&Hide", "Mi&nimize",
"Ma&ximize", "&Restore", "&Quit"), and UsersDialog labels/statuses in
usersdialog.ui/cpp ("Read access users", help text, "Search for users", "Show
unusable keys", "Import key...", "Keylist missing", "Key not found in keyring",
"created", "expires", "[INVALID] ", "[EXPIRED] ", "[PARTIAL] "). Preserve all
placeholders (like %1/%2), ampersands, markup and exact spelling of identifiers,
and keep the translation attribute as type="unfinished" while providing accurate
Hebrew text for each source string.

---

Duplicate comments:
In `@localization/localization_en_US.ts`:
- Around line 413-508: Several translation entries in localization_en_US.ts
(e.g., the messages whose source strings "This field is required", "Create
profile directory?", "Would you like to create a password store at %1?", "Could
not create profile directory: %1", "Select recipients for %1", "New Profile",
"Error", "Failed to create password-store at: %1", "New profile: %1 at %2",
"Profile: %1 at %2", "Fill in all required fields") are left with empty
<translation type="unfinished"></translation> tags; populate each empty
translation with the corresponding source text (copy the English source into the
translation element) and preserve any HTML entities/placeholders like %1/%2 and
tags (e.g., &lt;br&gt;, &lt;strong&gt;) while leaving type="unfinished" intact.
Ensure you update every unfinished entry touched in the diff (and the referenced
areas around the other ranges mentioned) by replacing the empty translation
content with the exact source string.

In `@localization/localization_es_ES.ts`:
- Around line 366-379: Update the Spanish translation for the tooltip matching
the source "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`)." by removing the literal backtick characters around
“#543” so the translated string reads "Ruta opcional para sustituir
SSH_AUTH_SOCK. Dejar en blanco para detección automática vía gpgconf (issue
`#543`)." (edit the translation entry whose source is that tooltip in
localization_es_ES.ts).
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: 87ad549f-539e-4005-b3b9-b49baf189458

📥 Commits

Reviewing files that changed from the base of the PR and between 171f718 and 1ed63a2.

📒 Files selected for processing (74)
  • localization/localization_af.ts
  • localization/localization_ar.ts
  • localization/localization_bg.ts
  • localization/localization_bn.ts
  • localization/localization_ca.ts
  • localization/localization_cs.ts
  • localization/localization_cy.ts
  • localization/localization_da.ts
  • localization/localization_de_DE.ts
  • localization/localization_de_LU.ts
  • localization/localization_el.ts
  • localization/localization_en_GB.ts
  • localization/localization_en_US.ts
  • localization/localization_es_AR.ts
  • localization/localization_es_EC.ts
  • localization/localization_es_ES.ts
  • localization/localization_es_MX.ts
  • localization/localization_es_UY.ts
  • localization/localization_et.ts
  • localization/localization_fa.ts
  • localization/localization_fi.ts
  • localization/localization_fr_BE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_fr_LU.ts
  • localization/localization_fy_NL.ts
  • localization/localization_gl.ts
  • localization/localization_he.ts
  • localization/localization_hi.ts
  • localization/localization_hr.ts
  • localization/localization_hu.ts
  • localization/localization_id.ts
  • localization/localization_it.ts
  • localization/localization_ja.ts
  • localization/localization_ko.ts
  • localization/localization_lb_LU.ts
  • localization/localization_lt.ts
  • localization/localization_lv.ts
  • localization/localization_mr.ts
  • localization/localization_nb.ts
  • localization/localization_nl_BE.ts
  • localization/localization_nl_NL.ts
  • localization/localization_pa_IN.ts
  • localization/localization_pl.ts
  • localization/localization_pt_BR.ts
  • localization/localization_pt_PT.ts
  • localization/localization_ro.ts
  • localization/localization_ru.ts
  • localization/localization_si.ts
  • localization/localization_sk.ts
  • localization/localization_sl.ts
  • localization/localization_sq.ts
  • localization/localization_sr_Cyrl.ts
  • localization/localization_sr_RS.ts
  • localization/localization_sv.ts
  • localization/localization_sw.ts
  • localization/localization_ta.ts
  • localization/localization_te.ts
  • localization/localization_th.ts
  • localization/localization_tr.ts
  • localization/localization_uk.ts
  • localization/localization_ur.ts
  • localization/localization_vi.ts
  • localization/localization_zh_CN.ts
  • localization/localization_zh_Hant.ts
  • main/main.cpp
  • src/configdialog.cpp
  • src/configdialog.ui
  • src/qtpasssettings.cpp
  • src/qtpasssettings.h
  • src/settingsconstants.cpp
  • src/settingsconstants.h
  • src/util.cpp
  • src/util.h
  • tests/auto/util/tst_util.cpp

Comment thread localization/localization_af.ts
Comment thread localization/localization_ar.ts Outdated
Comment thread localization/localization_bg.ts
Comment thread localization/localization_ca.ts
Comment thread localization/localization_cs.ts Outdated
Comment thread localization/localization_ko.ts
Comment thread localization/localization_lb_LU.ts
Comment thread localization/localization_lt.ts
Comment thread localization/localization_lv.ts Outdated
Comment thread localization/localization_mr.ts
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 9, 2026

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 30 file(s) based on 33 unresolved review comments.

Files modified:

  • localization/localization_af.ts
  • localization/localization_ar.ts
  • localization/localization_bg.ts
  • localization/localization_ca.ts
  • localization/localization_cs.ts
  • localization/localization_cy.ts
  • localization/localization_da.ts
  • localization/localization_de_DE.ts
  • localization/localization_de_LU.ts
  • localization/localization_el.ts
  • localization/localization_es_AR.ts
  • localization/localization_es_EC.ts
  • localization/localization_es_MX.ts
  • localization/localization_es_UY.ts
  • localization/localization_et.ts
  • localization/localization_fi.ts
  • localization/localization_fr_BE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_fr_LU.ts
  • localization/localization_fy_NL.ts
  • localization/localization_gl.ts
  • localization/localization_hi.ts
  • localization/localization_hr.ts
  • localization/localization_hu.ts
  • localization/localization_id.ts
  • localization/localization_ko.ts
  • localization/localization_lb_LU.ts
  • localization/localization_lt.ts
  • localization/localization_lv.ts
  • localization/localization_mr.ts

Commit: 4c8365a614bec92532c3642821b10ef69ab007ef

The changes have been pushed to the feat/ssh-auth-sock-543 branch.

Time taken: 4m 56s

Fixed 30 file(s) based on 33 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

♻️ Duplicate comments (2)
localization/localization_af.ts (1)

157-160: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct Afrikaans label wording to match standard “oorskryf/oorskrywing”.

SSH_AUTH_SOCK-overskrywing: appears to be a spelling artifact and is inconsistent with Line 164 (oorskryf). Use oorskrywing in the label.

Suggested fix
-        <translation type="unfinished">SSH_AUTH_SOCK-overskrywing:</translation>
+        <translation type="unfinished">SSH_AUTH_SOCK-oorskrywing:</translation>
As per coding guidelines, "`localization/**/*.ts`: Fix translation bugs directly in `.ts` files for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations marked `type="unfinished"`."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_af.ts` around lines 157 - 160, The Afrikaans
translation for the source "SSH_AUTH_SOCK override:" is using a hyphenated,
incorrect form; locate the translation entry in localization_af.ts where the
source is "SSH_AUTH_SOCK override:" (the translation currently
"SSH_AUTH_SOCK-overskrywing:") and replace the translated text with
"SSH_AUTH_SOCK oorskrywing:" (keep type="unfinished" per guidelines) so the
wording matches the standard "oorskrywing" form used elsewhere.
localization/localization_de_LU.ts (1)

296-298: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Translate "Template" to German.

The translation is still in English. For de_LU locale, this should be translated to German "Vorlage".

🌐 Proposed fix
     <message>
         <location filename="../src/configdialog.ui" line="1049"/>
         <source>Template</source>
-        <translation>Template</translation>
+        <translation>Vorlage</translation>
     </message>

As per coding guidelines, "Fix translator-flagged bugs in .ts files."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_de_LU.ts` around lines 296 - 298, Update the German
translation for the "Template" source text in localization_de_LU.ts: locate the
translation entry where <source>Template</source> currently has
<translation>Template</translation> (the entry referenced around the
configdialog.ui location) and replace the English string with the German
"Vorlage" so the translation reads <translation>Vorlage</translation>.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@localization/localization_ar.ts`:
- Around line 1699-1702: The Arabic translation for the source string "[EXPIRED]
" in localization_ar.ts is incorrect; update the <translation> entry for the
message that currently contains "[يصدر] " to the correct Arabic "منتهي الصلاحية"
and, since you are fixing a translation, add type="unfinished" on the
<translation> element to mark it as a best-effort fix; locate the message by the
source text "[EXPIRED] " (from usersdialog.cpp line 337) and replace the
translation value and attributes accordingly.
- Around line 1598-1626: The Arabic translations for the tray menu entries
(&Show, &Hide, Mi&nimize, Ma&ximize, &Restore, &Quit) contain
mixed-script/transliterated words (e.g., “شو”, “هايدي”, “تحقيق أقصى استفادة”);
replace each with standard Arabic UI verbs (e.g., عرض, إخفاء, تصغير, تكبير,
استعادة, إنهاء/خروج) preserving the ampersand hotkey markers, and if you are
unsure of a precise term mark the translation attribute as type="unfinished";
locate the entries tied to trayicon (references to trayicon.cpp and the
translation keys &Show, &Hide, Mi&nimize, Ma&ximize, &Restore, &Quit) in
localization_ar.ts and update those lines accordingly.

In `@localization/localization_cs.ts`:
- Around line 561-563: Remove the markdown backticks around the issue reference
in the Czech translation for the string whose source is "Optional path to
override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)."
Edit the translation value currently containing "`#543`" to simply "#543"
(keeping the rest of the Czech text and the type="unfinished" attribute intact)
so it matches the source phrasing and UI rendering.

In `@localization/localization_es_AR.ts`:
- Around line 366-379: The three Spanish translations for the SSH_AUTH_SOCK
strings are inconsistent and use the wrong term "suplantar"; update the
translations for the source texts "SSH_AUTH_SOCK override:", "Optional path to
override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`).",
and "(auto-probe via gpgconf)" to use a single correct term (e.g., "anular" or
"sustituir") consistently (e.g., "Anular SSH_AUTH_SOCK:", "Ruta opcional para
anular SSH_AUTH_SOCK. Dejar en blanco para detección automática vía gpgconf
(issue `#543`).", "(detección automática vía gpgconf)"), keep type="unfinished"
markers as present, and ensure no other wording changes are introduced.

In `@localization/localization_hr.ts`:
- Around line 163-164: The translation entry contains stray backticks around the
issue number; edit the translation string in localization/localization_hr.ts so
it matches the source text (remove the backticks around `#543`) while preserving
the existing type="unfinished" attribute and the rest of the Croatian text
(i.e., change "issue `#543`" to "issue `#543`").
- Around line 1989-1991: Update the Croatian translation for the source string
"expires" in localization_hr.ts: replace the current translation "isteći će"
with the concise label form "istječe" so the <translation> element for the
<source>expires</source> entry (from usersdialog.cpp line 311) uses the compact
status-label form.

In `@localization/localization_lt.ts`:
- Around line 1511-1513: Update the Lithuanian translations for the QProcess
status message entries: replace the translation for the source
"QProcess::Timedout" with "Laikas baigėsi" (or "Užlaikyta") and fix the
grammatical gender on the unknown error entry by changing "Nežinomas klaida" to
"Nežinoma klaida"; locate these strings in localization_lt.ts (the QProcess
status message translations around the QProcess entries) and update the
translation values accordingly.
- Around line 1541-1553: Replace the three incorrect Lithuanian translations in
the QtPass message entries for the source strings "Clipboard cleared",
"Clipboard not cleared", and "Copied to clipboard": update the translation for
"Clipboard cleared" to "Iškarpinė išvalyta", for "Clipboard not cleared" to
"Iškarpinė neišvalyta", and for "Copied to clipboard" to "Nukopijuota į
iškarpinę"; locate the message blocks that reference qtpass.cpp (the entries
containing those exact source texts) and swap the current garbled strings with
the suggested corrected translations.

---

Duplicate comments:
In `@localization/localization_af.ts`:
- Around line 157-160: The Afrikaans translation for the source "SSH_AUTH_SOCK
override:" is using a hyphenated, incorrect form; locate the translation entry
in localization_af.ts where the source is "SSH_AUTH_SOCK override:" (the
translation currently "SSH_AUTH_SOCK-overskrywing:") and replace the translated
text with "SSH_AUTH_SOCK oorskrywing:" (keep type="unfinished" per guidelines)
so the wording matches the standard "oorskrywing" form used elsewhere.

In `@localization/localization_de_LU.ts`:
- Around line 296-298: Update the German translation for the "Template" source
text in localization_de_LU.ts: locate the translation entry where
<source>Template</source> currently has <translation>Template</translation> (the
entry referenced around the configdialog.ui location) and replace the English
string with the German "Vorlage" so the translation reads
<translation>Vorlage</translation>.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: c5b32a90-ac10-4b2a-9419-cc8c90ee5047

📥 Commits

Reviewing files that changed from the base of the PR and between 1ed63a2 and 4c8365a.

📒 Files selected for processing (30)
  • localization/localization_af.ts
  • localization/localization_ar.ts
  • localization/localization_bg.ts
  • localization/localization_ca.ts
  • localization/localization_cs.ts
  • localization/localization_cy.ts
  • localization/localization_da.ts
  • localization/localization_de_DE.ts
  • localization/localization_de_LU.ts
  • localization/localization_el.ts
  • localization/localization_es_AR.ts
  • localization/localization_es_EC.ts
  • localization/localization_es_MX.ts
  • localization/localization_es_UY.ts
  • localization/localization_et.ts
  • localization/localization_fi.ts
  • localization/localization_fr_BE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_fr_LU.ts
  • localization/localization_fy_NL.ts
  • localization/localization_gl.ts
  • localization/localization_hi.ts
  • localization/localization_hr.ts
  • localization/localization_hu.ts
  • localization/localization_id.ts
  • localization/localization_ko.ts
  • localization/localization_lb_LU.ts
  • localization/localization_lt.ts
  • localization/localization_lv.ts
  • localization/localization_mr.ts

Comment on lines +1598 to 1626
<location filename="../src/trayicon.cpp" line="52"/>
<source>&amp;Show</source>
<translation>&amp;شو</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="69"/>
<location filename="../src/trayicon.cpp" line="54"/>
<source>&amp;Hide</source>
<translation>&amp;هايدي</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="72"/>
<location filename="../src/trayicon.cpp" line="57"/>
<source>Mi&amp;nimize</source>
<translation>&amp;التقليل</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="75"/>
<location filename="../src/trayicon.cpp" line="60"/>
<source>Ma&amp;ximize</source>
<translation>&amp;تحقيق أقصى استفادة</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="78"/>
<location filename="../src/trayicon.cpp" line="63"/>
<source>&amp;Restore</source>
<translation>&amp;يعيد</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="81"/>
<location filename="../src/trayicon.cpp" line="66"/>
<source>&amp;Quit</source>
<translation>&amp;يترك</translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Replace mixed-script TrayIcon verbs with standard Arabic UI terms

Several translations here are transliterated/mixed artifacts (e.g., “شو”, “هايدي”), which degrades menu clarity.

Suggested fix
-        <translation>&amp;شو</translation>
+        <translation>&amp;إظهار</translation>
-        <translation>&amp;هايدي</translation>
+        <translation>&amp;إخفاء</translation>
-        <translation>&amp;التقليل</translation>
+        <translation>تص&amp;غير</translation>
-        <translation>&amp;تحقيق أقصى استفادة</translation>
+        <translation>تك&amp;بير</translation>
-        <translation>&amp;يعيد</translation>
+        <translation>است&amp;عادة</translation>
-        <translation>&amp;يترك</translation>
+        <translation>&amp;إنهاء</translation>

As per coding guidelines, “localization/**/*.ts: Fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations marked type="unfinished".”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/trayicon.cpp" line="52"/>
<source>&amp;Show</source>
<translation>&amp;شو</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="69"/>
<location filename="../src/trayicon.cpp" line="54"/>
<source>&amp;Hide</source>
<translation>&amp;هايدي</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="72"/>
<location filename="../src/trayicon.cpp" line="57"/>
<source>Mi&amp;nimize</source>
<translation>&amp;التقليل</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="75"/>
<location filename="../src/trayicon.cpp" line="60"/>
<source>Ma&amp;ximize</source>
<translation>&amp;تحقيق أقصى استفادة</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="78"/>
<location filename="../src/trayicon.cpp" line="63"/>
<source>&amp;Restore</source>
<translation>&amp;يعيد</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="81"/>
<location filename="../src/trayicon.cpp" line="66"/>
<source>&amp;Quit</source>
<translation>&amp;يترك</translation>
</message>
<location filename="../src/trayicon.cpp" line="52"/>
<source>&amp;Show</source>
<translation>&amp;إظهار</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="54"/>
<source>&amp;Hide</source>
<translation>&amp;إخفاء</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="57"/>
<source>Mi&amp;nimize</source>
<translation>تص&amp;غير</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="60"/>
<source>Ma&amp;ximize</source>
<translation>تك&amp;بير</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="63"/>
<source>&amp;Restore</source>
<translation>است&amp;عادة</translation>
</message>
<message>
<location filename="../src/trayicon.cpp" line="66"/>
<source>&amp;Quit</source>
<translation>&amp;إنهاء</translation>
</message>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_ar.ts` around lines 1598 - 1626, The Arabic
translations for the tray menu entries (&Show, &Hide, Mi&nimize, Ma&ximize,
&Restore, &Quit) contain mixed-script/transliterated words (e.g., “شو”, “هايدي”,
“تحقيق أقصى استفادة”); replace each with standard Arabic UI verbs (e.g., عرض,
إخفاء, تصغير, تكبير, استعادة, إنهاء/خروج) preserving the ampersand hotkey
markers, and if you are unsure of a precise term mark the translation attribute
as type="unfinished"; locate the entries tied to trayicon (references to
trayicon.cpp and the translation keys &Show, &Hide, Mi&nimize, Ma&ximize,
&Restore, &Quit) in localization_ar.ts and update those lines accordingly.

Comment on lines +1699 to 1702
<location filename="../src/usersdialog.cpp" line="337"/>
<source>[EXPIRED] </source>
<translation>[يصدر] </translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

[EXPIRED] is mistranslated

Line 1701 currently maps [EXPIRED] to [يصدر] (“issued”), which reverses meaning. Use “منتهي الصلاحية”.

Suggested fix
-        <translation>[يصدر] </translation>
+        <translation>[منتهي الصلاحية] </translation>

As per coding guidelines, “localization/**/*.ts: Fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations marked type="unfinished".”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_ar.ts` around lines 1699 - 1702, The Arabic
translation for the source string "[EXPIRED] " in localization_ar.ts is
incorrect; update the <translation> entry for the message that currently
contains "[يصدر] " to the correct Arabic "منتهي الصلاحية" and, since you are
fixing a translation, add type="unfinished" on the <translation> element to mark
it as a best-effort fix; locate the message by the source text "[EXPIRED] "
(from usersdialog.cpp line 337) and replace the translation value and attributes
accordingly.

Comment thread localization/localization_cs.ts
Comment on lines +366 to +379
<location filename="../src/configdialog.ui" line="888"/>
<source>SSH_AUTH_SOCK override:</source>
<translation type="unfinished">Sustitución de SSH_AUTH_SOCK:</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="891"/>
<source>Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue #543).</source>
<translation type="unfinished">Ruta opcional para suplantar SSH_AUTH_SOCK. Dejar en blanco para detección automática vía gpgconf (issue #543).</translation>
</message>
<message>
<location filename="../src/configdialog.ui" line="898"/>
<source>(auto-probe via gpgconf)</source>
<translation type="unfinished">(detección automática vía gpgconf)</translation>
</message>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use consistent and accurate terminology for "override" throughout the SSH_AUTH_SOCK translations.

The translations use two different terms for "override": "Sustitución" (line 368) and "suplantar" (line 373). Additionally, "suplantar" typically means "to impersonate" or "to fraudulently assume someone's identity" in Spanish, which carries an incorrect connotation for a technical override feature.

Consider using "anular" (to override/nullify) or "sustituir" (to substitute) consistently across all three entries for better accuracy and clarity.

Proposed fix for consistent terminology
-        <translation type="unfinished">Sustitución de SSH_AUTH_SOCK:</translation>
+        <translation type="unfinished">Anulación de SSH_AUTH_SOCK:</translation>
-        <translation type="unfinished">Ruta opcional para suplantar SSH_AUTH_SOCK. Dejar en blanco para detección automática vía gpgconf (issue `#543`).</translation>
+        <translation type="unfinished">Ruta opcional para anular SSH_AUTH_SOCK. Dejar en blanco para detección automática vía gpgconf (issue `#543`).</translation>

As per coding guidelines, "localization/**/*.ts: Fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations marked type=\"unfinished\"".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_es_AR.ts` around lines 366 - 379, The three Spanish
translations for the SSH_AUTH_SOCK strings are inconsistent and use the wrong
term "suplantar"; update the translations for the source texts "SSH_AUTH_SOCK
override:", "Optional path to override SSH_AUTH_SOCK. Leave empty to auto-probe
via gpgconf (issue `#543`).", and "(auto-probe via gpgconf)" to use a single
correct term (e.g., "anular" or "sustituir") consistently (e.g., "Anular
SSH_AUTH_SOCK:", "Ruta opcional para anular SSH_AUTH_SOCK. Dejar en blanco para
detección automática vía gpgconf (issue `#543`).", "(detección automática vía
gpgconf)"), keep type="unfinished" markers as present, and ensure no other
wording changes are introduced.

Comment thread localization/localization_hr.ts Outdated
Comment thread localization/localization_hr.ts Outdated
Comment on lines +1511 to 1513
<location filename="../src/qtpass.cpp" line="289"/>
<source>QProcess::Timedout</source>
<translation>Laikas ištekliai</translation>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix two incorrect Lithuanian translations in the QProcess status messages.

  • Line 1513: "Laikas ištekliai" translates literally as "time resources", which is meaningless for QProcess::Timedout. A correct rendering would be "Laikas baigėsi" (timed out) or "Užlaikyta".
  • Line 1528: "Nežinomas klaida" has a grammatical gender mismatch — klaida is feminine, so the adjective must also be feminine: "Nežinoma klaida".
✏️ Proposed fix
-        <translation>Laikas ištekliai</translation>
+        <translation>Laikas baigėsi</translation>
-        <translation>Nežinomas klaida</translation>
+        <translation>Nežinoma klaida</translation>

As per coding guidelines, .ts files should have "made-up words from machine translation" corrected.

Also applies to: 1526-1528

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_lt.ts` around lines 1511 - 1513, Update the
Lithuanian translations for the QProcess status message entries: replace the
translation for the source "QProcess::Timedout" with "Laikas baigėsi" (or
"Užlaikyta") and fix the grammatical gender on the unknown error entry by
changing "Nežinomas klaida" to "Nežinoma klaida"; locate these strings in
localization_lt.ts (the QProcess status message translations around the QProcess
entries) and update the translation values accordingly.

Comment on lines +1541 to 1553
<location filename="../src/qtpass.cpp" line="473"/>
<source>Clipboard cleared</source>
<translation>Iškurto kopijavimo langelio turinį</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="467"/>
<location filename="../src/qtpass.cpp" line="475"/>
<source>Clipboard not cleared</source>
<translation>Nekurto kopijavimo langelio turinį</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="512"/>
<location filename="../src/qtpass.cpp" line="520"/>
<source>Copied to clipboard</source>
<translation>Išsaugota į atmintį</translation>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix three garbled/semantically-wrong clipboard translations in the QtPass context.

All three strings inside these changed message blocks contain incorrect Lithuanian:

Source Current translation Problem Suggested fix
Clipboard cleared Iškurto kopijavimo langelio turinį Syntactically incoherent Iškarpinė išvalyta
Clipboard not cleared Nekurto kopijavimo langelio turinį Syntactically incoherent Iškarpinė neišvalyta
Copied to clipboard Išsaugota į atmintį Means "Saved to memory", not "Copied to clipboard" Nukopijuota į iškarpinę
✏️ Proposed fix
-        <translation>Iškurto kopijavimo langelio turinį</translation>
+        <translation>Iškarpinė išvalyta</translation>
-        <translation>Nekurto kopijavimo langelio turinį</translation>
+        <translation>Iškarpinė neišvalyta</translation>
-        <translation>Išsaugota į atmintį</translation>
+        <translation>Nukopijuota į iškarpinę</translation>

As per coding guidelines, .ts files should have "made-up words from machine translation" and semantically wrong strings corrected.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<location filename="../src/qtpass.cpp" line="473"/>
<source>Clipboard cleared</source>
<translation>Iškurto kopijavimo langelio turinį</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="467"/>
<location filename="../src/qtpass.cpp" line="475"/>
<source>Clipboard not cleared</source>
<translation>Nekurto kopijavimo langelio turinį</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="512"/>
<location filename="../src/qtpass.cpp" line="520"/>
<source>Copied to clipboard</source>
<translation>Išsaugota į atmintį</translation>
<location filename="../src/qtpass.cpp" line="473"/>
<source>Clipboard cleared</source>
<translation>Iškarpinė išvalyta</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="475"/>
<source>Clipboard not cleared</source>
<translation>Iškarpinė neišvalyta</translation>
</message>
<message>
<location filename="../src/qtpass.cpp" line="520"/>
<source>Copied to clipboard</source>
<translation>Nukopijuota į iškarpinę</translation>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_lt.ts` around lines 1541 - 1553, Replace the three
incorrect Lithuanian translations in the QtPass message entries for the source
strings "Clipboard cleared", "Clipboard not cleared", and "Copied to clipboard":
update the translation for "Clipboard cleared" to "Iškarpinė išvalyta", for
"Clipboard not cleared" to "Iškarpinė neišvalyta", and for "Copied to clipboard"
to "Nukopijuota į iškarpinę"; locate the message blocks that reference
qtpass.cpp (the entries containing those exact source texts) and swap the
current garbled strings with the suggested corrected translations.

CodeRabbit's auto-fix had introduced "issue \`#543\`" (markdown code-span)
into the translated tooltip for "Optional path to override SSH_AUTH_SOCK..."
in many locales, but Qt translations are plain text — the backticks would
render as literal characters in the UI. The 4c8365a auto-fix run cleaned
30 of them; 7 still had backticks: cs, en_GB, es_ES, fa, hr, he, it.

Each translation now mirrors the source punctuation "(issue #543)" (or
the locale's translated form, e.g. he uses "גיליון" for "issue").

No other content changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@annejan
Copy link
Copy Markdown
Member Author

annejan commented May 9, 2026

Verified the second batch of findings against current code (post-pull from 4c8365a61). Most were already addressed by CodeRabbit's auto-fix or my earlier commits — only one class of issue remained.

Fixed in d3f26f9 — markdown backticks around #543 (7 locales):

CodeRabbit had introduced "issue `#543`" into the translated tooltip; the auto-fix run at 4c8365a61 cleaned 30 locales but missed cs, en_GB, es_ES, fa, hr, he, it. Stripped the backticks so each rendering mirrors the source "(issue #543)" (or locale equivalent, e.g. he keeps "גיליון" for "issue").

Skipped — already fixed in current state:

Finding Resolved by
cs "středníkem" → "dvojtečkou" auto-fix 5a981465c
cs "Copied to clipboard" past-tense auto-fix 4c8365a61
cy "&Cwffio" → "&Gadael" auto-fix 4c8365a61
cy install-hint whitespace my commit 1ed63a2b3
de_LU "Failed to create password-store" grammar auto-fix 4c8365a61
de_LU Template singular/plural auto-fix 5a981465c
de_LU "Issue" → "issue" + backticks auto-fix 4c8365a61
el [ΛΗΞΕ] → [ΛΗΓΜΕΝΟ] auto-fix 4c8365a61
el fusedav typo my commit 1ed63a2b3
es_EC [VENCIÓ] → [VENCIDA] auto-fix 4c8365a61
es_EC "Firma" → "Clave de firma" already in tree
es_MX "Déjelo" → "Deja" auto-fix 4c8365a61
fi space before <a> auto-fix 5a981465c
fr_LU "autodétection" + "problème" auto-fix 4c8365a61
fy_NL "Autodeteksje" → "Automatyske deteksje" already in tree
fy_NL [PART][DIELLIK] my commit 1ed63a2b3
hr "popis dostupne" → "popis dostupnih" auto-fix 5a981465c
hr fusedav "prekint" → "prekinuo" auto-fix 5a981465c
hr "LTR" programmatic-token (CRITICAL) auto-fix 4c8365a61
hr "Generiraj par" → "Generiranje" auto-fix 4c8365a61
hu install hint malformed my commit 1ed63a2b3
it GPG key pair generation auto-fix 5a981465c
ja "Automatically pull" → "自動 pull" my commit 1ed63a2b3
ja created/expires noun forms my commit 1ed63a2b3
ko mixed-script "파일의Integrity" my commit 1ed63a2b3
ko "Show all lines" colon translation already in tree
ko ".gpg-id integrity" tampering wording already in tree
lb_LU URL "#sec-1- 2" auto-fix 5a981465c
lt UsersDialog created/expires my commit 1ed63a2b3
bn WebDAV "ত্রাণক" → "ব্যর্থ" my commit 1ed63a2b3

Skipped — out of scope for this PR:

  • lt finding "remove type="unfinished"": these were filled as best-effort in 1ed63a2b3 precisely so Weblate can refine — the project convention is to keep type="unfinished" on best-effort fills.
  • he and en_US requests to populate ~hundreds of pre-existing empty entries: not introduced by this PR, that's a Weblate import job.
  • All "fill empty SSH_AUTH_SOCK" findings for the 30 locales already covered by the two auto-fix commits.

Validation: lrelease6 on all 7 touched files: 304 finished + 3 unfinished, no errors (he is partial as ever). Diff is +7/-7 lines.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (2)
localization/localization_hr.ts (1)

1989-1991: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

"expires" still uses the full future-clause form instead of a compact label.

"isteći će" ("will expire") is a full sentence in the future tense; this string appears as a compact inline metadata label (column header / status marker). The translation should be the present-tense label form "istječe".

✏️ Proposed fix
-        <translation>isteći će</translation>
+        <translation>istječe</translation>

As per coding guidelines, "Fix translation bugs directly in .ts files for placeholder mismatches, broken HTML tags, and mixed-script artifacts".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_hr.ts` around lines 1989 - 1991, The Croatian
translation for the source string "expires" is currently the future-clause
"isteći će" (in localization_hr.ts / translation for usersdialog.cpp's
"expires"); replace that target text with the compact present-tense label
"istječe" so the inline metadata/column header uses the correct label form.
localization/localization_cs.ts (1)

555-557: ⚠️ Potential issue | 🟡 Minor | 💤 Low value

"přepsání" should start with a capital letter — duplicate of open review comment.

The past review for these lines explicitly suggested Přepsání SSH_AUTH_SOCK: (capital P), consistent with all other Czech UI labels in this file (e.g., Chování schránky:, Délka hesla:). The entries were filled but the capitalisation from the suggestion was not applied.

💡 Proposed fix
-        <translation type="unfinished">přepsání SSH_AUTH_SOCK:</translation>
+        <translation type="unfinished">Přepsání SSH_AUTH_SOCK:</translation>

As per coding guidelines, localization/**/*.ts: fix translation bugs directly in .ts files and fill empty entries with best-effort translations.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_cs.ts` around lines 555 - 557, Update the Czech
translation for the source string "SSH_AUTH_SOCK override:" in the
localization_cs.ts entry so the translation starts with a capital letter; change
the value from "přepsání SSH_AUTH_SOCK:" to "Přepsání SSH_AUTH_SOCK:" ensuring
it matches the capitalization style used elsewhere (e.g., "Chování schránky:"),
and save the modified translation entry in localization_cs.ts.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@localization/localization_he.ts`:
- Around line 273-275: The Hebrew translation for the source string that ends
with "(issue `#543`)" uses "גיליון" which means "sheet" — edit the translation in
localization_he.ts for the message containing the source "Optional path to
override SSH_AUTH_SOCK. Leave empty to auto-probe via gpgconf (issue `#543`)." and
replace "גיליון `#543`" with the correct term for a tracker issue such as "בעיה
`#543`" (or "Issue `#543`") so the phrase reads correctly in Hebrew.

In `@localization/localization_it.ts`:
- Around line 460-463: Update the Italian translation for the message tied to
configdialog.cpp (message with source "No profile selected to delete") in
localization_it.ts: replace the incorrect string "Nessun profilo selezionato per
eliminare" with the correct Italian "Nessun profilo selezionato da eliminare".
- Around line 188-191: In localization_it.ts update the Italian translation
string for the signing-key helper: replace the incorrect verb mood phrase "a
meno che non è necessario" with the subjunctive form "a meno che non sia
necessario" in the translation for the source "Optional: GPG key to sign .gpg-id
files for integrity verification. Leave empty unless you need to protect the
user list from tampering." so the message uses the correct Italian subjunctive.
- Around line 376-379: The Italian translation for the source "Show all lines
beginning with a word followed by a colon as fields in password fields, not only
the listed ones" is grammatically incorrect ("come campo nel campo password")
and should be changed to a correct plural and natural phrasing; locate the
string in localization_it.ts that matches the given source text (message around
the configdialog.ui entry) and replace the translation with a clearer Italian
version such as "Mostra tutte le righe che iniziano con una parola seguita da
due punti come campi nei campi password, non solo quelli elencati" or another
grammatically correct plural form preserving the original meaning.

---

Duplicate comments:
In `@localization/localization_cs.ts`:
- Around line 555-557: Update the Czech translation for the source string
"SSH_AUTH_SOCK override:" in the localization_cs.ts entry so the translation
starts with a capital letter; change the value from "přepsání SSH_AUTH_SOCK:" to
"Přepsání SSH_AUTH_SOCK:" ensuring it matches the capitalization style used
elsewhere (e.g., "Chování schránky:"), and save the modified translation entry
in localization_cs.ts.

In `@localization/localization_hr.ts`:
- Around line 1989-1991: The Croatian translation for the source string
"expires" is currently the future-clause "isteći će" (in localization_hr.ts /
translation for usersdialog.cpp's "expires"); replace that target text with the
compact present-tense label "istječe" so the inline metadata/column header uses
the correct label form.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: 889e075c-78a1-4ec2-8bd9-0c8150e3b0f3

📥 Commits

Reviewing files that changed from the base of the PR and between 4c8365a and d3f26f9.

📒 Files selected for processing (7)
  • localization/localization_cs.ts
  • localization/localization_en_GB.ts
  • localization/localization_es_ES.ts
  • localization/localization_fa.ts
  • localization/localization_he.ts
  • localization/localization_hr.ts
  • localization/localization_it.ts

Comment thread localization/localization_he.ts
Comment thread localization/localization_it.ts
Comment thread localization/localization_it.ts
Comment thread localization/localization_it.ts
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 9, 2026

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 2 file(s) based on 4 unresolved review comments.

Files modified:

  • localization/localization_he.ts
  • localization/localization_it.ts

Commit: 869d0610f3b31e7dc91bb5dd8cd3134eccc4231e

The changes have been pushed to the feat/ssh-auth-sock-543 branch.

Time taken: 1m 16s

coderabbitai Bot and others added 2 commits May 9, 2026 01:38
Fixed 2 file(s) based on 4 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
- cs: "přepsání SSH_AUTH_SOCK:" → "Přepsání SSH_AUTH_SOCK:" so the UI
  label matches the capitalisation pattern used by every other Czech
  ConfigDialog label (e.g. "Chování schránky:", "Délka hesla:").

- hr: usersdialog "expires" was rendered as the future-clause "isteći
  će" ("will expire"), but the string is an inline metadata label
  before a date — switch to the present-tense form "istječe", matching
  the compact column-header use.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@annejan
Copy link
Copy Markdown
Member Author

annejan commented May 9, 2026

Verified the latest CodeRabbit review against current code (post-pull from `869d0610f`).

Fixed in 78c93fe — 2 still-valid findings:

Locale Fix
`cs` "přepsání" → "Přepsání" (capital P, matches Czech UI label convention used elsewhere in the file)
`hr` "isteći će" (will expire — future clause) → "istječe" (compact present-tense label for inline metadata)

Skipped — already addressed by auto-fix `869d0610f`:

  • `he`: "גיליון" (sheet) → "בעיה" (issue)
  • `it`: "non è" → "non sia" (subjunctive mood)
  • `it`: "campo nel campo" → "campi nei campi" (plural agreement)
  • `it`: "per eliminare" → "da eliminare" (preposition fix)

Validation: `lrelease6` on cs and hr — 304 finished + 3 unfinished, no errors. Diff is +2/-2.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
localization/localization_he.ts (1)

1450-1658: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill empty translations in changed QtPass/TrayIcon/UsersDialog entries

These changed messages currently remain empty type="unfinished" translations. Since this PR updates these entries, they should be populated with best-effort Hebrew now (preserving placeholders/markup exactly).

As per coding guidelines, **/localization/**/*.ts: “Fill empty translation entries with best-effort translations marked type="unfinished" for Weblate to refine.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_he.ts` around lines 1450 - 1658, The translation
file has many empty Hebrew translations for updated UI strings in QtPass,
TrayIcon, and UsersDialog (e.g., source strings "Generating GPG key pair",
"Failed to connect WebDAV:", tray menu labels "&Show", "&Hide", "Mi&amp;nimize",
and UsersDialog strings like "Read access users", "Import key..." and messages
"Keylist missing", "Key not found in keyring", "[INVALID] ", etc.); add
best-effort Hebrew translations for each untranslated <translation
type="unfinished"> entry while preserving exact placeholders/markup and leaving
the type="unfinished" attribute intact so Weblate can refine later. Locate these
entries by the source text and update their translation element content with
appropriate Hebrew text (keeping ampersands, %1/%2, brackets and newlines
exactly as in the source).
♻️ Duplicate comments (1)
localization/localization_hr.ts (1)

1778-1781: ⚠️ Potential issue | 🟡 Minor | 💤 Low value

Minor grammar refinement for fusedav exit message.

The translation would be more grammatically complete with the auxiliary verb "je": fusedav je neočekivano prekinuo (or passive form fusedav je neočekivano prekinut).

✏️ Proposed fix
-        <translation>fusedav neočekivano prekinuo
+        <translation>fusedav je neočekivano prekinuo
 </translation>

As per coding guidelines, translation bugs in .ts files should be fixed directly.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@localization/localization_hr.ts` around lines 1778 - 1781, Update the
Croatian translation for the source string "fusedav exited unexpectedly" in
localization_hr.ts to include the auxiliary verb for correct grammar, e.g.,
change the translation from "fusedav neočekivano prekinuo" to "fusedav je
neočekivano prekinuo" (or use passive "fusedav je neočekivano prekinut"); locate
the entry matching the source text and replace the <translation> text
accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@localization/localization_he.ts`:
- Around line 1450-1658: The translation file has many empty Hebrew translations
for updated UI strings in QtPass, TrayIcon, and UsersDialog (e.g., source
strings "Generating GPG key pair", "Failed to connect WebDAV:", tray menu labels
"&Show", "&Hide", "Mi&amp;nimize", and UsersDialog strings like "Read access
users", "Import key..." and messages "Keylist missing", "Key not found in
keyring", "[INVALID] ", etc.); add best-effort Hebrew translations for each
untranslated <translation type="unfinished"> entry while preserving exact
placeholders/markup and leaving the type="unfinished" attribute intact so
Weblate can refine later. Locate these entries by the source text and update
their translation element content with appropriate Hebrew text (keeping
ampersands, %1/%2, brackets and newlines exactly as in the source).

---

Duplicate comments:
In `@localization/localization_hr.ts`:
- Around line 1778-1781: Update the Croatian translation for the source string
"fusedav exited unexpectedly" in localization_hr.ts to include the auxiliary
verb for correct grammar, e.g., change the translation from "fusedav neočekivano
prekinuo" to "fusedav je neočekivano prekinuo" (or use passive "fusedav je
neočekivano prekinut"); locate the entry matching the source text and replace
the <translation> text accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: ca399d3f-1e13-4c0f-8f39-3cd9df641322

📥 Commits

Reviewing files that changed from the base of the PR and between d3f26f9 and 78c93fe.

📒 Files selected for processing (4)
  • localization/localization_cs.ts
  • localization/localization_he.ts
  • localization/localization_hr.ts
  • localization/localization_it.ts

@annejan annejan merged commit 7c8b368 into main May 9, 2026
23 of 24 checks passed
@annejan annejan deleted the feat/ssh-auth-sock-543 branch May 9, 2026 02:11
annejan added a commit that referenced this pull request May 9, 2026
* fix(ssh-auth-sock): warn user when override path looks bogus

Two reviewer findings on the SSH_AUTH_SOCK override path (post-merge of
#1438):

- src/util.h: doc tweak — clarify that the "no validation" line refers
  to the runtime environment-setup step. The Settings dialog now does a
  soft check at save time.

- src/configdialog.cpp: when the user types a non-empty override and
  saves, do a soft check before writing the setting:
  - QFileInfo::exists() and isReadable()
  - on Unix, stat() + S_ISSOCK to confirm it's a Unix domain socket
    (Windows ssh-agent uses a named pipe, so we skip the socket check
    there)

  When any check fails, show a non-blocking QMessageBox::warning telling
  the user the path looks invalid and that the value will still be saved
  as entered. This preserves the "QtPass trusts the user choice" stance
  (e.g. user might start their agent after launching QtPass) while
  giving immediate feedback on typos. The runtime probe in
  Util::initialiseSshAuthSock() is unchanged — it still uses the
  override verbatim, no ssh-add validation, matching the existing
  contract.

No new tests: the warning is a UI-side soft check on data the user just
typed, with no side effects beyond the dialog. The existing
initialiseSshAuthSockOverrideSkipsAgentValidation test continues to
verify the runtime "no validation" contract.

lupdate refreshed the .ts files to pick up the four new tr() strings
(dialog title + 3 reasons + body template).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix: apply CodeRabbit auto-fixes

Fixed 17 file(s) based on 18 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>

* i18n: drop generated ui_*.h locations + 3 reviewer fixes

distclean+qmake6 regenerated the .ts files without the spurious
location pointers into generated headers (ui_configdialog.h,
ui_mainwindow.h, etc.) that lupdate had captured earlier. Net -9861
lines, no semantic change to translations or source strings.

Plus 3 reviewer findings on the new SSH_AUTH_SOCK strings:

- ca: "sòcol" → "socket" in "El camí no és un socket de domini Unix."
  ("sòcol" means a wall socket / plinth, not a Unix-domain socket).

- en_GB: undo a CodeRabbit auto-fix divergence — the en_GB translation
  had drifted to "auto-detect via gpgconf (see issue #543)" when the
  source uses "auto-probe" and "(issue #543)" with no leading "see".
  Mirror the source exactly.

- es_EC: standardise on "Anulación" for the override-related strings.
  The Settings-dialog warning had used "Sustitución" / "sustitución",
  inconsistent with the existing override-label "Anulación de
  SSH_AUTH_SOCK:" in the same file.

Skipped — out of scope for this PR:
- en_US bulk fills for ExportPublicKeyDialog and ImportKeyDialog
  blocks (those source strings live behind separate features and were
  not touched here).
- en_US bulk fills for unrelated ConfigDialog entries (pre-existing
  empties; Weblate territory).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
annejan added a commit that referenced this pull request May 10, 2026
Reviewed every translation in the 31 locales sitting between 95% and
99.9% finished — all of them had non-empty <translation
type="unfinished"> entries from earlier rounds (mostly the
SSH_AUTH_SOCK + override-warn strings from #1438/#1439). Each
translation preserves placeholders (%1) and source punctuation,
matches established locale terminology (e.g. zh_CN/zh_Hant 覆盖/覆寫,
sr_Cyrl/sr_RS надјачавање/nadjačavanje, ja 上書き), and reads
naturally; promoted to "finished" by stripping type="unfinished".

One small terminology fix on the way:

- zh_CN: "Potentially invalid SSH_AUTH_SOCK override" was rendered
  "SSH_AUTH_SOCK 覆盖值可能无效" (= "SSH_AUTH_SOCK override value may be
  invalid"). Awkward as a dialog title — re-ordered to
  "可能无效的 SSH_AUTH_SOCK 覆盖" matching the natural Chinese pattern and
  the existing zh_Hant rendering ("可能無效的 SSH_AUTH_SOCK 覆寫").

Locales touched (31, all now 312/312 finished):
  cy, es_UY, et, fi, fr_BE, fr_LU, fy_NL, gl, hi, hr, hu, id, ja,
  ko, lb_LU, lt, lv, nl_BE, pa_IN, ro, si, sq, sr_Cyrl, sr_RS, sw,
  ta, te, uk, ur, zh_CN, zh_Hant.

Out of scope (deliberately skipped per request):
  he, en_US, ru — sitting at 13.4% / 63.1% / 69.2% with hundreds of
  pre-existing untranslated entries that pre-date this PR's work.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

QtPass does not honor $SSH_AUTH_SOCK env, requires running from terminal to sync via ssh/github

3 participants