---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.com/dev/games/doc/en/requirements/2/14.md
  - https://yandex.com/dev/games/doc/ru/requirements/2/14.md
  - https://yandex.com/dev/games/doc/tr/requirements/2/14.md
  - https://yandex.com/dev/games/doc/zh/requirements/2/14.md
  - href: zh/requirements/2/14.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/zh/llms.txt

# 自动语言检测

<!-- source: zh/_includes/script-common.md -->
<!-- source: zh/_includes/script/index-js.md -->

<!-- endsource: zh/_includes/script/index-js.md -->

<!-- source: zh/_includes/script/requirements-js.md -->

<!-- endsource: zh/_includes/script/requirements-js.md -->

<!-- source: zh/_includes/script/image-modal-js.md -->

<!-- endsource: zh/_includes/script/image-modal-js.md -->
<!-- endsource: zh/_includes/script-common.md -->

{% note info "游戏要求第2.14点" %}

游戏内置了通过SDK进行自动语言识别的功能。

{% endnote %}



## 集成 {#sdk-i18n}

{% note warning %}

通过 SDK 进行自动检测必须：

- 在启动时进行，而不是在游戏过程中。
- 在所有游戏中实现，即使它们只声明了一种语言或没有文本。

{% endnote %}

要确定用户的语言，请从参数 [environment.i18n.lang](https://yandex.com/dev/games/doc/zh/sdk/sdk-environment.md#structure-i18n) 获取[语言代码](*lang_code)：

```javascript showLineNumbers
const ysdk = (await YaGames.init());
const lang = ysdk.environment.i18n.lang; // 'en', 'ru', ...
```

接下来，在加载游戏翻译时使用 `lang` 变量。


## 验证方法 {#verification-method}

### 单语言验证 {#one-lang}

要确保游戏语言自动检测正常工作：

1. 清除[浏览器缓存](https://yandex.com/support/common/browsers-settings/cache.html){.external}。
1. 使用[debug面板](https://yandex.com/dev/games/doc/zh/console/debug-panel.md)打开游戏：

   <!-- source: zh/_includes/requirements/start-debug-panel.md -->
   {% list tabs %}

   - 通过开发者控制台
       1. 打开 [Yandex游戏控制台](https://games.yandex.com/console){.external}。
       1. 选择所需的游戏。
       1. 在左上角点击 **Open with debug panel**。

   - 通过地址栏
       1. 打开所需的游戏。
       1. 在浏览器地址栏末尾添加 `&debug-mode=16`。

          链接示例：`https://yandex.com/games/app/XXXX?debug-mode=16`，其中 `XXXX` —— 游戏的唯一标识符。

   {% endlist %}
   <!-- endsource: zh/_includes/requirements/start-debug-panel.md -->

1. 检查在首次启动游戏时，通过 SDK 进行的自动语言检测是否正常工作：

    #|
    || **背景** | **文本** | **含义** ||
    || ![绿色背景的语言指示器。](../../_images/debug-panel/i18n-on.svg) | ##I18N is used## | 已启用自动检测。 ||
    || ![红色背景的语言指示器。](../../_images/debug-panel/i18n-off.svg) | ##I18N is not used## | 未启用自动检测。 ||
    |#

    {% note warning %}

    指示器 文 的颜色必须在启动时变为绿色 ![绿色](../../_images/debug-panel/i18n-on.svg)，而不是在游戏过程中。允许有一个短暂的语言加载间隔：在启动时，指示器从红色变为绿色之前，可能会显示其他语言的加载文本。

    {% endnote %}


#### 示例 {#one-lang-examples}

<div class="table-50">

#|
|| **游戏** | **说明** ||
|| ![玩家点击"开始游戏"，之后语言指示器才从绿色变为红色。](../../_images/requirements/2-14-lang-autodetection/i18n-not-ok.gif) | 🚫 自动检测在关卡启动后才连接。此类游戏无法通过审核。 ||
|| ![指示器在加载过程中从红色变为绿色。游戏仅支持俄语，"Загрузка"文本最初就是所需语言。](../../_images/requirements/2-14-lang-autodetection/i18n-ok-1.gif) | ✅ 连接自动检测前有轻微延迟，语言最初就是正确的（游戏仅支持RU）。 ||
|| ![指示器在加载过程中从红色变为绿色。同时文本从"Загружаемся"变为"Loading"，与所选游戏语言 - 英语相符。](../../_images/requirements/2-14-lang-autodetection/i18n-ok-2.gif) | ✅ 连接自动检测前有轻微延迟，指示器颜色变化的同时文本语言也发生变化（EN语言）。 ||
|#

</div>


### 多语言验证 {#multi-lang}

审核会检查游戏在 **Draft** 选项卡的 [Game translated into](https://yandex.com/dev/games/doc/zh/console/add-new-game/draft.md#field-languages) 字段中指定的所有语言的本地化。

对每种声明的语言重复[基本验证](#one-lang)。为此，依次在所有这些语言中打开游戏：

1. 在debug面板上点击 **SDK mocks ⚒️**。
1. 在语言标识的下拉列表中（例如 **En** ![向下箭头图标](../../_images/debug-panel/choose-game-lang-arrow.svg)）选择所需语言。游戏将在浏览器的新标签页中以该语言打开。

{% note info %}

如果游戏中有手动语言切换功能，审核将仅检查实现中是否存在技术和逻辑错误。为了改善玩家体验，请自行检查是否遵循了游戏要求[第 6.9 项](https://yandex.com/dev/games/doc/zh/concepts/requirements.md#6-9)中的建议。

{% cut "手动语言选择示例" %}

![游戏内手动语言选择菜单。](../../_images/requirements/2-14-lang-autodetection/manual-lang-selection.webp)

{% endcut %}

{% endnote %}

审核结果：

- ✅ 如果所有声明的语言都已加载 —— 游戏将通过审核。
- 🚫 如果至少有一种语言未切换（完全或部分）到debug面板上选择的语言 —— 游戏将因未翻译而被拒绝。同时，审核会考虑可以不翻译的例外情况（参见[第 8.2.3 项校准列表](https://yandex.com/dev/games/doc/zh/requirements/8/2/3.md)）。
- ✅ 如果开发者实现了在缓存中保存语言的功能，则在刷新游戏页面后没有自动检测是可以接受的。



## 联系审核部门 {#forma}

如果您认为游戏中的自动语言检测功能正常工作，并且因错误被取消发布或未被允许发布，请填写以下表格。

审核质量控制服务会重新检查决定并恢复游戏发布，如果它被不公正地封禁。

<div class="cut-button">

{% cut "打开表单" %}

<div style="padding: 15px;
         margin: 10px 0;
         background: #FFFFFF;
         border-radius: 10px;
         border: 1px solid var(--yc-color-line-generic);">
      <iframe height="400"
              width="100%"
              frameborder="0"
              id="moderation-2-14-form"
              src="https://forms.yandex.com/surveys/13487250.5a13659b18018197b1f339b05e2d4dacc05604a6/?answer_choices_52072484=1769421882100&iframe=1">
      </iframe>
</div>

{% endcut %}

</div>

[*lang_code]: 代码采用 ISO 639-1 格式。例如，`"tr"` 表示游戏当前在 Yandex Games 的土耳其语界面中运行。所有支持的语言列在 [{#T}](https://yandex.com/dev/games/doc/zh/concepts/languages-and-domains.md) 页面上。