# 本地化 PlayDrop 游戏及其商店页面

用 sdk.host.language 读取玩家的语言，选择要支持 PlayDrop 20 种语言中的哪些，并用 listingLocalizations 翻译商店页面及其图片。

Source: https://www.playdrop.ai/zh-hans/create/learn/localization

PlayDrop 的网站和应用支持 20 种语言。游戏可以在两个独立的地方跟随玩家的语言：游戏本身，由你在代码中翻译；以及它的商店页面，由你在 catalogue.json 中翻译。

## 从英语加一种语言开始

先提供英语，如果你的用户使用其他语言，再加上这种语言。等你打算触达其他语言的玩家时，再添加更多语言。不完整的翻译比一款好的英语游戏体验更差，所以请整屏翻译。

## 翻译游戏

`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` 是旧的值，只限于最初的十种语言，其他语言返回 `en`；请优先使用 `language`。在非常旧的宿主上，两者都可能抛出 `host_locale_unavailable`。阿拉伯语从右向左书写：镜像翻转布局，但不要翻转玩法；并用德语和芬兰语测试长单词。

## 翻译商店页面

把 `sourceLocale` 设为商店页面所用的语言，然后在 `listingLocalizations` 中为每种语言添加一份完整的翻译，以语言为键：

```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/zh-hans/create/learn/listing-assets)相同的字段。
- PlayDrop 会记录每份翻译对应的是哪个版本的源文本。源商店页面变化时，请在同一次上传中更新翻译。

翻译商店页面不会翻译游戏，翻译游戏也不会翻译商店页面。只列出游戏真正支持的语言。

## 玩家和搜索

网站会为每种语言提供独立的地址，并在各语言版本之间互相链接，让搜索引擎可以向读者提供他们的语言。玩家会看到与其 PlayDrop 语言相符的翻译；没有对应翻译时，则看到源语言。

## 相关指南

- [商店页面图片和视频](https://www.playdrop.ai/zh-hans/create/learn/listing-assets): PlayDrop 游戏可以有哪些商店页面图片和视频，它们的路径、格式和方向，以及如何制作在信息流、搜索和链接预览中都好看的图片。
- [catalogue.json](https://www.playdrop.ai/zh-hans/create/learn/catalogue-json): PlayDrop 游戏使用的 catalogue.json 字段：标识、商店页面、游玩方式、显示形态、登录、即玩、预加载、媒体、翻译、分数和服务器。
- [加载、暂停和音频](https://www.playdrop.ai/zh-hans/create/learn/lifecycle): 初始化 PlayDrop SDK，在第一个可玩帧时发出就绪信号，干净地暂停和恢复，遵循宿主的音频策略，并为原生应用和离线游玩预加载文件。
