What you’ll need #️⃣

This guide uses Localazy’s GitHub Actions (Upload and Download) to run localization steps in your CI/CD pipeline.

Ensure your strings are already externalized in a supported file format

Store your Localazy writeKey and readKey as GitHub repository secrets (LOCALAZY_WRITE_KEY and LOCALAZY_READ_KEY) instead of putting them in the config file. Add them under Settings > Secrets and variables > Actions.

LOCALAZY_WRITE_KEY: "your-write-key"
LOCALAZY_READ_KEY: "your-read-key"

Set up the Localazy configuration file #️⃣

Create a localazy.json in your project root:

{
  "upload": {
    "type": "json",
    "files": "locales/en.json"
  },
  "download": {
    "files": "locales/${lang}.json"
  }
}

Upload source files #️⃣

Create .github/workflows/localazy-upload.yml:

name: Upload source strings to Localazy
on:
  push:
    branches: [main]
jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: localazy/upload@v1
        with:
          write_key: ${{ secrets.LOCALAZY_WRITE_KEY }}
          read_key: ${{ secrets.LOCALAZY_READ_KEY }}

Uploads your source language file to Localazy on every push to main.

Download translated files #️⃣

Create .github/workflows/localazy-download.yml:

name: Download translations from Localazy
on: workflow_dispatch
jobs:
  download:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: localazy/download@v1
        with:
          write_key: ${{ secrets.LOCALAZY_WRITE_KEY }}
          read_key: ${{ secrets.LOCALAZY_READ_KEY }}
      - uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: "Update translations from Localazy [skip ci]"

Downloads all available translations and commits them to your repository. The workflow_dispatch trigger lets you run it manually from the Actions tab. The [skip ci] in the commit message prevents the download commit from re-triggering other workflows.

You can automate this any way you want later, e.g. download translations at the beggining of your full build pipeline.

Next steps #️⃣