---
title: "Save Translation"
method: PUT
path: "/api/admin/news/{post_id}/translations/{locale}"
tags: ["news"]
---

# Save Translation

`PUT /api/admin/news/{post_id}/translations/{locale}`

## Request

- Base URL: `https://api.getcheapgames.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getcheapgames.com/api/admin/news/{post_id}/translations/{locale}`
- Auth: none declared

The post's translation into `locale`, made or replaced: `title`, `dek`
and `bodyMd`, refused for what the post's own save refuses (the same
limits, the same parser, a `{{price:x}}` or `{{game:x}}` that names no
game). Stamped with the English as it is now (its hash, and the words
themselves as `sourceAtSave`), so a save makes it current.

`sourceHash`, optional: the English's `source.hash` the translator read.
When the English has changed since, the save is a 409 rather than a
translation of text the post no longer has marked current.

## Path parameters

- `post_id` integer, required
- `locale` string, required

## Headers

- `authorization` string

## Request body

- object

## Response `200`

Successful Response

- NewsTranslationOut: One translation of a post, as the Midfeed admin edits it.
  - `locale` string, required
  - `title` string, required
  - `dek` string, required
  - `bodyMd` string, required
  - `readingMinutes` integer, required
  - `status` 'current' | 'outdated', required
  - `updatedAt` string, date-time, required
  - `sourceAtSave` NewsTranslationTextOut, required: A post's English words: its title, summary and body.
    - `title` string, required
    - `dek` string, required
    - `bodyMd` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/getcheapgames/apis/getcheapgames-api.md) · [All operations](https://skmtc.dev/getcheapgames/apis/getcheapgames-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getcheapgames/apis/getcheapgames-api/revisions/962824bb76da?raw)
