Переводчик 3.0: Translate
Этот интерфейс позволяет переводить текст.
Запросить URL-адрес
Отправьте запрос POST
на следующий адрес.
https://api.cognitive.microsofttranslator.com/translate?api-version=3.0
Ознакомьтесь с виртуальная сеть поддержкой выбранной сети и частной конечной точки службы Переводчика.
Параметры запроса
В таблице ниже приведены параметры, которые передаются в строке запроса.
Обязательные параметры
Параметр запроса | Description |
---|---|
api-version | Обязательный параметр. Версия API, запрошенная клиентом. Необходимое значение: 3.0 . |
до | Обязательный параметр. Определяет язык выходного текста. Целевой язык должен быть одним из поддерживаемых языков, включенных в область translation . Например, используйте параметр to=de , чтобы перевести на немецкий. Вы можете одновременно переводить на различные языки, использовав этот параметр в строке запроса несколько раз. Например, используйте параметр to=de&to=it , чтобы перевести на немецкий и итальянский. |
Необязательные параметры
Параметр запроса | Description |
---|---|
from | Необязательный параметр. Определяет язык оригинального текста. Чтобы просмотреть, какие языки доступны для перевода, выполните поиск поддерживаемых языков, используя область translation . Если параметр from не указан, исходный язык определяется автоматически. При использовании функции динамического словаря необходимо использовать параметр from , а не автоматическое определение. Примечание. Функция динамического словаря учитывает регистр. |
textType | Необязательный параметр. Определяет, является ли текст перевода обычным или HTML-текстом. Любой код HTML должен быть полным элементом с правильным форматом. Возможные значения: plain (по умолчанию) или html . |
Категория | Необязательный параметр. Строка, где указано категорию (домен) перевода. Этот параметр позволяет получить переводы из пользовательской системы, созданной с помощью Custom Translator. Чтобы использовать развернутую настраиваемую систему, добавьте идентификатор категории из сведений о проекте Пользовательского переводчика в параметр категории. Значение по умолчанию: general . |
profanityAction | Необязательный параметр. Указывает способ обработки нецензурной лексики в переводе. Возможные значения: NoAction (по умолчанию), Marked или Deleted . Способы работы с нецензурной лексикой см. в этом разделе. |
profanityMarker | Необязательный параметр. Указывает, каким образом нецензурная лексика должна помечаться в переводе. Возможные значения: Asterisk (по умолчанию) или Tag . Способы работы с нецензурной лексикой см. в этом разделе. |
includeAlignment | Необязательный параметр. Указывает, следует ли применять выравнивание из оригинального текста в переводе. Возможные значения: true или false (по умолчанию). |
includeSentenceLength | Необязательный параметр. Указывает, следует ли включать границы предложения оригинального и переведенного текста. Возможные значения: true или false (по умолчанию). |
suggestedFrom | Необязательный параметр. Указывает автоматический язык, если не удается определить язык оригинального текста. Автоопределение языка применяется при опущении параметра from . При сбое suggestedFrom обнаружения предполагается язык. |
fromScript | Необязательный параметр. Указывает сценарий оригинального текста. |
toScript | Необязательный параметр. Указывает скрипт переведенного текста. |
allowFallback | Необязательный параметр. Указывает, что службе разрешено откатиться к общей системе, когда пользовательская система не существует. Возможные значения: true (по умолчанию) или false . allowFallback=false указывает, что для перевода должны использоваться только те обученные для category системы, которые указаны в запросе. Если перевод с языка X на язык Y требует цепочки через язык сводных данных E, то все системы в цепочке (X → E и E → Y) должны быть настраиваемыми и иметь одну и ту же категорию. Если система не найдена с определенной категорией, запрос возвращает код состояния 400. allowFallback=true указывает, что службе разрешено откатиться к общей системе, когда пользовательская система не существует. |
Заголовки запроса:
Заголовки | Description |
---|---|
Заголовки проверки подлинности | Обязательный заголовок запроса. См. описание доступных способов проверки подлинности. |
Тип контента | Обязательный заголовок запроса. Указывает тип содержимого для полезных данных. Допустимое значение: application/json; charset=UTF-8 . |
content-length: 0 | Необязательно. Длина текста запроса. |
X-ClientTraceId | Необязательно. Созданный клиентом идентификатор GUID, позволяющий уникально идентифицировать запрос. Этот заголовок можно опустить, если в строке запроса указан идентификатор трассировки в параметре с именем ClientTraceId . |
Текст запроса
Текст запроса является массивом в формате JSON. Каждый элемент этого массива представляет собой объект JSON со строковым свойством Text
, который являет собой строку для перевода.
[
{"Text":"I would really like to drive your car around the block a few times."}
]
Сведения об ограничениях символов и массивов см. в разделе "Ограничения запросов".
Текст ответа
Успешный ответ возвращается в формате массива JSON с одним результатом для каждой строки входного массива. Объект результата содержит следующие свойства.
detectedLanguage
— объект, описывающий распознанный язык с помощью следующих свойств:language
— строку, которая представляет код обнаруженного языка.score
— значение с плавающей запятой, обозначающее достоверность результата. Может принимать ноль или единицу, где низкая оценка обозначает низкую достоверность.
Свойство
detectedLanguage
присутствует в объекте результата исключительно при запросе автоопределения языка.translations
— массив результатов перевода. Размер массива совпадает с количеством языков, указанных с помощью параметра запросаto
. Каждый элемент массива содержит:to
— строка, которая содержит код целевого языка.text
— строка с текстом перевода.transliteration
— объект, который возвращает переведенный текст в сценарии, указанном в параметреtoScript
.script
— строка, которая указывает целевой сценарий.text
— строка, которая возвращает целевой текст в целевом сценарии.
Если не выполняется транслитерация, объект
transliteration
не включается.alignment
— объект с одним свойством строкиproj
, который преобразовывает оригинальный текст в переведенный. Сведения о выравнивании предоставляются, только когда параметр запросаincludeAlignment
имеет значениеtrue
. Сведения о выравнивании возвращаются в виде строкового значения в следующем формате:[[SourceTextStartIndex]:[SourceTextEndIndex]–[TgtTextStartIndex]:[TgtTextEndIndex]]
. Двоеточие разделяет начальный и конечный индексы, дефис — языки, а пробел — слова. Одно слово может выровняться с нулевым, одним или несколькими словами на другом языке, а выровненные слова могут быть неконтентными. Если сведения о выравнивании недоступны, элемент выравнивания пуст. Примеры и ограничения см. в разделе Получение сведений о выравнивании.
sentLen
— объект, возвращающий границы предложения в оригинальном и переведенном текстах.srcSentLen
— массив целых чисел, представляющих значения длины предложений в оригинальном тексте. Длина массива соответствует количеству предложений, а значения — длине каждого предложения.transSentLen
: массив целых чисел, представляющих значения длины предложений в переведенном тексте. Длина массива соответствует количеству предложений, а значения — длине каждого предложения.
Границы предложения включены только тогда, когда параметр запроса
includeSentenceLength
имеет значениеtrue
.
sourceText
— объект с одним свойством строкиtext
, который возвращает оригинальный текст в сценарии по умолчанию исходного языка.sourceText
свойство присутствует только в том случае, если входные данные выражаются в сценарии, который не является обычным для этого языка. Например, если входные данные были арабскими, написанными на латинице, тоsourceText.text
будет тот же арабский текст, преобразованный в арабский скрипт..
Примеры ответов JSON приведены в разделе примеры.
Заголовки ответа
Заголовки | Description |
---|---|
X-requestid | Значение, созданное службой для определения запроса, используемого для устранения неполадок. |
X-mt-system | Указывает тип системы, который использовался для перевода каждого целевого языка, запрошенного для перевода. Это значение представляет собой список строк, разделенных запятыми. Каждая строка указывает тип: Custom — Request включает настраиваемую систему и по крайней мере одну пользовательскую систему, используемую во время перевода. Команда — все остальные запросы |
X-metered-usage | Указывает потребление (количество символов, для которых взимается плата пользователя) для запроса задания перевода. Например, если слово "Hello" переведено с английского языка (en) на французский (fr), это поле возвращает значение 5 . |
Коды состояния ответа
Ниже приведены возможные коды состояния HTTP, которые возвращает запрос.
Код состояния | Description |
---|---|
200 | Успех. |
400 | Один из параметров запроса отсутствует или имеет недопустимое значение. Исправьте параметры запроса и повторите попытку. |
401 | Не удалось выполнить аутентификацию запроса. Убедитесь, что указаны допустимые учетные данные. |
403 | Запрос не авторизован. Подробные сведения можно найти в сообщении об ошибке. Этот код состояния часто указывает, что вы использовали все бесплатные переводы, предоставляемые пробной подпиской. |
408 | Не удалось выполнить запрос, так как отсутствует ресурс. Подробные сведения можно найти в сообщении об ошибке. Если запрос включает пользовательскую категорию, этот код состояния часто указывает, что пользовательская система перевода пока недоступна для обслуживания запросов. Запрос необходимо повторить после периода ожидания (например, 1 минута). |
429 | Сервер отклонил запрос, так как клиент превысил ограничения запроса. |
500 | Произошла непредвиденная ошибка. Если ошибка сохраняется, передайте отчет о ней, включив следующие данные: дата и время сбоя, идентификатор запроса из заголовка ответа X-RequestId и идентификатор клиента из заголовка запроса X-ClientTraceId. |
503 | Сервер временно недоступен. Повторите запрос. Если ошибка сохраняется, передайте отчет о ней, включив следующие данные: дата и время сбоя, идентификатор запроса из заголовка ответа X-RequestId и идентификатор клиента из заголовка запроса X-ClientTraceId. |
Если возникает ошибка, запрос возвращает ответ на ошибку JSON. Код ошибки представляет собой число из 6 знаков, первые 3 из которых являются кодом состояния HTTP, а оставшиеся 3 цифры определяют категорию ошибки. Коды распространенных ошибок можно найти на справочной странице переводчика версии 3.
Примеры
Перевод отдельного элемента
В этом примере показано, как перевести одно предложение с английского языка на упрощенный китайский.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
Текст ответа:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
}
]
Массив translations
содержит один элемент, который обеспечивает перевод одного элемента текста в оригинальных данных.
Перевод одного ввода с автоопределением языка
В этом примере показано, как перевести одно предложение с английского языка на упрощенный китайский. В запросе не указан язык ввода. Вместо этого используется автоматическое определение исходного языка.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
Текст ответа:
[
{
"detectedLanguage": {"language": "en", "score": 1.0},
"translations":[
{"text": "你好, 你叫什么名字?", "to": "zh-Hans"}
]
}
]
Ответ похож на ответ из предыдущего примера. Поскольку было запрошено автоматическое определение языка, ответ также включает информацию о языке, обнаруженном для входящего текста. Функция автоопределения языка лучше работает при вводе более длинного текста.
Перевод методом транслитерации
Давайте расширим предыдущий пример, добавив метод транслитерации. В следующем запросе используется китайский текст, написанный латинским алфавитом.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=zh-Hans&toScript=Latn" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
Текст ответа:
[
{
"detectedLanguage":{"language":"en","score":1.0},
"translations":[
{
"text":"你好, 你叫什么名字?",
"transliteration":{"script":"Latn", "text":"nǐ hǎo , nǐ jiào shén me míng zì ?"},
"to":"zh-Hans"
}
]
}
]
Результат перевода теперь включает свойство transliteration
, которое возвращает переведенный текст, написанный символами латиницы.
Перевод нескольких фрагментов текста
Одновременный перевод нескольких строк — это просто вопрос задания массива строк в тексте запроса.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}, {'Text':'I am fine, thank you.'}]"
Ответ содержит перевод всех фрагментов текста в том же порядке, что и в запросе. Текст ответа:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
},
{
"translations":[
{"text":"我很好,谢谢你。","to":"zh-Hans"}
]
}
]
Перевод на несколько языков
В этом примере показано, как перевести одинаковый оригинальный текст на несколько языков в одном запросе.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
Текст ответа:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"},
{"text":"Hallo, was ist dein Name?","to":"de"}
]
}
]
Работа с нецензурной лексикой
Как правило, служба переводчика сохраняет ненормативную лексику, которая присутствует в источнике в переводе. Степень ненормативной лексики и контекста, который делает слова ненормальными в разных языках, и в результате степень ненормативной лексики на целевом языке может быть усилена или сокращена.
Если необходимо избежать появления ненормативной лексики при переводе (независимо от наличия ненормативной лексики в источнике), можно использовать параметр фильтрации ненормативной лексики. Этот параметр позволяет выбрать, следует ли просматривать удаленную ненормативную лексику, помеченную соответствующими тегами (предоставляя возможность добавления собственной после обработки) или без действий. Допустимые значения ProfanityAction
: Deleted
, Marked
и NoAction
(по умолчанию).
Принятое значение ProfanityAction | Значение ProfanityMarker | Действие | Пример: исходный язык — испанский | Пример: Целевой объект — английский |
---|---|---|---|---|
NoAction | По умолчанию. Аналогично отсутствию параметра. Ненормативная лексика переходит из источника в целевой объект. | Que coche de <Insert-profane-word> |
Какая <insert-profane-word> машина | |
Marked | Asterisk | Звездочки заменяют ненормативные слова (по умолчанию). | Que coche de <Insert-profane-word> |
Какая *** машина |
Marked | Тег | Ненормативная лексика выделяется тегами XML <profanity>…</profanity>. | Que coche de <Insert-profane-word> |
Какая <profanity><insert-profane-word></profanity> машина |
Удаленная | Оскорбительные слова удаляются из выходных данных без замены. | Que coche de <Insert-profane-word> |
Какая машина |
В приведенных выше примерах <insert-profane-word> является заполнителем для ненормативной лексики.
Например:
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=de&profanityAction=Marked" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'This is an <expletive> good idea.'}]"
Данный запрос возвращает:
[
{
"translations":[
{"text":"Das ist eine *** gute Idee.","to":"de"}
]
}
]
Сравнение:
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=de&profanityAction=Marked&profanityMarker=Tag" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'This is an <expletive> good idea.'}]"
Последний запрос возвращает:
[
{
"translations":[
{"text":"Das ist eine <profanity>verdammt</profanity> gute Idee.","to":"de"}
]
}
]
Перевод содержимого, включающее разметку
Обычно переводят содержимое, которое включает разметку, например содержимое HTML-страницы или содержимое XML-документа. Включите параметр запроса textType=html
при переводе содержимого с тегами. Кроме того, иногда бывает полезно исключить из перевода конкретное содержимое. С помощью атрибута class=notranslate
можно указать содержимое, которое должно остаться не переведенным. В следующем примере содержимое внутри первого div
элемента не преобразуется, а содержимое второго div
элемента преобразуется.
<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>
Пример запроса приведен ниже.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans&textType=html" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'<div class=\"notranslate\">This will not be translated.</div><div>This will be translated.</div>'}]"
Ответ:
[
{
"translations":[
{"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
]
}
]
Получить сведения о выравнивании
Сведения о сопоставлении возвращаются в виде строкового значения в следующем формате для каждого слова источника. Сведения о каждом слове разделяются пробелом, в том числе в языках (системах письменности) без разделения пробелами, таких как китайский:
[[SourceTextStartIndex]:[SourceTextEndIndex]–[TgtTextStartIndex]:[TgtTextEndIndex]] *
Пример строки со сведениями о сопоставлении: 0:0-7:10 1:2-11:20 3:4-0:3 3:4-4:6 5:5-21:21.
Иными словами, двоеточие разделяет начальный и конечный индексы, дефис — языки, а пробел — слова. Одно слово может выровняться с нулевым, одним или несколькими словами на другом языке, а выровненные слова могут быть неконтентными. Если сведения о выравнивании недоступны, элемент Alignment пуст. В этом случае метод не возвращает ошибку.
Чтобы получить сведения о выравнивании, укажите параметр includeAlignment=true
в строке запроса.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=fr&includeAlignment=true" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The answer lies in machine translation.'}]"
Ответ:
[
{
"translations":[
{
"text":"La réponse se trouve dans la traduction automatique.",
"to":"fr",
"alignment":{"proj":"0:2-0:1 4:9-3:9 11:14-11:19 16:17-21:24 19:25-40:50 27:37-29:38 38:38-51:51"}
}
]
}
]
Сведения о выравнивании начинаются со строки 0:2-0:1
. Это значит, что первые три символа в исходном тексте (The
) сопоставляются с двумя первыми символами в переведенном тексте (La
).
Ограничения
Получение сведений о выравнивании является экспериментальной функцией, которую мы включили для создания прототипов исследований и взаимодействия с потенциальными сопоставлениями фраз. Вот некоторые из заметных ограничений, при которых выравнивания не поддерживаются:
- Выравнивание недоступно для текста в формате HTML, т. е. textType=html.
- Выравнивание возвращается только для подмножества языковых пар:
- Английский на любой другой язык, кроме китайского традиционного, кантонского (традиционного) или сербского (кириллица)
- от японского до корейского или из корейского на японский
- от японского до китайского упрощенного и китайского упрощенного на японский
- от китайского упрощенного до китайского традиционного и китайского традиционного на китайский упрощенный
- Если предложение является консервированным переводом, не выравнивание. Пример консервированного перевода :
This is a test
,I love you
и другие предложения высокой частоты - Выравнивание недоступно, если вы применяете любой из подходов для предотвращения перевода, как описано здесь.
Установка границ предложения
Чтобы получать сведения о длине предложения в исходном тексте и переводе, укажите параметр includeSentenceLength=true
в строке запроса.
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=fr&includeSentenceLength=true" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The answer lies in machine translation. The best machine translation technology cannot always provide translations tailored to a site or users like a human. Simply copy and paste a code snippet anywhere.'}]"
Ответ:
[
{
"translations":[
{
"text":"La réponse se trouve dans la traduction automatique. La meilleure technologie de traduction automatique ne peut pas toujours fournir des traductions adaptées à un site ou des utilisateurs comme un être humain. Il suffit de copier et coller un extrait de code n'importe où.",
"to":"fr",
"sentLen":{"srcSentLen":[40,117,46],"transSentLen":[53,157,62]}
}
]
}
]
Перевод с помощью динамического словаря
Если вы уже знаете перевод, который хотите применить к слову или фразе, вы можете указать его в запросе как исправление. Динамический словарь безопасен только для имен собственных, таких как личные имена и названия продуктов. Примечание. Функция динамического словаря учитывает регистр.
В разметке используется следующий синтаксис:
<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>
Например, рассмотрим следующее русское предложение: "Слово "словоматик" — это словарная запись". Чтобы сохранить при переводе слово словоматик, необходимо отправить запрос:
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The word <mstrans:dictionary translation=\"wordomatic\">wordomatic</mstrans:dictionary> is a dictionary entry.'}]"
Результат:
[
{
"translations":[
{"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
]
}
]
Эта возможность динамического словаря работает с textType=text
и textType=html
одинаково. Компонент должен использоваться только в случае необходимости. Соответствующий и гораздо лучший способ настройки перевода — это использование концентратора Custom Translator. Custom Translator обеспечивает полное использование контекста и статистические значения вероятности. Если вы можете создать обучающие данные, отображающие работу или фразу в контексте, вы получите лучшие результаты. Узнайте больше о Custom Translator.