TranslatePress 翻訳統合用の API ドキュメント (TP Sync API)
Этот API предоставляет два эндпоинта для работы со строками переводов в плагине TranslatePress. Базовый язык — английский (en_us). すべてのリクエストにはBearerトークンによる認証が必要です(WordPressの管理画面のメニュー"TP Sync"で取得できます)。
ベースURL: https://your-site.com/wp-json/tp-sync/v1/
1. 翻訳する文字列の取得 (GET /keys)
このエンドポイントは、指定された言語の TranslatePress 辞書から文字列のリストを返します。各文字列には ID(形式は, 辞書:{id}), 英語の原文, 現在の翻訳, ステータスとページネーションのメタデータ. ID DESC で並べ替え (新しいものが上). 日付, created_at および updated_at 常に null (SQL では要求されません).
リクエストパラメータ
| パラメーター、 | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
lang |
文字列 | はい | Код языка (например, de ドイツ語用, fr フランス語用). 短いコードは正規化されます (de → de_de). |
— |
ページ |
整数 | いいえ | ページネーション用のページ番号. | 1 |
制限 |
整数 | いいえ | ページあたりの行数 (最小 1、最大 500). | 100 |
updated_since |
文字列 | いいえ | Фильтр по дате обновления (ISO8601, например, 2025-10-01T00:00:00Z). この日付以降に更新された行のみを返します. |
— |
見出し
Authorization: Bearer {токен}(必須)
リクエスト例 (cURL)
curl -X GET "https://your-site.com/wp-json/tp-sync/v1/keys?lang=de&page=1&limit=50&updated_since=2025-10-01T00:00:00Z" \
-H "Authorization: Bearer your-api-token-here"
回答例 (JSON)
{
"keys": [
{
"key_id": "dictionary:123",
"original": "Hello World",
"translated": "Hallo Welt",
"status": 2,
"created_at": null,
"updated_at": null
},
{
"key_id": "dictionary:124",
"original": "Welcome",
"translated": "",
"status": 0,
"created_at": null,
"updated_at": null
}
],
"meta": {
"total_count": 150,
"page": 1,
"limit": 50,
"page_count": 3,
"next_page": "https://your-site.com/wp-json/tp-sync/v1/keys?lang=de&page=2&limit=50&updated_since=2025-10-01T00:00:00Z"
}
}
レスポンス内のフィールドの説明
| フィールド | タイプ | 説明 |
|---|---|---|
key_id |
文字列 | 一意の行 ID: 辞書:{id} id — テーブル内のレコード番号 wp_trp_dictionary_en_us_{lang}). |
オリジナル |
文字列 | 英語の原文. |
翻訳済み |
文字列 | 指定された言語の現在の翻訳(空の場合があります)。 |
ステータス |
整数 | ステータス: 0 — 未翻訳, 1 — 処理中, 2 — 翻訳済み. |
created_at |
文字列 | 作成日 (ISO8601, null — 要求されません). |
updated_at |
文字列 | Дата последнего обновления (ISO8601, null — 要求されません). |
メタデータ (meta)
total_count: 行の総数 (フィルターを考慮).ページ: 現在のページ.制限: ページあたりの上限.page_count=: ページの総数.次の_ページ: URL следующей страницы (null, 最後の場合).
エラー
- 401: Authorization ヘッダーがないか無効です.
- 403: 無効なトークン.
- 404: TranslatePressで言語が見つかりません (テーブルがありません).
2. 翻訳の更新 (POST /translations)
このエンドポイントは、複数の文字列の翻訳を一度に更新します(バッチ)。文字列ID、言語、新しい翻訳を含むオブジェクトの配列が渡されます。ステータスを"翻訳済み" (2) とフィールドに更新します, updated_at.
リクエスト本文 (JSON)
配列 翻訳 オブジェクトあり:
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt"
},
{
"key_id": "dictionary:124",
"language_iso": "de",
"translation": "Willkommen"
}
]
}
設定
| オブジェクト内のフィールド, | タイプ | 必須 | 説明 |
|---|---|---|---|
key_id |
文字列 | はい | 行ID: 辞書:{id} (GET /keys から). |
language_iso |
文字列 | はい | 言語コード (de → de_de, 自動的に正規化されます). |
翻訳 |
文字列 | はい | Новый текст перевода (сохраняется как есть). |
見出し
Authorization: Bearer {токен}(必須)Content-Type: application/json(必須)
リクエスト例 (cURL)
curl -X POST "https://your-site.com/wp-json/tp-sync/v1/translations" \
-H "Authorization: Bearer your-api-token-here" \
-H "Content-Type: application/json" \
-d '{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt"
}
]
}'
回答例 (JSON)
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt",
"modified_at": "2025-10-15T12:00:00Z"
}
],
"errors": [
{
"index": 1,
"key_id": "dictionary:999",
"error": "Key not found in database"
}
]
}
レスポンス内のフィールドの説明
翻訳: 正常に更新された翻訳の配列 (入力データを返します +modified_atISO8601で).エラー(任意, 失敗がある場合): エラーの配列.インデックス: 元の配列内の要素のインデックス.key_id: 問題のある行のID (該当する場合).エラー: エラーテキスト (例: "必須フィールドがありません", "key_id の形式が無効です。期待される形式: dictionary:{id}", "言語が見つかりません", "データベースにキーが見つかりません", "データベースの更新に失敗しました").
エラー
- 400: Неверные данные (пустой/не-массив
翻訳, フィールドの欠如). - 401/403: 認証に関する問題.
- 404: 言語またはキーが見つかりません (テーブル/レコードが存在しません).
対応言語
短いコードは自動的に正規化されます (コード内のマッピングに基づく). 不明なものについては:, {code}_{code} (例, pl → pl_pl).
- en → en_us
- ar → ar
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi → vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- it → it_it
- ja → ja
- pt → pt_pt
- zh → zh_cn
- es → es_es
トークンの取得
- WordPress管理画面: メニュー, TP 同期 → "新しいトークンを生成" ボタン (32文字のトークン, 初回起動時に自動生成されます).
- トークンはオプションに保存されます,
tp_sync_api_token.