
# Översättningar

Blockstudio levereras med sina översättningar i mappen `languages`. WordPress använder dem när webbplatsens språk eller språket i en användarprofil matchar något av dem. Det fungerar på samma sätt när Blockstudio körs som ett tillägg, ett måste-tillägg eller ett Composer-paket.

## Tillgängliga språk

Blockstudio innehåller översättningar för de WordPress språkvarianter som finns registrerade i den medföljande `languages/locales.json`, inklusive regionala och formella/informella varianter. Engelska (`en_US`) är källspråket och behöver ingen översättningsfil. Listan kombinerar språkvarianter som stöds av WordPress från GlotPress med varianter som finns i WordPress-kärnans översättnings-API.

De befintliga översättningarna till tyska (`de_DE`) och formell tyska (`de_DE_formal`) är bevarade. De ytterligare översättningarna har genererats med AI med GPT-6 Luna och markerats som maskingenererade i sina `.po`-huvuden. De klarar automatiska kontroller av fullständighet och format, men har inte alla granskats av personer med språket som modersmål. Korrigeringar välkomnas.

Översättningarna omfattar fältkontrollerna i blockredigeraren, admin-sidan, arbetsytan, devtools-överlägget och meddelandena från slutpunkterna för REST. Etiketter och hjälptexter i dina egna `block.json`-filer tillhör ditt tema eller tillägg och använder dess textdomän.

Välj språk under **Settings > General > Site Language**, eller välj ett personligt språk i din WordPress-profil. Blockstudio använder automatiskt den språkvarianten. Det lägger inte till språk i språkvalslistan för WordPress: en språkvariant måste också finnas tillgänglig i din WordPress-installation. Ingen AI-förfrågan, översättningsprenumeration eller extra körningsinställning krävs på din webbplats.

## Åsidosätt en översättning

Översättningsfiler i `wp-content/languages/plugins` har företräde framför de medföljande filerna, både för PHP-strängar (`blockstudio-de_DE.mo` eller `blockstudio-de_DE.l10n.php`) och för skript (en fil per skripthandtag, till exempel `blockstudio-de_DE-blockstudio-blocks.json`).

## Bidra med en översättning

Varje språk finns i en `.po`-fil som du kan redigera med valfri textredigerare eller ett översättningsverktyg som Poedit. Korrigeringar och nya språk välkomnas som pull requests.

1. Lägg till ett språk genom att kopiera `languages/blockstudio.pot` till `languages/blockstudio-<locale>.po`, till exempel `blockstudio-fr_FR.po`, och ange rubrikerna `Language` och `Plural-Forms`. Förbättra ett språk genom att redigera dess befintliga `.po`-fil.
2. Översätt strängarna. Behåll platshållare som `%1$s` i översättningen.
3. Kör `npm run i18n`. Kommandot skapar filerna `.mo`, `.l10n.php` och `.json` som WordPress läser in.
4. Skicka in `.po`-filen tillsammans med de genererade filerna och öppna en pull request.

Om du inte kan köra `npm` går det bra att skicka in en pull request med bara `.po`-filen. De genererade filerna kan läggas till före sammanslagningen.

## Generera saknade översättningar

Underhållare kan generera saknade poster med en autentiserad Codex CLI. Det här är ett valfritt utvecklarkommando, inte något som WordPress kör:

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

Standardmodellen är `gpt-6-luna`. Arbeta med en språkvariant med `npm run i18n:translate -- --locale fr_FR`. Kommandot extraherar de senaste källsträngarna, fyller i saknade översättningar och kompilerar sedan `.mo`, `.l10n.php` och `.json`-filer för varje skript. Endast offentliga gränssnittssträngar, deras sammanhang och befintliga översättningar skickas till Codex, inte webbplatsinnehåll eller användardata.

Befintliga översättningar som inte är tomma ersätts aldrig. Färdiga omgångar sparas, så om kommandot körs igen efter ett avbrott återupptas det saknade arbetet. Platshållare som `%1$s`, HTML-uppmärkning, tekniska identifierare och obligatoriska pluralformer valideras innan de sparas. Oklara poster och ändrade källpluralformer lämnas för granskning av en översättare. Ingen reservmodell används om den begärda modellen inte är tillgänglig.

`npm run i18n:locales` uppdaterar uttryckligen listan över språkvarianter och pluralregler från WordPress/GlotPress. `npm run i18n:coverage` kontrollerar att alla språkvarianter i den versionshanterade listan är fullständiga. Varken täckningskontroller eller vanlig CI använder AI eller hämtar språkdata. Läs repots README om batchhantering, samtidighet och återställningsalternativ.

## Översättningsbara strängar i koden

- PHP: använd funktionerna WordPress med textdomänen `blockstudio`, till exempel `__( 'Invalid block.', 'blockstudio' )`.
- JavaScript: importera `__` från `@/utils/__` och skicka en literal sträng, till exempel `__( 'Add row' )`. En sträng som sätts ihop vid körning kan inte översättas, så använd en literal sträng per variant.
- Ett nytt skriptpaket med översättningsbara strängar behöver en post i `scripts/i18n.ts` och ett anrop till `wp_set_script_translations()` med samma handtag och `Translations::script_path()`.

När du har ändrat strängar kör du `npm run i18n`. Det uppdaterar `languages/blockstudio.pot` och alla `.po`-filer. Nya strängar förblir på engelska tills en översättare eller `npm run i18n:translate` fyller i dem. CI kör `npm run i18n:check` och `npm run i18n:coverage`, som avvisar inaktuella kompilerade filer, extraktionsproblem eller ofullständig språkversionstäckning. Genereringen förblir en uttrycklig åtgärd för underhållaren.
