localization
GET /v1/i18n/catalogues/{locale}
Get the public site's UI message catalogue for one locale.
身份验证
此端点是公开的。它不需要任何凭据或组织——这是我们自己的营销网站和 AI 问答引擎所读取的内容。
此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X GET https://api.zinndigital.com/v1/i18n/catalogues/{locale}已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
Returns the Zinn® marketing site's own UI strings for locale, nested in the shape next-intl consumes directly — the read marketplace-web performs on the server at render time. Public, and non-tenant. Unlike getTranslationBundle this needs no credential and has no organization scope: it returns the platform's own strings, which are already present in the public HTML of every page in that language. That is also what makes it cacheable by URL at the edge — an Authorization header suppresses shared caching, which would put a network round trip on every page render. Why it exists next to getTranslationBundle. The bundle is the build-time read: authenticated, tenant-scoped, and shaped as object_ref → field → {text, status} for a script that re-nests it and commits messages/<locale>.json. That made a finished translation wait for a commit, a rebuild and a deploy. This is the render-time read, so a finished translation goes live on its own. up_to_date only — deliberately stricter than the bundle's last-good-while-stale rule. The site layers this response over its committed catalogue, so an omitted key falls back to the committed translation rather than to English; serving stale text here could only replace a good translation with an older one. An unknown-to-the-pipeline locale is a 200 with an empty messages object, never a 404. The caller treats any failure as "use the committed catalogue", so a 404 would be indistinguishable from an outage and would report a locale that simply has not been translated yet as the engine being broken. Cacheable: strong ETag plus Cache-Control: public, max-age=300, stale-while-revalidate=86400. Send If-None-Match for a 304.
参数
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
locale (path) | LocaleCode | 是 | The target locale (docs/28 registry code). |
If-None-Match (header) | string | 否 | A previously returned ETag; a match responds 304. |
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
locale | LocaleCode | 是 | BCP-47 / ISO locale code from the language registry (docs/28). |
messages | object | 是 | The catalogue, nested — nav.link.pbn arrives as three levels of object, not as a dotted key — because the consumer is next-intl, which reads this shape directly. It is the… |
此端点可能返回的错误
422 · 429