Encuentre los formatos de archivo y los idiomas compatibles a través de la API.

Utilice estos puntos de conexión de la API para descubrir qué formatos de archivo de origen e idiomas de destino admite su proyecto antes de crear trabajos de traducción.

Mediante estos puntos de conexión, puede consultar:

  • Idiomas de destino disponibles para su proyecto (con códigos ISO)
  • Formatos de archivo de origen que puede cargar, además de cualquier formato de salida de traducción adicional que PTC pueda generar para esos archivos

Todos los puntos de conexión requieren un token de API válido:

Authorization: Bearer YOUR_API_TOKEN

Listar todos los idiomas de destino

Recupera la lista de idiomas a los que se puede traducir su proyecto. También puede utilizar este punto de conexión para obtener los códigos ISO correctos al crear trabajos de traducción de contenido.

Solicitud HTTP

GET https://app.ptc.wpml.org/api/v1/languages

Parámetros

Este punto de conexión no acepta ningún parámetro.

Respuestas

Respuesta correcta

  • Código: 200 OK
  • Tipo de contenido: application/json
{
  "languages": [
    {
      "id": 123,
      "iso": "es",
      "name": "Spanish"
    },
    {
      "id": 124,
      "iso": "fr", 
      "name": "French"
    },
    {
      "id": 125,
      "iso": "de",
      "name": "German"
    }
  ]
}
Esquema de respuesta
CampoTipoDescripción
languagesarray[object]La matriz de objetos de idioma de destino configurados para este proyecto.
languages[].identeroEl identificador único del idioma.
languages[].isocadenaEl código de idioma ISO 639-1 (p. ej., en, es, fr).
languages[].namecadenaEl nombre legible del idioma.

Respuestas de error

No autorizado
  • Código: 401 Unauthorized
{
  "error": "Unauthorized access. Please provide a valid API token."
}
Prohibido
  • Código: 403 Forbidden
{
  "error": "Access denied. Insufficient permissions."
}

Ejemplo de solicitudes

Solicitud básica:

curl -X GET "https://app.ptc.wpml.org/api/v1/languages" \
  -H "Content-Type: application/json"

Ejemplos de código

const response = await fetch('https://app.ptc.wpml.org/api/v1/languages', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
});

const data = await response.json();
console.log('Available target languages:', data.languages);

// Get language codes only
const languageCodes = data.languages.map(lang => lang.iso);
console.log('Language codes:', languageCodes);
import requests

headers = {
    'Content-Type': 'application/json'
}

response = requests.get('https://app.ptc.wpml.org/api/v1/languages', headers=headers)
data = response.json()

print("Available target languages:")
for language in data['languages']:
    print(f"- {language['name']} ({language['iso']})")

# Get language codes for API calls
language_ids = [lang['id'] for lang in data['languages']]
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://app.ptc.wpml.org/api/v1/languages',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json'
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);

echo "Available target languages:\n";
foreach ($data['languages'] as $language) {
    echo "- {$language['name']} ({$language['iso']})\n";
}
?>
const axios = require('axios');

const response = await axios.get('https://app.ptc.wpml.org/api/v1/languages', {
  headers: {
    'Content-Type': 'application/json'
  }
});

console.log('Available target languages:');
response.data.languages.forEach(language => {
  console.log(`- ${language.name} (${language.iso})`);
});

// Create a lookup map
const languageMap = response.data.languages.reduce((map, lang) => {
  map[lang.iso] = lang;
  return map;
}, {});

Listar los formatos de archivo compatibles

Recupera todas las extensiones de archivo de origen que puede cargar en PTC, junto con cualquier archivo de traducción adicional que PTC pueda generar para esas entradas.

Solicitud HTTP

GET https://app.ptc.wpml.org/api/v1/source_files/supported_extensions

Parámetros

Este punto de conexión no acepta ningún parámetro.

Respuestas

Respuesta correcta

  • Código: 200 OK
  • Tipo de contenido: application/json
{
  "extensions": [
    {
      "extension": "po",
      "additional_translation_files": ["mo", "wp", "php"]
    },
    {
      "extension": "pot", 
      "additional_translation_files": ["mo", "wp", "php"]
    },
    {
      "extension": "json",
      "additional_translation_files": []
    },
    {
      "extension": "yml",
      "additional_translation_files": []
    }
    //...
  ]
}
Esquema de respuesta
CampoTipoDescripción
extensionsarrayUna matriz de objetos de extensión de archivo compatibles.
extensions[].extensioncadenaLa extensión de archivo, sin el punto.
extensions[].additional_translation_filesarrayUna matriz de formatos de salida adicionales disponibles para este tipo de extensión.
Archivos de traducción adicionales

Algunos tipos de archivo pueden generar archivos de traducción adicionales en otros formatos. Por ejemplo, los archivos PO y POT pueden producir:

  • mo – Archivos gettext compilados, utilizados por muchas aplicaciones para una carga más rápida
  • wp – Archivos de traducción de JavaScript utilizados en WordPress para la internacionalización del lado del cliente
  • php – Archivos de traducción almacenados como matrices PHP

Ejemplos de código

curl -X GET "https://app.ptc.wpml.org/api/v1/source_files/supported_extensions" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
using System.Net.Http;
using System.Threading.Tasks;

var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "YOUR_API_TOKEN");

var response = await client.GetAsync("https://app.ptc.wpml.org/api/v1/source_files/supported_extensions");
var content = await response.Content.ReadAsStringAsync();
const https = require('https');

const options = {
  hostname: 'app.ptc.wpml.org',
  path: '/api/v1/source_files/supported_extensions',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => { data += chunk; });
  res.on('end', () => { console.log(JSON.parse(data)); });
});

req.end();
$.ajax({
  url: 'https://app.ptc.wpml.org/api/v1/source_files/supported_extensions',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN'
  },
  success: function(data) {
    console.log(data);
  }
});
import okhttp3.*;

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://app.ptc.wpml.org/api/v1/source_files/supported_extensions")
  .addHeader("Authorization", "Bearer YOUR_API_TOKEN")
  .build();

Response response = client.newCall(request).execute();
String responseBody = response.body().string();
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://app.ptc.wpml.org/api/v1/source_files/supported_extensions", nil)
    req.Header.Add("Authorization", "Bearer YOUR_API_TOKEN")
    
    resp, _ := client.Do(req)
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://app.ptc.wpml.org/api/v1/source_files/supported_extensions',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer YOUR_API_TOKEN'
  ),
));

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_TOKEN'
}

response = requests.get('https://app.ptc.wpml.org/api/v1/source_files/supported_extensions', headers=headers)
print(response.json())
require 'net/http'
require 'uri'

uri = URI('https://app.ptc.wpml.org/api/v1/source_files/supported_extensions')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer YOUR_API_TOKEN'

response = http.request(request)
puts response.body

Ir arriba