Handleiding voor App-vertaling en lokalisatie
Deze handleiding biedt stapsgewijze instructies voor het vertalen van de interface van de Time Management App zelf (de client-applicatie gebouwd met QML en Python) naar uw taal.
Het vertaalsysteem van de app is gebaseerd op gettext. Vertalers bewerken .po (Portable Object)-bestanden met vertaalparen, die automatisch worden gecompileerd naar binaire .mo/.gmo-bestanden tijdens het bouwproces.
1. Mappenstructuur en vertaalbestandenβ
Alle vertaalgerelateerde bestanden bevinden zich in de map po/ in de root van de repository:
timemanagement/
βββ po/
β βββ CMakeLists.txt # Integratie van het bouwsysteem voor vertalingen
β βββ ubtms.pot # Vertaalsjabloon (bevat alle onvertaalde strings)
β βββ nl.po # Nederlands vertaalbestand (voorbeeld van de huidige vertaling)
ubtms.pot: Het centrale sjabloonbestand dat rechtstreeks uit de codebase is geΓ«xtraheerd. Het bevat alle originele Engelstalige strings.<locale_code>.po: Taalspecifieke vertaalbestanden (bijv.nl.povoor het Nederlands,es.povoor het Spaans). Dit is het bestand dat u maakt of aanpast.
2. Vereistenβ
Om bij te dragen aan de vertalingen, moeten de volgende hulpprogramma's geΓ―nstalleerd zijn:
- Gettext Utilities: Command-line hulpprogramma's om vertalingen te initialiseren, samen te voegen en te compileren.
- Ubuntu/Debian:
sudo apt update && sudo apt install gettext
- Ubuntu/Debian:
- Teksteditor: Een standaard teksteditor naar keuze (zoals VS Code, Vim, Gedit, enz.) om de vertaalbestanden te bewerken.
- Clickable: De bouwtool voor de applicatie, gebruikt om uw vertaling lokaal te compileren en te testen. Zie de Getting Started-handleiding voor details over de configuratie.
3. Vertaalworkflowβ
Stap 1: Het vertaalsjabloon (ubtms.pot) bijwerkenβ
Voordat u met de vertaling begint, compileert u het project eenmalig om er zeker van te zijn dat het vertaalsjabloon po/ubtms.pot is bijgewerkt met de nieuwste strings uit de broncode:
clickable build
Opmerking: Het CMake-bouwsysteem voert automatisch het doel voor de extractie van de vertaling uit en analyseert alle QML- en desktopbestanden om po/ubtms.pot bij te werken.
Stap 2: Uw vertaalbestand initialiseren of bijwerkenβ
Optie A: Een nieuwe taal startenβ
Bepaal de tweeletterige taalcode (en optionele regio, bijv. fr voor Frans, es voor Spaans, pt_BR voor Braziliaans Portugees).
Navigeer naar de map po/ en initialiseer het vertaalbestand met msginit:
cd po
msginit --locale=<locale_code> --input=ubtms.pot --output=<locale_code>.po
Voorbeeld voor Spaans:
msginit --locale=es --input=ubtms.pot --output=es.po
Optie B: Een bestaande taal bijwerkenβ
Als u nieuwe strings vertaalt die zijn toegevoegd aan een bestaande vertaling (bijv. het Nederlandse nl.po), voeg dan het bijgewerkte sjabloon samen met het vertaalbestand met msgmerge:
cd po
msgmerge --update <locale_code>.po ubtms.pot
Voorbeeld voor Nederlands:
msgmerge --update nl.po ubtms.pot
Dit voegt eventuele nieuwe strings toe, markeert verwijderde strings als verouderd en markeert gewijzigde strings als #, fuzzy voor uw beoordeling.
Stap 3: De strings vertalenβ
Open uw <locale_code>.po-bestand in uw teksteditor.
Vertaal voor elk item de bronstring (msgid) naar de vertaalde string (msgstr):
msgid "Time Manager - Time Management Dashboard"
msgstr "Tijdbeheer - Dashboard Tijdbeheer"
Belangrijke regels & best practices:β
- Behoud placeholders: Laat parameters zoals
%1,%2of%3intact. Ze vertegenwoordigen dynamische waarden die tijdens runtime worden ingevoegd.- Voorbeeld:
i18n.dtr("ubtms", "You have %1 new notification(s)")->Je hebt %1 nieuwe melding(en)
- Voorbeeld:
- Behoud escape sequences: Tekens zoals
\n(nieuwe regels) of\t(tabs) moeten in de vertaalde string behouden blijven. - Verwijder fuzzy-vlaggen: Als u een string bijwerkt die is gemarkeerd met
#, fuzzy, verwijder dan de commentaarregel met#, fuzzynadat u hebt gecontroleerd of de vertaling correct is. Anders compileert het niet.
Stap 4: Uw vertaling lokaal testenβ
- Bouw de applicatie met Clickable om het
.po-vertaalbestand te compileren naar een binair.mo-bestand:clickable build - Voer de desktopversie van de applicatie uit met de gewenste taal geconfigureerd in de omgeving:
Voorbeeld voor Nederlands:LANG=<locale_code>.UTF-8 clickable desktopLANG=nl_NL.UTF-8 clickable desktop
- Controleer of alle vertaalde elementen correct in de interface verschijnen en of er geen lay-out- of tekstafkappingsproblemen zijn.
4. Richtlijnen voor ontwikkelaars (Strings markeren)β
Als u code (QML) schrijft en wilt zorgen dat de tekst vertaald kan worden, gebruik dan de volgende patronen:
In QML / JavaScriptβ
- Standaardvertalingen:
title: i18n.dtr("ubtms", "Settings")
- Vertalen met argumenten:
text: i18n.dtr("ubtms", "Account [%1]").arg(accountName)
- Meervoudsvormen:
Gebruik
i18n.trmet meervoudsvormen bij het weergeven van hoeveelheden:// Syntaxis: i18n.tr(singular, plural, count)text: i18n.tr("You have %1 task", "You have %1 tasks", count).arg(count)
In Desktop Entry bestanden (ubtms.desktop.in)β
Voor desktopconfiguraties op systeemniveau geeft u de vertaalbare sleutels een prefix met een liggend streepje (underscore):
_Name=Time Management
Het bouwsysteem gebruikt intltool om deze desktop-sleutels te extraheren naar ubtms.pot.
5. Uw bijdrage indienen (de PR maken)β
Zodra u de vertalingen hebt getest en hebt gecontroleerd of het .po-bestand correct is, bent u klaar om een Pull Request (PR) in te dienen:
- Tijdelijke back-upbestanden opschonen: Sommige editors maken tijdelijke back-upbestanden aan (bijv.
nl.po~ofnl.po.bak). Verwijder deze voordat u gaat committen. - Een Git-branch maken:
git checkout -b translation/add-<locale_code>
- Stagen en committen:
git add po/<locale_code>.pogit commit -m "translation: Add <Language_Name> translation"
- De branch pushen:
git push origin translation/add-<locale_code>
- De Pull Request openen:
- Navigeer naar de originele repository op GitHub.
- Klik op Compare & pull request.
- Vul het PR-sjabloon in. Zorg ervoor dat u de toegevoegde of bijgewerkte taal beschrijft en bevestig dat u de app lokaal hebt gebouwd en getest.