# PlayDrop ゲームとその掲載情報をローカライズする

sdk.host.language でプレイヤーの言語を読み取り、PlayDrop の20言語のうちどれに対応するかを選び、listingLocalizations で掲載情報とそのアートを翻訳します。

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

PlayDrop のウェブサイトとアプリは20の言語に対応しています。ゲームは、2つの別々の場所でプレイヤーの言語に合わせられます。コードで翻訳するゲーム本体と、catalogue.json で翻訳する掲載情報です。

## まずは英語ともう1言語から

英語に加えて、ユーザーの言語が英語と違う場合はその言語でもリリースしましょう。ほかの言語は、その言語のプレイヤーに届けるつもりになったら追加します。中途半端な翻訳は、よくできた英語のゲームよりも印象が悪くなるので、画面単位で丸ごと翻訳してください。

## ゲームを翻訳する

`sdk.host.language` は、PlayDrop の20言語のうちのプレイヤーの言語です。`en`、`fr`、`de`、`es`、`pt-BR`、`it`、`nl`、`sv`、`nb`、`fi`、`pl`、`tr`、`ar`、`th`、`vi`、`id`、`ja`、`ko`、`zh-Hans`、`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` は古い値で、最初の10言語に限られ、それ以外の言語では `en` になります。`language` を使ってください。とても古いホストでは、どちらも `host_locale_unavailable` を投げることがあります。アラビア語は右から左に書くので、ゲームプレイではなくレイアウトを左右反転させてください。また、ドイツ語とフィンランド語の長い単語でもテストしましょう。

## 掲載情報を翻訳する

`sourceLocale` に掲載情報を書いた言語を設定し、`listingLocalizations` に言語をキーとして、言語ごとに完全な翻訳を1つずつ追加します。

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

- 翻訳ごとに専用の `displayName` が必要です。`subtitle`、`description`、`inspirationPrompt`、`controls`、`makingOf`、`releaseNotes` も翻訳できます。
- タイトルを翻訳したキービジュアルなど、翻訳したアートは、翻訳の `listing` オブジェクトに入れます。フィールドはメインの[掲載情報](https://www.playdrop.ai/ja/create/learn/listing-assets)と同じです。
- PlayDrop は、各翻訳が元のテキストのどのバージョンに対応しているかを記録します。元の掲載情報を変更したときは、同じアップロードで翻訳も更新してください。

掲載情報を翻訳してもゲームは翻訳されず、ゲームを翻訳しても掲載情報は翻訳されません。ゲームが実際に対応している言語だけを掲載してください。

## プレイヤーと検索

ウェブサイトは言語ごとに別のアドレスでページを配信し、各バージョンを相互にリンクしているので、検索エンジンは読み手の言語のページを表示できます。プレイヤーには PlayDrop の言語設定に合った翻訳が表示され、ない場合は元の言語が表示されます。

## 関連ガイド

- [掲載用アートと動画](https://www.playdrop.ai/ja/create/learn/listing-assets): PlayDrop ゲームに設定できる掲載用の画像と動画、そのパス、形式、向きと、フィードや検索、リンクのプレビューで映えるアートの作り方を説明します。
- [catalogue.json](https://www.playdrop.ai/ja/create/learn/catalogue-json): PlayDrop ゲームが使う catalogue.json のフィールド：識別情報、掲載情報、遊び方、表示環境、サインイン、インスタント、事前読み込み、メディア、翻訳、スコア、サーバー。
- [読み込み、一時停止、オーディオ](https://www.playdrop.ai/ja/create/learn/lifecycle): PlayDrop SDK を初期化し、最初の遊べるフレームで準備完了を伝え、きれいに一時停止・再開し、ホストのオーディオポリシーに従い、アプリとオフライン用にファイルを事前読み込みします。
