{"id":"10a254d1-0ea2-452d-8df9-5e44880bd212","shortId":"rQumWz","kind":"skill","title":"azure-ai-translation-document-py","tagline":"Azure AI Document Translation SDK for batch translation of documents with format preservation. Use for translating Word, PDF, Excel, PowerPoint, and other document formats at scale.","description":"# Azure AI Document Translation SDK for Python\n\nClient library for Azure AI Translator document translation service for batch document translation with format preservation.\n\n## Installation\n\n```bash\npip install azure-ai-translation-document\n```\n\n## Environment Variables\n\n```bash\nAZURE_DOCUMENT_TRANSLATION_ENDPOINT=https://<resource>.cognitiveservices.azure.com\nAZURE_DOCUMENT_TRANSLATION_KEY=<your-api-key>  # If using API key\n\n# Storage for source and target documents\nAZURE_SOURCE_CONTAINER_URL=https://<storage>.blob.core.windows.net/<container>?<sas>\nAZURE_TARGET_CONTAINER_URL=https://<storage>.blob.core.windows.net/<container>?<sas>\n```\n\n## Authentication\n\n### API Key\n\n```python\nimport os\nfrom azure.ai.translation.document import DocumentTranslationClient\nfrom azure.core.credentials import AzureKeyCredential\n\nendpoint = os.environ[\"AZURE_DOCUMENT_TRANSLATION_ENDPOINT\"]\nkey = os.environ[\"AZURE_DOCUMENT_TRANSLATION_KEY\"]\n\nclient = DocumentTranslationClient(endpoint, AzureKeyCredential(key))\n```\n\n### Entra ID (Recommended)\n\n```python\nfrom azure.ai.translation.document import DocumentTranslationClient\nfrom azure.identity import DefaultAzureCredential\n\nclient = DocumentTranslationClient(\n    endpoint=os.environ[\"AZURE_DOCUMENT_TRANSLATION_ENDPOINT\"],\n    credential=DefaultAzureCredential()\n)\n```\n\n## Basic Document Translation\n\n```python\nfrom azure.ai.translation.document import DocumentTranslationInput, TranslationTarget\n\nsource_url = os.environ[\"AZURE_SOURCE_CONTAINER_URL\"]\ntarget_url = os.environ[\"AZURE_TARGET_CONTAINER_URL\"]\n\n# Start translation job\npoller = client.begin_translation(\n    inputs=[\n        DocumentTranslationInput(\n            source_url=source_url,\n            targets=[\n                TranslationTarget(\n                    target_url=target_url,\n                    language=\"es\"  # Translate to Spanish\n                )\n            ]\n        )\n    ]\n)\n\n# Wait for completion\nresult = poller.result()\n\nprint(f\"Status: {poller.status()}\")\nprint(f\"Documents translated: {poller.details.documents_succeeded_count}\")\nprint(f\"Documents failed: {poller.details.documents_failed_count}\")\n```\n\n## Multiple Target Languages\n\n```python\npoller = client.begin_translation(\n    inputs=[\n        DocumentTranslationInput(\n            source_url=source_url,\n            targets=[\n                TranslationTarget(target_url=target_url_es, language=\"es\"),\n                TranslationTarget(target_url=target_url_fr, language=\"fr\"),\n                TranslationTarget(target_url=target_url_de, language=\"de\")\n            ]\n        )\n    ]\n)\n```\n\n## Translate Single Document\n\n```python\nfrom azure.ai.translation.document import SingleDocumentTranslationClient\n\nsingle_client = SingleDocumentTranslationClient(endpoint, AzureKeyCredential(key))\n\nwith open(\"document.docx\", \"rb\") as f:\n    document_content = f.read()\n\nresult = single_client.translate(\n    body=document_content,\n    target_language=\"es\",\n    content_type=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n)\n\n# Save translated document\nwith open(\"document_es.docx\", \"wb\") as f:\n    f.write(result)\n```\n\n## Check Translation Status\n\n```python\n# Get all translation operations\noperations = client.list_translation_statuses()\n\nfor op in operations:\n    print(f\"Operation ID: {op.id}\")\n    print(f\"Status: {op.status}\")\n    print(f\"Created: {op.created_on}\")\n    print(f\"Total documents: {op.documents_total_count}\")\n    print(f\"Succeeded: {op.documents_succeeded_count}\")\n    print(f\"Failed: {op.documents_failed_count}\")\n```\n\n## List Document Statuses\n\n```python\n# Get status of individual documents in a job\noperation_id = poller.id\ndocument_statuses = client.list_document_statuses(operation_id)\n\nfor doc in document_statuses:\n    print(f\"Document: {doc.source_document_url}\")\n    print(f\"  Status: {doc.status}\")\n    print(f\"  Translated to: {doc.translated_to}\")\n    if doc.error:\n        print(f\"  Error: {doc.error.message}\")\n```\n\n## Cancel Translation\n\n```python\n# Cancel a running translation\nclient.cancel_translation(operation_id)\n```\n\n## Using Glossary\n\n```python\nfrom azure.ai.translation.document import TranslationGlossary\n\npoller = client.begin_translation(\n    inputs=[\n        DocumentTranslationInput(\n            source_url=source_url,\n            targets=[\n                TranslationTarget(\n                    target_url=target_url,\n                    language=\"es\",\n                    glossaries=[\n                        TranslationGlossary(\n                            glossary_url=\"https://<storage>.blob.core.windows.net/glossary/terms.csv?<sas>\",\n                            file_format=\"csv\"\n                        )\n                    ]\n                )\n            ]\n        )\n    ]\n)\n```\n\n## Supported Document Formats\n\n```python\n# Get supported formats\nformats = client.get_supported_document_formats()\n\nfor fmt in formats:\n    print(f\"Format: {fmt.format}\")\n    print(f\"  Extensions: {fmt.file_extensions}\")\n    print(f\"  Content types: {fmt.content_types}\")\n```\n\n## Supported Languages\n\n```python\n# Get supported languages\nlanguages = client.get_supported_languages()\n\nfor lang in languages:\n    print(f\"Language: {lang.name} ({lang.code})\")\n```\n\n## Async Client\n\n```python\nfrom azure.ai.translation.document.aio import DocumentTranslationClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def translate_documents():\n    async with DocumentTranslationClient(\n        endpoint=endpoint,\n        credential=DefaultAzureCredential()\n    ) as client:\n        poller = await client.begin_translation(inputs=[...])\n        result = await poller.result()\n```\n\n## Supported Formats\n\n| Category | Formats |\n|----------|---------|\n| Documents | DOCX, PDF, PPTX, XLSX, HTML, TXT, RTF |\n| Structured | CSV, TSV, JSON, XML |\n| Localization | XLIFF, XLF, MHTML |\n\n## Storage Requirements\n\n- Source and target containers must be Azure Blob Storage\n- Use SAS tokens with appropriate permissions:\n  - Source: Read, List\n  - Target: Write, List\n\n## Best Practices\n\n1. **Use SAS tokens** with minimal required permissions\n2. **Monitor long-running operations** with `poller.status()`\n3. **Handle document-level errors** by iterating document statuses\n4. **Use glossaries** for domain-specific terminology\n5. **Separate target containers** for each language\n6. **Use async client** for multiple concurrent jobs\n7. **Check supported formats** before submitting documents\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","translation","document","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-azure-ai-translation-document-py","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-translation-document-py","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (6,845 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:28.595Z","embedding":null,"createdAt":"2026-04-18T21:32:02.561Z","updatedAt":"2026-04-24T18:50:28.595Z","lastSeenAt":"2026-04-24T18:50:28.595Z","tsv":"'/glossary/terms.csv?':441 '1':573 '2':581 '3':589 '4':599 '5':607 '6':614 '7':622 'action':641 'ai':3,8,34,44,62 'api':79,98 'applic':635 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':290 'appropri':563 'ask':679 'async':495,506,510,616 'authent':97 'await':520,525 'azur':2,7,33,43,61,68,73,87,92,113,119,144,162,169,556 'azure-ai-translation-docu':60 'azure-ai-translation-document-pi':1 'azure.ai.translation.document':104,133,155,262,415 'azure.ai.translation.document.aio':499 'azure.core.credentials':108 'azure.identity':137 'azure.identity.aio':503 'azurekeycredenti':110,126,269 'bash':57,67 'basic':150 'batch':13,50 'best':571 'blob':557 'blob.core.windows.net':91,96,440 'blob.core.windows.net/glossary/terms.csv?':439 'bodi':282 'boundari':687 'cancel':400,403 'categori':529 'check':302,623 'clarif':681 'clear':654 'client':40,123,140,266,496,518,617 'client.begin':177,224,419,521 'client.cancel':407 'client.get':453,483 'client.list':311,368 'cognitiveservices.azure.com':72 'complet':198 'concurr':620 'contain':89,94,164,171,553,610 'content':278,284,288,472 'count':211,218,338,344,350 'creat':329 'credenti':148,515 'criteria':690 'csv':444,540 'de':254,256 'def':507 'defaultazurecredenti':139,149,505,516 'describ':642,658 'doc':374 'doc.error':395 'doc.error.message':399 'doc.source':381 'doc.status':387 'doc.translated':392 'document':5,9,16,29,35,46,51,64,69,74,86,114,120,145,151,207,214,259,277,283,293,335,352,359,366,369,376,380,382,446,455,509,531,592,597,628 'document-level':591 'document.docx':273 'document_es.docx':296 'documenttranslationcli':106,124,135,141,501,512 'documenttranslationinput':157,180,227,422 'docx':532 'domain':604 'domain-specif':603 'endpoint':71,111,116,125,142,147,268,513,514 'entra':128 'environ':65,670 'environment-specif':669 'error':398,594 'es':192,238,240,287,434 'excel':25 'execut':637 'expert':675 'extens':467,469 'f':202,206,213,276,299,319,324,328,333,340,346,379,385,389,397,462,466,471,491 'f.read':279 'f.write':300 'fail':215,217,347,349 'file':442 'fmt':458 'fmt.content':474 'fmt.file':468 'fmt.format':464 'format':18,30,54,443,447,451,452,456,460,463,528,530,625 'fr':246,248 'get':306,355,449,479 'glossari':412,435,437,601 'handl':590 'html':536 'id':129,321,364,372,410 'import':101,105,109,134,138,156,263,416,500,504 'individu':358 'input':179,226,421,523,684 'instal':56,59 'iter':596 'job':175,362,621 'json':542 'key':76,80,99,117,122,127,270 'lang':487 'lang.code':494 'lang.name':493 'languag':191,221,239,247,255,286,433,477,481,482,485,489,492,613 'level':593 'librari':41 'limit':646 'list':351,567,570 'local':544 'long':584 'long-run':583 'match':655 'mhtml':547 'minim':578 'miss':692 'monitor':582 'multipl':219,619 'must':554 'op':315 'op.created':330 'op.documents':336,342,348 'op.id':322 'op.status':326 'open':272,295 'oper':309,310,317,320,363,371,409,586 'os':102 'os.environ':112,118,143,161,168 'output':664 'overview':645 'pdf':24,533 'permiss':564,580,685 'pip':58 'poller':176,223,418,519 'poller.details.documents':209,216 'poller.id':365 'poller.result':200,526 'poller.status':204,588 'powerpoint':26 'pptx':534 'practic':572 'preserv':19,55 'print':201,205,212,318,323,327,332,339,345,378,384,388,396,461,465,470,490 'py':6 'python':39,100,131,153,222,260,305,354,402,413,448,478,497 'rb':274 'read':566 'recommend':130 'requir':549,579,683 'result':199,280,301,524 'review':676 'rtf':538 'run':405,585 'safeti':686 'sas':560,575 'save':291 'scale':32 'scope':657 'sdk':11,37 'separ':608 'servic':48 'singl':258,265 'single_client.translate':281 'singledocumenttranslationcli':264,267 'skill':633,649 'skill-azure-ai-translation-document-py' 'sourc':83,88,159,163,181,183,228,230,423,425,550,565 'source-sickn33' 'spanish':195 'specif':605,671 'start':173 'status':203,304,313,325,353,356,367,370,377,386,598 'stop':677 'storag':81,548,558 'structur':539 'submit':627 'substitut':667 'succeed':210,341,343 'success':689 'support':445,450,454,476,480,484,527,624 'target':85,93,166,170,185,187,189,220,232,234,236,242,244,250,252,285,427,429,431,552,568,609 'task':653 'terminolog':606 'test':673 'token':561,576 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'total':334,337 'translat':4,10,14,22,36,45,47,52,63,70,75,115,121,146,152,174,178,193,208,225,257,292,303,308,312,390,401,406,408,420,508,522 'translationglossari':417,436 'translationtarget':158,186,233,241,249,428 'treat':662 'tsv':541 'txt':537 'type':289,473,475 'url':90,95,160,165,167,172,182,184,188,190,229,231,235,237,243,245,251,253,383,424,426,430,432,438 'use':20,78,411,559,574,600,615,631,647 'valid':672 'variabl':66 'wait':196 'wb':297 'word':23 'workflow':639 'write':569 'xlf':546 'xliff':545 'xlsx':535 'xml':543","prices":[{"id":"d4b0b736-3974-4f70-a41c-4c5444002ec6","listingId":"10a254d1-0ea2-452d-8df9-5e44880bd212","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:32:02.561Z"}],"sources":[{"listingId":"10a254d1-0ea2-452d-8df9-5e44880bd212","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-ai-translation-document-py","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-translation-document-py","isPrimary":false,"firstSeenAt":"2026-04-18T21:32:02.561Z","lastSeenAt":"2026-04-24T18:50:28.595Z"}],"details":{"listingId":"10a254d1-0ea2-452d-8df9-5e44880bd212","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-ai-translation-document-py","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"34a88a26dfaa943134453d404f39e35ab7f31ddf","skill_md_path":"skills/azure-ai-translation-document-py/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-translation-document-py"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-ai-translation-document-py","description":"Azure AI Document Translation SDK for batch translation of documents with format preservation. Use for translating Word, PDF, Excel, PowerPoint, and other document formats at scale."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-translation-document-py"},"updatedAt":"2026-04-24T18:50:28.595Z"}}