opción
HogarHogar Skill Desarrollo de API azure-ai-translation-text-py

azure-ai-translation-text-py

microsoft/skills microsoft/skills

Traducir texto en tiempo real, detectar idiomas, transliterar entre sistemas de escritura y buscar entradas en diccionarios utilizando el SDK de Azure AI Translator para Python.

...Expandir todo
1
Tiempo actualizado 15 de septiembre de 2026

SDK de Azure AI Text Translation para Python

Biblioteca de cliente para el servicio de traducción de texto de Azure AI Translator, que ofrece traducción de texto en tiempo real, transliteración y operaciones de idioma.

Instalación

pip install azure-ai-translation-text

Variables de entorno

AZURE_TRANSLATOR_ENDPOINT=https://<recurso>.cognitiveservices.azure.com  # Obligatorio para la autenticación de Entra ID (debe ser un punto de conexión de subdominio personalizado)
AZURE_TOKEN_CREDENTIALS=prod # Obligatorio solo si se usa DefaultAzureCredential en producción
# Solo necesario para la ruta de autenticación con clave de API heredada a continuación:
AZURE_TRANSLATOR_KEY=<tu-clave-de-api>
AZURE_TRANSLATOR_REGION=<tu-región>  # Ej.: eastus, westus2; obligatorio cuando se autentica con una clave contra el punto de conexión global
</tu-región></tu-clave-de-api></recurso>

Autenticación y ciclo de vida

🔑 Dos reglas se aplican a cada ejemplo de código a continuación:

  1. Prefiere DefaultAzureCredential. Funciona localmente (Azure CLI / VS Code / Developer CLI) y en Azure (identidad administrada, identidad de carga de trabajo) sin cambios en el código. Evita las cadenas de conexión y las claves de cuenta/API, ya que eluden la auditoría y la rotación de Entra.
    • Desarrollo local: DefaultAzureCredential funciona tal cual.
    • Producción: establece AZURE_TOKEN_CREDENTIALS=prod (o AZURE_TOKEN_CREDENTIALS=<credencial_específica></credencial_específica>) para restringir la cadena de credenciales a credenciales seguras para producción.
  2. Envuelve cada cliente en un administrador de contexto para que los transportes HTTP, los sockets y las cachés de tokens se liberen de forma determinista:
    • Síncrono: with <cliente>(...) as cliente:</cliente>
    • Asíncrono: async with <cliente>(...) as cliente:</cliente> y async with DefaultAzureCredential() as credential: (de azure.identity.aio)

Los fragmentos de código pueden abreviar esta configuración, pero el código de producción debe seguir siempre ambas reglas.

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

# Desarrollo local: DefaultAzureCredential. Producción: establece AZURE_TOKEN_CREDENTIALS=prod o AZURE_TOKEN_CREDENTIALS=<credencial_específica>
credential = DefaultAzureCredential(require_envvar=True)
# O usa una credencial específica directamente en producción:
# Consulta 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_específica>

Heredado: Clave de API (implementaciones con clave existentes)

El código nuevo debe usar DefaultAzureCredential anterior. El servicio Translator tiene dos particularidades que hacen que la autenticación con clave de API siga siendo común en implementaciones existentes:

  • La autenticación con credencial de token requiere un punto de conexión de subdominio personalizado (https://<recurso>.cognitiveservices.azure.com</recurso>). Si solo tienes el punto de conexión global (https://api.cognitive.microsofttranslator.com), debes aprovisionar un subdominio personalizado o permanecer en la ruta basada en clave hasta que lo hagas.
  • Clave + región es la configuración canónica contra el punto de conexión global. La región se envía como el encabezado Ocp-Apim-Subscription-Region y es obligatoria siempre que uses una clave de Translator de servicio múltiple o global.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.text import TextTranslationClient

# Clave + región contra el punto de conexión global (configuración con clave más común)
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"])

# Clave contra un punto de conexión de subdominio personalizado (no se requiere región)
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"])

Traducción básica

# Traducir a un solo idioma
result = client.translate(
    body=["Hello, how are you?", "Welcome to Azure!"],
    to=["es"]  # Español
)

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

Traducción a varios idiomas

result = client.translate(
    body=["Hello, world!"],
    to=["es", "fr", "de", "ja"]  # Español, Francés, Alemán, Japonés
)

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

Especificar idioma de origen

result = client.translate(
    body=["Bonjour le monde"],
    from_parameter="fr",  # El origen es francés
    to=["en", "es"]
)

Detección 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"Confianza: {item.detected_language.score:.2f}")

Transliteración

Convierte texto de un guion a otro:

result = client.transliterate(
    body=["konnichiwa"],
    language="ja",
    from_script="Latn",  # Desde guion latino
    to_script="Jpan"      # A guion japonés
)

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

Búsqueda en diccionario

Encuentra traducciones alternativas y definiciones:

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

for item in result:
    print(f"Origen: {item.normalized_source} ({item.display_source})")
    for translation in item.translations:
        print(f"  Traducción: {translation.normalized_target}")
        print(f"  Categoría gramatical: {translation.pos_tag}")
        print(f"  Confianza: {translation.confidence:.2f}")

Ejemplos de diccionario

Obtén ejemplos de uso para las traducciones:

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"Origen: {example.source_prefix}{example.source_term}{example.source_suffix}")
        print(f"Destino: {example.target_prefix}{example.target_term}{example.target_suffix}")

Obtener idiomas admitidos

# Obtener todos los idiomas admitidos
languages = client.get_supported_languages()

# Idiomas de traducción
print("Idiomas de traducción:")
for code, lang in languages.translation.items():
    print(f"  {code}: {lang.name} ({lang.native_name})")

# Idiomas de transliteración
print("\nIdiomas de transliteración:")
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 diccionario
print("\nIdiomas de diccionario:")
for code, lang in languages.dictionary.items():
    print(f"  {code}: {lang.name}")

División de frases

Identifica los límites de las frases:

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

for item in result:
    print(f"Longitudes de frase: {item.sent_len}")

Opciones de traducción

result = client.translate(
    body=["Hello, world!"],
    to=["de"],
    text_type="html",           # "plain" o "html"
    profanity_action="Marked",  # "NoAction", "Deleted", "Marked"
    profanity_marker="Asterisk", # "Asterisk", "Tag"
    include_alignment=True,      # Incluir alineación de palabras
    include_sentence_length=True # Incluir límites de frase
)

for item in result:
    translation = item.translations[0]
    print(f"Traducido: {translation.text}")
    if translation.alignment:
        print(f"Alineación: {translation.alignment.proj}")
    if translation.sent_len:
        print(f"Longitudes de frase: {translation.sent_len.src_sent_len}")

Cliente así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 del cliente

MétodoDescripción
`translate`Traducir texto a uno o más idiomas
`transliterate`Convertir texto entre guiones
`detect`Detectar el idioma del texto
`find_sentence_boundaries`Identificar los límites de las frases
`lookup_dictionary_entries`Búsqueda en diccionario para traducciones
`lookup_dictionary_examples`Obtener ejemplos de uso
`get_supported_languages`Listar idiomas admitidos

Mejores prácticas

  1. Elige síncrono O asíncrono y mantén la coherencia. No mezcles clientes síncronos azure.xxx con clientes asíncronos azure.xxx.aio en la misma ruta de llamada. Elige un modo por módulo.
  2. Usa siempre administradores de contexto para clientes y credenciales asíncronas. Envuelve cada cliente en with Cliente(...) as cliente: (síncrono) o async with Cliente(...) as cliente: (asíncrono). Para DefaultAzureCredential asíncrono de azure.identity.aio, usa también async with credential: para que los tokens y transportes se limpien correctamente.
  3. Traducciones por lotes — Envía varios textos en una sola solicitud (hasta 100)
  4. Especifica el idioma de origen cuando sea conocido para mejorar la precisión
  5. Usa el cliente asíncrono para escenarios de alto rendimiento
  6. Cacha la lista de idiomas — Los idiomas admitidos no cambian con frecuencia
  7. Gestiona la obscenidad de manera apropiada para tu aplicación
  8. Usa el tipo de texto html al traducir contenido HTML
  9. Incluye la alineación para aplicaciones que necesiten mapeo de palabras
Ver en 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 los archivos

0 archivos

Instalar azure-ai-translation-text-py

Descarga y extrae los archivos de habilidades en tu directorio .claude/skills/.

Descargar ZIP

Clona el repositorio y copia los archivos de la habilidad a tu proyecto.

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
Configuración rápida: Copia la carpeta de la habilidad a .claude/skills/ Claude detectará y utilizará automáticamente la habilidad
Repositorio microsoft/skills

Habilidades relacionadas

brightdata-cli
Tiempo actualizado 29 de junio de 2026
humanize
Tiempo actualizado 7 de julio de 2026
agentwallet
Tiempo actualizado 7 de julio de 2026
korean-stock-search
Tiempo actualizado 8 de julio de 2026
OR