Upload Translation

Upload existing translations to your Crowdin project.


POST https://api.crowdin.com/api/project/{project-identifier}/upload-translation?key={project-key}


Name Value Description
files required array Translated files array. Array keys should contain file names in Crowdin.
Note! 20 files max are allowed to upload per one time file transfer.
language required string Target language. With a single call it's possible to upload translations for several files but only into one of the languages.
import_duplicates optional bool Defines whether to add translation if there is the same translation previously added. Acceptable values are: 0 or 1. Default is 0.
import_eq_suggestions optional bool Defines whether to add translation if it is equal to source string at Crowdin. Acceptable values are: 0 or 1. Default is 0.
auto_approve_imported optional bool Mark uploaded translations as approved. Acceptable values are: 0 or 1. Default is 0.
format optional string Specify this parameter if translations are uploaded to the project in XLIFF file format. Acceptable value is: xliff
To download XLIFF file for offline translation, apply the Export File method.
branch optional string The name of related version branch (Versions Management).
json optional string May not contain value. Defines that response should be in JSON format.
jsonp optional string Callback function name. Defines that response should be in JSONP format.
project-identifier required string Should contain the project identifier.
project-key required string Project API key.


If successful, this method returns a XML structure, as it is shown below.
<?xml version="1.0" encoding="ISO-8859-1"?>
Unsuccessful response sample:
<?xml version="1.0" encoding="ISO-8859-1"?>
  <message>API key is not valid</message>
The following request is partly successful because for all the file formats that do not have defined structure (such as: Generic XML, HTML, Plain Text, Markdown, OpenOffice, Microsoft Office, Adobe InDesign, Adobe FrameMaker, Webxml) the translations upload is not possible.
<?xml version="1.0" encoding="ISO-8859-1"?>
    <file name="spreadsheet.csv" status="uploaded"></file>
    <file name="webxml.xml" status="not_allowed"></file>


curl \
  -F "files[strings.xml]=@strings.fr.xml" \
  -F "language=fr" \
  -F "auto_approve_imported=1" \
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/upload-translation?key={project-key}';

if (function_exists('curl_file_create')) {
  $post_params['files[test.xml]'] = curl_file_create('/home/crowdin/test.fr.xml');
} else {
  $post_params['files[test.xml]'] = '@/home/crowdin/test.fr.xml';

$post_params['language'] = 'fr';
$post_params['import_eq_suggestions'] = 1;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);

$result = curl_exec($ch);

echo $result;