Добавить файл

Please consider that API 2.0 is now the preferred version to be used. The old API will remain fully functional until the end of 2021.

Crowdin API v2

Добавление нового файла в проект Crowdin.

Запрос

Примечание: Используйте комбинацию идентификатора проекта; имени пользователя, и ключа учетной записи, чтобы перейти в эту конечную точку.

POST https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}

Параметры

Название Значение Описание
files обязательный массив Массив файлов, которые нужно добавить в проект Crowdin. Ключи массива должны содержать имена файлов с их адресами в проекте Crowdin.
Внимание! Разрешено загружать не более 20 файлов одновременно. Размер одного файла не более 100 МБ.
titles необязательный массив Массив строк, который определяет названия загружаемых файлов. Ключи массива должны содержать имена файлов с их адресами в проекте Crowdin.
export_patterns необязательный массив Массив строк, определяющий имена обработанных файлов (файлы с переведенной информацией в новом готовом архиве). Ключи массива должны содержать имена файлов с их адресами в проекте Crowdin.
title необязательный строка Допустимые значения:
  • пустое значение или "auto" - попробовать определить тип файла по расширению или типу MIME
  • "android" — Android (*.xml)
  • "macosx" — Mac OS X / iOS (*.strings)
  • "resx" — .NET, Windows Phone (*.resx)
  • "properties" — Java (*.properties)
  • "gettext" — GNU GetText (*.po, *.pot)
  • "yaml" — Ruby On Rails (*.yaml)
  • "рнр" — препроцессор гипертекста (*.php)
  • «json» — типичный JSON (*.json)
  • «xml» — типичный XML (*.xml)
  • "ini" — типичный INI (*.ini)
  • "rc" — Ресурсы Windows (*.rc)
  • "resw" — Windows 8 Metro (*.resw)
  • "resjson" — Windows 8 Metro (*.resjson)
  • "qtts" — Nokia Qt (*.ts)
  • "joomla" — локализуемые ресурсы Joomla (*.ini)
  • "chrome" - расширение Google Chrome (*.json)
  • "dtd" — Mozilla DTD (*.dtd)
  • "dklang" — Delphi DKLang (*.dklang)
  • "flex" — Flex (*.properties)
  • "nsh" — ресурсы установщика NSIS (*.nsh)
  • "wxl" - установщик WiX (*.wxl)
  • "xliff" — XLIFF (*.xliff)
  • "html" — HTML (*.html, *.htm, *.xhtml, *.xhtm)
  • "haml" — Haml (*.haml)
  • "txt" — обычный текст (*.txt)
  • "csv" - значения, разделенные запятыми (*.csv)
  • "md" - Markdown разметка (*.md, *.text, *.markdown...)
  • "flsnp" — MadCap Flare (*.flnsp, .flpgpl .fltoc)
  • "fm_html" — Jekyll HTML (*.html)
  • "fm_md" — Jekyll Markdown разметка(*.md)
  • "mediawiki" — MediaWiki (*.wiki, *.wikitext, *.mediawiki)
  • "docx" — Microsoft Office, OpenOffice.org Documents, Adobe InDesign Adobe FrameMaker(*.docx, *.dotx, *.odt, *.ott, *.xslx, *.xltx, *.pptx, *.potx, *.ods, *.ots, *.odg, *.otg, *.odp, *.otp, *.imdl, *.mif)
  • "sbv" — Youtube .sbv (*.sbv)
  • "vtt" — Видео и WebVTT субтитры (*.vtt)
  • "srt" — SubRip субтитры .srt (*.srt)
  • "i18next_json" — i18следующий JSON (*.json)
first_line_contains_header Только файлы CSV и XLS/XLSX
необязательный
строка Используется при загрузке CSV (или XLS/XLSX) файлов через API. Определяет, следует ли импортировать первую строку, или заголовки колонок уже содержатся. Может не содержать значения.
import_translations только для многоязычных файлов CSV и XLS / XLSX
необязательный
целое Используется при загрузке CSV (или XLS/XLSX) файлов через API. Определяет, что переводы тоже импортируются при импорте файла – 1, или переводы не импортируются – 0. По умолчанию: 1.
scheme Только для файлов CSV и XLS/XLSX
обязательный
строка Примечание: используется только при загрузке CSV (или XLS/XLSX) файла для определения сопоставления столбцов данных.
Приемлемым значением является комбинация следующих констант:
  • «identifier» - столбец содержит строковый идентификатор.
  • «source_phrase» - столбец содержит только исходную строку (в результате строка будет содержать ту же строку).
  • «source_or_translation» - столбец содержит исходную строку, но при экспорте того же столбца должен содержать перевод (также при загрузке существующих переводов значение из этого столбца будет использоваться в качестве переведенной строки).
  • «translation» - столбец содержит переведенную строку (если импортированный файл уже содержит переводы).
  • "context" — столбец содержащий комментарии к исходной строке. Контекстная информация
  • "max_length" — Столбец содержит макс. длину перевода для этой строки.
  • "labels" — Столбец содержит метки.
  • «none» — Не импортировать этот столбец.
Пример параметра, который вам нужно будет добавить: &scheme=identifier,source_or_translation

Примечание: укажите коды языков в схеме, чтобы экспортируемый файл содержал переводы всех целевых языков (например, &scheme=identifier,source_phrase,uk,ru,fr).
branch опциональный строка Название связанной ветки версии (Управление версиями).
json необязательный строка Может не содержать значения. Определяет, что ответ должен быть в формате JSON.
jsonp необязательный строка Название функции обратного вызова. Определяет, что ответ должен быть в формате JSONP.
translate_content Только для XML файлов
необязательный
булево Определяет, переводить ли тексты, размещенные внутри тегов. Допустимые значения: 0 или 1. Значение по умолчанию 1.
translate_attributes Только для XML файлов
необязательный
булево Определяет, переводить ли атрибуты тегов. Допустимые значения: 0 или 1. Значение по умолчанию 1.
content_segmentation Только для XML файлов
необязательный
булево Определяет, следует ли разбивать длинные тексты на более мелкие текстовые сегменты. Допустимые значения: 0 или 1. Значение по умолчанию 1.
Примечание: Когда сегментация содержимого включена, загрузка перевода обрабатывается технологией машинного экспериментального обучения.
translatable_elements Только для XML файлов
необязательный
массив Это массив строк, где каждый элемент является элементом XPath для DOM, который должен быть импортирован.
Приемлемые значения:
  • /path/to/node
  • /path/to/attribute[@attr]
  • //node , node - импортировать каждый узел с именем "node"
  • //[@attr] - импортировать содержимое каждого атрибута с именем "attr"
  • nodeone/nodetwo - импортировать все узлы "nodetwo" (корневой узел указывать не обязательно)
  • /nodeone //nodetwo - импортировать все узлы "nodetwo", игнорируя другие узлы между "nodeone" и "nodetwo"
  • //node[@attr] - импортировать содержимое атрибутов "attr", хранящихся в узлах с именем "node"

Примечание! Если определено, параметры "translate_content" и "translate_attributes" не учитываются при импорте.
escape_quotes Только для файлов. properties
необязательный
целое Определяет, будет ли одинарная кавычка экранирована другой одинарной кавычкой или обратным слешем в экспортированных переводах. Допустимые значения: 0, 1, 2, 3. Значение по умолчанию 3.

0 — Не экранировать одинарные кавычки;
1 — Экранировать одинарные кавычки другими одинарными кавычками;
2 — Экранировать одинарные кавычки бэкслешем (\);
3 — Экранировать одинарные кавычки другими одинарными кавычками только в строках, содержащих переменные ( {0} )
Variables
project-identifier строка Идентификатор проекта.
login строка Ваше имя пользователя в Crowdin.
account-key строка API ключ вашего аккаунта.

Ответ

Если метод успешен, он реагирует со структурой XML, как показано ниже.
<?xml version="1.0" encoding="UTF-8"?>
<success>
  <stats>
    <file file_id="342">
      <name>strings.xml</name>
      <strings>4</strings>
      <words>11</words>
    </file>
  </stats>
</success>
Образец ответа при неудавшемся запросе:
<?xml version=".0" encoding="ISO-8-1"?>
<error>
  <code>3</code>
  <message>API key is not valid</message>
</error>

Примеры

curl \
  -F "files[/directory/arrays.xml]=@arrays.xml" \
  -F "files[strings.xml]=@strings.xml" \
  https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}
curl \
  -F "files[directory/multilingual.csv]=@example.csv" \
  -F "export_patterns[directory/multilingual.csv]=/%locale%/%original_file_name%" \
  -F "titles[directory/multilingual.csv]=Title in Crowdin Project" \
  -F "scheme=identifier,source_phrase,translation" \
  -F "first_line_contains_header=true" \
  https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}
<?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}';

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

$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);
curl_close($ch);

echo $result;
<?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}';

if(function_exists('curl_file_create')) {
  $post_params['files[directory/multilingual.csv]'] = curl_file_create('/home/crowdin/example.csv');
} else {
  $post_params['files[directory/multilingual.csv]'] = '@/home/crowdin/example.csv';
}

$post_params['export_patterns[directory/multilingual.csv]'] = '/translations/%original_file_name%';
$post_params['titles[directory/multilingual.csv]'] = 'Title in Crowdin Project';
$post_params['scheme'] = 'identifier,source_phrase,translation';
$post_params['first_line_contains_header'] = '';

$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);
curl_close($ch);

echo $result;

Была ли эта статья полезной?