REST API: locale
Internationalization (i18n) により、REST API でロケール単位の操作が追加されます。
API でロケールのコンテンツを扱う前に、管理画面でロケールが Strapi に追加済み であることを確認してください。
locale API パラメータ で、指定したロケールのドキュメントだけを扱え ます。値はロケールコードです(利用可能なロケールの一覧)。
locale を省略すると既定ロケールが使われます。新規プロジェクトの既定は en ですが、管理画面で 既定ロケールを変更 できます。
例: 既定では GET /api/restaurants は GET /api/restaurants?locale=en と同じレスポンスになります。
次の表は、i18n によって REST API に追加される主な用途と構文の例です(リクエストのリンクから詳しいセクションへ移動できます)。
- コレクションタイプ
- シングルタイプ
| 用途 | 構文の例 (詳細へのリンク) |
|---|---|
| 特定ロケールのドキュメント一覧を取得 | GET /api/restaurants?locale=fr |
| ドキュメントの特定ロケール版を取得 | GET /api/restaurants/abcdefghijklmno456?locale=fr |
| 既定ロケール向けに新規ドキ ュメントを作成 | POST /api/restaurants+ リクエストボディに属性を渡す |
| 特定ロケール向けに新規ドキュメントを作成 | POST /api/restaurants?locale=fr+ リクエストボディに属性を渡す |
| 既存ドキュメントの新規ロケール版を作成、または既存のロケール版を更新 | PUT /api/restaurants/abcdefghijklmno456?locale=fr+ リクエストボディに属性を渡す |
| ドキュメントの特定ロケール版だけを削除 | DELETE /api/restaurants/abcdefghijklmno456?locale=fr |
| 用途 | 構文の例 (詳細へのリンク) |
|---|---|
| ドキュメントの特定ロケール版を取得 | GET /api/homepage?locale=fr |
| 既存ドキュメントの新規ロケール版を作成、または既存のロケール版を更新 | PUT /api/homepage?locale=fr+ リクエストボディに属性を渡す |
| ドキュメントの特定ロケール版だけを削除 | DELETE /api/homepage?locale=fr |
GET 特定ロケールのドキュメント一覧を取得
GET http://localhost:1337/api/restaurants?locale=fr
{
"data": [
{
"id": 5,
"documentId": "h90lgohlzfpjf3bvan72mzll",
"Title": "Meilleures pizzas",
"Body": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"text": "On déguste les meilleures pizzas de la ville à la Pizzeria Arrivederci."
}
]
}
],
"createdAt": "2024-03-06T22:08:59.643Z",
"updatedAt": "2024-03-06T22:10:21.127Z",
"publishedAt": "2024-03-06T22:10:21.130Z",
"locale": "fr"
}
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 25,
"pageCount": 1,
"total": 1
}
}
}
GET 特定ロケールのドキュメントを 1 件取得
指定ロケールのドキュメントを取得するには、クエリに locale を付けます。
| 用途 | 構文と詳細へのリンク |
|---|---|
| コレクションタイプ | GET /api/content-type-plural-name/document-id?locale=locale-code |
| シングルタイプ | GET /api/content-type-singular-name?locale=locale-code |
コレクションタイプ
コレクションタイプで、指定ロケールの特定ドキュメ ントを取得するには、documentId のあとに locale を付けます。
GET /api/restaurants/lr5wju2og49bf820kj9kz8c3?locale=fr
{
"data": [
{
"id": 22,
"documentId": "lr5wju2og49bf820kj9kz8c3",
"Name": "Biscotte Restaurant",
"Description": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"text": "Bienvenue au restaurant Biscotte! Le Restaurant Biscotte propose une cuisine à base de produits frais et de qualité, souvent locaux, biologiques lorsque cela est possible, et toujours produits par des producteurs passionnés."
}
]
}
],
// …
"locale": "fr"
},
// …
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 25,
"pageCount": 1,
"total": 3
}
}
}
シングルタイプ
シングルタイプで、指定ロケールのドキュメントを取得するには、シングルタイプ名のあとに locale を付けます。
GET /api/homepage?locale=fr
{
"data": {
"id": 10,
"documentId": "ukbpbnu8kbutpn98rsanyi50",
"Title": "Page d'accueil",
"Body": null,
"createdAt": "2024-03-07T13:28:26.349Z",
"updatedAt": "2024-03-07T13:28:26.349Z",
"publishedAt": "2024-03-07T13:28:26.353Z",
"locale": "fr"
},
"meta": {}
}
POST コレクションタイプ向けにローカライズされたドキュメントを新規作成
ゼロからローカライズされたドキュメントを作るには Content API に POST します。既定ロケール用か別ロケール用かで、クエリに locale が必要かどうかが変わります。
| 用途 | 構文と詳細へのリンク |
|---|---|
| 既定ロケール向けに作成 | POST /api/content-type-plural-name |
| 特定ロケール向けに作成 | POST /api/content-type-plural-name?locale=fr |
既定ロケール向け
リクエストボディにロケールを渡さない場合、ドキュメントはアプリの既定ロケールで作成されます。
POST http://localhost:1337/api/restaurants
{
"data": {
"Name": "Oplato",
}
}
{
"data": {
"id": 13,
"documentId": "jae8klabhuucbkgfe2xxc5dj",
"Name": "Oplato",
"Description": null,
"createdAt": "2024-03-06T22:19:54.646Z",
"updatedAt": "2024-03-06T22:19:54.646Z",
"publishedAt": "2024-03-06T22:19:54.649Z",
"locale": "en"
},
"meta": {}
}
特定ロケール向け
既定以外のロケール用エントリを作るには、POST のクエリ URL に locale を付けます。
POST http://localhost:1337/api/restaurants?locale=fr
{
"data": {
"Name": "She's Cake"
}
}
{
"data": {
"id": 15,
"documentId": "ldcmn698iams5nuaehj69j5o",
"Name": "She's Cake",
"Description": null,
"createdAt": "2024-03-06T22:21:18.373Z",
"updatedAt": "2024-03-06T22:21:18.373Z",
"publishedAt": "2024-03-06T22:21:18.378Z",
"locale": "fr"
},
"meta": {}
}
PUT 既存ドキュメントのロケール版を新規作成または更新
既存ドキュメントへの PUT では次ができます。
- 別ロケール版のドキュメントを新規に作る
- 既存のロケール版を更新する
適切な URL に PUT し、クエリに locale=ロケールコード を付け、ボディの data に属性を渡します。
| 用途 | 構文と詳細へのリンク |
|---|---|
| コレクションタイプ | PUT /api/content-type-plural-name/document-id?locale=locale-code |
| シングルタイプ | PUT /api/content-type-singular-name?locale=locale-code |
既存のローカライズ済みエントリに別ロケールを追加するとき、リクエストボディではローカライズ対象のフィールドのみ受け付けます。
コンテンツタイプで createLocalization 権限 が有効である必要があります。無効だと 403: Forbidden になります。
既存のローカライズ済みエントリのロケール自体は変更できません。更新時にボディで locale 属性を送っても無視されます。
コレクションタイプ
コレクションタイプの既存ドキュメントに新しいロケールを追加するには、documentId のあとに locale を付け、ボディにデータを渡します。
PUT http://localhost:1337/api/restaurants/lr5wju2og49bf820kj9kz8c3?locale=fr
{
"data": {
"Name": "She's Cake in French"
}
}
{
"data": {
"id": 19,
"documentId": "lr5wju2og49bf820kj9kz8c3",
"Name": "She's Cake in French",
"Description": null,
"createdAt": "2024-03-07T12:13:09.551Z",
"updatedAt": "2024-03-07T12:13:09.551Z",
"publishedAt": "2024-03-07T12:13:09.554Z",
"locale": "fr"
},
"meta": {}
}
シングルタイプ
シングルタイプの既存ドキュメントに新しいロケールを追加するには、シングルタイプ名のあとに locale を付け、ボディにデータを渡します。
PUT http://localhost:1337/api/homepage?locale=fr
{
"data": {
"Title": "Page d'accueil"
}
}
{
"data": {
"id": 10,
"documentId": "ukbpbnu8kbutpn98rsanyi50",
"Title": "Page d'accueil",
"Body": null,
"createdAt": "2024-03-07T13:28:26.349Z",
"updatedAt": "2024-03-07T13:28:26.349Z",
"publishedAt": "2024-03-07T13:28:26.353Z",
"locale": "fr"
},
"meta": {}
}
DELETE ドキュメントの特定ロケール版を削除
ドキュメントの特定ロケール版だけを削除するには、適切な locale 付きで DELETE を送ります。
成功時、DELETE は HTTP ステータス 204 のみを返し、レスポンスボディは空です。
コレクションタイプ
コレクションタイプで特定ロケール版だけを削除するには、documentId のあとに locale を付けます。
DELETE /api/restaurants/abcdefghijklmno456?locale=fr
シングルタイプ
シングルタイプで特定ロケール版だけを削除するには、シングルタイプ名のあとに locale を付けます。
DELETE /api/homepage?locale=fr