API REST de contenido (SwiftLing)

Documentación / Desarrolladores

Para un sitio o una aplicación que muestra el contenido de un sitio de WordPress en otro lugar, como interfaz desacoplada o aplicación móvil.

Contenido en un idioma

Las propias rutas de WordPress responden en un idioma cuando se les solicita en ese idioma:

  • en la dirección del idioma: https://example.com/de/wp-json/wp/v2/posts si se usan carpetas por idioma, o en el host propio del idioma si se usan hosts o dominios por idioma;
  • o con ?lang=de, sea cual sea el formato de las direcciones: https://example.com/wp-json/wp/v2/posts?lang=de.

Los títulos, contenidos, extractos, campos, términos y enlaces se devuelven traducidos, como en una página en ese idioma. Solo las solicitudes de lectura se responden en un idioma: GET o HEAD, y no con context=edit. Las solicitudes de escritura, o las que piden el contenido que edita un editor, se responden en el idioma original para que ningún cliente guarde una traducción sobre el original. Las rutas propias de SwiftLing y las de sus complementos (swiftling/v1/…, swiftling-pro/v1/…) nunca se responden en otro idioma.

La API REST de WooCommerce (wc/v3) responde en un idioma igual que las rutas de WordPress; el nombre, la descripción y la descripción corta de un producto se devuelven traducidos. Su Store API, que los bloques del carrito y de finalización de compra consultan desde una página, responde en el idioma de esa página, sea cual sea su dirección: el carrito muestra los nombres de los productos en el idioma del visitante. Los pedidos conservan los nombres tal como se guardaron.

Los idiomas

GET /wp-json/swiftling/v1/languages muestra los idiomas visibles para los visitantes, en el orden de la pantalla Idiomas; los idiomas ocultos para los visitantes no aparecen. Cualquiera puede consultarlo.

[
  { "code": "hr", "locale": "hr", "slug": "hr", "name": "Hrvatski", "original": true,
    "current": true, "direction": "ltr", "flag": "https://…/hr.svg", "url": "https://example.com/" },
  { "code": "de-DE", "locale": "de_DE", "slug": "de", "name": "Deutsch", "original": false,
    "current": false, "direction": "ltr", "flag": "https://…/de.svg", "url": "https://example.com/de/" }
]

code es la etiqueta del idioma, como en hreflang; current es el idioma en el que se responde a la solicitud; url es la página de inicio en ese idioma.

Una entrada o un término en cada idioma

Las entradas de los tipos que traduce SwiftLing y los términos de las taxonomías que traduce incluyen un campo swiftling: el idioma de la respuesta y, para cada idioma visible para los visitantes, su dirección y, en el caso de las entradas, el estado de la traducción (original, reviewed, machine, partial, outdated, missing o duplicate cuando se conserva el original en ese idioma y se muestra la página tal cual). Los idiomas en los que la entrada está oculta se omiten.

"swiftling": {
  "language": "hr",
  "translations": [
    { "code": "hr", "locale": "hr", "url": "https://example.com/kontakt/", "state": "original" },
    { "code": "de-DE", "locale": "de_DE", "url": "https://example.com/de/kontakt/", "state": "reviewed" }
  ]
}