Додати файл

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

Запит

Note: Use the combination of project identifier, username, and account key to pass to this endpoint.

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.
type необов'язковий рядок Прийнятними значеннями є:
  • порожнє значення або "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 Resources (*.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" — i18next 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" — стовпець містить макс. довжина перекладу для цього рядка.
  • "none" — не імпортувати цей стовпець.
Приклад параметра, який вам потрібно буде додати: &scheme=identifier,source_or_translation

Примітка: щоб експортований файл містив переклади на всі цільові мови, позначте мовні коди у схемі (наприклад, &scheme=identifier,source_phrase,uk,ru,fr).
branch необов'язковий рядок Назва відповідної гілки версії (Управління версіями).
json необов'язковий рядок Може не містити значення. Визначає те, що відповідь повинна бути в форматі JSON.
jsonp необов'язковий рядок Назва функції зворотного виклику. Визначає те, що відповідь повинна бути в форматі JSONP.
translate_content Тільки для XML файлів
необов'язковий
bool Визначає, чи перекладати тексти, розміщені всередині тегів. Доступні значення: 0 або 1. Значення за замовчуванням 1.
translate_attributes Тільки для XML файлів
необов'язковий
bool Визначає, чи перекладати атрибути тегів. Доступні значення: 0 або 1. Значення за замовчуванням 1.
content_segmentation Тільки для XML файлів
необов'язковий
bool Визначає, чи слід розбивати довгі тексти на більш дрібні текстові сегменти. Доступні значення: 0 або 1. Значення за замовчуванням 1.
Важливо! Ця опція вимикає можливість завантажувати існуючі переклади для файлів XML, коли увімкнена.
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="1.0" encoding="UTF-8"?>
<error>
  <code>3</code>
  <message>Ключ API недійсний</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;

Ця стаття була корисною?