azure-ai-translation-text-py
microsoft/skills
實時翻譯文字,檢測語言,在不同書寫系統之間進行轉寫,並使用 Azure AI Translator SDK for Python 查詢詞典條目。
...展開全部Azure AI 文字翻譯 Python SDK
用於實時文字翻譯、轉寫和語言操作的 Azure AI 翻譯器文字翻譯服務的客戶端庫。
安裝
pip install azure-ai-translation-text
環境變數
AZURE_TRANSLATOR_ENDPOINT=https://<resource>.cognitiveservices.azure.com # Entra ID 身份驗證必需(必須是自定義子域端點)
AZURE_TOKEN_CREDENTIALS=prod # 僅在生產環境中使用 DefaultAzureCredential 時必需
# 僅對以下遺留 API 金鑰身份驗證路徑必需:
AZURE_TRANSLATOR_KEY=<your-api-key>
AZURE_TRANSLATOR_REGION=<your-region> # 例如,eastus、westus2;使用金鑰對全域性端點進行身份驗證時必需
</your-region></your-api-key></resource>身份驗證與生命週期
🔑 以下每個程式碼示例都適用兩條規則:
- 首選
DefaultAzureCredential。 它在本地(Azure CLI / VS Code / Developer CLI)和 Azure(託管身份、工作負載身份)中無需更改程式碼即可工作。避免使用連線字串、帳戶/API 金鑰——它們會繞過 Entra 審計和輪換。
- 本地開發:
DefaultAzureCredential可直接使用。- 生產環境:設定
AZURE_TOKEN_CREDENTIALS=prod(或AZURE_TOKEN_CREDENTIALS=<specific_credential></specific_credential>)以將憑據鏈限制為生產安全的憑據。- 將每個客戶端包裝在上下文管理器中,以便確定性地釋放 HTTP 傳輸、套接字和令牌快取:
- 同步:
with <client>(...) as client:</client>- 非同步:
async with <client>(...) as client:</client>以及async with DefaultAzureCredential() as credential:(來自azure.identity.aio)程式碼片段可能會簡化此設定,但生產程式碼應始終遵循這兩條規則。
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.translation.text import TextTranslationClient
# 本地開發:DefaultAzureCredential。生產環境:設定 AZURE_TOKEN_CREDENTIALS=prod 或 AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# 或者在生產環境中直接使用特定憑據:
# 請參閱 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"])
</specific_credential>遺留:API 金鑰(現有的金鑰部署)
新程式碼應使用上述 DefaultAzureCredential。翻譯器服務有兩個特性,使得在現有部署中 API 金鑰身份驗證仍然很常見:
- 令牌憑據身份驗證需要自定義子域端點(
https://<resource>.cognitiveservices.azure.com</resource>)。如果您只有全域性端點(https://api.cognitive.microsofttranslator.com),則必須配置自定義子域,或者在配置之前繼續使用基於金鑰的路徑。 - 金鑰 + 區域 是對全域性端點的標準設定。區域作為
Ocp-Apim-Subscription-Region標頭髮送,在使用多服務或全域性翻譯器金鑰時必需。
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.text import TextTranslationClient
# 對全域性端點的金鑰 + 區域(最常見的金鑰設定)
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"])
# 對自定義子域端點的金鑰(無需區域)
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"])
基本翻譯
# 翻譯成單一語言
result = client.translate(
body=["Hello, how are you?", "Welcome to Azure!"],
to=["es"] # 西班牙語
)
for item in result:
for translation in item.translations:
print(f"Translated: {translation.text}")
print(f"Target language: {translation.to}")
翻譯成多種語言
result = client.translate(
body=["Hello, world!"],
to=["es", "fr", "de", "ja"] # 西班牙語、法語、德語、日語
)
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}")
指定源語言
result = client.translate(
body=["Bonjour le monde"],
from_parameter="fr", # 源語言為法語
to=["en", "es"]
)
語言檢測
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}")
轉寫
將文字從一種指令碼轉換為另一種:
result = client.transliterate(
body=["konnichiwa"],
language="ja",
from_script="Latn", # 從拉丁指令碼
to_script="Jpan" # 到日語指令碼
)
for item in result:
print(f"Transliterated: {item.text}")
print(f"Script: {item.script}")
詞典查詢
查詢替代翻譯和定義:
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}")
詞典示例
獲取翻譯的用法示例:
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}")
獲取支援的語言
# 獲取所有支援的語言
languages = client.get_supported_languages()
# 翻譯語言
print("Translation languages:")
for code, lang in languages.translation.items():
print(f" {code}: {lang.name} ({lang.native_name})")
# 轉寫語言
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]}")
# 詞典語言
print("\nDictionary languages:")
for code, lang in languages.dictionary.items():
print(f" {code}: {lang.name}")
斷句
識別句子邊界:
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}")
翻譯選項
result = client.translate(
body=["Hello, world!"],
to=["de"],
text_type="html", # "plain" 或 "html"
profanity_action="Marked", # "NoAction"、"Deleted"、"Marked"
profanity_marker="Asterisk", # "Asterisk"、"Tag"
include_alignment=True, # 包含單詞對齊
include_sentence_length=True # 包含句子邊界
)
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}")
非同步客戶端
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)
客戶端方法
| 方法 | 描述 |
|---|---|
| `translate` | 將文字翻譯成一種或多種語言 |
| `transliterate` | 在指令碼之間轉換文字 |
| `detect` | 檢測文字語言 |
| `find_sentence_boundaries` | 識別句子邊界 |
| `lookup_dictionary_entries` | 翻譯的詞典查詢 |
| `lookup_dictionary_examples` | 獲取用法示例 |
| `get_supported_languages` | 列出支援的語言 |
最佳實踐
- 選擇同步或非同步並保持一致。 不要在同一個呼叫路徑中混合使用
azure.xxx同步客戶端和azure.xxx.aio非同步客戶端。每個模組選擇一種模式。 - 始終對客戶端和非同步憑據使用上下文管理器。 將每個客戶端包裝在
with Client(...) as client:(同步)或async with Client(...) as client:(非同步)中。對於來自azure.identity.aio的非同步DefaultAzureCredential,也使用async with credential:以便清理令牌和傳輸。 - 批次翻譯 — 在一次請求中傳送多個文字(最多 100 個)
- 指定源語言 以提高準確性
- 使用非同步客戶端 用於高吞吐量場景
- 快取語言列表 — 支援的語言不經常更改
- 適當處理髒話 以適應您的應用程式
- 使用 html text_type 翻譯 HTML 內容時
- 包含對齊 用於需要單詞對映的應用程式
---
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
所有檔案
0 個檔案安裝 azure-ai-translation-text-py
將技能檔案下載並解壓至你的 .claude/skills/ 目錄。
下載 ZIP複製儲存庫並將技能檔案複製到您的專案中。
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
複製





首頁
