def sample_translation():
    # [START begin_translation]
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import DocumentTranslationClient

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    poller = client.begin_translation(source_container_url, target_container_url, "fr")
    result = poller.result()

    print("Status: {}".format(poller.status()))
    print("Created on: {}".format(poller.details.created_on))
    print("Last updated on: {}".format(poller.details.last_updated_on))
    print("Total number of translations on documents: {}".format(poller.details.documents_total_count))

    print("\nOf total documents...")
    print("{} failed".format(poller.details.documents_failed_count))
    print("{} succeeded".format(poller.details.documents_succeeded_count))

    for document in result:
        print("Document ID: {}".format(document.id))
        print("Document status: {}".format(document.status))
        if document.status == "Succeeded":
            print("Source document location: {}".format(document.source_document_url))
            print("Translated document location: {}".format(document.translated_document_url))
            print("Translated to language: {}\n".format(document.translated_to))
        else:
            print("Error Code: {}, Message: {}\n".format(document.error.code, document.error.message))
예제 #2
0
def sample_multiple_translation():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import (DocumentTranslationClient,
                                               DocumentTranslationInput,
                                               TranslationTarget)

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url_1 = os.environ["AZURE_SOURCE_CONTAINER_URL_1"]
    source_container_url_2 = os.environ["AZURE_SOURCE_CONTAINER_URL_2"]
    target_container_url_fr = os.environ["AZURE_TARGET_CONTAINER_URL_FR"]
    target_container_url_ar = os.environ["AZURE_TARGET_CONTAINER_URL_AR"]
    target_container_url_es = os.environ["AZURE_TARGET_CONTAINER_URL_ES"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    poller = client.begin_translation(inputs=[
        DocumentTranslationInput(
            source_url=source_container_url_1,
            targets=[
                TranslationTarget(target_url=target_container_url_fr,
                                  language_code="fr"),
                TranslationTarget(target_url=target_container_url_ar,
                                  language_code="ar")
            ]),
        DocumentTranslationInput(source_url=source_container_url_2,
                                 targets=[
                                     TranslationTarget(
                                         target_url=target_container_url_es,
                                         language_code="es")
                                 ])
    ])
    result = poller.result()

    print(f"Status: {poller.status()}")
    print(f"Created on: {poller.details.created_on}")
    print(f"Last updated on: {poller.details.last_updated_on}")
    print(
        f"Total number of translations on documents: {poller.details.documents_total_count}"
    )

    print("\nOf total documents...")
    print(f"{poller.details.documents_failed_count} failed")
    print(f"{poller.details.documents_succeeded_count} succeeded")

    for document in result:
        print(f"Document ID: {document.id}")
        print(f"Document status: {document.status}")
        if document.status == "Succeeded":
            print(f"Source document location: {document.source_document_url}")
            print(
                f"Translated document location: {document.translated_document_url}"
            )
            print(f"Translated to language: {document.translated_to}\n")
        else:
            print(
                f"Error Code: {document.error.code}, Message: {document.error.message}\n"
            )
예제 #3
0
def sample_translation_with_glossaries():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import (DocumentTranslationClient,
                                               DocumentTranslationInput,
                                               TranslationTarget,
                                               TranslationGlossary)

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]
    glossary_url = os.environ["AZURE_TRANSLATION_GLOSSARY_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    inputs = DocumentTranslationInput(
        source_url=source_container_url,
        targets=[
            TranslationTarget(target_url=target_container_url,
                              language_code="es",
                              glossaries=[
                                  TranslationGlossary(
                                      glossary_url=glossary_url,
                                      file_format="TSV")
                              ])
        ])

    poller = client.begin_translation(inputs=[inputs])

    result = poller.result()

    print("Status: {}".format(poller.status()))
    print("Created on: {}".format(poller.details.created_on))
    print("Last updated on: {}".format(poller.details.last_updated_on))
    print("Total number of translations on documents: {}".format(
        poller.details.documents_total_count))

    print("\nOf total documents...")
    print("{} failed".format(poller.details.documents_failed_count))
    print("{} succeeded".format(poller.details.documents_succeeded_count))

    for document in result:
        print("Document ID: {}".format(document.id))
        print("Document status: {}".format(document.status))
        if document.status == "Succeeded":
            print("Source document location: {}".format(
                document.source_document_url))
            print("Translated document location: {}".format(
                document.translated_document_url))
            print("Translated to language: {}\n".format(
                document.translated_to))
        else:
            print("Error Code: {}, Message: {}\n".format(
                document.error.code, document.error.message))
def sample_document_status_checks():
    # [START list_document_statuses]
    import os
    import time
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import DocumentTranslationClient

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    poller = client.begin_translation(source_container_url,
                                      target_container_url, "es")

    completed_docs = []
    while not poller.done():
        time.sleep(30)

        doc_statuses = client.list_document_statuses(poller.id)
        for document in doc_statuses:
            if document.id not in completed_docs:
                if document.status == "Succeeded":
                    print(
                        "Document at {} was translated to {} language. You can find translated document at {}"
                        .format(document.source_document_url,
                                document.translated_to,
                                document.translated_document_url))
                    completed_docs.append(document.id)
                if document.status == "Failed":
                    print(
                        "Document at {} failed translation. Error Code: {}, Message: {}"
                        .format(document.source_document_url,
                                document.error.code, document.error.message))
                    completed_docs.append(document.id)
                if document.status == "Running":
                    print(
                        "Document ID: {}, translation progress is {} percent".
                        format(document.id,
                               document.translation_progress * 100))

    print("\nTranslation completed.")
예제 #5
0
def sample_translation_with_custom_model():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import (DocumentTranslationClient)

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]
    custom_model_id = os.environ["AZURE_CUSTOM_MODEL_ID"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    poller = client.begin_translation(source_container_url,
                                      target_container_url,
                                      "es",
                                      category_id=custom_model_id)
    result = poller.result()

    print(f"Operation status: {poller.details.status}")
    print(f"Operation created on: {poller.details.created_on}")
    print(f"Operation last updated on: {poller.details.last_updated_on}")
    print(
        f"Total number of translations on documents: {poller.details.documents_total_count}"
    )

    print("\nOf total documents...")
    print(f"{poller.details.documents_failed_count} failed")
    print(f"{poller.details.documents_succeeded_count} succeeded")

    for document in result:
        print(f"Document ID: {document.id}")
        print(f"Document status: {document.status}")
        if document.status == "Succeeded":
            print(f"Source document location: {document.source_document_url}")
            print(
                f"Translated document location: {document.translated_document_url}"
            )
            print(f"Translated to language: {document.translated_to}\n")
        else:
            print(
                f"Error Code: {document.error.code}, Message: {document.error.message}\n"
            )
def sample_translation_specific_document():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import DocumentTranslationClient

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_blob_url = os.environ["AZURE_SOURCE_BLOB_URL"]
    target_blob_url = os.environ["AZURE_TARGET_BLOB_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    poller = client.begin_translation(source_blob_url, target_blob_url, "fr", storage_type="File")
    result = poller.result()

    for document in result:
        print(f"Document ID: {document.id}")
        print(f"Document status: {document.status}")
        if document.status == "Succeeded":
            print(f"Source document location: {document.source_document_url}")
            print(f"Translated document location: {document.translated_document_url}")
            print(f"Translated to language: {document.translated_to}\n")
        else:
            print(f"Error Code: {document.error.code}, Message: {document.error.message}\n")
def sample_translation_under_folder():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import DocumentTranslationClient

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]  # do not include the folder name in source url
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    poller = client.begin_translation(source_container_url, target_container_url, "fr", prefix="myfoldername")
    result = poller.result()

    for document in result:
        print(f"Document ID: {document.id}")
        print(f"Document status: {document.status}")
        if document.status == "Succeeded":
            print(f"Source document location: {document.source_document_url}")
            print(f"Translated document location: {document.translated_document_url}")
            print(f"Translated to language: {document.translated_to}\n")
        else:
            print(f"Error Code: {document.error.code}, Message: {document.error.message}\n")
예제 #8
0
    def sample_translation_with_azure_blob(self):

        translation_client = DocumentTranslationClient(
            self.endpoint, AzureKeyCredential(self.key))

        blob_service_client = BlobServiceClient(self.storage_endpoint,
                                                credential=self.storage_key)

        source_container = self.create_container(
            blob_service_client,
            container_name=self.storage_source_container_name
            or "translation-source-container",
        )
        target_container = self.create_container(
            blob_service_client,
            container_name=self.storage_target_container_name
            or "translation-target-container")

        if self.document_name:
            with open(self.document_name, "rb") as doc:
                source_container.upload_blob(self.document_name, doc)
        else:
            self.document_name = "example_document.txt"
            source_container.upload_blob(
                name=self.document_name,
                data=
                b"This is an example translation with the document translation client library"
            )
        print(
            f"Uploaded document {self.document_name} to storage container {source_container.container_name}"
        )

        source_container_sas_url = self.generate_sas_url(source_container,
                                                         permissions="rl")
        target_container_sas_url = self.generate_sas_url(target_container,
                                                         permissions="wl")

        poller = translation_client.begin_translation(
            source_container_sas_url, target_container_sas_url, "fr")
        print(f"Created translation operation with ID: {poller.id}")
        print("Waiting until translation completes...")

        result = poller.result()
        print(f"Status: {poller.status()}")

        print("\nDocument results:")
        for document in result:
            print(f"Document ID: {document.id}")
            print(f"Document status: {document.status}")
            if document.status == "Succeeded":
                print(
                    f"Source document location: {document.source_document_url}"
                )
                print(
                    f"Translated document location: {document.translated_document_url}"
                )
                print(f"Translated to language: {document.translated_to}\n")

                blob_client = BlobClient.from_blob_url(
                    document.translated_document_url,
                    credential=self.storage_key)
                with open("translated_" + self.document_name, "wb") as my_blob:
                    download_stream = blob_client.download_blob()
                    my_blob.write(download_stream.readall())

                print("Downloaded {} locally".format("translated_" +
                                                     self.document_name))
            else:
                print("\nThere was a problem translating your document.")
                print(
                    f"Document Error Code: {document.error.code}, Message: {document.error.message}\n"
                )