# Localize um jogo do PlayDrop e a listagem dele

Leia o idioma do jogador com sdk.host.language, escolha quais dos 20 idiomas do PlayDrop oferecer e traduza a listagem e a arte dela com listingLocalizations.

Source: https://www.playdrop.ai/pt-br/create/learn/localization

O site e os apps do PlayDrop falam 20 idiomas. Um jogo pode seguir o idioma do jogador em dois lugares separados: no próprio jogo, que você traduz no código, e na listagem, que você traduz no catalogue.json.

## Comece com inglês e mais um

Lance o jogo em inglês e também no idioma da pessoa com quem você trabalha, se for diferente. Adicione mais idiomas quando planejar alcançar esses jogadores. Uma tradução parcial passa uma impressão pior do que um bom jogo em inglês, então traduza telas inteiras.

## Traduza o jogo

`sdk.host.language` é o idioma do jogador entre os 20 do PlayDrop: `en`, `fr`, `de`, `es`, `pt-BR`, `it`, `nl`, `sv`, `nb`, `fi`, `pl`, `tr`, `ar`, `th`, `vi`, `id`, `ja`, `ko`, `zh-Hans` e `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` é o valor antigo, limitado aos dez idiomas originais, e retorna `en` para os demais; prefira `language`. Os dois podem lançar `host_locale_unavailable` em hosts muito antigos. O árabe é escrito da direita para a esquerda: espelhe o layout, não a jogabilidade, e teste palavras longas em alemão e em finlandês.

## Traduza a listagem

Defina `sourceLocale` como o idioma em que a listagem está escrita e depois adicione uma tradução completa por idioma em `listingLocalizations`, com o idioma como chave:

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

- Cada tradução precisa do seu próprio `displayName`. Ela também pode traduzir `subtitle`, `description`, `inspirationPrompt`, `controls`, `makingOf` e `releaseNotes`.
- A arte traduzida, como uma arte de destaque com o título traduzido, vai no objeto `listing` da tradução, com os mesmos campos da [listagem](https://www.playdrop.ai/pt-br/create/learn/listing-assets) principal.
- O PlayDrop registra a qual versão do texto original cada tradução corresponde. Quando a listagem original mudar, atualize as traduções no mesmo envio.

Uma listagem traduzida não traduz o jogo, e um jogo traduzido não traduz a listagem. Liste só os idiomas que o jogo realmente oferece.

## Jogadores e busca

O site serve cada idioma em um endereço próprio, com links entre as versões, para que os buscadores possam oferecer o idioma de quem lê. Os jogadores veem a tradução que corresponde ao idioma deles no PlayDrop e, se ela não existir, o idioma original.

## Guias relacionados

- [Arte e vídeo da listagem](https://www.playdrop.ai/pt-br/create/learn/listing-assets): Imagens e vídeos da listagem no PlayDrop: caminhos, formatos e orientações, e como criar arte que funcione em feeds, na busca e em prévias de links.
- [catalogue.json](https://www.playdrop.ai/pt-br/create/learn/catalogue-json): Os campos do catalogue.json que os jogos do PlayDrop usam: identidade, listagem, modos de jogo, superfícies, login, Instantâneo, pré-carregamento, mídia, traduções, pontuações e servidores.
- [Carregamento, pausa e áudio](https://www.playdrop.ai/pt-br/create/learn/lifecycle): Inicialize o SDK, sinalize que está pronto no primeiro quadro jogável, pause e retome bem, siga o áudio do host e pré-carregue arquivos para apps e offline.
