---
title: 副言語について
description: 環境設定 -> ローカライズで多言語設定を有効にするとコンテンツに副言語の登録が可能です。本ドキュメントでは副言語を登録した際の動作について説明します。
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

[環境設定] -> [ローカライズ]で多言語設定を有効にするとコンテンツに副言語の登録が可能です。  
本ドキュメントでは副言語を登録した際の動作について説明します。

## APIパラメータ
エンドポイントで利用できる副言語に関するパラメータは以下になります。

|パラメータ|説明|
|:--|:--|
|`_lang`|レスポンスするコンテンツの言語を指定します。<br/><br/>※システムのメッセージは`ja`, `en`のみに対応しています。<br/>※意図して設定されたバリデーションエラーを除くシステムのエラーメッセージ(スキーマエラー等)は英語になります。|
|`filter_lang`|絞り込みに利用する言語を指定します。|
|`_doc_lang`|POST系のエンドポイントで、POSTの対象となる言語を指定します。|

## コンテンツ定義
コンテンツ定義に対する副言語の設定は、以下のように影響します。  

|項目|説明|
|:--|:--|
|全般-名前|APIからのレスポンスで言語毎の値を取得できます。また、日本語・英語に設定した名前は管理画面の言語設定に連動して管理画面上での表示にも使用されます。|
|全般-説明|APIからのレスポンスで言語毎の値を取得できます。|
|項目設定|言語毎のコンテンツデータに適用され、管理画面上では言語のタブを切り替えることで表示が変わります。<br/>選択形式の項目では言語毎にlabelを変更できますが、keyは共通になっている必要があります。|
|詳細設定|管理画面の言語設定に連動して、管理画面上での表示・動作に影響します。日本語・英語以外の言語については設定しても動作しません。|

<!--
https://github.com/diverta/Kuroco-opendev/issues/6882
-->

## コンテンツ
コンテンツに関する副言語データは、主言語のデータとセットで登録をする使い方を想定しています。  
そのため、コンテンツ内の項目に繰り返しを利用した場合の並び順は、主言語が基準となり、主言語の並び順の変更が副言語にも反映されます。

また、APIのレスポンスは管理画面の表示・並び順と同一になります。

1. 主言語の並び順を変更すると、それに対応して副言語の並び順も更新されます。  
  **管理画面：**  
  ![Image from Gyazo](https://t.gyazo.com/teams/diverta/3ac3bb62205a203b3256f7e94611dcc6.png)
  
  **レスポンス：**  
  <Tabs>
  <TabItem value="主言語" label="主言語" default>

  ```
    "ext_1": [
      "3",
      "1",
      "2"
    ]
  ```
  
  </TabItem>
  <TabItem value="副言語" label="副言語" default>

  ```
    "ext_1": [
      "3",
      "1",
      "2"
    ]
  ```
  
  </TabItem>
  </Tabs>

2. 副言語の繰り返し項目の一部にデータが登録されていない場合、主言語と同じ並び順に`""`のデータが返ります。  
  **管理画面：**  
  ![Image from Gyazo](https://t.gyazo.com/teams/diverta/0c995572c72fc6850224c8e5a36eae39.png)
  
  **レスポンス：**  
  <Tabs>
  <TabItem value="主言語" label="主言語" default>

  ```
    "ext_1": [
      "1",
      "2",
      "3"
    ]
  ```
  
  </TabItem>
  <TabItem value="副言語" label="副言語" default>

  ```
    "ext_1": [
      "",
      "2",
      "3"
    ]
  ```
  
  </TabItem>
  </Tabs>

3. 繰り返し項目のうち、主言語・副言語で共にデータがない順番の項目はAPIからレスポンスされません。  
  **管理画面：**  
  ![Image from Gyazo](https://t.gyazo.com/teams/diverta/6c61f2c05783ed21474f9ce53751636e.png)
  
  **レスポンス：**  
  <Tabs>
  <TabItem value="主言語" label="主言語" default>

  ```
    "ext_1": [
      "2",
      "3"
    ]
  ```
  
  </TabItem>
  <TabItem value="副言語" label="副言語" default>

  ```
    "ext_1": [
      "2",
      "3"
    ]
  ```
  
  </TabItem>
  </Tabs>

4. 主言語にデータが登録されていない繰り返し順で、副言語にデータが登録されている場合、該当の項目は主言語と副言語のセットから外れ、主言語に対する追加項目として扱われます。  
  そのため、主言語に登録が無いデータは副言語の並び順の最後に移動します。  
  **管理画面：**  
  ![Image from Gyazo](https://t.gyazo.com/teams/diverta/f205ea31196046b449a0acafbc010104.png)
  
  **レスポンス：**  
  <Tabs>
  <TabItem value="主言語" label="主言語" default>

  ```
    "ext_1": [
      "2",
      "3"
    ]
  ```
  
  </TabItem>
  <TabItem value="副言語" label="副言語" default>

  ```
    "ext_1": [
      "2",
      "3",
      "1"
    ]
  ```
  
  </TabItem>
  </Tabs>

## 制限事項
### 主言語にしか設定できない項目
Slugや関連情報など、いくつかの項目はコンテンツに対しての設定となるため、主言語からしか設定できず、
APIから副言語のコンテンツを取得した場合、主言語と同じ情報がレスポンスされます。

主言語のみにデータを持つ項目は以下になります。

- topics_id
- ymd
- contents_type
- contents_type_cnt
- topics_flg
- regular_flg
- inst_ymdhi
- update_ymdhi
- topics_group_id
- post_time
- member_id
- Slug
- order_no
- カウンター
- 関連情報選択
- タグ(tag_nm, ext_col_XX は言語設定に連動)
- お気に入り
- コメント

これらの項目を主言語と副言語で別々に設定したい場合は、主言語の拡張項目に設定して利用します。

例えば副言語の更新日時を主言語と別に設定したい場合は、
[日付フォーマット](/ja/docs/reference/list-of-extra-column-available-on-content/#日付フォーマット)の項目を作成し、更新日時(EN)などを設定します。  

:::tip
特定の項目を自動で入力されるようにするには、[コンテンツの更新前](/ja/docs/reference/trigger-variables/#コンテンツの更新前)のトリガーや[カスタムテンプレート](/ja/docs/faq/can-i-customize-the-display-of-tables-on-the-conten-editing-screen/)を組み合わせて設定してください。
:::

### 並び替え
パフォーマンス維持のため、Orderクエリによる並び替えは主言語でしか実行できません。
主言語と副言語で並び順を変えたい場合は、並び替えに使いたいデータを主言語の拡張項目に設定します。

例：  
・並び順  
・並び順(EN)  

## 関連ドキュメント
- [多言語サイトを構築する](/ja/docs/tutorials/building-a-multi-language-site/)