Component Approved Translated Unfinished Unfinished words Unfinished characters Untranslated Checks Suggestions Comments
Whisperfish application AGPL-3.0-or-later 14% 68% 3,674 18,891 115,603 3,387 203 65 26
Glossary Whisperfish AGPL-3.0-or-later 21% 64% 41 41 296 41 0 0 0

Summary

Project website gitlab.com/rubdos/whisperfish
Instructions for translators

Whisperfish exists in a few languages already:

  • 🇩🇪 German (de), by Stephan Lohse

  • 🇪🇸 Spanish (es), by carlosgonz

  • 🇫🇮 Finnish (fi), by Markus entil Törnqvist

  • 🇫🇷 French (fr), by Thibaut Vandervelden

  • 🇭🇺 Hungarian (hu), by 1Zgp

  • 🇳🇱 Dutch (nl) and 🇧🇪 Belgian 🏴‍☠️ Arrrrgh Dutch (nl_BE) by Ruben rubdos De Smet and Nathan nthn.

  • 🇳🇴 Norse (no_NO), by Allan kingu Nordhøy

  • 🇵🇱 Polish (pl), by paytchoo

  • 🇵🇹 Portuguese (pt_PT), by Júlio iled

  • 🇹🇷 Turkish (tr), by Oğuz ersen Ersen

  • 🇨🇳 Simplified Chinese (zh_CN), by dashinfantry

    If you translated something, please update this list! These credits are really important to me 😄! I'm very grateful for this good work!

    Additionally, there's the small contributions of single words by many people on Weblate. The translations there are moving really fast, faster than we can update the above list. Thank you all who contributed!

    Translations are never complete, especially since Whisperfish is moving very fast. Our progress can be seen here:

    Whisperfish translation progress

How to update translations

There are two ways to contribute translations.

Via Weblate

We created a Weblate page. On that page, you can easily alter the translations via a web interface. These changes are then pushed by Weblate to our repository here.

Manually, with Git

If you prefer, you can manually edit the .ts files, or use the software of your choice to edit the Qt linguist files. Changing translations strings is pretty simple:

  1. Get in the repository

  2. Find your language in translations/, open the respective .ts file.

  3. Find the translatable string and change the contents between <translation> and </translation>. If the starting tag is <translation type="unfinished">, change it to <translation>.

  4. Save the file, commit (with a message saying you updated the translation), and make a merge request.

    Additionally, you may want to look specifically for strings with type="unfinished" (by using your text editor to search for "unfinished"), because those strings need to be looked after. Strings tagged with type="unfinished" have recently been touched in the application itself, may have changed their meaning slightly, or are entirely new.

    Qt Linguist is also an application with a GUI to facilitate translations. Essentially, using it will replace step 3. above. You can get Qt Linguist from the Qt bundle or you can just download the standalone app. Open the .ts file from within the app, then it will automatically detect and list the strings that need to be translated.

Translate Whisperfish a new language

If you would like to contribute a translation for a new language, you'll need a new translation file.

You can either use Weblate (see above), or manually add the file:

  1. First, you need to know your language identifier. Examples are nl_BE, nl, de, or zh_CN.

  2. Generate the translation file, execute the following command in the Whisperfish source's root directory:

lupdate qml/ -noobsolete -ts translations/harbour-whisperfish-$LANG.ts

This should generate a file translations/harbour-whisperfish-$LANG.ts. If you do not have the lupdate utility, [](Contact-Us), he'll create your file.

Important: please create a merge request as soon as you create your new file, before starting to translate. We've had it happen that two people write a complete translation from scratch one day apart.

About updating the QML files or English source material.

If you want to update the English translation, or when you make an update to the QML files, you'll need to update all the translation files, because they refer to specific line numbers in the source files. You can run ./update-translations.sh in the source directory for this.

You also need to run this script when the source material (English source translation) changes; this will update the source strings in the language files and will invalidate the translated strings.

You can only alter the English source language in the QML files. This is an artifact of how Qt Linguist seems works.

Project maintainers2 User avatar rubdosUser avatar direc85
Project reviewers10 User avatar 02947b5yhUser avatar kinguUser avatar atlochowskiUser avatar dashinfantryUser avatar EdanasUser avatar ersenUser avatar PawelSpoonUser avatar rubdosUser avatar iledUser avatar direc85
01/22/2026

String statistics

Strings percent Hosted strings Words percent Hosted words Characters percent Hosted characters
Total 11,629 55,232 344,556
Source 610 2,858 17,992
Approved 8% 1,037 7% 4,306 7% 27,326
Waiting for review 53% 6,267 52% 29,136 53% 183,339
Translated 68% 7,914 65% 36,300 66% 228,657
Needs editing 2% 287 3% 2,193 3% 12,755
Read-only 5% 610 5% 2,858 5% 17,992
Failing checks 1% 203 1% 1,056 2% 7,159
Strings with suggestions 1% 65 1% 480 1% 2,999
Untranslated strings 29% 3,428 30% 16,739 29% 103,144

Quick numbers

55,232
Hosted words
11,629
Hosted strings
68%
Translated
2
Components
26
Languages
52
Translations
5
Screenshots
and previous 30 days

Trends of last 30 days

Hosted words
+100%
Hosted strings
+100%
Translated
+67%
Contributors
+100%
User avatar webhook:gitlab

Repository rebased

Repository rebased

Original revision: f2cbda9abe1d3fa3ed86c27550ebb4e16005cc1d
New revision: b7e3d2bd40fbcb76913bbdeedab497d62df5a349 01/18/2026
User avatar webhook:gitlab

Repository notification received

GitLab: https://gitlab.com/whisperfish/whisperfish, main 01/18/2026
User avatar webhook:gitlab

Repository rebased

Repository rebased

Original revision: e91d56c9c96714c5818f9cb21acc46a93902b0d3
New revision: f2cbda9abe1d3fa3ed86c27550ebb4e16005cc1d 01/15/2026
User avatar webhook:gitlab

Repository notification received

GitLab: https://gitlab.com/whisperfish/whisperfish, main 01/15/2026
User avatar webhook:gitlab

Repository rebased

Repository rebased

Original revision: 3389c5d46451e7f36e8f2a1a7cf5064dfeb4be8c
New revision: e91d56c9c96714c5818f9cb21acc46a93902b0d3 01/15/2026
User avatar webhook:gitlab

Repository notification received

GitLab: https://gitlab.com/whisperfish/whisperfish, main 01/15/2026
User avatar webhook:gitlab

Repository rebased

Repository rebased

Original revision: 4f938392b9e12b3418ce65456c4f7972e83187cd
New revision: 3389c5d46451e7f36e8f2a1a7cf5064dfeb4be8c 01/14/2026
User avatar webhook:gitlab

Repository notification received

GitLab: https://gitlab.com/whisperfish/whisperfish, main 01/14/2026
User avatar webhook:gitlab

Repository rebased

Repository rebased

Original revision: 1dc6f4a9eafed0d591c5d458e81baf633b27366b
New revision: 4f938392b9e12b3418ce65456c4f7972e83187cd 01/04/2026
User avatar webhook:gitlab

Repository notification received

GitLab: https://gitlab.com/whisperfish/whisperfish, main 01/04/2026
Browse all project changes