Encuentre los formatos de archivo y los idiomas compatibles mediante la API
Utilice estos endpoints de la API para descubrir qué formatos de archivo de origen y qué idiomas de destino admite su proyecto antes de crear trabajos de traducción.
Con estos endpoints, puede consultar:
- Idiomas de destino disponibles para su proyecto (con códigos ISO)
- Formatos de archivo de origen que puede subir, además de cualquier formato de archivo de salida adicional que PTC pueda generar para esos archivos
Todos los endpoints requieren un token de API válido:
Authorization: Bearer YOUR_API_TOKENEnlaces rápidos de la API
Listar todos los idiomas de destino
Recupera la lista de idiomas a los que se puede traducir su proyecto. También puede utilizar este endpoint 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/languagesParámetros
Este endpoint no acepta ningún parámetro.
Respuestas
Respuesta exitosa
{
"languages": [
{
"id": 123,
"iso": "es",
"name": "Spanish"
},
{
"id": 124,
"iso": "fr",
"name": "French"
},
{
"id": 125,
"iso": "de",
"name": "German"
}
]
}Esquema de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
languages |
array[object] | El array de objetos de idiomas de destino configurados para este proyecto. |
languages[].id |
integer | El identificador único para el idioma. |
languages[].iso |
string | El código del idioma (por ejemplo, en, es, fr). La mayoría son ISO 639-1, pero no todos: la lista también incluye subetiquetas regionales y de sistemas de escritura como pt-BR, pt-PT y zh-Hans. Las mayúsculas y minúsculas son importantes; haga coincidir los códigos que devuelve este endpoint en lugar de convertirlos a minúsculas. |
languages[].name |
string | El nombre legible por humanos del idioma. |
El código en la ruta de un archivo es una cuestión distinta del código en esta respuesta. Cuando output_file_path contiene {{lang}}, PTC sustituye la asignación de idioma configurada en el proyecto para ese idioma, recurriendo al código del sistema cuando no hay ninguna asignación configurada. Un proyecto que asigna el alemán a deutsch escribe deutsch en la ruta, mientras que este endpoint sigue devolviendo de, y ambos son correctos.
Respuestas de error
No autorizado
{
"error": "Unauthorized access. Please provide a valid API token."
}Prohibido
{
"error": "Access denied. Insufficient permissions."
}Solicitudes de ejemplo
Solicitud básica:
curl -X GET "https://app.ptc.wpml.org/api/v1/languages" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"Ejemplos de código
curl -X GET "https://app.ptc.wpml.org/api/v1/languages" \
-H "Authorization: Bearer YOUR_API_TOKEN"require 'net/http'
require 'uri'
uri = URI('https://app.ptc.wpml.org/api/v1/languages')
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)
require 'json'
data = JSON.parse(response.body)
data['languages'].each { |lang| puts "- #{lang['name']} (#{lang['iso']})" }import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN'
}
response = requests.get('https://app.ptc.wpml.org/api/v1/languages', headers=headers)
data = response.json()
for language in data['languages']:
print(f"- {language['name']} ({language['iso']})")<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://app.ptc.wpml.org/api/v1/languages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_TOKEN'
],
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
foreach ($data['languages'] as $language) {
echo "- {$language['name']} ({$language['iso']})\n";
}
?>import okhttp3.*;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://app.ptc.wpml.org/api/v1/languages")
.addHeader("Authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://app.ptc.wpml.org/api/v1/languages", nil)
req.Header.Add("Authorization", "Bearer YOUR_API_TOKEN")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
using System;
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/languages");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);const axios = require('axios');
const response = await axios.get('https://app.ptc.wpml.org/api/v1/languages', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});
response.data.languages.forEach(lang => {
console.log(`- ${lang.name} (${lang.iso})`);
});Listar los formatos de archivo compatibles
Recupera todas las extensiones de archivo de origen que puede subir a 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_extensionsParámetros
Este endpoint no acepta ningún parámetro.
Respuestas
Respuesta exitosa
{
"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 la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
extensions |
array | Un array de objetos de extensiones de archivo compatibles. |
extensions[].extension |
string | La extensión de archivo, sin el punto. |
extensions[].additional_translation_files |
array | Un array de formatos de salida adicionales disponibles para este tipo de extensión. |
Archivos de traducción adicionales
Algunos tipos de archivos pueden generar archivos de traducción adicionales en otros formatos. Por ejemplo, los archivos PO y POT pueden producir:
mo: archivos gettext compilados, que muchas aplicaciones utilizan para una carga más rápidawp: archivos de traducción de JavaScript que se utilizan en WordPress para la internacionalización del lado del clientephp: archivos de traducción almacenados como arrays de 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"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.bodyimport 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())<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://app.ptc.wpml.org/api/v1/source_files/supported_extensions',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_TOKEN'
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
?>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();
System.out.println(response.body().string());package main
import (
"fmt"
"io"
"net/http"
)
func main() {
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, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
using System;
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();
Console.WriteLine(content);const axios = require('axios');
const response = await axios.get('https://app.ptc.wpml.org/api/v1/source_files/supported_extensions', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});
console.log(response.data);