Skip to content

Language

Choose your language

Switch to the same page in another language.

EnglishEnglishenAfrikaansAfrikaansafአማርኛAmharicamالعربيةArabicarঅসমীয়াAssameseasAzərbaycanAzerbaijaniazБашҡортBashkirbaБългарскиBulgarianbgभोजपुरीBhojpuribhoবাংলাBanglabnབོད་སྐད་Tibetanboबड़ोBodobrxBosanskiBosnianbsCatalàCatalancaČeštinaCzechcsCymraegWelshcyDanskDanishdaDeutschGermandeडोगरीDogridoiDolnoserbšćinaLower SorbiandsbދިވެހިބަސްDivehidvΕλληνικάGreekelEspañolSpanishesEestiEstonianetEuskaraBasqueeuفارسیPersianfaSuomiFinnishfiFilipinoFilipinofilVakavitiFijianfjFøroysktFaroesefoFrançaisFrenchfrFrançais (Canada)French (Canada)fr-CAGaeilgeIrishgaGalegoGalicianglकोंकणीKonkanigomગુજરાતીGujaratiguHausaHausahaעבריתHebrewheहिन्दीHindihiछत्तीसगढ़ीChhattisgarhihneHrvatskiCroatianhrHornjoserbsceUpper SorbianhsbHaitian CreoleHaitian CreolehtMagyarHungarianhuՀայերենArmenianhyIndonesiaIndonesianidÌgbòIgboigInuinnaqtunInuinnaqtuniktÍslenskaIcelandicisItalianoItalianitᐃᓄᒃᑎᑐᑦInuktitutiuInuktitut (Latin)Inuktitut (Latin)iu-Latn日本語JapanesejaქართულიGeorgiankaҚазақ ТіліKazakhkkខ្មែរKhmerkmKurmancîKurdish (Northern)kmrಕನ್ನಡKannadakn한국어KoreankoكٲشُرKashmiriksکوردیی ناوەندیKurdish (Central)kuКыргызчаKyrgyzkyLëtzebuergeschLuxembourgishlbLingálaLingalalnລາວLaoloLietuviųLithuanianltLugandaGandalugLatviešuLatvianlv中文 (文言文)Chinese (Literary)lzhमैथिलीMaithilimaiMalagasyMalagasymgTe Reo MāoriMāorimiМакедонскиMacedonianmkമലയാളംMalayalammlМонгол хэлMongolian (Cyrillic)mn-Cyrlᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡMongolian (Traditional)mn-MongমৈতৈলোনManipurimniमराठीMarathimrMelayuMalaymsMaltiMaltesemtHmong DawHmong Dawmwwမြန်မာMyanmar (Burmese)myNorsk BokmålNorwegian BokmålnbनेपालीNepalineNederlandsDutchnlSesotho sa LeboaSesotho sa LeboansoChinyanjaChichewanyaଓଡ଼ିଆOdiaorHñähñuQuerétaro OtomiotqਪੰਜਾਬੀPunjabipaPolskiPolishplدریDariprsپښتوPashtopsPortuguês (Brasil)Portuguese (Brazil)ptPortuguês (Portugal)Portuguese (Portugal)pt-PTRomânăRomanianroРусскийRussianruIkirundiRundirunKinyarwandaKinyarwandarwسنڌيSindhisdසිංහලSinhalasiSlovenčinaSlovakskSlovenščinaSlovenianslGagana SāmoaSamoansmchiShonaShonasnSoomaaliSomalisoShqipAlbaniansqСрпски (ћирилица)Serbian (Cyrillic)sr-CyrlSrpski (latinica)Serbian (Latin)sr-LatnSesothoSesothostSvenskaSwedishsvKiswahiliSwahiliswதமிழ்TamiltaతెలుగుTeluguteไทยThaithትግርTigrinyatiTürkmen DiliTurkmentkLea fakatongaTongantoTürkçeTurkishtrТатарTatarttReo TahitiTahitiantyئۇيغۇرچەUyghurugУкраїнськаUkrainianukاردوUrduurUzbek (Latin)Uzbek (Latin)uzTiếng ViệtVietnameseviisiXhosaisiXhosaxhÈdè YorùbáYorubayoYucatec MayaYucatec Mayayua粵語Cantonese (Traditional)yue中文 (简体)Chinese Simplifiedzh-Hans中文 (繁體)Chinese Traditionalzh-HantisiZuluisiZuluzu

Reference

Translation providers

Choose one translation provider per run — Azure AI Translator, AWS Translate, or Google Cloud Translation — behind a single, unified API surface. The translator behaves identically regardless of provider; only the credentials differ.

On this page

    Fully backward compatible: provider defaults to azure, so existing Azure workflows keep working unchanged — no edits required.

    Selecting a provider

    Set the provider input to azure (default), aws, or google, then supply that provider's credentials. Only one provider is used per action call; the action deterministically delegates to the matching SDK behind a factory.

    Provider comparison

    Azure AI Translator
    provider value
    azure (default)
    SDK
    @azure-rest/ai-translation-text

    subscriptionKey, endpoint, region (optional)

    AWS Translate
    provider value
    aws
    SDK
    @aws-sdk/client-translate

    OIDC / default chain, or awsAccessKeyId + awsSecretAccessKey; awsRegion

    Google Cloud Translation
    provider value
    google
    SDK
    @google-cloud/translate

    googleApiKey OR googleCredentials (service-account JSON)

    Azure AI Translator (default)

    The default provider. Provision an Azure AI Translator resource and pass subscriptionKey, endpoint, and optionally region. This is the same configuration existing workflows already use.

    Official Azure docs

    .github/workflows/translate.yml
    jobs:
    translate:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - id: translator
    uses: IEvangelist/resource-translator@v3
    with:
    provider: |
    azure:
    subscriptionKey: ${{ secrets.TRANSLATOR_KEY }}
    endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }}
    region: ${{ secrets.TRANSLATOR_REGION }}
    sourceLocale: en
    toLocales: '["es","fr","de"]'

    AWS Translate

    Uses @aws-sdk/client-translate. Prefer OIDC via aws-actions/configure-aws-credentials so no long-lived secrets are stored — the action reads the AWS SDK default credential chain. Alternatively, pass awsAccessKeyId and awsSecretAccessKey explicitly. A region is always required, via awsRegion or the AWS_REGION environment variable.

    Official AWS docs

    OIDC (recommended)

    .github/workflows/translate.yml
    permissions:
    id-token: write # for aws-actions/configure-aws-credentials OIDC
    contents: write
    pull-requests: write
    jobs:
    translate:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - uses: aws-actions/configure-aws-credentials@v4
    with:
    role-to-assume: arn:aws:iam::123456789012:role/gh-actions-translate
    aws-region: us-east-1
    - id: translator
    uses: IEvangelist/resource-translator@v3
    with:
    provider: |
    aws:
    region: us-east-1 # or rely on AWS_REGION from the step above
    formality: FORMAL
    brevity: true
    sourceLocale: en
    toLocales: '["es","fr","de"]'

    To use static keys instead of OIDC, drop the aws-actions/configure-aws-credentials step and pass awsAccessKeyId / awsSecretAccessKey (via secrets) plus awsRegion.

    Google Cloud Translation

    Uses @google-cloud/translate (v2). Authenticate with either an API key (googleApiKey) or a service-account JSON credential (googleCredentials). Supply exactly one; an optional googleProjectId is inferred from the credential when omitted.

    Official Google docs

    .github/workflows/translate.yml
    jobs:
    translate:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - id: translator
    uses: IEvangelist/resource-translator@v3
    with:
    provider: |
    google:
    # Provide EITHER a service-account JSON credential...
    credentials: ${{ secrets.GCP_TRANSLATE_CREDENTIALS }}
    # ...OR an API key:
    # apiKey: ${{ secrets.GCP_TRANSLATE_API_KEY }}
    model: nmt
    sourceLocale: en
    toLocales: '["es","fr","de"]'

    Intent-specifier mapping

    Provider-specific specifiers are mapped where an equivalent exists. Everything else falls back to sensible defaults so behavior stays consistent.

    textType
    Azure
    textType (plain / html)
    AWS
    Ignored (no toggle)
    Google
    format (text / html)
    profanityAction
    Azure
    Full support
    AWS
    Marked / Deleted → masking
    Google
    Ignored
    categoryId
    Azure
    Custom Translator
    AWS
    Ignored
    Google
    Ignored
    allowFallback
    Azure
    Supported
    AWS
    Ignored
    Google
    Ignored
    awsFormality
    Azure
    Ignored
    AWS
    Formality setting
    Google
    Ignored
    awsBrevity
    Azure
    Ignored
    AWS
    Brevity mode
    Google
    Ignored
    awsTerminologyNames
    Azure
    Ignored
    AWS
    Custom terminology
    Google
    Ignored
    awsParallelDataNames
    Azure
    Ignored
    AWS
    Parallel data
    Google
    Ignored
    googleModel
    Azure
    Ignored
    AWS
    Ignored
    Google
    Translation model
    googleApiEndpoint
    Azure
    Ignored
    AWS
    Ignored
    Google
    API endpoint override

    Locale codes differ per provider

    Each provider uses its own locale codes (for example Simplified Chinese is zh-Hans on Azure, zh on AWS, and zh-CN on Google). Codes pass through as-is and drive the output file names, so choose toLocales values your selected provider supports.