1. Help Center
  2. Phrase for Developers
  3. Working with Continuous Integration (CI)

Working with Continuous Integration (CI)

Phrase is designed to give you flexibility when it comes to customization. The following article shows a few example integrations.

How can I download my strings into a CI environment?

We offer an open source CLI client that runs on Linux, macOS and Windows. If you want to synchronize your translation from within your CI environment do the following:

1) Create a .phraseapp.yml configuration file 

2) Add a new bash script/step to your CI

If you want to upload new strings into Phrase use the following:

# upload new strings to Phrase as configured in the .phraseapp.yml
phraseapp push

The relevant parameters are listed in the linked section:
Please make sure to set the update_translation or update_description if you intend to not only introduce but also update already uploaded values.

If you want to download translated strings into your current workspace try something like:

# get new strings from PhraseApp as configured in the .phraseapp.yml
phraseapp pull

Make sure to include the right keys using tags and the desired options for verified and translated entries.

3) Register a webhook to subscribe to the desired events

You can register a webhook for any number of events. Checkout our help page for a list of all possible events.

How can I react to changes on my translations?

We do offer a webhook for each major event (e.g. processed upload or completed order).

One common workflow is to setup a notification for newly created comments in your slack channel as well as import scripts for the completion of jobs.

You can of course use our API to query the current state of those as well (depending on your update cycles).

Does Phrase work with branches?

Phrase has its own concept of branches for versioning, which differs from the typical use case in git branches. Our branches can certainly be used along git branches. Just check in the branch name in the configuration file on that branch and run your CI steps in those.

For most features you will not remove any existing translations, but  add new ones instead. Therefore we recommend to add tags to the corresponding branches and upload those into the main branch. This allows you not only to track which features share keys but also to pull and test on certain subsets without having to worry about confused translators.