Explorando Translation API para traducción de contenidos (Parte 4 de 5)1

Cómo usar translationPresentation de Translation API para traducir texto fácilmente

2

Translation API: Integrar traducciones en tu UI con TranslationSession

3

Translation API: Cómo realizar traducciones bajo demanda

4

Translation API: Cómo realizar múltiples traducciones

5

Translation API: Cómo verificar idiomas soportados

Translation API: Cómo realizar múltiples traducciones

En algunos escenarios, puede surgir la necesidad de traducir múltiples textos en tu app. Para esto, Translation API permite agrupar las traducciones en lotes y elegir cómo deseas recibir los resultados: todos a la vez o según se vayan completando.

Estas funcionalidades de la Translation API no están disponibles en el simulador. Es necesario usar un dispositivo real.

Para este artículo, supondrás que tienes un listado de frases bajo una estructura llamada Quote:

struct Qoute: Identifiable {
let id = UUID()
let text: String
}
let quotes = [
Qoute(text: "Solo sé que no sé nada"),
Qoute(text: "El hombre está condenado a ser libre"),
Qoute(text: "Pienso, luego existo"),
Qoute(text: "El hombre es la medida de todas las cosas"),
Qoute(text: "La vida debe ser vivida hacia adelante, pero solo puede ser entendida hacia atrás")
]

También supondrás que tienes una instancia llamada session de tipo TranslationSession que aprendiste a usar en artículos anteriores de esta serie y a acceder mediante el modificador translationTask de tu vista SwiftUI.

Recuerda que debes importar Translation API para hacer uso de ella:

import Translation

El objetivo es traducir todas las frases utilizando la Translation API.

Crear petición de traducción

Para crear una petición, debes utilizar la estructura TranslationSession.Request, que contiene las siguientes propiedades:

  • sourceText: el texto a traducir.
  • clientIdentifier: un identificador único para asociar la petición con su respuesta. Esta propiedad es opcional.

Dado que tienes un listado de frases, necesitarás crear una petición para cada frase. Esto se puede lograr utilizando la función map:

let requests = quotes.map { quote in
TranslationSession.Request(sourceText: quote.text, clientIdentifier: quote.id.uuidString)
}

Con esto, tendrás un arreglo de peticiones listo para enviar a Translation API.

Recibir todas las traducciones a la vez

Para recibir todas las traducciones a la vez, utiliza la función translations(from:) de TranslationSession:

func translations(from batch: [TranslationSession.Request]) async throws -> [TranslationSession.Response]

Esta función recibe un arreglo de peticiones y devuelve un arreglo de respuestas de tipo TranslationSession.Response. Puedes usarla así:

do {
let responses = try await session.translations(from: requests)
responses.forEach { debugPrint($0.targetText) }
} catch {
// Handle errors
}

En este ejemplo, se recorren todas las respuestas y se imprime el texto traducido.

Impresión en la consola de las frases traducidas

Cuando eliges recibir todas las traducciones a la vez, las respuestas se devuelven en el mismo orden en que se enviaron las peticiones. Por lo tanto, no es necesario asociar las respuestas con las peticiones mediante la propiedad clientIdentifier.

Recibir las traducciones según se vayan completando

Para recibir las traducciones según se vayan completando, utiliza la función translate(batch:) de TranslationSession:

func translate(batch: [TranslationSession.Request]) -> TranslationSession.BatchResponse

Esta función devuelve un objeto de tipo TranslationSession.BatchResponse, que proporciona respuestas de tipo TranslationSession.Response de manera asíncrona. Su implementación sería la siguiente:

do {
for try await response in session.translate(batch: requests) {
debugPrint(response.targetText)
}
} catch {
// Handle errors
}
Impresión en la consola de las frases traducidas

A diferencia del caso anterior, las respuestas pueden devolverse en un orden aleatorio. Por esta razón, es importante asociar las respuestas con las peticiones utilizando la propiedad clientIdentifier:

do {
for try await response in session.translate(batch: requests) {
if let quote = quotes.first(where: { $0.id.uuidString == response.clientIdentifier }) {
debugPrint(quote.text, response.targetText)
}
}
} catch {
// Handle errors
}

En este ejemplo, se valida que el identificador de la frase y el de la respuesta coincidan, y luego se imprime el texto original junto con su traducción.

Impresión en la consola de las frases originales y traducidas

Si quieres conocer más sobre iteraciones asíncronas, te recomiendo leer el artículo Trabajando con iteraciones asíncronas usando AsyncSequence.

Observaciones importantes

Cuando necesites traducir textos provenientes de varios idiomas, es recomendable separarlos en peticiones por idioma. Esto se debe a que Translation API puede devolver resultados incorrectos si se envían textos de diferentes idiomas en un mismo lote. Por ejemplo:

let spanishRequests: [TranslationSession.Request] = ...
let japaneseRequests: [TranslationSession.Request] = ...
do {
let spanishResponses = try await session.translations(from: spanishRequests)
let japaneseResponses = try await session.translations(from: japaneseRequests)
} catch {
// Handle errors
}

Conclusión

Translation API de Swift simplifica el proceso de traducción de múltiples textos mediante funcionalidades como el agrupamiento en lotes y la recepción de respuestas tanto simultáneas como por partes. Al aplicar las estrategias descritas en este artículo, podrás integrar traducciones eficientes y precisas en tu aplicación. Recuerda siempre validar las respuestas y separar las peticiones por idioma para garantizar la calidad de las traducciones. ¡Prueba estas técnicas y lleva tu aplicación a un nivel global!

Explorando Translation API para traducción de contenidos (Parte 4 de 5)1

Cómo usar translationPresentation de Translation API para traducir texto fácilmente

2

Translation API: Integrar traducciones en tu UI con TranslationSession

3

Translation API: Cómo realizar traducciones bajo demanda

4

Translation API: Cómo realizar múltiples traducciones

5

Translation API: Cómo verificar idiomas soportados

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2025 AsyncLearn