opção
LarLar Skill Desenvolvimento de APIs azure-ai-translation-text-py

azure-ai-translation-text-py

microsoft/skills microsoft/skills

Traduza texto em tempo real, detecte idiomas, translitere entre sistemas de escrita e consulte entradas de dicionário usando o SDK do Azure AI Translator para Python.

...Expandir tudo
1
Tempo atualizado 15 de Setembro de 2026

SDK de Tradução de Texto do Azure AI para Python

Biblioteca de cliente para o serviço de tradução de texto do Azure AI Translator, destinado à tradução de texto em tempo real, transliteração e operações de idioma.

Instalação

pip install azure-ai-translation-text

Variáveis de Ambiente

AZURE_TRANSLATOR_ENDPOINT=https://<recurso>.cognitiveservices.azure.com  # Obrigatório para autenticação do Entra ID (deve ser um ponto de extremidade de subdomínio personalizado)
AZURE_TOKEN_CREDENTIALS=prod # Obrigatório apenas se DefaultAzureCredential for usado em produção
# Necessário apenas para o caminho de autenticação legado por chave de API abaixo:
AZURE_TRANSLATOR_KEY=<sua-chave-de-api>
AZURE_TRANSLATOR_REGION=<sua-regiao>  # Ex.: eastus, westus2; obrigatório ao autenticar com uma chave contra o ponto de extremidade global
</sua-regiao></sua-chave-de-api></recurso>

Autenticação e Ciclo de Vida

🔑 Duas regras se aplicam a todas as amostras de código abaixo:

  1. Prefira DefaultAzureCredential. Ele funciona localmente (Azure CLI / VS Code / Developer CLI) e no Azure (identidade gerenciada, identidade de carga de trabalho) sem alteração de código. Evite strings de conexão, contas/chaves de API — elas contornam a auditoria e a rotação do Entra.
    • Desenvolvimento local: DefaultAzureCredential funciona conforme o padrão.
    • Produção: defina AZURE_TOKEN_CREDENTIALS=prod (ou AZURE_TOKEN_CREDENTIALS=<credencial_especifica></credencial_especifica>) para restringir a cadeia de credenciais a credenciais seguras para produção.
  2. Envolva cada cliente em um gerenciador de contexto para que os transportes HTTP, soquetes e caches de token sejam liberados de forma determinística:
    • Síncrono: with <cliente>(...) as cliente:</cliente>
    • Assíncrono: async with <cliente>(...) as cliente:</cliente> e async with DefaultAzureCredential() as credential: (de azure.identity.aio)

Os trechos de código podem abreviar essa configuração, mas o código de produção deve seguir sempre ambas as regras.

import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.translation.text import TextTranslationClient

# Desenvolvimento local: DefaultAzureCredential. Produção: defina AZURE_TOKEN_CREDENTIALS=prod ou AZURE_TOKEN_CREDENTIALS=<credencial_especifica>
credential = DefaultAzureCredential(require_envvar=True)
# Ou use uma credencial específica diretamente em produção:
# Consulte https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=credential,
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])
</credencial_especifica>

Legado: Chave de API (implantações com chave existentes)

Novos códigos devem usar DefaultAzureCredential acima. O serviço Translator tem duas especificidades que tornam a autenticação por chave de API ainda comum em implantações existentes:

  • A autenticação por credencial de token exige um ponto de extremidade de subdomínio personalizado (https://<recurso>.cognitiveservices.azure.com</recurso>). Se você tiver apenas o ponto de extremidade global (https://api.cognitive.microsofttranslator.com), você deve provisionar um subdomínio personalizado ou permanecer no caminho baseado em chave até que isso seja feito.
  • Chave + região é a configuração canônica contra o ponto de extremidade global. A região é enviada como o cabeçalho Ocp-Apim-Subscription-Region e é obrigatória sempre que você usa uma chave do Translator de serviço múltiplo ou global.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.text import TextTranslationClient

# Chave + região contra o ponto de extremidade global (configuração com chave mais comum)
with TextTranslationClient(
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
    region=os.environ["AZURE_TRANSLATOR_REGION"],
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])

# Chave contra um ponto de extremidade de subdomínio personalizado (sem necessidade de região)
with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])

Tradução Básica

# Traduzir para um único idioma
result = client.translate(
    body=["Hello, how are you?", "Welcome to Azure!"],
    to=["es"]  # Espanhol
)

for item in result:
    for translation in item.translations:
        print(f"Traduzido: {translation.text}")
        print(f"Idioma de destino: {translation.to}")

Traduzir para Múltiplos Idiomas

result = client.translate(
    body=["Hello, world!"],
    to=["es", "fr", "de", "ja"]  # Espanhol, Francês, Alemão, Japonês
)

for item in result:
    print(f"Origem: {item.detected_language.language if item.detected_language else 'desconhecido'}")
    for translation in item.translations:
        print(f"  {translation.to}: {translation.text}")

Especificar Idioma de Origem

result = client.translate(
    body=["Bonjour le monde"],
    from_parameter="fr",  # A origem é Francês
    to=["en", "es"]
)

Detecção de Idioma

result = client.translate(
    body=["Hola, como estas?"],
    to=["en"]
)

for item in result:
    if item.detected_language:
        print(f"Idioma detectado: {item.detected_language.language}")
        print(f"Confiança: {item.detected_language.score:.2f}")

Transliteração

Converter texto de um script para outro:

result = client.transliterate(
    body=["konnichiwa"],
    language="ja",
    from_script="Latn",  # De script Latino
    to_script="Jpan"      # Para script Japonês
)

for item in result:
    print(f"Transliterado: {item.text}")
    print(f"Script: {item.script}")

Pesquisa em Dicionário

Encontrar traduções alternativas e definições:

result = client.lookup_dictionary_entries(
    body=["fly"],
    from_parameter="en",
    to="es"
)

for item in result:
    print(f"Origem: {item.normalized_source} ({item.display_source})")
    for translation in item.translations:
        print(f"  Tradução: {translation.normalized_target}")
        print(f"  Classe gramatical: {translation.pos_tag}")
        print(f"  Confiança: {translation.confidence:.2f}")

Exemplos de Dicionário

Obter exemplos de uso para traduções:

from azure.ai.translation.text.models import DictionaryExampleTextItem

result = client.lookup_dictionary_examples(
    body=[DictionaryExampleTextItem(text="fly", translation="volar")],
    from_parameter="en",
    to="es"
)

for item in result:
    for example in item.examples:
        print(f"Origem: {example.source_prefix}{example.source_term}{example.source_suffix}")
        print(f"Destino: {example.target_prefix}{example.target_term}{example.target_suffix}")

Obter Idiomas Suportados

# Obter todos os idiomas suportados
languages = client.get_supported_languages()

# Idiomas de tradução
print("Idiomas de tradução:")
for code, lang in languages.translation.items():
    print(f"  {code}: {lang.name} ({lang.native_name})")

# Idiomas de transliteração
print("\nIdiomas de transliteração:")
for code, lang in languages.transliteration.items():
    print(f"  {code}: {lang.name}")
    for script in lang.scripts:
        print(f"    {script.code} -> {[t.code for t in script.to_scripts]}")

# Idiomas de dicionário
print("\nIdiomas de dicionário:")
for code, lang in languages.dictionary.items():
    print(f"  {code}: {lang.name}")

Quebra de Frase

Identificar limites de frases:

result = client.find_sentence_boundaries(
    body=["Hello! How are you? I hope you are well."],
    language="en"
)

for item in result:
    print(f"Comprimentos das frases: {item.sent_len}")

Opções de Tradução

result = client.translate(
    body=["Hello, world!"],
    to=["de"],
    text_type="html",           # "plain" ou "html"
    profanity_action="Marked",  # "NoAction", "Deleted", "Marked"
    profanity_marker="Asterisk", # "Asterisk", "Tag"
    include_alignment=True,      # Incluir alinhamento de palavras
    include_sentence_length=True # Incluir limites de frases
)

for item in result:
    translation = item.translations[0]
    print(f"Traduzido: {translation.text}")
    if translation.alignment:
        print(f"Alinhamento: {translation.alignment.proj}")
    if translation.sent_len:
        print(f"Comprimentos das frases: {translation.sent_len.src_sent_len}")

Cliente Assíncrono

from azure.ai.translation.text.aio import TextTranslationClient
from azure.identity.aio import DefaultAzureCredential

async def translate_text():
    async with DefaultAzureCredential() as credential:
        async with TextTranslationClient(
            credential=credential,
            endpoint=endpoint,
        ) as client:
            result = await client.translate(
                body=["Hello, world!"],
                to=["es"]
            )
            print(result[0].translations[0].text)

Métodos do Cliente

MétodoDescrição
`translate`Traduzir texto para um ou mais idiomas
`transliterate`Converter texto entre scripts
`detect`Detectar idioma do texto
`find_sentence_boundaries`Identificar limites de frases
`lookup_dictionary_entries`Pesquisa em dicionário para traduções
`lookup_dictionary_examples`Obter exemplos de uso
`get_supported_languages`Listar idiomas suportados

Melhores Práticas

  1. Escolha síncrono OU assíncrono e mantenha a consistência. Não misture clientes síncronos azure.xxx com clientes assíncronos azure.xxx.aio no mesmo caminho de chamada. Escolha um modo por módulo.
  2. Sempre use gerenciadores de contexto para clientes e credenciais assíncronas. Envolva cada cliente em with Cliente(...) as cliente: (síncrono) ou async with Cliente(...) as cliente: (assíncrono). Para DefaultAzureCredential assíncrono de azure.identity.aio, também use async with credential: para garantir que tokens e transportes sejam limpos.
  3. Traduções em lote — Envie vários textos em uma única solicitação (até 100)
  4. Especifique o idioma de origem quando conhecido para melhorar a precisão
  5. Use o cliente assíncrono para cenários de alta taxa de transferência
  6. Armazene em cache a lista de idiomas — Os idiomas suportados não mudam com frequência
  7. Lide com linguagem imprópria de forma apropriada para sua aplicação
  8. Use o tipo de texto html ao traduzir conteúdo HTML
  9. Inclua o alinhamento para aplicações que necessitam de mapeamento de palavras
Ver no GitHub
---
name: azure-ai-translation-text-py
description: Translate text in real-time, detect languages, transliterate between scripts, and look up dictionary entries using Azure AI Translator SDK for Python.
license: MIT
---

# Azure AI Text Translation SDK for Python

Client library for Azure AI Translator text translation service for real-time text translation, transliteration, and language operations.

## Installation

```bash
pip install azure-ai-translation-text
```

## Environment Variables

```bash
AZURE_TRANSLATOR_ENDPOINT=https://<resource>.cognitiveservices.azure.com  # Required for Entra ID auth (must be a custom subdomain endpoint)
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
# Only required for the legacy API-key auth path below:
AZURE_TRANSLATOR_KEY=<your-api-key>
AZURE_TRANSLATOR_REGION=<your-region>  # e.g., eastus, westus2; required when authenticating with a key against the global endpoint
```

## Authentication & Lifecycle

> **🔑 Two rules apply to every code sample below:**
>
> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI / VS Code / Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account/API keys — they bypass Entra audit and rotation.
>    - Local dev: `DefaultAzureCredential` works as-is.
>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:
>    - Sync: `with <Client>(...) as client:`
>    - Async: `async with <Client>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)
>
> Snippets may abbreviate this setup, but production code should always follow both rules.

```python
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.translation.text import TextTranslationClient

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=credential,
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])
```

### Legacy: API Key (existing keyed deployments)

New code should use `DefaultAzureCredential` above. The Translator service has two specifics that make API-key auth still common in existing deployments:

- **Token-credential auth requires a custom subdomain endpoint** (`https://<resource>.cognitiveservices.azure.com`). If you only have the global endpoint (`https://api.cognitive.microsofttranslator.com`), you must either provision a custom subdomain or stay on the key-based path until you do.
- **Key + region** is the canonical setup against the global endpoint. The region is sent as the `Ocp-Apim-Subscription-Region` header and is required whenever you use a multi-service or global Translator key.

```python
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.text import TextTranslationClient

# Key + region against the global endpoint (most common keyed setup)
with TextTranslationClient(
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
    region=os.environ["AZURE_TRANSLATOR_REGION"],
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])

# Key against a custom subdomain endpoint (no region required)
with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])
```

## Basic Translation

```python
# Translate to a single language
result = client.translate(
    body=["Hello, how are you?", "Welcome to Azure!"],
    to=["es"]  # Spanish
)

for item in result:
    for translation in item.translations:
        print(f"Translated: {translation.text}")
        print(f"Target language: {translation.to}")
```

## Translate to Multiple Languages

```python
result = client.translate(
    body=["Hello, world!"],
    to=["es", "fr", "de", "ja"]  # Spanish, French, German, Japanese
)

for item in result:
    print(f"Source: {item.detected_language.language if item.detected_language else 'unknown'}")
    for translation in item.translations:
        print(f"  {translation.to}: {translation.text}")
```

## Specify Source Language

```python
result = client.translate(
    body=["Bonjour le monde"],
    from_parameter="fr",  # Source is French
    to=["en", "es"]
)
```

## Language Detection

```python
result = client.translate(
    body=["Hola, como estas?"],
    to=["en"]
)

for item in result:
    if item.detected_language:
        print(f"Detected language: {item.detected_language.language}")
        print(f"Confidence: {item.detected_language.score:.2f}")
```

## Transliteration

Convert text from one script to another:

```python
result = client.transliterate(
    body=["konnichiwa"],
    language="ja",
    from_script="Latn",  # From Latin script
    to_script="Jpan"      # To Japanese script
)

for item in result:
    print(f"Transliterated: {item.text}")
    print(f"Script: {item.script}")
```

## Dictionary Lookup

Find alternate translations and definitions:

```python
result = client.lookup_dictionary_entries(
    body=["fly"],
    from_parameter="en",
    to="es"
)

for item in result:
    print(f"Source: {item.normalized_source} ({item.display_source})")
    for translation in item.translations:
        print(f"  Translation: {translation.normalized_target}")
        print(f"  Part of speech: {translation.pos_tag}")
        print(f"  Confidence: {translation.confidence:.2f}")
```

## Dictionary Examples

Get usage examples for translations:

```python
from azure.ai.translation.text.models import DictionaryExampleTextItem

result = client.lookup_dictionary_examples(
    body=[DictionaryExampleTextItem(text="fly", translation="volar")],
    from_parameter="en",
    to="es"
)

for item in result:
    for example in item.examples:
        print(f"Source: {example.source_prefix}{example.source_term}{example.source_suffix}")
        print(f"Target: {example.target_prefix}{example.target_term}{example.target_suffix}")
```

## Get Supported Languages

```python
# Get all supported languages
languages = client.get_supported_languages()

# Translation languages
print("Translation languages:")
for code, lang in languages.translation.items():
    print(f"  {code}: {lang.name} ({lang.native_name})")

# Transliteration languages
print("\nTransliteration languages:")
for code, lang in languages.transliteration.items():
    print(f"  {code}: {lang.name}")
    for script in lang.scripts:
        print(f"    {script.code} -> {[t.code for t in script.to_scripts]}")

# Dictionary languages
print("\nDictionary languages:")
for code, lang in languages.dictionary.items():
    print(f"  {code}: {lang.name}")
```

## Break Sentence

Identify sentence boundaries:

```python
result = client.find_sentence_boundaries(
    body=["Hello! How are you? I hope you are well."],
    language="en"
)

for item in result:
    print(f"Sentence lengths: {item.sent_len}")
```

## Translation Options

```python
result = client.translate(
    body=["Hello, world!"],
    to=["de"],
    text_type="html",           # "plain" or "html"
    profanity_action="Marked",  # "NoAction", "Deleted", "Marked"
    profanity_marker="Asterisk", # "Asterisk", "Tag"
    include_alignment=True,      # Include word alignment
    include_sentence_length=True # Include sentence boundaries
)

for item in result:
    translation = item.translations[0]
    print(f"Translated: {translation.text}")
    if translation.alignment:
        print(f"Alignment: {translation.alignment.proj}")
    if translation.sent_len:
        print(f"Sentence lengths: {translation.sent_len.src_sent_len}")
```

## Async Client

```python
from azure.ai.translation.text.aio import TextTranslationClient
from azure.identity.aio import DefaultAzureCredential

async def translate_text():
    async with DefaultAzureCredential() as credential:
        async with TextTranslationClient(
            credential=credential,
            endpoint=endpoint,
        ) as client:
            result = await client.translate(
                body=["Hello, world!"],
                to=["es"]
            )
            print(result[0].translations[0].text)
```

## Client Methods

| Method | Description |
|--------|-------------|
| `translate` | Translate text to one or more languages |
| `transliterate` | Convert text between scripts |
| `detect` | Detect language of text |
| `find_sentence_boundaries` | Identify sentence boundaries |
| `lookup_dictionary_entries` | Dictionary lookup for translations |
| `lookup_dictionary_examples` | Get usage examples |
| `get_supported_languages` | List supported languages |

## Best Practices

1. **Pick sync OR async and stay consistent.** Do not mix `azure.xxx` sync clients with `azure.xxx.aio` async clients in the same call path. Choose one mode per module.
2. **Always use context managers for clients and async credentials.** Wrap every client in `with Client(...) as client:` (sync) or `async with Client(...) as client:` (async). For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.
3. **Batch translations** — Send multiple texts in one request (up to 100)
4. **Specify source language** when known to improve accuracy
5. **Use async client** for high-throughput scenarios
6. **Cache language list** — Supported languages don't change frequently
7. **Handle profanity** appropriately for your application
8. **Use html text_type** when translating HTML content
9. **Include alignment** for applications needing word mapping

Todos os arquivos

0 arquivos

Instalar azure-ai-translation-text-py

Baixe e extraia os arquivos de habilidade para o diretório .claude/skills/.

Baixar ZIP

Clone o repositório e copie os arquivos da habilidade para o seu projeto.

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-ai-translation-text-py # Copy SKILL.md to your .claude/skills/ directory

Copiar Copiar
Configuração rápida: Copie a pasta de habilidades para .claude/skills/ O Claude detectará e usará automaticamente a habilidade
Repositório microsoft/skills

Habilidades relacionadas

brightdata-cli
Tempo atualizado 29 de Junho de 2026
humanize
Tempo atualizado 7 de Julho de 2026
agentwallet
Tempo atualizado 7 de Julho de 2026
korean-stock-search
Tempo atualizado 8 de Julho de 2026
OR