Uso de Amazon Translate para traducir una página web - Amazon Translate

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de Amazon Translate para traducir una página web

Puede utilizar Amazon Translate para traducir el contenido de una página web. El siguiente programa de Java traduce una página web especificada del inglés al español y crea un archivo HTML que contiene el resultado de la traducción. Hay dos funciones en el programa:

  • Una función que lee los datos de la página web de origen, los separa en elementos HTML y, a continuación, llama a la segunda función para traducirlos. Al final del documento, escribe los resultados en un archivo HTML.

  • Una función que llama al servicio de Amazon Translate para traducir el contenido de un elemento HTML.

Este ejemplo funciona en páginas HTML sencillas sin elementos anidados.

Para configurar el ejemplo

  1. Instalar y configurar la AWS SDK for Java. Para obtener instrucciones acerca de cómo instalar el SDK for Java, consulteConfigurar laAWS SDK for Java.

  2. Instale el analizador HTML de Java jsoup. Para obtener instrucciones, consulte jsoup.

  3. Cree un usuario de IAM con los permisos mínimos necesarios para ejecutar este ejemplo. Para obtener información acerca de cómo crear un usuario de IAM, consulte Creación de un usuario de IAM en su cuenta de AWS en la Guía del usuario de AWS Identity and Access Management. Para conocer las políticas de permisos necesarias, consulte Políticas de Amazon Translate basadas en identidades.

  4. Configure las credenciales necesarias para ejecutar la muestra. Para obtener instrucciones, consulte Configuración de credenciales y regiones de AWS en la Guía para desarrolladores de AWS SDK for Java.

  5. Cree un nuevo proyecto en el IDE de Java y copie el código fuente.

  6. Cambie la región y el punto de enlace a la región en la que desea ejecutar la operación de Amazon Translate. Para obtener una lista de las regiones admitidas en Amazon Translate, consulteRegiones y puntos de enlace de AWSen laAWSReferencia general de.

package com.amazonaws.translateweb; import com.amazonaws.auth.AWSCredentialsProviderChain; import com.amazonaws.auth.EnvironmentVariableCredentialsProvider; import com.amazonaws.auth.SystemPropertiesCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.translate.AmazonTranslate; import com.amazonaws.services.translate.AmazonTranslateClient; import com.amazonaws.services.translate.model.TranslateTextRequest; import com.amazonaws.services.translate.model.TranslateTextResult; import com.amazonaws.AmazonServiceException; import java.io.IOException; import java.io.PrintWriter; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class TranslateWebPage { public static void main(String[] args) throws InterruptedException { // Define the URL of the HTML content to translate String url = "http://example.com/source.html"; // Create credentials using a provider chain that will evaluate in order; // a) Any Java system properties // b) Any environment variables // c) Any profile file AWSCredentialsProviderChain DefaultAWSCredentialsProviderChain = new AWSCredentialsProviderChain( new SystemPropertiesCredentialsProvider(), new EnvironmentVariableCredentialsProvider(), new ProfileCredentialsProvider() ); // Create an endpoint configuration for the Translate service AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration( "endpoint", "region"); // Create a client for the Translate service AmazonTranslate translate = AmazonTranslateClient.builder() .withCredentials(DefaultAWSCredentialsProviderChain) .withEndpointConfiguration(endpointConfiguration).build(); // Record the beginning of translating the HTML content at the url System.out.println("Translating URL: " + url); // Create an empty HTML document to store the parsed data Document doc; try { // Retrieve the HTML located at the URL doc = Jsoup.connect(url).get(); // Select all of the elements in the HTML Elements eles = doc.select("*"); // For each element for (Element ele : eles) { // Translate the element translateElement(ele, translate); // If you encounter service throttling when translating large web // pages, you can request a service limit increase. For details, // see https://aws.amazon.com/premiumsupport/knowledge-center/manage-service-limits/, // or you can throttle your requests by inserting a sleep statement. // Thread.sleep(1000); } // Configure an output file for the translated HTML String fname = "output HTML file name"; PrintWriter pw = new PrintWriter(fname, "UTF-8"); // Write our translated HTML to the output file pw.println(doc); pw.close(); // Record that the file has been saved System.out.println("Saved file "+fname); // Catch any exceptions in retrieving the HTML } catch (IOException e1) { e1.printStackTrace(); } } // This function is used to translate each individual element public static void translateElement(Element ele, AmazonTranslate translate) { // Check if the element has any text if (!ele.ownText().isEmpty()) { // Retrieve the text of the HTML element String text = ele.ownText(); // Now translate the element's text try { // Translate from English to Spanish TranslateTextRequest request = new TranslateTextRequest() .withText(text) .withSourceLanguageCode("en") .withTargetLanguageCode("es"); // Retrieve the result TranslateTextResult result = translate.translateText(request); // Record the original and translated text System.out.println("Original text: " + text + " - Translated text: "+ result.getTranslatedText()); // Update the HTML element with the translated text ele.text(result.getTranslatedText()); // Catch any translation errors } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } else { // We have found a non-text HTML element. No action required. } } }