Translation API

The Translation API is composed of 2 endpoints:

Show Translation

This endpoint is only accessible by the private 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. Note that you can get a JSONP response by adding a ?callback=yourFunctionName parameter to the json API call.

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 of status_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 private 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.

If everything goes well, WebTranslateIt will respond with 201 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.

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", initheader = {'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);
?>