Anula el camino con la entrada configPath si necesitas una ubicación no predeterminada.
Esquema
# .github/resource-translator.ymlsourceLocale: en
# Provider config can be nested. Keep secrets in workflow inputs; use repo# config for non-secret defaults like region, model, formality, or category.provider: azure: categoryId: my-custom-translator-category apiVersion: "3.0" allowFallback: true
toLocales: - fr - de - esinclude: - "src/**/*.en.json" - "apps/**/*.en.resx"exclude: - "**/__tests__/**"glossary: Acme: Contoso Octocat: Octocat # keep brand names verbatim
# Translator request shape — most users can ignore these.textType: plain # plain | htmlprofanityAction: NoAction # NoAction | Marked | DeletedprofanityMarker: Asterisk # Asterisk | Tag (only when profanityAction == Marked)
# Resilience — Translator returns 429 under load. Defaults are usually# fine; tune only if your runs are large enough to hit them.maxRetries: 5retryBackoffMs: 30000 # cap on any single backoff sleep (ms)
# Placeholder protection. ON by default — wraps tokens like {{name}},# {0}, %s, ${var} into sentinels before translation and restores them# on the way back. Set false only when source intentionally contains# placeholder-shaped literals.protectPlaceholders: truecustomPlaceholderPatterns: - "<<.+?>>" # any extra token syntax you use
# Per-key opt-out. Keys matching any glob are dropped from the request# and pass through with the source value preserved.noTranslatePatterns: - "errors.code.*" - "brands.*"Referencia de campo
providerEither a provider string or a nested provider block (provider.azure, provider.aws, or provider.google). Prefer nested blocks for provider-specific settings; keep secrets in workflow inputs rather than committed config.
sourceLocaleVuelve a la entrada sourceLocale si no está activado. También se reenvió a Translator como from=<locale> para que las cadenas cortas no se detecten automáticamente.
toLocalesYa sea un array o una cadena separada por comas.
include / excludePatrones de globos evaluados frente a caminos absolutos y relativos al espacio de trabajo.
glossaryAnulaciones de términos post-traducción. Consciente de la frontera de palabras (maneja C++, .NET).
categoryIdAzure Custom Translator categoría — tu perilla de industria/dominio (legal, médico, tono de marketing, etc.). Enviado como ?category=....
textTypePor defecto es plain. Usa html solo si los valores de tus recursos contienen fragmentos HTML reales.
profanityActionCómo tratar términos profanos en la traducción de la traducción.
profanityMarkerSolo tiene sentido cuando profanityAction es "Marked".
allowFallbackConfigura para false falle la traducción cuando tu categoryId no tiene despliegue para una localidad objetivo en lugar de volver al modelo general.
apiVersionVersión de la API REST del traductor. Por defecto es 3.0.
awsFormalityAWS Translate formality setting for supported target languages.
awsBrevitySet to true to enable AWS Translate brevity mode for supported language pairs.
awsTerminologyNames / awsParallelDataNamesAWS Translate custom terminology and parallel data resource names. Either an array or comma-separated string.
googleModelGoogle Cloud Translation model, e.g. nmt or base.
googleApiEndpointOptional Google Cloud Translation API endpoint override.
googleAutoRetryOptional Google Cloud Translation automatic retry toggle. Leave unset to use the Google client default.
maxRetriesIntentos máximos de reintentos en respuestas HTTP transitorias (408, 425, 429, 500, 502, 503, 504). Por defecto se pone 5. El total de llamadas HTTP por solicitud es 1 + maxRetries.
retryBackoffMsLímite (ms) en cualquier sueño de retroceso individual. Por defecto es 30000. El encabezado de Retry-After de Azure se respeta exactamente cuando está presente; de lo contrario, se utiliza un retroceso exponencial con jitter, limitado a este valor.
protectPlaceholdersPor defecto es true. Cuando están activados, tokens como {{name}}, ${var}, {0}, {0:N2}, %s, %1$s y HTML se reemplazan por tokens centinela antes de la traducción y se restauran después. Desactiva solo cuando la fuente contiene intencionadamente literales con forma de marcador de posición.
customPlaceholderPatternsPatrones regex adicionales (sin delimitadores) añadidos al conjunto de marcadores de posición por defecto, por ejemplo, <<.+?>> para sintaxis personalizada de tokens. Se ignoran las regex inválidas.
noTranslatePatternsLos patrones glob coincidían con las claves a nivel de analizador (JSON con puntos de camino, name RESX, msgid PO, id de unidad XLIFF, clave INI/restext). Las claves coincidentes se eliminan de la solicitud y pasan manteniendo su valor fuente.
changeDetectionDefaults to smart. Uses the committed state manifest to translate only changed or missing parser keys. Set to disabled or false to preserve the legacy always-translate behavior.
statePathPath to the deterministic smart change-detection state manifest. Defaults to .github/resource-translator-state.json.
Orden de carga
- La acción lee entradas explícitas del flujo de trabajo.
- Carga la configuración YAML desde
configPath. - Para cada campo compartido, la entrada gana; de lo contrario, se utiliza el valor YAML.
- Los valores fusionados se validan. Los enums inválidos (por ejemplo,
profanityAction: Mask) hacen que la acción falle rápidamente con un mensaje claro.
Tono e industria, en términos claros
La API de Azure AI Translator v3 no tiene ni un solo control de tono. Dos ajustes combinados te dan la mayor parte del mismo control:
- Industria / dominio: usa
categoryIdpara señalar una categoría de Azure Custom Translator entrenada con tu propio corpus — legal, técnico, médico, de marketing o cualquier otra cosa. Esta es la palanca más fuerte para el tono, la voz de marca y el vocabulario. - Texto superficial: Utiliza el Glosario para bloquear los nombres de marcas y términos de producto literalmente, y usa
profanityActionpara eliminar términos profanes cuando se dirija a la localización para audiencias más jóvenes.