
# Vertalingen

Blockstudio wordt geleverd met vertalingen in de map `languages`. WordPress gebruikt deze wanneer de sitetaal of de taal in een gebruikersprofiel overeenkomt met een van de beschikbare talen. Dit werkt hetzelfde wanneer Blockstudio wordt uitgevoerd als plugin, must-use-plugin of Composer-pakket.

## Beschikbare talen

Blockstudio bevat vertalingen voor de WordPress-landinstellingen die zijn vastgelegd in de meegeleverde `languages/locales.json`, waaronder regionale en formele/informele varianten. Engels (`en_US`) is de brontaal en heeft geen vertaalbestand nodig. De lijst combineert door WordPress ondersteunde landinstellingen van GlotPress met varianten die beschikbaar zijn via de kernvertaal-API van WordPress.

De bestaande Duitse (`de_DE`) en formele Duitse (`de_DE_formal`) vertalingen blijven behouden. De aanvullende vertalingen zijn gegenereerd met AI met GPT-6 Luna en gemarkeerd als automatisch gegenereerd in hun `.po`-headers. Ze voldoen aan geautomatiseerde controles op volledigheid en indeling, maar zijn niet allemaal nagekeken door moedertaalsprekers. Verbeteringen zijn welkom.

De vertalingen omvatten de veldbedieningselementen in de blokeditor, de beheerpagina, het canvas, de devtools-overlay en de berichten van de REST-eindpunten. Labels en helpteksten in je eigen `block.json`-bestanden horen bij je thema of plugin en gebruiken het bijbehorende tekstdomein.

Selecteer de taal onder **Instellingen > Algemeen > Sitetaal**, of kies een persoonlijke taal in je WordPress-profiel. Blockstudio gebruikt die landinstelling automatisch. Het voegt geen talen toe aan de taalkeuzelijst van WordPress: een landinstelling moet ook beschikbaar zijn in je WordPress-installatie. Je hebt geen AI-verzoek, vertaalabonnement of extra runtime-instelling op je site nodig.

## Een vertaling overschrijven

Vertaalbestanden in `wp-content/languages/plugins` krijgen voorrang op de meegeleverde bestanden, zowel voor de PHP-teksten (`blockstudio-de_DE.mo` of `blockstudio-de_DE.l10n.php`) als voor de scripts (één bestand per script-handle, bijvoorbeeld `blockstudio-de_DE-blockstudio-blocks.json`).

## Een vertaling bijdragen

Elke taal is een `.po`-bestand dat je met elke teksteditor of met een vertaalprogramma zoals Poedit kunt bewerken. Verbeteringen en nieuwe talen zijn welkom als pull requests.

1. Kopieer om een taal toe te voegen `languages/blockstudio.pot` naar `languages/blockstudio-<locale>.po`, bijvoorbeeld `blockstudio-fr_FR.po`, en stel de headers `Language` en `Plural-Forms` in. Bewerk het bestaande `.po`-bestand om een taal te verbeteren.
2. Vertaal de teksten. Behoud placeholders zoals `%1$s` in de vertaling.
3. Voer `npm run i18n` uit. Dit schrijft de bestanden `.mo`, `.l10n.php` en `.json` die WordPress laadt.
4. Commit het `.po`-bestand samen met de gegenereerde bestanden en open een pull request.

Als je `npm` niet kunt uitvoeren, volstaat een pull request met alleen het `.po`-bestand. De gegenereerde bestanden kunnen vóór het samenvoegen worden toegevoegd.

## Ontbrekende vertalingen genereren

Onderhouders kunnen ontbrekende vermeldingen genereren met een geauthenticeerde Codex CLI. Dit is een optionele ontwikkelopdracht, niet iets wat WordPress uitvoert:

```bash
npm run i18n:translate -- --dry-run
npm run i18n:translate
```

Het standaardmodel is `gpt-6-luna`. Gebruik `npm run i18n:translate -- --locale fr_FR` om aan één landinstelling te werken. De opdracht haalt de nieuwste bronteksten op, vult ontbrekende vertalingen aan en compileert vervolgens `.mo`-, `.l10n.php`- en `.json`-bestanden per script. Alleen openbare interfaceteksten, hun context en bestaande formulieren worden naar Codex gestuurd, geen site-inhoud of gebruikersgegevens.

Bestaande niet-lege vertalingen worden nooit vervangen. Afgeronde batches worden opgeslagen, zodat opnieuw uitvoeren na een onderbreking het ontbrekende werk hervat. Placeholders zoals `%1$s`, HTML-markup, technische identificaties en de vereiste meervoudsvormen worden vóór het opslaan gecontroleerd. Fuzzy-vermeldingen en gewijzigde bronmeervouden blijven staan zodat een vertaler ze kan controleren. Er wordt geen ander model gebruikt als het gevraagde model niet beschikbaar is.

`npm run i18n:locales` vernieuwt expliciet de lijst met landinstellingen en meervoudsregels vanuit WordPress/GlotPress. `npm run i18n:coverage` controleert of elke landinstelling in de ingeleverde lijst compleet is. Noch de dekkingscontroles, noch de normale CI roepen AI aan of halen landinstellingsgegevens op. Zie de README van de repository voor opties voor batchverwerking, gelijktijdigheid en herstel.

## Vertaalbare teksten in de code

- PHP: gebruik de functies WordPress met het tekstdomein `blockstudio`, bijvoorbeeld `__( 'Invalid block.', 'blockstudio' )`.
- JavaScript: importeer `__` uit `@/utils/__` en geef een letterlijke tekenreeks door, bijvoorbeeld `__( 'Add row' )`. Een tekenreeks die tijdens runtime wordt samengesteld, kan niet worden vertaald. Gebruik daarom één letterlijke tekenreeks per variant.
- Een nieuwe scriptbundel met vertaalbare tekenreeksen moet een vermelding hebben in `scripts/i18n.ts` en een aanroep van `wp_set_script_translations()` met dezelfde handle en `Translations::script_path()`.

Voer na het wijzigen van tekenreeksen `npm run i18n` uit. Dit werkt `languages/blockstudio.pot` en elk bestand van `.po` bij. Nieuwe tekenreeksen blijven Engels totdat een vertaler of `npm run i18n:translate` ze invult. CI voert `npm run i18n:check` en `npm run i18n:coverage` uit, die verouderde gecompileerde bestanden, extractieproblemen of onvolledige locale-dekking afwijzen. Genereren blijft een expliciete actie van de maintainer.
