Localization
Enable content languages per site. Entry text / textarea / tiptap fields and master labels can be per-locale. The Public API resolves them with ?locale=.
Done state
| Item | State |
|---|---|
| Site locales | ON under Settings → Site, with languages + default locale |
| Fields | text / textarea / tiptap are per-locale (use locale_shared when shared) |
| Public check | ?locale=ja (etc.) returns expected copy |
| Optional | Ran AI locale translation once (Standard+) |
When to use
- Serve the same entry in ja / en (and more)
- Localize master display labels only (
valuestays locale-stable) - Ask an agent to draft translations (Standard+)
Plan limits
| Item | Free | Solo / Standard / Business+ |
|---|---|---|
| Content locales feature | Yes | Yes |
| Max locales | 2 | 3 |
| AI locale translation | No | Standard+ |
Available locale keys: default (English), ja, en (en is dropped when both default and en are present).
Checklist
- [ ] Turned on Settings → Site → Content locales
- [ ] Locale count within plan limit
- [ ] Filled language tabs on an entry and published
- [ ] Filled master
labels for needed locales - [ ] Know AI translation is unavailable on Free / Solo
Do this now
- Enable locales under Settings → Site (e.g. default +
ja) - Edit an entry per language tab and publish
- Verify via Public API
bash
curl "https://api.luno.rest/public/p/{projectId}/v1/form-sets/blog/entries/my-post?locale=ja"
curl "https://api.luno.rest/public/p/{projectId}/v1/master-entities/category/records?locale=ja"ts
const BASE = 'https://api.luno.rest/public/p/{projectId}/v1'
await fetch(`${BASE}/form-sets/blog/entries/my-post?locale=ja`)bash
# Standard+: “Translate this entry to ja” → translate_entry_locales
# Toggling site locales requires tenant_admin JWTNext
| Goal | Page |
|---|---|
| Ops detail | Content management |
| AI assist | AI assist |
| MCP translation | AI Agents guide |
| Pricing & plans | luno.rest |