Véase CHANGELOG.md para el registro completo.
Lanzamientos
3.2.0 —
- Smart change detection now defaults to
smart: a compact provider-neutral state manifest (.github/resource-translator-state.json) tracks parser keys, source hashes, target hashes, and translation-affecting settings so only changed or missing keys are sent to the selected provider. UsechangeDetection=disabledorfalsefor legacy always-translate behavior,statePathto relocate the manifest, andsnapshotOnlyto bootstrap the manifest from existing target files without calling a provider. The same release adds nested {provider} blocks, AWS/Google-native behavior knobs, narrow-friendly reference cards, and official provider-doc links. Key-level audit rule codes are logged for every decision.
3.1.0 —
- Multi-proveedor: traducir con Azure AI Translator, AWS Translate o Google Cloud Translation detrás de una sola superficie API unificada. Elige un único proveedor por partida con la nueva entrada
provider; la acción delega al SDK correspondiente detrás de una fábrica y se comporta de forma idéntica independientemente del proveedor. Totalmente compatible hacia atrás —providerpor defecto esazure, así que los flujos de trabajo existentes de Azure siguen funcionando sin cambios. - Nuevo proveedor de traducción de AWS (
@aws-sdk/client-translate). Autentifícate con la cadena de credenciales predeterminada de AWS (recomendado: OIDC vía aws-actions/configure-aws-credentials) o conawsAccessKeyIdexplícita /awsSecretAccessKey; región a través deawsRegionoAWS_REGION. - Nuevo proveedor de traducción en la nube de Google (
@google-cloud/translate, v2). Autenticar con una credencial JSON de la cuenta de servicio (googleCredentials) o una clave API (googleApiKey); OpcionalgoogleProjectId. - Nuevas entradas:
provider,awsAccessKeyId,awsSecretAccessKey,awsRegion,googleApiKey,googleCredentials,googleProjectId. - Mapeo de especificador de intención:
textTypemapea a laformatde Google yprofanityActionmapas a AWS con mascarar palabrotas donde existe un equivalente. Los especificadores solo de Azure (categoryId,apiVersion,profanityMarker,allowFallback) son ignorados por otros proveedores. - Las entradas de solicitud de Azure (
subscriptionKey,endpoint,region) ya no se marcan como obligatorias enaction.ymlpara que se puedan seleccionar otros proveedores — aunque se validen en tiempo de ejecución cuandoproviderestáazure. - Nuevas páginas de proveedores de traducción, pestañas de proveedores en Empezar, selección de proveedores en la página de Entradas y una página de inicio actualizada que inicia con Azure, AWS y Google.
3.0.2 —
- Solucionado: solicitudes de traductor ahora fijan
api-version=3.0en la línea tanto para/translatecomo para/languages. El SDK de Azure solo respeta la opción de versión de la API a nivel de cliente cuando se pasa una credencial; la acción se autentica por solicitud mediante cabeceras, por lo que esa opción se eliminó silenciosamente y las solicitudes pasaron por defecto a una versión previa de la API cuyo contrato de/translaterechazó el cuerpo con HTTP 400 (código de error400074). Completa la corrección que comenzó en la 3.0.1.
3.0.1 —
- Solucionado: El cuerpo de la solicitud
/translateahora es un array JSON desnudo de{ text }elementos en lugar de un objeto{ inputs }encapsulado, que coincide con el contrato REST v3.0. Por sí solo, esto no restauraba las traducciones — véase 3.0.2.
3.0.0 —
- Ha aumentado a
node24duración (ROMPIENDO). - Nuevas entradas:
include,exclude,configPath,categoryId,apiVersion,dryRun,failOnError, además de perillas avanzadas del traductortextType,profanityAction,profanityMarkeryallowFallback. - La localidad de origen ahora también se reenvía a Translator como
from=<locale>para que las cadenas cortas no se detecten automáticamente. - Resiliencia: reintento automático en respuestas HTTP transitorias (
408, 425, 429, 500, 502, 503, 504) que respeta la cabeceraRetry-Afterde Azure — vuelve a un retroceso exponencial con jittered cuando está ausente. Ajustable mediantemaxRetriesyretryBackoffMs. Cierra el #46. - Protección provisional: tokens como
{{name}},${var},{0},{0:N2},%s,%1$sy HTML se envuelven en centinelas antes de la traducción y se restauran después, así que el traductor deja de manipular los marcadores de posición i18next/Mustache/Handlebars/.NET/printf. Alternar medianteprotectPlaceholders; Extiende concustomPlaceholderPatterns. Aprieta el #16. - Exclusión por llave: nueva entrada de
noTranslatePatternselimina por completo las claves coincidentes de la solicitud del traductor (conserva los valores fuente de nombres de marcas, códigos de error, etc.). Compara patrones glob con claves a nivel de analizador (JSON doted path, RESXname, POmsgid, unidad XLIFFid, clave INI/restext). Cierra el #35. - Configuración a nivel de repositorio mediante
.github/resource-translator.yml. - Soporte para el glosario, resumen de pasos vía
core.summary. - esbuild bundler, ESLint 9 flat config, Prettier, EditorConfig.
- Auditoría NPM limpia (0 vulnerabilidades).
- Sitio de documentación de Astro + Tailwind v4 con transiciones de vista y Código Expresivo.
- Accesibilidad a la documentación: pase WCAG 2.1 AA. Los glifos del logo se convierten en rutas para que ya no fallen en contraste de color con los registros de degradado, el botón de
Back to topflotante usainertmientras está oculto (en lugar de un interruptor dearia-hiddenque lo dejaba tablable),formats.astrosecciones ya no colisionan con sus identificadores de encabezado generados automáticamente, tres tarjetas de localidad ahora exponen atributos delangválidos para BCP-47 (nya→ny,lug→lg,run→rn), las etiquetas duplicadasDocumentationde puntos de referencia se desambiguan entre la barra lateral y el pie de página, y todas las tablas de datos eninputs/configurationvienen con un pie de foto para lector de pantalla. - Estilo de código en línea: prosa de Docs
<code>ahora lleva el acento cálido/ámbar — distinto de la paleta → marcasacentos usada para enlaces y encabezados. - Auto-fusión Dependabot, escaneo CodeQL, matriz CI.
2.2.1 —
- Security: bumped axios (1.4.0 → 1.6.0), @babel/traverse, semver, and tough-cookie/@azure/ms-rest-js to clear Dependabot alerts.
2.2.0 —
- Maintenance release (dependency and dist refresh).
2.1.9 —
- Dependency upgrades (including xml2js 0.4.23 → 0.5.0) and a refreshed dist build.
2.1.8 —
- Security: bumped follow-redirects, node-fetch, decode-uri-component, minimist, ansi-regex, jsdom, json5, minimatch, and @actions/core (1.2.6 → 1.9.1).
2.1.7 —
- Use a different delimiter when building the translation map so keys containing the previous separator are handled correctly (#36).
- Fixes #32.
2.1.6 —
- Assorted bug fixes and improved logging.
2.1.5 —
- Fix an issue with file names containing four segments.
2.1.4 —
- Added a JSON parser and .json file support.
- Fix batching bug (#18).
2.1.3 —
- Maintenance release.
2.1.2 —
- Fixes #15.
2.1.1 —
- Fix the generated step summary.
2.1.0 —
- Support for additional resource file formats beyond .resx: .ini, .po, .restext, and .xliff.
2.0.4 —
- Maintenance release.
2.0.3 —
- Fixes a batching bug and other related issues.
2.0.2 —
- File filtering to limit excessive translations.
- Batching of the translate API call to avoid rate limiting.
2.0.1 —
- New action outputs: has-new-translations, summary-title, and summary-details.
- Fix a bug where an error was logged but the action failure was not set.
2.0.0 —
- First official, fully functional and verified release.
1.0.1 —
- Build release.
1.0.0 —
- Initial release of the Azure AI Translator resource action (.resx support).
0.0.x —
- Initial prototype pre-releases (tags 0.01–0.09).