Blackbird is the new automation backbone for the language technology industry. Blackbird provides enterprise-scale automation and orchestration with a simple no-code/low-code platform. Blackbird enables ambitious organizations to identify, vet and automate as many processes as possible. Not just localization workflows, but any business and IT process. This repository represents an application that is deployable on Blackbird and usable inside the workflow editor.
Phrase (previously Memsource) is a software as a service platform designed to automate and streamline translating and localizing digital products, such as web or mobile apps, websites, marketing content, etc. for international markets.
Before you can connect you need to make sure that:
- You have a Phrase account on the instance you want to connect to.
- You have permission to create and modify Registered OAuth apps.
- In Phrase go to Settings > Registered OAuth apps and click New.
- Fill in any name and description. For Redirect URI fill in:
https://bridge.blackbird.io/api/AuthorizationCode
and click Save. - Copy the Client ID of the newly created OAuth app.
- Navigate to apps and search for Phrase. If you cannot find Phrase then click Add App in the top right corner, select Phrase and add the app to your Blackbird environment.
- Click Add Connection.
- Name your connection for future reference e.g. 'My Phrase connection'.
- Fill in the Client ID that you copied from Phrase.
- Fill in the Base URL to the Phrase instance you want to connect to (this can be f.e. eu or us). Example:
https://us.cloud.memsource.com
- Click Authorize connection.
- Follow the instructions that Phrase gives you, authorizing Blackbird.io to act on your behalf.
- When you return to Blackbird, confirm that the connection has appeared and the status is Connected.
- List analyses
- Get analysis
- Create analysis
- Download analysis file
- List clients
- Get client
- Add client
- Update client
- Delete client
- List connector
- Get connector
- List all files
- Get file
- Upload file
- Create new glossary
- Export glossary
- Import glossary
- List all jobs
- Get job
- Create job
- Delete job
- Get segments
- Edit job
- Download target file
- List price lists
- List projects
- List project templates
- Get project
- Create project
- Create project from template
- Add target language
- Edit project
- Delete project
- List reference files
- Create reference file
- Download reference file
- Delete reference file
- Add ignored warning
- List LQA profiles
- Delete LQA profile
- Get quote
- Create quote
- Delete quote
- List translation settings
- Translate with MT
- Translate with MT by project
- List translation memories
- Create translation memory
- Get translation memory
- Import TMX file
- Export translation memory
- Insert segment into memory
- Delete translation memory
- List users
- Get user
- Add user
- Update user
- Delete user
- Add vendor
- List vendors
- Get vendor
- On project created
- On project deleted
- On project due date changed
- On project metadata updated
- On shared project assigned
- On project status changed
- On job created
- On job deleted
- On continuous job updated
- On job assigned
- On job due date changed
- On job exported
- On job source updated
- On job status changed
- On job target updated
- On job unexported
- On template created
- On template deleted
- On template updated
- On analysis created
This example shows one of many use cases. Here, whenever an article is published we fetch the missing translations and retrieve the article as an HTML file. Then we create a new Phrase project with the missing locales as the target languages and upload the article as jobs. We link the project with the article to automatically push the new translations back when they are done in a second bird.
Our app allows you to export an analysis file (via the Download analysis file action) and use it in your workflow whenever you need it. You can also specify the format in which you want to download the file (such as JSON, CSV, or log), and then import it into the service of your choice.
Here's an example to demonstrate this feature between the Phrase and XTRF apps:
Not all API endpoints are covered, let us know if you are missing features or if you see other improvements!
Feedback to our implementation of Phrase is always very welcome. Reach out to us using the established channels or create an issue.