Help
Translation API
The Translation API is composed of 2 endpoints:
- Show Translation — show a translation
- Create Translation — create a translation
🔗Show Translation
This endpoint is accessible by the read-only and read-write Project API key and is used to show a string.
/api/projects/:project_token/strings/:string_id/locales/:locale_code/translations.format [GET]
Where format
is one of xml
, json
or yaml
.
Example response with JSON:
{
"id": 564959,
"locale": "fr",
"text": "Cet utilisateur a déjà été invité",
"status": "status_proofread",
"created_at": "2010-02-11 21:14:19 UTC",
"updated_at": "2011-10-09 08:33:18 UTC",
"version": 11,
"string": {
"id": 140067,
"key": "activerecord.errors.models.invitation.attributes.email.user_already_invited",
"plural": false,
"type": "String",
"dev_comment": null,
"status": "Current"
}
}
text
: The actual translation.status
: Translation status. One ofstatus_proofread
,status_untranslated
,status_unverified
,status_unproofread
,status_hidden
(status from string),status_obsolete
(status from string).version
: Version number of the translation.- Some information from the string are returned as a convenience.
🔗Example Implementation in Ruby
require 'net/http'
http = Net::HTTP.new('webtranslateit.com', 443)
request = Net::HTTP::Post.new('/api/projects/:api_token/strings/:string_id/locales/fr/translations')
http.request(request)
🔗Example Implementation in PHP
<?php
$api_key = "sekret";
$string_id = "1234";
$locale_code = "fr";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "https://webtranslateit.com/api/projects/" . $api_key . "/strings/". $string_id . "/locales/" . $locale_code . "/translations.json");
$response = curl_exec($ch);
$p = json_decode($response, true);
print_r($p);
curl_close($ch);
?>
🔗Create Translation
This endpoint is only accessible by the read-write Project API key and is used to create a new translation.
/api/projects/:project_token/strings/:string_id/locales/:locale_code/translations [POST]
🔗Parameters
A JSON object modelled after the following:
{
"text": "Cet utilisateur a déjà été invité",
"status": "status_proofread",
"minor_change": "true"
}
All fields are optional. If no text
is provided, WebTranslateIt will create an empty translation. Setting minor_change
to true
to a translation in source language won’t flag the target translations as “to verify”.
status
can be one of status_proofread
(proofread), status_unverified
(to verify) or status_unproofread
(to proofread). For more information on the string statuses, check String.
Note that you can also pass a validation
parameter set to "false"
if you don’t want translation validations to take place.
{
"text": "Cet utilisateur a déjà été invité",
"status": "status_proofread",
"validation": "false"
}
If everything goes well, WebTranslateIt will respond with 202 Created
in the header and a JSON representation of the string just created in the body.
Note that updating an existing string is made using this same API, WebTranslateIt creates new versions of that translation.
If the translation cannot be saved due to a validation error, you will get a 406
response status with the following payload:
{
"error": "Error saving translation",
"description": "Validation check failed: the original text does not contain variables, so no variable should be included.",
"request": "https://webtranslateit.com/api/projects/:api_token/strings/:string_id/locales/fr/translations"
}
🔗Example Implementation in Ruby
require 'net/http'
require 'json'
http = Net::HTTP.new('webtranslateit.com', 443)
request = Net::HTTP::Post.new('/api/projects/:api_token/strings/:string_id/locales/fr/translations', { 'Content-Type' => 'application/json' })
request.body = {text: 'Cet user a déjà été invité', status: 'status_proofread' }.to_json
http.request(request)
🔗Example Implementation in PHP
<?php
$api_key = "sekret";
$string_id = "1234";
$locale_code = "fr";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "https://webtranslateit.com/api/projects/" . $api_key . "/strings/". $string_id . "/locales/" . $locale_code . "/translations.json");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("text" => "Cet user a déjà été invité", "status" => "status_proofread"));
$response = curl_exec($ch);
$p = json_decode($response, true);
print_r($p);
curl_close($ch);
?>