
# Käännökset

Blockstudio sisältää käännöksensä kansiossa `languages`. WordPress käyttää niitä, kun sivuston tai käyttäjäprofiilin kieli vastaa jotakin niistä. Tämä toimii samalla tavalla, kun Blockstudio toimii lisäosana, pakollisena lisäosana tai Composer-pakettina.

## Saatavilla olevat kielet

Blockstudio sisältää käännökset sen WordPress kielen alueversioille, jotka on kirjattu sen mukana toimitettavaan `languages/locales.json`-tiedostoon, mukaan lukien alueelliset sekä muodolliset ja epämuodolliset variantit. Englanti (`en_US`) on lähdekieli eikä tarvitse käännöstiedostoa. Luettelossa yhdistyvät WordPressn tukemat GlotPress-kielet ja WordPressn ytimen käännös-APIssa saatavilla olevat variantit.

Olemassa olevat saksan (`de_DE`) ja muodollisen saksan (`de_DE_formal`) käännökset säilytetään. Lisäkäännökset on luotu tekoälyllä GPT-6 Lunaa käyttäen, ja ne on merkitty koneellisesti tuotetuiksi `.po`-otsakkeissaan. Ne läpäisevät automaattiset kattavuus- ja muototarkistukset, mutta äidinkieliset puhujat eivät ole tarkistaneet niitä kaikkia. Korjaukset ovat tervetulleita.

Käännökset kattavat lohkomuokkaimen kenttäohjaimet, ylläpitosivun, kanvaasin, kehittäjätyökalujen peittokuvan ja REST-päätepisteiden viestit. Omissa `block.json`-tiedostoissasi olevat nimet ja ohjetekstit kuuluvat teemaan tai lisäosaan, ja niissä käytetään sen tekstialuetta.

Valitse kieli kohdasta **Asetukset > Yleiset > Sivuston kieli** tai valitse henkilökohtainen kieli WordPress-profiilissasi. Blockstudio käyttää kyseistä kielialuetta automaattisesti. Se ei lisää kieliä WordPressn kielivalitsimeen: kielialueen on oltava saatavilla myös WordPress-asennuksessasi. Sivustollasi ei tarvita tekoälypyyntöä, käännöstilausta tai ylimääräistä ajonaikaista asetusta.

## Käännöksen korvaaminen

Kohteen `wp-content/languages/plugins` käännöstiedostoilla on etusija mukana toimitettuihin tiedostoihin nähden sekä PHP-merkkijonojen (`blockstudio-de_DE.mo` tai `blockstudio-de_DE.l10n.php`) että skriptien osalta (yksi tiedosto käsittelijää kohden, esimerkiksi `blockstudio-de_DE-blockstudio-blocks.json`).

## Käännöksen tekeminen

Jokainen kieli on `.po`-tiedosto, jota voit muokata millä tahansa tekstieditorilla tai käännöstyökalulla, kuten Poeditilla. Korjaukset ja uudet kielet ovat tervetulleita pull-pyyntöinä.

1. Lisää kieli kopioimalla `languages/blockstudio.pot` kohteeseen `languages/blockstudio-<locale>.po`, esimerkiksi `blockstudio-fr_FR.po`, ja asettamalla `Language`- ja `Plural-Forms`-otsakkeet. Paranna kieltä muokkaamalla sen olemassa olevaa `.po`-tiedostoa.
2. Käännä merkkijonot. Säilytä käännöksessä paikkamerkit, kuten `%1$s`.
3. Suorita `npm run i18n`. Se kirjoittaa tiedostot `.mo`, `.l10n.php` ja `.json`, jotka WordPress lataa.
4. Tallenna `.po`-tiedosto yhdessä luotujen tiedostojen kanssa ja avaa pull-pyyntö.

Jos et voi suorittaa komentoa `npm`, pull-pyyntö, joka sisältää vain tiedoston `.po`, käy hyvin. Luodut tiedostot voidaan lisätä ennen yhdistämistä.

## Puuttuvien käännösten luominen

Ylläpitäjät voivat luoda puuttuvat merkinnät tunnistetulla Codex CLI-komennolla. Tämä on valinnainen kehityskomento, jota WordPress ei suorita:

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

Oletusmalli on `gpt-6-luna`. Voit käsitellä yhtä kielialuetta komennolla `npm run i18n:translate -- --locale fr_FR`. Komento poimii uusimmat lähdemerkkijonot, täyttää puuttuvat käännökset ja kääntää sitten tiedostot `.mo`, `.l10n.php` ja skriptikohtaiset `.json`. Codexlle lähetetään vain julkiset käyttöliittymämerkkijonot, niiden konteksti ja olemassa olevat muodot, ei sivuston sisältöä tai käyttäjätietoja.

Olemassa olevia, ei-tyhjiä käännöksiä ei koskaan korvata. Valmiit erät tallennetaan, joten keskeytyksen jälkeen komennon uudelleen suorittaminen jatkaa puuttuvista käännöksistä. Paikkamerkit, kuten `%1$s`, HTML-merkkaus, tekniset tunnisteet ja vaaditut monikkomuodot tarkistetaan ennen tallennusta. Epävarmat merkinnät ja muuttuneet lähteen monikkomuodot jätetään kääntäjän tarkistettaviksi. Mallia ei vaihdeta, jos pyydetty malli ei ole saatavilla.

`npm run i18n:locales` päivittää kieliluettelon ja monikkosäännöt erikseen lähteestä WordPress/GlotPress. `npm run i18n:coverage` tarkistaa, että jokainen versionhallintaan tallennetun luettelon kielialue on täydellinen. Kattavuustarkistukset ja tavallinen CI eivät kutsu tekoälyä eivätkä hae kielialuetietoja. Katso repositorion README eräajon, samanaikaisuuden ja palautumisen vaihtoehdot.

## Käännettävät merkkijonot koodissa

- PHP: käytä `blockstudio`-tekstialueen WordPress-funktioita, esimerkiksi `__( 'Invalid block.', 'blockstudio' )`.
- JavaScript: tuo `__` moduulista `@/utils/__` ja välitä sille merkkijonoliteraali, esimerkiksi `__( 'Add row' )`. Ajonaikaisesti koottua merkkijonoa ei voi kääntää, joten käytä yhtä merkkijonoliteraalia kutakin varianttia kohden.
- Uusi skriptipaketti, joka sisältää käännettäviä merkkijonoja, tarvitsee merkinnän tiedostoon `scripts/i18n.ts` ja kutsun funktiolle `wp_set_script_translations()` käyttäen samaa tunnistetta ja arvoa `Translations::script_path()`.

Kun olet muuttanut merkkijonoja, suorita `npm run i18n`. Se päivittää tiedoston `languages/blockstudio.pot` ja kaikki tiedostot `.po`. Uudet merkkijonot säilyvät englanniksi, kunnes kääntäjä tai `npm run i18n:translate` täyttää niiden käännökset. CI suorittaa `npm run i18n:check` ja `npm run i18n:coverage`, jotka hylkäävät vanhentuneet käännetyt tiedostot, poimintaongelmat tai puutteellisen kielialueiden kattavuuden. Generointi pysyy ylläpitäjän erikseen käynnistämänä toimena.
