# Localiser un jeu PlayDrop et sa fiche

Lisez la langue du joueur avec sdk.host.language, choisissez parmi les 20 langues de PlayDrop et traduisez fiche et illustrations avec listingLocalizations.

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

Le site web et les apps de PlayDrop parlent 20 langues. Un jeu peut suivre la langue du joueur à deux endroits distincts : le jeu lui-même, que vous traduisez dans le code, et sa fiche, que vous traduisez dans catalogue.json.

## Commencez par l’anglais plus une langue

Proposez l’anglais, plus la langue de la personne que vous aidez si elle est différente. Ajoutez d’autres langues quand vous comptez toucher ces joueurs. Une traduction partielle fait moins bonne impression qu’un bon jeu en anglais : traduisez des écrans entiers.

## Traduisez le jeu

`sdk.host.language` est la langue du joueur parmi les 20 de PlayDrop : `en`, `fr`, `de`, `es`, `pt-BR`, `it`, `nl`, `sv`, `nb`, `fi`, `pl`, `tr`, `ar`, `th`, `vi`, `id`, `ja`, `ko`, `zh-Hans` et `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` est l’ancienne valeur, limitée aux dix langues d’origine et à `en` pour les autres ; préférez `language`. Les deux peuvent lever `host_locale_unavailable` sur les hôtes très anciens. L’arabe s’écrit de droite à gauche : inversez la mise en page, pas le gameplay, et testez les mots longs en allemand et en finnois.

## Traduisez la fiche

Définissez `sourceLocale` sur la langue dans laquelle la fiche est rédigée, puis ajoutez une traduction complète par langue dans `listingLocalizations`, indexée par langue :

```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" }
    }
  }
}
```

- Chaque traduction a besoin de son propre `displayName`. Elle peut aussi traduire `subtitle`, `description`, `inspirationPrompt`, `controls`, `makingOf` et `releaseNotes`.
- Les illustrations traduites, comme une illustration principale avec un titre traduit, vont dans l’objet `listing` de la traduction, avec les mêmes champs que la [fiche](https://www.playdrop.ai/fr/create/learn/listing-assets) principale.
- PlayDrop enregistre à quelle version du texte source correspond chaque traduction. Quand la fiche source change, mettez à jour les traductions dans le même envoi.

Une fiche traduite ne traduit pas le jeu, et un jeu traduit ne traduit pas la fiche. N’indiquez que les langues que le jeu prend réellement en charge.

## Joueurs et recherche

Le site web sert chaque langue à sa propre adresse, avec des liens entre les versions, pour que les moteurs de recherche puissent proposer la langue du lecteur. Les joueurs voient la traduction qui correspond à leur langue PlayDrop, et sinon la langue source.

## Guides associés

- [Illustrations et vidéos de la fiche](https://www.playdrop.ai/fr/create/learn/listing-assets): Images et vidéos de fiche d’un jeu PlayDrop : chemins, formats, orientations, et comment créer des visuels efficaces dans les fils, la recherche et les aperçus.
- [catalogue.json](https://www.playdrop.ai/fr/create/learn/catalogue-json): Les champs catalogue.json des jeux PlayDrop : identité, fiche, modes de jeu, surfaces, connexion, Instantané, préchargement, médias, traductions, scores et serveurs.
- [Chargement, pause et audio](https://www.playdrop.ai/fr/create/learn/lifecycle): Initialisez le SDK, signalez ready dès la première image jouable, gérez pause, reprise et audio de l’hôte, et préchargez pour les apps et le jeu hors ligne.
