|
| 1 | +--- |
| 2 | +title: Handleiding voor App-vertaling en lokalisatie |
| 3 | +sidebar_label: App-vertaling |
| 4 | +description: Een stapsgewijze handleiding voor bijdragers om de interface van de Time Management App te vertalen in verschillende talen. |
| 5 | +--- |
| 6 | + |
| 7 | +# Handleiding voor App-vertaling en lokalisatie |
| 8 | + |
| 9 | +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. |
| 10 | + |
| 11 | +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. |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## 1. Mappenstructuur en vertaalbestanden |
| 16 | + |
| 17 | +Alle vertaalgerelateerde bestanden bevinden zich in de map `po/` in de root van de repository: |
| 18 | + |
| 19 | +```text |
| 20 | +timemanagement/ |
| 21 | +├── po/ |
| 22 | +│ ├── CMakeLists.txt # Integratie van het bouwsysteem voor vertalingen |
| 23 | +│ ├── ubtms.pot # Vertaalsjabloon (bevat alle onvertaalde strings) |
| 24 | +│ └── nl.po # Nederlands vertaalbestand (voorbeeld van de huidige vertaling) |
| 25 | +``` |
| 26 | + |
| 27 | +* **`ubtms.pot`**: Het centrale sjabloonbestand dat rechtstreeks uit de codebase is geëxtraheerd. Het bevat alle originele Engelstalige strings. |
| 28 | +* **`<locale_code>.po`**: Taalspecifieke vertaalbestanden (bijv. `nl.po` voor het Nederlands, `es.po` voor het Spaans). Dit is het bestand dat u maakt of aanpast. |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## 2. Vereisten |
| 33 | + |
| 34 | +Om bij te dragen aan de vertalingen, moeten de volgende hulpprogramma's geïnstalleerd zijn: |
| 35 | + |
| 36 | +1. **Gettext Utilities**: Command-line hulpprogramma's om vertalingen te initialiseren, samen te voegen en te compileren. |
| 37 | + * **Ubuntu/Debian**: |
| 38 | + ```bash |
| 39 | + sudo apt update && sudo apt install gettext |
| 40 | + ``` |
| 41 | +2. **Teksteditor**: Een standaard teksteditor naar keuze (zoals VS Code, Vim, Gedit, enz.) om de vertaalbestanden te bewerken. |
| 42 | +3. **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. |
| 43 | + |
| 44 | +--- |
| 45 | + |
| 46 | +## 3. Vertaalworkflow |
| 47 | + |
| 48 | +### Stap 1: Het vertaalsjabloon (`ubtms.pot`) bijwerken |
| 49 | +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: |
| 50 | + |
| 51 | +```bash |
| 52 | +clickable build |
| 53 | +``` |
| 54 | +*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.* |
| 55 | + |
| 56 | +### Stap 2: Uw vertaalbestand initialiseren of bijwerken |
| 57 | + |
| 58 | +#### Optie A: Een nieuwe taal starten |
| 59 | +Bepaal de tweeletterige taalcode (en optionele regio, bijv. `fr` voor Frans, `es` voor Spaans, `pt_BR` voor Braziliaans Portugees). |
| 60 | +Navigeer naar de map `po/` en initialiseer het vertaalbestand met `msginit`: |
| 61 | + |
| 62 | +```bash |
| 63 | +cd po |
| 64 | +msginit --locale=<locale_code> --input=ubtms.pot --output=<locale_code>.po |
| 65 | +``` |
| 66 | +*Voorbeeld voor Spaans:* |
| 67 | +```bash |
| 68 | +msginit --locale=es --input=ubtms.pot --output=es.po |
| 69 | +``` |
| 70 | + |
| 71 | +#### Optie B: Een bestaande taal bijwerken |
| 72 | +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`: |
| 73 | + |
| 74 | +```bash |
| 75 | +cd po |
| 76 | +msgmerge --update <locale_code>.po ubtms.pot |
| 77 | +``` |
| 78 | +*Voorbeeld voor Nederlands:* |
| 79 | +```bash |
| 80 | +msgmerge --update nl.po ubtms.pot |
| 81 | +``` |
| 82 | +Dit voegt eventuele nieuwe strings toe, markeert verwijderde strings als verouderd en markeert gewijzigde strings als `#, fuzzy` voor uw beoordeling. |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +### Stap 3: De strings vertalen |
| 87 | +Open uw `<locale_code>.po`-bestand in uw teksteditor. |
| 88 | + |
| 89 | +Vertaal voor elk item de bronstring (`msgid`) naar de vertaalde string (`msgstr`): |
| 90 | + |
| 91 | +```po |
| 92 | +msgid "Time Manager - Time Management Dashboard" |
| 93 | +msgstr "Tijdbeheer - Dashboard Tijdbeheer" |
| 94 | +``` |
| 95 | + |
| 96 | +#### Belangrijke regels & best practices: |
| 97 | +1. **Behoud placeholders**: Laat parameters zoals `%1`, `%2` of `%3` intact. Ze vertegenwoordigen dynamische waarden die tijdens runtime worden ingevoegd. |
| 98 | + * *Voorbeeld*: `i18n.dtr("ubtms", "You have %1 new notification(s)")` -> `Je hebt %1 nieuwe melding(en)` |
| 99 | +2. **Behoud escape sequences**: Tekens zoals `\n` (nieuwe regels) of `\t` (tabs) moeten in de vertaalde string behouden blijven. |
| 100 | +3. **Verwijder fuzzy-vlaggen**: Als u een string bijwerkt die is gemarkeerd met `#, fuzzy`, verwijder dan de commentaarregel met `#, fuzzy` nadat u hebt gecontroleerd of de vertaling correct is. Anders compileert het niet. |
| 101 | + |
| 102 | +--- |
| 103 | + |
| 104 | +### Stap 4: Uw vertaling lokaal testen |
| 105 | + |
| 106 | +1. Bouw de applicatie met Clickable om het `.po`-vertaalbestand te compileren naar een binair `.mo`-bestand: |
| 107 | + ```bash |
| 108 | + clickable build |
| 109 | + ``` |
| 110 | +2. Voer de desktopversie van de applicatie uit met de gewenste taal geconfigureerd in de omgeving: |
| 111 | + ```bash |
| 112 | + LANG=<locale_code>.UTF-8 clickable desktop |
| 113 | + ``` |
| 114 | + *Voorbeeld voor Nederlands:* |
| 115 | + ```bash |
| 116 | + LANG=nl_NL.UTF-8 clickable desktop |
| 117 | + ``` |
| 118 | +3. Controleer of alle vertaalde elementen correct in de interface verschijnen en of er geen lay-out- of tekstafkappingsproblemen zijn. |
| 119 | + |
| 120 | +--- |
| 121 | + |
| 122 | +## 4. Richtlijnen voor ontwikkelaars (Strings markeren) |
| 123 | + |
| 124 | +Als u code (QML) schrijft en wilt zorgen dat de tekst vertaald kan worden, gebruik dan de volgende patronen: |
| 125 | + |
| 126 | +### In QML / JavaScript |
| 127 | +* **Standaardvertalingen**: |
| 128 | + ```qml |
| 129 | + title: i18n.dtr("ubtms", "Settings") |
| 130 | + ``` |
| 131 | +* **Vertalen met argumenten**: |
| 132 | + ```qml |
| 133 | + text: i18n.dtr("ubtms", "Account [%1]").arg(accountName) |
| 134 | + ``` |
| 135 | +* **Meervoudsvormen**: |
| 136 | + Gebruik `i18n.tr` met meervoudsvormen bij het weergeven van hoeveelheden: |
| 137 | + ```qml |
| 138 | + // Syntaxis: i18n.tr(singular, plural, count) |
| 139 | + text: i18n.tr("You have %1 task", "You have %1 tasks", count).arg(count) |
| 140 | + ``` |
| 141 | + |
| 142 | +### In Desktop Entry bestanden (`ubtms.desktop.in`) |
| 143 | +Voor desktopconfiguraties op systeemniveau geeft u de vertaalbare sleutels een prefix met een liggend streepje (underscore): |
| 144 | +```desktop |
| 145 | +_Name=Time Management |
| 146 | +``` |
| 147 | +*Het bouwsysteem gebruikt `intltool` om deze desktop-sleutels te extraheren naar `ubtms.pot`.* |
| 148 | + |
| 149 | +--- |
| 150 | + |
| 151 | +## 5. Uw bijdrage indienen (de PR maken) |
| 152 | + |
| 153 | +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: |
| 154 | + |
| 155 | +1. **Tijdelijke back-upbestanden opschonen**: Sommige editors maken tijdelijke back-upbestanden aan (bijv. `nl.po~` of `nl.po.bak`). Verwijder deze voordat u gaat committen. |
| 156 | +2. **Een Git-branch maken**: |
| 157 | + ```bash |
| 158 | + git checkout -b translation/add-<locale_code> |
| 159 | + ``` |
| 160 | +3. **Stagen en committen**: |
| 161 | + ```bash |
| 162 | + git add po/<locale_code>.po |
| 163 | + git commit -m "translation: Add <Language_Name> translation" |
| 164 | + ``` |
| 165 | +4. **De branch pushen**: |
| 166 | + ```bash |
| 167 | + git push origin translation/add-<locale_code> |
| 168 | + ``` |
| 169 | +5. **De Pull Request openen**: |
| 170 | + * Navigeer naar de originele repository op GitHub. |
| 171 | + * Klik op **Compare & pull request**. |
| 172 | + * 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. |
0 commit comments