feat: auto-probe + override for SSH_AUTH_SOCK (closes #543)#1438
Conversation
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.
📝 WalkthroughWalkthroughAdds 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)
Sequence Diagram(s) Estimated code review effort Possibly related PRs
Suggested labels Suggested reviewers
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
|
Codecov Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
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.
Build & Test ReportBuild
TestsAll 436 tests pass across 13 suites:
VerdictLGTM. Tilde expansion, WSL caching, raw string literals, and |
Review SummaryI've reviewed and tested this PR locally. Here are my findings: SSH_AUTH_SOCK Feature (closes #543)✅ Feature works correctly:
Bonus: Superior Segfault FixThis PR also contains a superior segfault fix compared to PR #1188:
Root cause properly addressed: Test Results
RecommendationThis PR should be merged. It:
Once merged, PR #1188 can be closed as this PR's segfault fix is more comprehensive. |
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
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
If you build a debug binary, you'll see Scenario 2 — Settings overrideFor users on systems where
Scenario 3 — terminal launch / pre-existing setups (no regression)The fix MUST NOT clobber working setups.
Scenario 4 — debug loggingIf something doesn't work, point QtPass at
Scenario 5 — macOS specifics (Catalina, Big Sur, Ventura, Sonoma, +)
Scenario 6 — YubiKey + GPG SSH (the original reporter's setup)This was the canonical broken case in the original issue.
Edge cases worth poking
Reporting backIf anything misbehaves, drop a comment on this PR with:
|
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.
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:
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
Comparison vs commit `bf5d49086`
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 |
|
Update: Reviewed new commit The new commit adds important validation for auto-probed SSH sockets via Key Changes
Why This MattersWithout 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:
Build Status✅ Builds cleanly with Qt 6.11 This is an excellent improvement that handles edge cases properly. Still approving this PR for merge. |
There was a problem hiding this comment.
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 winTranslation 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
.tsfiles."🤖 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 " . <br> gosod " to ".<br>gosod", " <strong> Ubuntu
</strong> " to "<strong>Ubuntu</strong>", and similarly fix
any extra spaces around <br>, <strong> and <a> 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., <a>, <strong>) 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 (<br>, <strong>, <a
href="... ">…</a>) 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 <a
href="https://www.gnupg.org/download/#sec-1- 2">) 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
📒 Files selected for processing (74)
localization/localization_af.tslocalization/localization_ar.tslocalization/localization_bg.tslocalization/localization_bn.tslocalization/localization_ca.tslocalization/localization_cs.tslocalization/localization_cy.tslocalization/localization_da.tslocalization/localization_de_DE.tslocalization/localization_de_LU.tslocalization/localization_el.tslocalization/localization_en_GB.tslocalization/localization_en_US.tslocalization/localization_es_AR.tslocalization/localization_es_EC.tslocalization/localization_es_ES.tslocalization/localization_es_MX.tslocalization/localization_es_UY.tslocalization/localization_et.tslocalization/localization_fa.tslocalization/localization_fi.tslocalization/localization_fr_BE.tslocalization/localization_fr_FR.tslocalization/localization_fr_LU.tslocalization/localization_fy_NL.tslocalization/localization_gl.tslocalization/localization_he.tslocalization/localization_hi.tslocalization/localization_hr.tslocalization/localization_hu.tslocalization/localization_id.tslocalization/localization_it.tslocalization/localization_ja.tslocalization/localization_ko.tslocalization/localization_lb_LU.tslocalization/localization_lt.tslocalization/localization_lv.tslocalization/localization_mr.tslocalization/localization_nb.tslocalization/localization_nl_BE.tslocalization/localization_nl_NL.tslocalization/localization_pa_IN.tslocalization/localization_pl.tslocalization/localization_pt_BR.tslocalization/localization_pt_PT.tslocalization/localization_ro.tslocalization/localization_ru.tslocalization/localization_si.tslocalization/localization_sk.tslocalization/localization_sl.tslocalization/localization_sq.tslocalization/localization_sr_Cyrl.tslocalization/localization_sr_RS.tslocalization/localization_sv.tslocalization/localization_sw.tslocalization/localization_ta.tslocalization/localization_te.tslocalization/localization_th.tslocalization/localization_tr.tslocalization/localization_uk.tslocalization/localization_ur.tslocalization/localization_vi.tslocalization/localization_zh_CN.tslocalization/localization_zh_Hant.tsmain/main.cppsrc/configdialog.cppsrc/configdialog.uisrc/qtpasssettings.cppsrc/qtpasssettings.hsrc/settingsconstants.cppsrc/settingsconstants.hsrc/util.cppsrc/util.htests/auto/util/tst_util.cpp
| <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> |
There was a problem hiding this comment.
🛠️ 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.
| <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.
| <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> |
There was a problem hiding this comment.
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.
| <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).
| <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> |
There was a problem hiding this comment.
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.
| <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.
| <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> |
There was a problem hiding this comment.
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.
| <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.
| <location filename="../src/configdialog.cpp" line="927"/> | ||
| <source>Please install GnuPG on your system.<br>Install <strong>gpg</strong> using your favorite package manager<br>or <a href="https://www.gnupg.org/download/#sec-1-2">download</a> it from GnuPG.org</source> | ||
| <translation>Installéiert GnuPG op Ärem System. <br> Installéiert <strong> gpg </strong> mat Ärem Liiblingspakmanager <br> oder <a href="https://www.gnupg.org/download/#sec-1- 2"> download </a> et vu GnuPG.org</translation> |
There was a problem hiding this comment.
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. <br> Installéiert <strong> gpg </strong> mat Ärem Liiblingspakmanager <br> oder <a href="https://www.gnupg.org/download/#sec-1- 2"> download </a> et vu GnuPG.org</translation>
+ <translation>Installéiert GnuPG op Ärem System. <br> Installéiert <strong> gpg </strong> mat Ärem Liiblingspakmanager <br> oder <a href="https://www.gnupg.org/download/#sec-1-2"> download </a> 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.
| <location filename="../src/configdialog.cpp" line="927"/> | |
| <source>Please install GnuPG on your system.<br>Install <strong>gpg</strong> using your favorite package manager<br>or <a href="https://www.gnupg.org/download/#sec-1-2">download</a> it from GnuPG.org</source> | |
| <translation>Installéiert GnuPG op Ärem System. <br> Installéiert <strong> gpg </strong> mat Ärem Liiblingspakmanager <br> oder <a href="https://www.gnupg.org/download/#sec-1- 2"> download </a> et vu GnuPG.org</translation> | |
| <location filename="../src/configdialog.cpp" line="927"/> | |
| <source>Please install GnuPG on your system.<br>Install <strong>gpg</strong> using your favorite package manager<br>or <a href="https://www.gnupg.org/download/#sec-1-2">download</a> it from GnuPG.org</source> | |
| <translation>Installéiert GnuPG op Ärem System. <br> Installéiert <strong> gpg </strong> mat Ärem Liiblingspakmanager <br> oder <a href="https://www.gnupg.org/download/#sec-1-2"> download </a> 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 <a href="https://www.gnupg.org/download/#sec-1- 2">)
and remove the space so the href becomes ".../download/#sec-1-2", preserving the
surrounding HTML entities and markup exactly as in the source.
| <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> |
There was a problem hiding this comment.
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.
| <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.
| <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> |
There was a problem hiding this comment.
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>🤖 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.
|
Note Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Fixes Applied SuccessfullyFixed 30 file(s) based on 40 unresolved review comments. Files modified:
Commit: The changes have been pushed to the Time taken: |
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>
|
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):
Each of these locales also had three empty Skipped — already addressed by 5a98146 (CodeRabbit auto-fixes):
Validation: ran |
|
Checked updated commits |
|
Verified the latest i18n commits. Build succeeds and tests pass. These are purely localization updates:
All good - PR remains approved for merge. |
There was a problem hiding this comment.
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 winFill 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 keeptype="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.tsfiles …; fill empty entries with best-effort translations markedtype="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 winPopulate 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.tsfiles …; fill empty entries with best-effort translations markedtype="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 winThe 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
#543in backtick characters (`#543`), but the source string at line 372 contains plain#543without 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
.tsfiles 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 winPopulate touched
en_USunfinished 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
.tsfiles for placeholder mismatches, broken HTML tags, and mixed-script artifacts; fill empty entries with best-effort translations markedtype="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., <br>, <strong>) 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>&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., <br>, <strong>) 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
📒 Files selected for processing (74)
localization/localization_af.tslocalization/localization_ar.tslocalization/localization_bg.tslocalization/localization_bn.tslocalization/localization_ca.tslocalization/localization_cs.tslocalization/localization_cy.tslocalization/localization_da.tslocalization/localization_de_DE.tslocalization/localization_de_LU.tslocalization/localization_el.tslocalization/localization_en_GB.tslocalization/localization_en_US.tslocalization/localization_es_AR.tslocalization/localization_es_EC.tslocalization/localization_es_ES.tslocalization/localization_es_MX.tslocalization/localization_es_UY.tslocalization/localization_et.tslocalization/localization_fa.tslocalization/localization_fi.tslocalization/localization_fr_BE.tslocalization/localization_fr_FR.tslocalization/localization_fr_LU.tslocalization/localization_fy_NL.tslocalization/localization_gl.tslocalization/localization_he.tslocalization/localization_hi.tslocalization/localization_hr.tslocalization/localization_hu.tslocalization/localization_id.tslocalization/localization_it.tslocalization/localization_ja.tslocalization/localization_ko.tslocalization/localization_lb_LU.tslocalization/localization_lt.tslocalization/localization_lv.tslocalization/localization_mr.tslocalization/localization_nb.tslocalization/localization_nl_BE.tslocalization/localization_nl_NL.tslocalization/localization_pa_IN.tslocalization/localization_pl.tslocalization/localization_pt_BR.tslocalization/localization_pt_PT.tslocalization/localization_ro.tslocalization/localization_ru.tslocalization/localization_si.tslocalization/localization_sk.tslocalization/localization_sl.tslocalization/localization_sq.tslocalization/localization_sr_Cyrl.tslocalization/localization_sr_RS.tslocalization/localization_sv.tslocalization/localization_sw.tslocalization/localization_ta.tslocalization/localization_te.tslocalization/localization_th.tslocalization/localization_tr.tslocalization/localization_uk.tslocalization/localization_ur.tslocalization/localization_vi.tslocalization/localization_zh_CN.tslocalization/localization_zh_Hant.tsmain/main.cppsrc/configdialog.cppsrc/configdialog.uisrc/qtpasssettings.cppsrc/qtpasssettings.hsrc/settingsconstants.cppsrc/settingsconstants.hsrc/util.cppsrc/util.htests/auto/util/tst_util.cpp
|
Note Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Fixes Applied SuccessfullyFixed 30 file(s) based on 33 unresolved review comments. Files modified:
Commit: The changes have been pushed to the Time taken: |
Fixed 30 file(s) based on 33 unresolved review comments. Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
There was a problem hiding this comment.
Actionable comments posted: 8
♻️ Duplicate comments (2)
localization/localization_af.ts (1)
157-160:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winCorrect 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). Useoorskrywingin the label.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"`."Suggested fix
- <translation type="unfinished">SSH_AUTH_SOCK-overskrywing:</translation> + <translation type="unfinished">SSH_AUTH_SOCK-oorskrywing:</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_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 winTranslate "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
.tsfiles."🤖 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
📒 Files selected for processing (30)
localization/localization_af.tslocalization/localization_ar.tslocalization/localization_bg.tslocalization/localization_ca.tslocalization/localization_cs.tslocalization/localization_cy.tslocalization/localization_da.tslocalization/localization_de_DE.tslocalization/localization_de_LU.tslocalization/localization_el.tslocalization/localization_es_AR.tslocalization/localization_es_EC.tslocalization/localization_es_MX.tslocalization/localization_es_UY.tslocalization/localization_et.tslocalization/localization_fi.tslocalization/localization_fr_BE.tslocalization/localization_fr_FR.tslocalization/localization_fr_LU.tslocalization/localization_fy_NL.tslocalization/localization_gl.tslocalization/localization_hi.tslocalization/localization_hr.tslocalization/localization_hu.tslocalization/localization_id.tslocalization/localization_ko.tslocalization/localization_lb_LU.tslocalization/localization_lt.tslocalization/localization_lv.tslocalization/localization_mr.ts
| <location filename="../src/trayicon.cpp" line="52"/> | ||
| <source>&Show</source> | ||
| <translation>&شو</translation> | ||
| </message> | ||
| <message> | ||
| <location filename="../src/trayicon.cpp" line="69"/> | ||
| <location filename="../src/trayicon.cpp" line="54"/> | ||
| <source>&Hide</source> | ||
| <translation>&هايدي</translation> | ||
| </message> | ||
| <message> | ||
| <location filename="../src/trayicon.cpp" line="72"/> | ||
| <location filename="../src/trayicon.cpp" line="57"/> | ||
| <source>Mi&nimize</source> | ||
| <translation>&التقليل</translation> | ||
| </message> | ||
| <message> | ||
| <location filename="../src/trayicon.cpp" line="75"/> | ||
| <location filename="../src/trayicon.cpp" line="60"/> | ||
| <source>Ma&ximize</source> | ||
| <translation>&تحقيق أقصى استفادة</translation> | ||
| </message> | ||
| <message> | ||
| <location filename="../src/trayicon.cpp" line="78"/> | ||
| <location filename="../src/trayicon.cpp" line="63"/> | ||
| <source>&Restore</source> | ||
| <translation>&يعيد</translation> | ||
| </message> | ||
| <message> | ||
| <location filename="../src/trayicon.cpp" line="81"/> | ||
| <location filename="../src/trayicon.cpp" line="66"/> | ||
| <source>&Quit</source> | ||
| <translation>&يترك</translation> | ||
| </message> |
There was a problem hiding this comment.
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>&شو</translation>
+ <translation>&إظهار</translation>
- <translation>&هايدي</translation>
+ <translation>&إخفاء</translation>
- <translation>&التقليل</translation>
+ <translation>تص&غير</translation>
- <translation>&تحقيق أقصى استفادة</translation>
+ <translation>تك&بير</translation>
- <translation>&يعيد</translation>
+ <translation>است&عادة</translation>
- <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".”
📝 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.
| <location filename="../src/trayicon.cpp" line="52"/> | |
| <source>&Show</source> | |
| <translation>&شو</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="69"/> | |
| <location filename="../src/trayicon.cpp" line="54"/> | |
| <source>&Hide</source> | |
| <translation>&هايدي</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="72"/> | |
| <location filename="../src/trayicon.cpp" line="57"/> | |
| <source>Mi&nimize</source> | |
| <translation>&التقليل</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="75"/> | |
| <location filename="../src/trayicon.cpp" line="60"/> | |
| <source>Ma&ximize</source> | |
| <translation>&تحقيق أقصى استفادة</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="78"/> | |
| <location filename="../src/trayicon.cpp" line="63"/> | |
| <source>&Restore</source> | |
| <translation>&يعيد</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="81"/> | |
| <location filename="../src/trayicon.cpp" line="66"/> | |
| <source>&Quit</source> | |
| <translation>&يترك</translation> | |
| </message> | |
| <location filename="../src/trayicon.cpp" line="52"/> | |
| <source>&Show</source> | |
| <translation>&إظهار</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="54"/> | |
| <source>&Hide</source> | |
| <translation>&إخفاء</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="57"/> | |
| <source>Mi&nimize</source> | |
| <translation>تص&غير</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="60"/> | |
| <source>Ma&ximize</source> | |
| <translation>تك&بير</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="63"/> | |
| <source>&Restore</source> | |
| <translation>است&عادة</translation> | |
| </message> | |
| <message> | |
| <location filename="../src/trayicon.cpp" line="66"/> | |
| <source>&Quit</source> | |
| <translation>&إنهاء</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.
| <location filename="../src/usersdialog.cpp" line="337"/> | ||
| <source>[EXPIRED] </source> | ||
| <translation>[يصدر] </translation> | ||
| </message> |
There was a problem hiding this comment.
[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.
| <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> |
There was a problem hiding this comment.
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.
| <location filename="../src/qtpass.cpp" line="289"/> | ||
| <source>QProcess::Timedout</source> | ||
| <translation>Laikas ištekliai</translation> |
There was a problem hiding this comment.
Fix two incorrect Lithuanian translations in the QProcess status messages.
- Line 1513:
"Laikas ištekliai"translates literally as "time resources", which is meaningless forQProcess::Timedout. A correct rendering would be"Laikas baigėsi"(timed out) or"Užlaikyta". - Line 1528:
"Nežinomas klaida"has a grammatical gender mismatch —klaidais 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.
| <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> |
There was a problem hiding this comment.
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.
| <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>
|
Verified the second batch of findings against current code (post-pull from Fixed in d3f26f9 — markdown backticks around #543 (7 locales): CodeRabbit had introduced "issue `#543`" into the translated tooltip; the auto-fix run at Skipped — already fixed in current state:
Skipped — out of scope for this PR:
Validation: |
There was a problem hiding this comment.
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
.tsfiles 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.tsfiles 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
📒 Files selected for processing (7)
localization/localization_cs.tslocalization/localization_en_GB.tslocalization/localization_es_ES.tslocalization/localization_fa.tslocalization/localization_he.tslocalization/localization_hr.tslocalization/localization_it.ts
|
Note Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Fixes Applied SuccessfullyFixed 2 file(s) based on 4 unresolved review comments. Files modified:
Commit: The changes have been pushed to the Time taken: |
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>
|
Verified the latest CodeRabbit review against current code (post-pull from `869d0610f`). Fixed in 78c93fe — 2 still-valid findings:
Skipped — already addressed by auto-fix `869d0610f`:
Validation: `lrelease6` on cs and hr — 304 finished + 3 unfinished, no errors. Diff is +2/-2. |
There was a problem hiding this comment.
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 winFill empty translations in changed
QtPass/TrayIcon/UsersDialogentriesThese 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 markedtype="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&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 valueMinor 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 formfusedav 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
.tsfiles 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&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
📒 Files selected for processing (4)
localization/localization_cs.tslocalization/localization_he.tslocalization/localization_hr.tslocalization/localization_it.ts
* 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>
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>
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/.zshrcfor users running gpg-agent's SSH support, often with a YubiKey) is missing when QtPass spawnsgit 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 frommain()before any subprocess work. Resolution order:.desktop Exec=overrides, parent-process exports keep working unchanged.sshAuthSockOverridesetting in QtPass, exposed in the Programs tab.gpgconf --list-dirs agent-ssh-socket— canonical for gpg-agent's SSH support.launchctl getenv SSH_AUTH_SOCK.Sets via
qputenvso child processes inherit it.Settings UI
QtPassSettings::getSshAuthSockOverride()/setSshAuthSockOverride().(auto-probe via gpgconf)and a tooltip referencing QtPass does not honor $SSH_AUTH_SOCK env, requires running from terminal to sync via ssh/github #543.Tests
6 new tests in
tests/auto/util/tst_util.cpp(initial 7, then dropped 1 redundant case after review):sshAuthSockOverrideRoundtrip— getter/setter persistencesshAuthSockOverrideEmptyByDefault— default valueinitialiseSshAuthSockHonoursExistingEnv— env-already-set wins over override and auto-probeinitialiseSshAuthSockUsesOverride— override applied when env unsetinitialiseSshAuthSockNoOverrideNoEnvProbes— auto-probe path runs without crashinginitialiseSshAuthSockEmptyOverrideFallsThrough— empty override doesn't pin SSH_AUTH_SOCK to ""All use a
SshAuthSockGuardRAII helper to restore env state and the setting after each case.Localization
lupdaterefreshed; the new "SSH_AUTH_SOCK override:" / placeholder / tooltip source strings appear astype="unfinished"entries across all 60+ locales for Weblate translators.Review iteration
Initial branch had two issues caught in review (commit 2):
initialiseEnvironment()got orphaned during insertion of the new functioninitialiseEnvironment().initialiseSshAuthSockUsesOverrideandinitialiseSshAuthSockOverrideWinsOverProbehad identical preconditions and assertionsUsesOverridewithout injecting a fake gpgconf.Test plan
tst_utilpasses (112 / 112).doxygen Doxyfileclean (no new warnings; CI-relevant sinceWARN_AS_ERROR=FAIL_ON_WARNINGS).🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Internationalization