Skip to content

Vertalingen

SES ondersteunt meerdere UI-talen. De vertaalcatalogus is database-backed en wordt bewerkt in de beheerder onder Systeem → Vertalingen. Het volgt een Oracle APEX-achtige workflow: seed → bewerken → publiceren. Strings worden per taal opgeslagen, doorlopen een controle-/goedkeuringsstap en gaan pas live wanneer zij worden gepubliceerd — er wordt niets onvertaald of ongecontroleerd verzonden.

Workflow-overzicht

  1. Seed — nieuwe applicatiestrings worden voor elke ingeschakelde taal in de catalogus geïmporteerd.
  2. Bewerken — vertalers bewerken elke taal handmatig, of gebruiken Auto-vertalen om concepten te genereren.
  3. Goedkeuren — goedgekeurde strings (niet fuzzy, niet needs-review) zijn de strings die kunnen meegaan.
  4. Publiceren — publiceren is direct live op runtime; geen rebuild, commit of implementatie nodig.

Talen

Ingeschakelde talen worden gedefinieerd in config/settings/base.py (LANGUAGES) en in de UNFOLD-taalwisselaar in config/settings/ui.py. De ingebouwde voorbeeldtalen zijn en, nl en de.

1. Seed (Strings Importeren)

Vanuit de cataloguslijst (<instelling>/admin/translations/messagetranslation/) klik je op de Seed vertalingen-knop in de header. Het importeert elke msgid uit locale/<code>/LC_MESSAGES/django.po in de catalogus zodat elk item kan worden bewerkt, voor alle ingeschakelde talen.

Seed importeert alleen — het regenereert nooit .po. Voor strings die al in de vastgelegde .po staan is geen makemessages nodig. Alleen voor gloednieuwe strings die aan code/templates zijn toegevoegd moet makemessages eerst draaien (een build-/implementatiestap) om ze in de vastgelegde .po te zetten; seed importeert vervolgens de nieuwe msgids.

Of gebruik het equivalente managementcommand:

python manage.py sync_translations -l <code>   # bijv. sync_translations -l de

Wanneer je een gloednieuwe taal toevoegt, gebruik je add_language, dat de .po extraheert en de catalogus in één stap zaait:

python manage.py add_language <code>   # bijv. add_language de

Seed en publiceren draaien asynchroon; de knoppen keren meteen terug met feedback zodra de taak is gestart.

2. Bewerken en Goedkeuren

In de catalogus: filter op een taal, bewerk de vertaling en markeer de rij als goedgekeurd (niet fuzzy, niet needs-review). Met Auto-vertalen kun je een conceptgeneratie voor geselecteerde rijen starten; die rijen blijven flagged tot je ze goedkeurt.

3. Publiceren

Maak je wijzigingen live met de Publish vertalingen-knop. Publiceren is meteen op runtime — geen rebuild, commit of deploy nodig.

Beheercommand voor een release

Voor een volledige release-stap (compileer .mo, seed, controleer verplichte msgids, publiceer):

python manage.py release_translations

Dit compileert ook de .po.mo-catalogi en faalt wanneer een verplichte (third-party) msgid nog geen goedgekeurde vertaling heeft, zodat een gebrek niet stil als Engelse tekst (of een oude automatische vertaling) meegaat.

Zijbalk- & menulabels

Zijbalk- en menulabels van de beheerder (bijv. "SES Examens", "Taakstatus") staan in config/settings/ui.py als vertaalbare _()-strings. Ze worden pas live vanuit de database na de volledige pipeline, en ze ontbreken in de catalogus wanneer ze ook ontbreken in het vastgelegde .po.

  1. Extraheren — makemessages. Draai python manage.py makemessages -l nl -l de (een build-/implementatiestap) zodat gloednieuwe labels worden toegevoegd aan locale/<code>/LC_MESSAGES/django.po.
  2. Vertaling instellen + #, fuzzy verwijderen. Wanneer makemessages een nieuw label merge, kan het een oud label matchen en #, fuzzy markeren (bijv. een #| msgid "Backend Status"-regel met een oude vertaling). Fuzzy-regels worden uitgesloten van publiceren, dus bewerk het .po-item: zet de juiste msgstr en verwijder de #, fuzzy en #| msgid "..."-regels.
  3. Seed — importeer het bijgewerkte .po in de catalogus (beheerder-upload / seed_catalog, of python manage.py sync_translations).
  4. Publiceren — alleen niet-fuzzy-, niet-needs-review-regels met een niet-lege vertaling worden gepubliceerd (release_translations); herstart daarna de server zodat workers de nieuwste snapshot laden.

Probleemoplossing: blijft een zijbalklabel Engels, controleer dan (a) dat het aanwezig is in locale/<code>/LC_MESSAGES/django.po, (b) dat het daar niet #, fuzzy is, (c) dat het in de catalogus staat en gepubliceerd is — herstart daarna de server (workers cachen de opgeloste snapshot).