Skip to content

i18n: add sl_SI/id_ID/lt_LT/lv_LV; translate v1.8.0 strings in de_DE & fr_FR#1201

Merged
annejan merged 4 commits into
mainfrom
chore/locales-and-translation-fixes
Apr 27, 2026
Merged

i18n: add sl_SI/id_ID/lt_LT/lv_LV; translate v1.8.0 strings in de_DE & fr_FR#1201
annejan merged 4 commits into
mainfrom
chore/locales-and-translation-fixes

Conversation

@annejan
Copy link
Copy Markdown
Member

@annejan annejan commented Apr 27, 2026

This pull request introduces support for new languages and updates existing translations.

Key changes include:

  • Added New Locales: New localization files have been added for Indonesian (id_ID), Lithuanian (lt_LT), Latvian (lv_LV), and Slovenian (sl_SI). These new locales are currently untranslated.
  • Updated German (de_DE) Translation: Many previously untranslated strings in the German localization file have been completed, including messages related to configuration, GPG key management (export/import), password sharing, and search results.
  • Updated French (fr_FR) Translation: Similar to German, numerous "unfinished" strings in the French localization file have been translated, covering various UI elements and messages.
  • Improved UI Translation Coverage: The localization files now include references to strings generated from UI header files (ui_*.h), ensuring better coverage for translatable UI elements.

Summary by CodeRabbit

  • New Features

    • Added support for four new language localizations: Indonesian, Lithuanian, Latvian, and Slovenian.
  • Localization

    • German: many UI strings finalized; wording and pluralization fixes applied.
    • French: pluralization, punctuation/spacing, and import/export/share wording refined.
  • Chores

    • Translation resources integrated into the build so new/updated locales are included.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 27, 2026

📝 Walkthrough

Walkthrough

Updates German and French Qt translation catalogs (many completed/adjusted translations and added <location> references), adds four new unfinished translation TS files (Indonesian, Lithuanian, Latvian, Slovenian), and registers them in src/src.pro's TRANSLATIONS.

Changes

Cohort / File(s) Summary
Updated translations
localization/localization_de_DE.ts, localization/localization_fr_FR.ts
Completed and corrected many UI translations (ConfigDialog, Import/Export dialogs, MainWindow, Password/Users dialogs), fixed pluralization and wording, and added/updated <location> entries referencing generated ui_*.h.
New language skeletons
localization/localization_id_ID.ts, localization/localization_lt_LT.ts, localization/localization_lv_LV.ts, localization/localization_sl_SI.ts
Added four new TS files containing full sets of source messages with translations left type="unfinished" as placeholders for Indonesian, Lithuanian, Latvian, and Slovenian.
Build config
src/src.pro
Added the four new TS files to the TRANSLATIONS list so they are included in the lrelease/embed_translations build pipeline.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

Suggested labels

size:XXL

Suggested reviewers

  • nogeenharrie

Poem

🐰 Hopping through strings with nib and light,

German and French now polished bright.
Four new tongues sit patient in a row,
Empty lines ready for words to grow.
A rabbit cheers: translations take flight!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main changes: adding four new locale translation files (sl_SI, id_ID, lt_LT, lv_LV) and updating translations in de_DE and fr_FR for v1.8.0 strings.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/locales-and-translation-fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

…& fr_FR

**New locales**
- Slovenian (sl_SI) — explicit request
- Lithuanian (lt_LT) and Latvian (lv_LV) — Baltic completeness; we
  already had Estonian
- Indonesian (id_ID) — fills the SE-Asian gap next to ja_JP/ko_KR/zh_*
  /ta_IN/si_LK

The four new .ts files start out empty (`<translation type="unfinished"/>`);
populated by lupdate6 from the existing source strings, ready to be
filled in by translators.

**de_DE and fr_FR translations for the v1.8.0 features**

The recent merged PR #1200 (Weblate sync) left the new feature strings
empty (`type="unfinished"`) for both German and French. Filling them
in directly here:

- Process Output panel: "Process Output", "Show process output",
  "Clear", "Clear output"
- Import Key dialog: title, description, From File / From Clipboard,
  placeholder, Import button, file-filter labels, error messages,
  success message
- UsersDialog button + tooltip ("Import key…", "Import a GPG key
  from file or clipboard")
- ExportPublicKeyDialog: file-dialog title, name filter (preserves
  both ASCII-armored and All-files groups), I/O error messages
- Share help: full HTML block with `<ol>/<li>` structure preserved
- ConfigDialog profile strings: "New profile: %1 at %2",
  "Profile: %1 at %2", "Fill in all required fields"
- Numerus forms: "Found %n match(es)" and "in %n entr(ies)." now
  carry singular/plural forms in both languages

Style notes:
- German: "ASCII-codiert" for armored, "Schlüsselbund" for keyring,
  "Treffer" / "Eintrag/Einträgen" for the numerus forms.
- French: "ASCII-armored" left as-is (it's the technical term most
  French GPG docs use), "presse-papiers" for clipboard,
  "%n correspondance trouvée" / "%n correspondances trouvées" with
  proper feminine agreement.

Editing the .ts files directly per maintainer instruction; not going
via Weblate for this round.
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

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

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

477-491: ⚠️ Potential issue | 🟠 Major

ConfigDialog profile-creation strings still unfinished.

The PR objectives advertise completion of "ConfigDialog profile strings", but three profile-related dialog strings are still type="unfinished" and were not touched by this change:

  • Line 480: Create profile directory?
  • Line 485: Would you like to create a password store at %1?
  • Line 490: Could not create profile directory: %1

These are user-visible message-box strings on the profile-creation path (configdialog.cpp:720/721/729) and will fall back to English when a user clicks "Add" on a non-existent profile directory. Note that a closely related string at line 412 ("Would you like to create a password-store at %1?") is already translated as "Soll ein Kennwortspeicher in %1 erstellt werden?", which can be reused/adapted for line 485 to keep wording consistent.

🛠️ Suggested German translations (style-matched to surrounding entries)
     <message>
         <location filename="../src/configdialog.cpp" line="720"/>
         <source>Create profile directory?</source>
-        <translation type="unfinished"></translation>
+        <translation>Profilverzeichnis erstellen?</translation>
     </message>
     <message>
         <location filename="../src/configdialog.cpp" line="721"/>
         <source>Would you like to create a password store at %1?</source>
-        <translation type="unfinished"></translation>
+        <translation>Soll ein Kennwortspeicher in %1 erstellt werden?</translation>
     </message>
     <message>
         <location filename="../src/configdialog.cpp" line="729"/>
         <source>Could not create profile directory: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Profilverzeichnis konnte nicht erstellt werden: %1</translation>
     </message>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@localization/localization_de_DE.ts` around lines 477 - 491, Add German
translations for the three unfinished ConfigDialog profile-creation messages in
localization_de_DE.ts: provide a translation for "Create profile directory?",
for "Would you like to create a password store at %1?" (reuse/adapt the existing
translation "Soll ein Kennwortspeicher in %1 erstellt werden?" for consistent
wording), and for "Could not create profile directory: %1" (an error message
like "Profilverzeichnis konnte nicht erstellt werden: %1"); update the
<translation> elements corresponding to the <source> strings tied to
configdialog.cpp (Create profile directory?, Would you like to create a password
store at %1?, Could not create profile directory: %1) and remove
type="unfinished".

1280-1333: ⚠️ Potential issue | 🟡 Minor

MainWindow: new Share/Export-key menu items and help text remain unfinished.

A consistent block of new MainWindow strings tied to the Share menu and Export-public-key flow is still type="unfinished":

  • Line 1282 Share
  • Line 1287 Re-encrypt all passwords (note: another instance at line 1664 is already translated as "Passwörter neu verschlüsseln" — reuse for consistency)
  • Line 1292 Export my public key...
  • Line 1297 Add recipient...
  • Line 1302 What is this?
  • Lines 1315/1320: Export Public Key title and its <h3>Export Your Public Key</h3>... help block
  • Lines 1327/1332: Could not export public key for %1. / No output from gpg. error strings

Given the Sharing-with-GPG help body at line 1342 was translated, leaving the surrounding entry points (menu labels, dialog titles, and error messages reachable from those menu actions) untranslated produces a half-German UI on this flow. Recommend completing these in the same pass, or explicitly noting they are deferred to a follow-up so reviewers don't expect them.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@localization/localization_de_DE.ts` around lines 1280 - 1333, The menu and
dialog strings in MainWindow related to sharing and exporting GPG keys are left
untranslated; update the corresponding translation entries for the source texts
"Share", "Re-encrypt all passwords", "Export my public key...", "Add
recipient...", "What is this?", the dialog title "Export Public Key", the help
HTML starting with "<h3>Export Your Public Key</h3>...", and the error messages
"Could not export public key for %1." and "No output from gpg." in
localization_de_DE.ts so the Share/Export flow is fully localized; reuse the
existing German translation "Passwörter neu verschlüsseln" for "Re-encrypt all
passwords" for consistency and ensure the help HTML and placeholders like %1/%2
are preserved exactly in the translated strings.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@localization/localization_de_DE.ts`:
- Around line 1334-1343: The title message "Sharing Passwords with GPG" in
localization_de_DE.ts is still marked unfinished while the corresponding HTML
body is translated; open the <message> containing the source "Sharing Passwords
with GPG" (the same message pair that contains the long HTML source) and provide
the German translation (e.g., "Passwörter mit GPG teilen") for the title
translation element, remove the type="unfinished" attribute so both title and
body are translated consistently for the mainwindow.cpp call site.

In `@localization/localization_fr_FR.ts`:
- Around line 885-891: You edited translated strings directly in
localization_fr_FR.ts (e.g. the entry with source "Import a GPG public key from
file or paste it below.") — revert those manual changes in
localization_fr_FR.ts, remove all direct translation edits in this PR (including
the other ranges you noted), and instead update the translations through Weblate
for the corresponding source keys; once source strings change, run qmake6 to
regenerate/update the .ts reference files and include only the generated update
in the PR.

---

Outside diff comments:
In `@localization/localization_de_DE.ts`:
- Around line 477-491: Add German translations for the three unfinished
ConfigDialog profile-creation messages in localization_de_DE.ts: provide a
translation for "Create profile directory?", for "Would you like to create a
password store at %1?" (reuse/adapt the existing translation "Soll ein
Kennwortspeicher in %1 erstellt werden?" for consistent wording), and for "Could
not create profile directory: %1" (an error message like "Profilverzeichnis
konnte nicht erstellt werden: %1"); update the <translation> elements
corresponding to the <source> strings tied to configdialog.cpp (Create profile
directory?, Would you like to create a password store at %1?, Could not create
profile directory: %1) and remove type="unfinished".
- Around line 1280-1333: The menu and dialog strings in MainWindow related to
sharing and exporting GPG keys are left untranslated; update the corresponding
translation entries for the source texts "Share", "Re-encrypt all passwords",
"Export my public key...", "Add recipient...", "What is this?", the dialog title
"Export Public Key", the help HTML starting with "<h3>Export Your Public
Key</h3>...", and the error messages "Could not export public key for %1." and
"No output from gpg." in localization_de_DE.ts so the Share/Export flow is fully
localized; reuse the existing German translation "Passwörter neu verschlüsseln"
for "Re-encrypt all passwords" for consistency and ensure the help HTML and
placeholders like %1/%2 are preserved exactly in the translated strings.
🪄 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: 6f884130-4bcc-458b-8778-e38d64de8d6e

📥 Commits

Reviewing files that changed from the base of the PR and between 3e94075 and ac7afd9.

📒 Files selected for processing (7)
  • localization/localization_de_DE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_id_ID.ts
  • localization/localization_lt_LT.ts
  • localization/localization_lv_LV.ts
  • localization/localization_sl_SI.ts
  • src/src.pro

Comment thread localization/localization_de_DE.ts
Comment thread localization/localization_fr_FR.ts
@kody-ai

This comment has been minimized.

…-create

Filling in 13 more empty German translations the latest review caught:

- Share submenu (mainwindow.cpp): "Share", "Re-encrypt all passwords"
  (reusing the existing "neu verschlüsseln" wording for consistency
  with "Re-encrypt passwords"), "Export my public key…",
  "Add recipient…", "What is this?".
- Sharing help dialog: "Sharing Passwords with GPG" title (the body
  was already translated last commit, the title was the orphan).
- ExportPublicKeyDialog flow: dialog title "Export Public Key"
  (covers both the .ui slot and the mainwindow.cpp call site),
  the no-signing-key help HTML <h3>/<pre>/<p> block, and the
  "Could not export public key" / "No output from gpg." error
  messages.
- ConfigDialog profile creation (configdialog.cpp): "Create profile
  directory?", "Would you like to create a password store at %1?"
  (matching the pre-existing "Soll ein Kennwortspeicher in %1
  erstellt werden?" wording), "Could not create profile directory:
  %1".

Placeholders preserved exactly (%1, %2, the &lt;h3&gt;/&lt;pre&gt;/&lt;p&gt;
HTML structure, the &amp;gt; / &amp;lt; entities in the gpg command line).
@annejan annejan force-pushed the chore/locales-and-translation-fixes branch from ac7afd9 to add9c53 Compare April 27, 2026 20:15
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@localization/localization_de_DE.ts`:
- Around line 1599-1602: The German numerusform currently has both <numerusform>
entries as "%n Treffer gefunden"; update the singular branch (the first
<numerusform> inside the <translation> block) to a more idiomatic singular
string such as "Ein Treffer gefunden" while keeping the plural "%n Treffer
gefunden" as the second <numerusform>; modify the translation entry in
localization_de_DE.ts accordingly (adjust only the first <numerusform> in that
<translation> block).
- Around line 683-710: Translate the five unfinished strings in
localization_de_DE.ts for the ExportPublicKeyDialog so the dialog is fully
German: replace the empty translations for "Public key", "Copy to Clipboard",
"Save to File...", "Public key for %1", and "Copied!" with appropriate German
translations (or remove the de_DE entry if you prefer a fallback to English);
locate the entries by their source text in the ExportPublicKeyDialog block
(references: exportpublickeydialog.ui and exportpublickeydialog.cpp) and update
the <translation> elements so they are no longer type="unfinished".

In `@localization/localization_fr_FR.ts`:
- Around line 362-375: Several French translations in localization_fr_FR.ts are
still marked type="unfinished" (e.g., the strings from configdialog.cpp: "Create
profile directory?", "Would you like to create a password store at %1?", and
"Could not create profile directory: %1"); update those entries with proper
French translations and remove the type="unfinished" attribute so they are used
at runtime, and repeat the same for the other ranges mentioned (lines
corresponding to 681-712, 928-934, 1568-1591, 1653-1679) to ensure all UI
strings for profile creation, key import/export and sharing flows are translated
and not left as unfinished.
🪄 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: 2c313d20-fa9f-4a47-92a5-fa136e304bbe

📥 Commits

Reviewing files that changed from the base of the PR and between ac7afd9 and add9c53.

📒 Files selected for processing (7)
  • localization/localization_de_DE.ts
  • localization/localization_fr_FR.ts
  • localization/localization_id_ID.ts
  • localization/localization_lt_LT.ts
  • localization/localization_lv_LV.ts
  • localization/localization_sl_SI.ts
  • src/src.pro

Comment thread localization/localization_de_DE.ts
Comment thread localization/localization_de_DE.ts
Comment thread localization/localization_fr_FR.ts
@coveralls
Copy link
Copy Markdown

coveralls commented Apr 27, 2026

Coverage Status

Coverage is 28.015%chore/locales-and-translation-fixes into main. No base build found for main.

de_DE:
- Numerus "Found %n match(es)": singular form now reads "Ein Treffer
  gefunden" instead of repeating "%n Treffer gefunden". The plural
  stays "%n Treffer gefunden".
- ExportPublicKeyDialog body strings still missing: "Public key",
  "Copy to Clipboard", "Save to File…", "Public key for %1",
  "Copied!". The dialog title and the no-signing-key help block were
  already done last commit; this finishes the inside of the dialog.

fr_FR:
- ConfigDialog profile-create trio: "Create profile directory?",
  "Would you like to create a password store at %1?",
  "Could not create profile directory: %1".
- ExportPublicKeyDialog: title (both call sites collapsed via the
  identical-source mechanism), body strings (Public key, Copy to
  Clipboard, Save to File…, Public key for %1, Copied!), and the
  no-signing-key <h3>/<pre>/<p> help HTML block.
- Share submenu: Share, Re-encrypt all passwords, Export my public
  key…, Add recipient…, What is this?
- "Sharing Passwords with GPG" title (the body was already done; the
  title was the orphan).
- "Could not export public key for %1." and "No output from gpg."
  error paths.

Placeholders preserved exactly (%1, %2, &lt;h3&gt;/&lt;pre&gt;/&lt;p&gt;,
&amp;gt; / &amp;lt; entities for the gpg command).
@kody-ai

This comment has been minimized.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

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

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

1688-1697: ⚠️ Potential issue | 🟡 Minor

Fix malformed HTML/text in the French QtPass help block.

This translation contains stray literal artifacts (e.g., .&lt;/p&gt;. and &lt;/p&gt;&gt;Documentation), which can render broken UI text/markup.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@localization/localization_fr_FR.ts` around lines 1688 - 1697, The French
translation for the QtPass help HTML block is malformed (extra ".&lt;/p&gt;.",
duplicated ">Documentation" and wrong "CodeSource"); edit the translation
corresponding to the source help string (the translation element that maps the
multi-paragraph HTML help block) to remove stray artifacts, ensure each
paragraph has a single closing &lt;/p&gt; with no extra punctuation, restore the
three separate lines/links (Documentation, Issues, Source Code) matching the
source order, and fix wording to proper French (e.g., "Veuillez signaler" or
"Signalez" for issues and "Code source" for source code) so the HTML is valid
and renders correctly.
♻️ Duplicate comments (2)
localization/localization_fr_FR.ts (2)

362-375: ⚠️ Potential issue | 🟠 Major

Use Weblate for translation-content changes instead of editing this .ts file directly.

This patch updates French translation bodies in-place. Per repo policy, translation text changes should be done in Weblate; keep .ts diffs to generated reference updates (qmake6) only.

As per coding guidelines: "Do not manually edit .ts translation files; translations are managed via Weblate. Run qmake6 to update translation source references after changing source strings".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@localization/localization_fr_FR.ts` around lines 362 - 375, This change
modifies translated strings in localization_fr_FR.ts directly (the messages with
source texts "Create profile directory?", "Would you like to create a password
store at %1?", and "Could not create profile directory: %1"); per project
policy, revert these direct edits and instead update the French translations via
Weblate, then regenerate .ts files with qmake6 so only generated reference
updates appear in the repo; do not manually edit localization_fr_FR.ts—use
Weblate for content changes and run qmake6 to produce the updated .ts.

928-934: ⚠️ Potential issue | 🟠 Major

Import Key is still unfinished in French.

<translation type="unfinished"></translation> for source="Import Key" will fall back to English at runtime in this dialog path.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@localization/localization_fr_FR.ts` around lines 928 - 934, Replace the
unfinished French translation for the source string "Import Key" in
localization_fr_FR.ts by adding the French text "Importer la clé" inside the
corresponding <translation> element (the <message> entries for source="Import
Key" in the import key dialog), so the dialog no longer falls back to English at
runtime.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@localization/localization_de_DE.ts`:
- Around line 7-8: The .ts file contains hand-edited <location> entries for
configdialog.ui and ui_configdialog.h that must be regenerated via the Qt
translation workflow; do not edit localization_de_DE.ts by hand. Run the Qt
steps (regenerate the ui headers via qmake6 and then run lupdate to refresh
translation source references) so that localization_de_DE.ts is updated with
correct <location> entries for configdialog.ui and ui_configdialog.h; commit the
regenerated .ts instead of manual edits.

---

Outside diff comments:
In `@localization/localization_fr_FR.ts`:
- Around line 1688-1697: The French translation for the QtPass help HTML block
is malformed (extra ".&lt;/p&gt;.", duplicated ">Documentation" and wrong
"CodeSource"); edit the translation corresponding to the source help string (the
translation element that maps the multi-paragraph HTML help block) to remove
stray artifacts, ensure each paragraph has a single closing &lt;/p&gt; with no
extra punctuation, restore the three separate lines/links (Documentation,
Issues, Source Code) matching the source order, and fix wording to proper French
(e.g., "Veuillez signaler" or "Signalez" for issues and "Code source" for source
code) so the HTML is valid and renders correctly.

---

Duplicate comments:
In `@localization/localization_fr_FR.ts`:
- Around line 362-375: This change modifies translated strings in
localization_fr_FR.ts directly (the messages with source texts "Create profile
directory?", "Would you like to create a password store at %1?", and "Could not
create profile directory: %1"); per project policy, revert these direct edits
and instead update the French translations via Weblate, then regenerate .ts
files with qmake6 so only generated reference updates appear in the repo; do not
manually edit localization_fr_FR.ts—use Weblate for content changes and run
qmake6 to produce the updated .ts.
- Around line 928-934: Replace the unfinished French translation for the source
string "Import Key" in localization_fr_FR.ts by adding the French text "Importer
la clé" inside the corresponding <translation> element (the <message> entries
for source="Import Key" in the import key dialog), so the dialog no longer falls
back to English at runtime.
🪄 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: d35a03c8-bc37-4d4d-9427-15109ae60091

📥 Commits

Reviewing files that changed from the base of the PR and between add9c53 and cfa29c5.

📒 Files selected for processing (2)
  • localization/localization_de_DE.ts
  • localization/localization_fr_FR.ts

Comment thread localization/localization_de_DE.ts
…title

Two follow-up items from the latest review:

- The QtPass welcome <p>/<a> block in fr_FR was malformed:
  * trailing dot after the unix.</p> closing tag
  * stray ">Documentation" left over after the closing </p> on the
    Documentation line
  * "CodeSource" (untranslated mash-up) instead of "Code source"
  Cleaned up: each paragraph has a single closing </p>, the three
  links (Documentation, Issues, Code source) are in source order
  with proper French wording ("Veuillez signaler", "Code source").
  This was a pre-existing translation, not something this PR
  introduced — fixing while we're here.

- importkeydialog.cpp:171 uses tr("Import Key") as the title for the
  success / error QMessageBox. I translated the dialog button and the
  UsersDialog tooltip earlier but missed this standalone string —
  filling in "Importer la clé" so the message boxes are no longer in
  English.
@kody-ai
Copy link
Copy Markdown

kody-ai Bot commented Apr 27, 2026

Kody Review Complete

Great news! 🎉
No issues were found that match your current review configurations.

Keep up the excellent work! 🚀

Kody Guide: Usage and Configuration
Interacting with Kody
  • Request a Review: Ask Kody to review your PR manually by adding a comment with the @kody start-review command at the root of your PR.

  • Validate Business Logic: Ask Kody to validate your code against business rules by adding a comment with the @kody -v business-logic command.

  • Provide Feedback: Help Kody learn and improve by reacting to its comments with a 👍 for helpful suggestions or a 👎 if improvements are needed.

Current Kody Configuration
Review Options

The following review options are enabled or disabled:

Options Enabled
Bug
Performance
Security
Business Logic

Access your configuration settings here.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 27, 2026

⚠️ JUnit XML file not found

The CLI was unable to find any JUnit XML files to upload.
For more help, visit our troubleshooting guide.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
localization/localization_fr_FR.ts (1)

362-375: ⚠️ Potential issue | 🟠 Major

Do not commit direct French translation edits in this .ts catalog.

This PR still modifies translated content directly (for example Line 364, Line 885, Line 1303, Line 1565). Per repo policy, translations must be updated via Weblate; keep .ts changes limited to generated reference updates (e.g., after qmake6/translation tooling sync).

As per coding guidelines: "Do not manually edit .ts translation files; translations are managed via Weblate. Run qmake6 to update translation source references after changing source strings".

Also applies to: 681-735, 883-961, 1302-1305, 1450-1453, 1563-1697, 1982-1986

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@localization/localization_fr_FR.ts` around lines 362 - 375, The .ts file was
edited directly—revert manual translations in localization_fr_FR.ts (e.g.,
entries with source strings "Create profile directory?", "Would you like to
create a password store at %1?", "Could not create profile directory: %1" and
the other listed source strings) and restore the file to only generated
reference changes; update translations via Weblate for any content changes and
regenerate/update the .ts references by running the translation tooling (qmake6)
so only tool-generated diffs remain.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@localization/localization_fr_FR.ts`:
- Around line 362-375: The .ts file was edited directly—revert manual
translations in localization_fr_FR.ts (e.g., entries with source strings "Create
profile directory?", "Would you like to create a password store at %1?", "Could
not create profile directory: %1" and the other listed source strings) and
restore the file to only generated reference changes; update translations via
Weblate for any content changes and regenerate/update the .ts references by
running the translation tooling (qmake6) so only tool-generated diffs remain.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Pro

Run ID: a4ab9aed-2220-4e7e-bd06-fa264077b7e5

📥 Commits

Reviewing files that changed from the base of the PR and between cfa29c5 and 74d31e4.

📒 Files selected for processing (1)
  • localization/localization_fr_FR.ts

@annejan annejan merged commit 990d20d into main Apr 27, 2026
20 of 23 checks passed
@annejan annejan deleted the chore/locales-and-translation-fixes branch April 27, 2026 20:34
weblate pushed a commit to weblate/QtPass that referenced this pull request Apr 28, 2026
The id_ID locale was bootstrapped earlier (PR IJHack#1201) but stayed at
2/304 — basically empty. Going through all 302 unfinished entries
and filling them with natural-Indonesian software UI register.

Conventions used:

- Register: neutral / imperative — Indonesian software UI rarely
  uses the explicit formal "Anda" pronoun unless the source clearly
  addresses the user (which the QtPass strings often do, so "Anda"
  appears in those cases).
- File / folder: "berkas" / "folder" — both are accepted; "berkas"
  for files and "folder" stays as the loanword for directories.
- Password: "kata sandi" (the most common term in Indonesian
  software UI).
- Public/private key: "kunci publik" / "kunci privat".
- Encryption: "enkripsi" / "dekripsi" / "mengenkripsi ulang".
- Save / Open / Cancel / Delete / Add: "Simpan" / "Buka" / "Batal"
  / "Hapus" / "Tambah".
- Import / Export: "Impor" / "Ekspor".
- Share / Recipient: "Bagikan" / "Penerima".
- Clipboard: kept the loanword "clipboard" — both "clipboard" and
  "papan klip" are used in Indonesian; the loanword is more common
  in modern software UI.

Technical terms kept literal: GPG, ASCII-armored, OTP, regex,
WebDAV, PWGen, fusedav, QRencode, gpg-id, push, pull, OK, Ctrl+G,
Ctrl+N, LTR, the Aa toggle, etc.

Numerus forms: Indonesian doesn't grammatically distinguish
singular/plural so the `<numerusform>` block has a single entry —
"Found %n match(es)" → "Ditemukan %n kecocokan", "in %n entr(ies)."
→ "di %n entri.".

Multi-line / long-HTML translations covered:
- The ConfigDialog + KeygenDialog + UsersDialog walkthrough strings
- Three GnuPG-not-found install prompts (gpg / Ubuntu-Microsoft-Store
  variants)
- Passphrase explanation HTML
- The QtPass welcome HTML (passwordstore.org / Issues / Documentation
  / Source code)
- The Sharing-help and Export-Public-Key-help blocks (matching the
  recent v1.8.0 feature work)
- Re-encrypt confirmation prompt
- WebDAV connection error messages

A couple of strings (button accelerators "&Use pass" / "Nati&ve Git
/GPG", brand names "QtPass / GPG / PWGen / Pass / pass") kept as-is
because they're identical in any locale.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants