Определение языка текста с помощью Translate

Чтобы определить, на каком языке написан текст, воспользуйтесь методом detectLanguage.

Примечание

Метод detectLanguage возвращает код языка заданного текста. Если определить язык невозможно, поле кода языка в ответе будет пустым.

Перед началом работы

Чтобы воспользоваться примерами, установите cURL.

Примеры ниже разработаны для выполнения в операционных системах MacOS и Linux. Чтобы выполнить их в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.

Для аутентификации от имени сервисного аккаунта вы можете использовать API-ключ или IAM-токен, для аутентификации от имени пользовательского аккаунта — только IAM-токен.

Получите данные вашего аккаунта для аутентификации в API Translate:

  1. Если у вас еще нет сервисного аккаунта, создайте его.

  2. Назначьте сервисному аккаунту роль ai.translate.user на каталог.

  3. Получите идентификатор каталога, в котором создан ваш сервисный аккаунт. Идентификатор каталога должен передаваться в теле каждого запроса в поле folderId.

  4. Создайте API-ключ с областью действия yc.ai.translate.execute.

    Передавайте полученный ключ в заголовке Authorization каждого запроса в формате:

    Authorization: Api-Key <API-ключ>
            
  1. Получите идентификатор любого каталога, на который у вашего аккаунта есть роль ai.translate.user или выше. Идентификатор каталога должен передаваться в теле каждого запроса в поле folderId.

  2. Получите IAM-токен для аккаунта на Яндексе, федеративного аккаунта, локального аккаунта или сервисного аккаунта.

    Передавайте полученный токен в заголовке Authorization каждого запроса в формате:

    Authorization: Bearer <IAM-токен>
            

Распознать язык фразы

В этом примере мы определим, на каком языке написана фраза Hello, world.

Чтобы определить, на каком языке написан текст, передайте его в теле запроса detectLanguage:

export FOLDER_ID=<идентификатор_каталога>
        export API_KEY=<API-ключ>
        export TEXT="Hello, world"
        curl \
          --request POST \
          --header "Content-Type: application/json" \
          --header "Authorization: Api-Key ${API_KEY}" \
          --data "{\"folderId\": \"${FOLDER_ID}\", \"text\": \"${TEXT}\"}" \
          "https://translate.api.cloud.yandex.net/translate/v2/detect"
        

Где:

В ответе сервис вернет код языка, на котором написан текст:

{
            "languageCode": "en"
        }
        

Указать наиболее вероятные языки

В некоторых языках одно и то же слово пишется одинаково. Например, слово рука пишется одинаково в английском, немецком, шведском и голландском языках — hand. Если переданный текст состоит из таких слов, то Translate может ошибиться при определении языка текста.

Чтобы избежать ошибки, вы можете указать языки в поле languageCodeHints, которым надо отдать приоритет при определении языка текста:

{
            "folderId": "<идентификатор_каталога>",
            "languageCodeHints":["ru", "de"],
            "text": "hand"
        }
        

Где:

  • folderIdидентификатор каталога, полученный перед началом работы.
  • languageCodeHints — языки, которым отдается приоритет при определении языка текста.
  • text — текст для перевода в виде строки.

Сохраните тело запроса в файле, например body.json, и передайте его с помощью метода detectLanguage:

export API_KEY=<API-ключ>
        curl \
          --request POST \
          --header "Content-Type: application/json" \
          --header "Authorization: Api-Key ${API_KEY}" \
          --data '@body.json' \
          "https://translate.api.cloud.yandex.net/translate/v2/detect"
        
        {
            "languageCode": "de"
        }
        

Где API_KEYAPI-ключ, полученный перед началом работы. Если для аутентификации вы используете IAM-токен, измените заголовок Authorization на "Authorization: Bearer <IAM-токен>".