Traducción automática

La página de Administración de Localización puede traducir automáticamente un archivo JSON de localización a uno o más idiomas en una sola pasada. Está construido sobre una abstracción independiente del proveedor — Azure AI Translator, DeepL y Google Cloud Translation integrados — y reutiliza una memoria de traducción respaldada por Dataverse, así que solo pagas por traducir cada cadena una vez. Los resultados se descargan por idioma o en un solo zip, cada uno anotado con cuántas cadenas se han traducido recientemente y cuántas se han reutilizado desde la memoria.

Traducir un archivo

Una vez configurada la función (véase Configuración, más abajo), aparece un panel de traducción en la página de Administración de Localización del framework:

  1. Sube un archivo — arrastra y suelta o navega hasta un archivo JSON de localización como app.en.json.
  2. Confirma el idioma de origen : se detecta automáticamente desde el segmento de cultura del nombre del archivo (app.en.json) y se mantiene editable.
  3. Elige idiomas objetivo — se ofrece cada cultura que tu portal soporta y que el proveedor pueda traducir; Las culturas que el proveedor no puede traducir aparecen como discapacitadas.
  4. Traducir — las cadenas se envían en lotes que respetan los límites por solicitud del proveedor, y los idiomas elegidos se traducen simultáneamente.
  5. Descargar — descargar cada idioma por separado o todos en un código postal. Cada fila informa cuántas cadenas se han traducido y cuántas se han reutilizado de la memoria.

Memoria de traducción

Cada cadena que traduce el proveedor se almacena en Dataverse, codificada por texto fuente, idioma fuente y idioma de destino. La siguiente vez que esa misma cadena aparece — en otro archivo, en otra ejecución o en una edición que la deja intacta — se sirve de memoria en lugar de reenviarse. Como los proveedores facturan por carácter, esto mantiene las repeticiones y retraducciones incrementales prácticamente libres, y el resultado por idioma muestra la división para que puedas ver exactamente qué había de nuevo.

Configuración

El panel traslador aparece solo cuando ambas piezas inferiores están en su lugar; De lo contrario, la página de administración lo omite (o muestra un mensaje de una línea explicando qué falta).

1. Instalar la solución de memoria de traducción

La memoria de traducción reside en dos tablas Dataverse provisionadas por la PowerPortalsProLocalization solución gestionada. Descarga la última solución gestionada de las versiones de GitHub e impórtala a tu entorno. La página de administración detecta la solución por su nombre único y solo ofrece traducción cuando está presente.

2. Registrar un proveedor de traducción

Tres proveedores se entregan listos para usar — Azure AI Translator, DeepL y Google Cloud Translation — cada uno en su propio paquete NuGet, por lo que el framework central no implica dependencia del proveedor de traducción. Añade el paquete del servicio para el que tienes una clave y regístralo junto a AddPowerPortalsProWebServer(). Para Azure, crea un recurso gratuito (F0) o de pago de Azure AI Translator , y luego regístralo con tu clave y región:

Para DeepL, añade el PowerPortalsPro.Web.Server.Translation.DeepL paquete y regístralo con tu clave de autenticación (las claves de la franja libre terminan automáticamente en :fx ruta al punto final gratuito):

Para Google Cloud Translation, añade el PowerPortalsPro.Web.Server.Translation.Google paquete y regístralo con una clave API que tenga activada la API de Cloud Translation:

Nota

Dejar la clave en blanco es seguro: el proveedor simplemente no está registrado y el panel de traducción permanece oculto, por lo que la misma compilación se ejecuta con o sin traducción configurada.

Trae tu propio proveedor

La traducción es independiente del proveedor. Los proveedores integrados de Azure, DeepL y Google son cada uno una implementación de ITranslationProvider, entregada en sus propios PowerPortalsPro.Web.Server.Translation.* paquetes, por lo que el framework central no implica dependencia del proveedor de traducción. Para usar un servicio diferente — Amazon Translate, un modelo local, un LLM — implévalo ITranslationProvider y regístralo en lugar de los integrados. Todo lo que está encima (la interfaz de administración, la memoria de traducción, el procesamiento por lotes y los recuentos traducidos vs. reutilizados) sigue igual.

Blazor y React

El panel de traducción es un componente autónomo en ambas pilas, así que puedes alojarlo en tu propia página de administración en lugar de en la del framework. Cada uno carga sus propios datos de disponibilidad y no renderiza nada hasta que se configure la traducción:

React
Blazor

Nota

Las ejecuciones de traducción están acotadas automáticamente: las solicitudes se dividen para mantenerse dentro de los límites de tamaño por solicitud del proveedor, los idiomas destino se ejecutan con concurrencia limitada y las respuestas limitadas (HTTP 429) se vuelven a intentar con retroceso exponencial, por lo que un trabajo grande multilingüe se mantiene dentro de los límites de velocidad en cualquier nivel de proveedor sin configuración adicional.