A GitHub Action that automatically creates machine-translated PRs of translation files. Supported file formats include:
- .ini
- .po
- .restext
- .resx
- .xliff
- .json
# This is a basic workflow to help you get started with Actions
name: Create translation pull request
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the main branch
on:
push:
branches: [ main ]
paths:
- '**.ini' # INI-based, key value pair file format
- '**.po' # Portable Object file format
- '**.restext' # INI-based, key value pair file format
- '**.resx' # XML-based (resource) translation file format, .NET
- '**.xliff' # XML-based translation file format, version 2
- '**.json' # JSON-based, key value pair file format
# GitHub automatically creates a GITHUB_TOKEN secret to use in your workflow.
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Use the machine-translator to automatically translate resource files
- name: Machine Translator
id: translator
uses: IEvangelist/[email protected]
with:
# The source locale (for example, 'en') used to create the glob pattern
# for which resource (**/*.en.resx) files to use as input
sourceLocale: 'en'
# The Azure Cognitive Services translator resource subscription key
subscriptionKey: ${{ secrets.AZURE_TRANSLATOR_SUBSCRIPTION_KEY }}
# The Azure Cognitive Services translator resource endpoint.
endpoint: ${{ secrets.AZURE_TRANSLATOR_ENDPOINT }}
# (Optional) The Azure Cognitive Services translator resource region.
# This is optional when using a global translator resource.
region: ${{ secrets.AZURE_TRANSLATOR_REGION }}
# (Optional) Locales to translate to, otherwise all possible locales
# are targeted. Requires double quotes.
toLocales: '["es","fr","de"]'
- name: create-pull-request
uses: peter-evans/[email protected]
if: ${{ steps.translator.outputs.has-new-translations }} == 'true'
with:
title: '${{ steps.translator.outputs.summary-title }}'
commit-message: '${{ steps.translator.outputs.summary-details }}'
Required | Input name | Example |
---|---|---|
Yes | sourceLocale |
'en' |
Yes | subscriptionKey |
'c571d5d8xxxxxxxxxxxxxxxxxx56bac3' |
Yes | endpoint |
'https://api.cognitive.microsofttranslator.com/' |
No | region |
'canadacentral' |
No | toLocales |
'"es,de,fr"' or '["es","de","fr"]' |
For more information, see GitHub Action using inputs.
Input name | Description |
---|---|
has-new-translations |
A boolean value indicating whether or not new translations have been generated. |
summary-title |
A general summary title of the translations when they occur. Ideal for PR titles. |
summary-details |
A detailed summary, formatted in Markdown. Ideal for PR message. |
For more information, see GitHub Action outputs.
Thanks goes to these wonderful people (emoji key):
vs-savelich 💻 |
Yevgen Nykytenko 🐛 |
Peter Rekdal Khan-Sunde 🐛 |
Tim Heuer 🐛 🤔 👀 |
Tibor Tompa 🤔 |
Matteo 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!