# Een PlayDrop-game en zijn gamepagina vertalen

Lees de taal van de speler met sdk.host.language, kies welke van de 20 talen je ondersteunt en vertaal de gamepagina en de beelden met listingLocalizations.

Source: https://www.playdrop.ai/nl/create/learn/localization

De website en de apps van PlayDrop spreken 20 talen. Een game kan de taal van de speler op twee aparte plekken volgen: in de game zelf, die je in code vertaalt, en op de gamepagina, die je in catalogue.json vertaalt.

## Begin met Engels plus één

Lever Engels, plus de taal van je mens als die anders is. Voeg meer talen toe wanneer je van plan bent die spelers te bereiken. Een gedeeltelijke vertaling voelt slechter aan dan een goede Engelse game, dus vertaal hele schermen.

## De game vertalen

`sdk.host.language` is de taal van de speler, een van de 20 van PlayDrop: `en`, `fr`, `de`, `es`, `pt-BR`, `it`, `nl`, `sv`, `nb`, `fi`, `pl`, `tr`, `ar`, `th`, `vi`, `id`, `ja`, `ko`, `zh-Hans` en `zh-Hant`.

```js
const STRINGS = { en: { play: "Play" }, fr: { play: "Jouer" } };
let language = "en";
try { language = sdk.host.language; } catch { /* older host */ }
const t = STRINGS[language] ?? STRINGS[language.split("-")[0]] ?? STRINGS.en;
```

`sdk.host.locale` is de oudere waarde, beperkt tot de oorspronkelijke tien talen en `en` voor de overige; gebruik liever `language`. Beide kunnen op zeer oude hosts de fout `host_locale_unavailable` geven. Arabisch wordt van rechts naar links geschreven: spiegel de lay-out, niet de gameplay, en test lange woorden in het Duits en het Fins.

## De gamepagina vertalen

Zet `sourceLocale` op de taal waarin de gamepagina is geschreven en voeg daarna per taal één volledige vertaling toe in `listingLocalizations`, met de taal als sleutel:

```json
{
  "sourceLocale": "en",
  "displayName": "Moon Jump",
  "description": "Jump between lunar platforms and reach the flag.",
  "listingLocalizations": {
    "fr": {
      "displayName": "Saut lunaire",
      "subtitle": "Des plateformes lunaires contre la montre",
      "description": "Sautez de plateforme en plateforme et atteignez le drapeau.",
      "controls": "Touchez ou appuyez sur Espace pour sauter.",
      "listing": { "heroLandscape": "listing/locales/fr/hero-landscape.png" }
    }
  }
}
```

- Elke vertaling heeft een eigen `displayName` nodig. Ze kan ook `subtitle`, `description`, `inspirationPrompt`, `controls`, `makingOf` en `releaseNotes` vertalen.
- Vertaalde afbeeldingen, zoals een hoofdafbeelding met een vertaalde titel, hoort in het `listing`-object van de vertaling, met dezelfde velden als de oorspronkelijke [gamepagina](https://www.playdrop.ai/nl/create/learn/listing-assets).
- PlayDrop legt vast bij welke versie van de brontekst elke vertaling hoort. Verandert de brontekst van de gamepagina, werk de vertalingen dan in dezelfde upload bij.

Een vertaalde gamepagina vertaalt de game niet, en een vertaalde game vertaalt de gamepagina niet. Vermeld alleen talen die de game echt ondersteunt.

## Spelers en zoeken

De website biedt elke taal aan op een eigen adres, met links tussen de versies, zodat zoekmachines de taal van de lezer kunnen aanbieden. Spelers zien de vertaling die past bij hun PlayDrop-taal, en anders de brontaal.

## Gerelateerde gidsen

- [Afbeeldingen en video voor de gamepagina](https://www.playdrop.ai/nl/create/learn/listing-assets): Welke afbeeldingen en video's een PlayDrop-gamepagina kan hebben, met paden, formaten en oriëntaties, en beelden die werken in feeds, zoeken en linkvoorbeelden.
- [catalogue.json](https://www.playdrop.ai/nl/create/learn/catalogue-json): De catalogue.json-velden die games gebruiken: identiteit, gamepagina, speelwijzen, weergaven, inloggen, Instant, vooraf laden, media, vertalingen, scores en servers.
- [Laden, pauze en audio](https://www.playdrop.ai/nl/create/learn/lifecycle): Initialiseer de PlayDrop-SDK, meld klaar bij het eerste speelbare frame, pauzeer en hervat netjes, volg het audiobeleid en laad vooraf voor apps en offline.
