At PhraseApp we receive tons of feedback and questions from our users every day.
Users want to learn about best practices when working with translations in distributed teams: translation workflows, content versioning, branching etc. One of the most common questions is: “Does PhraseApp support branching?”.
Since we have already explained in the past why we don’t support branching in PhraseApp, we thought it might be a good idea to post this explanation in a more detailed version in our blog.
No, PhraseApp does not support branching and we don’t think it should, either. Why?
Translators And Project Managers Aren’t Developers
Branching (as in software development) is a complex topic and most developers need quite some time to learn the basic rules of branching.
- How can branches be merged safely?
- How many branches can the organisation handle until it becomes too confusing?
- How can I resolve merge conflicts?
- How do I name branches so that everyone knows what the branch is all about?
Even experienced programmers make mistakes that cause branches to be deleted by accident or that erase changes being made just by using the wrong merge method.
We at PhraseApp don’t think it is usually a good idea to confront translators and projects managers with these issues as they often do not have the technical background necessary to handle branching efficiently and safely.
Not offering branching or versioning of translation groups will help to keep our platform easy-to-use and reduce the amount of time required to master it’s features.
It’s all about a lean and easy workflow that every team member understands immediately!
Git (Or Your Favourite SCM) Already Supports Branching
When working on a software project you typically use an SCM. It doesn’t matter if it is git, Mercurial, SVN: They all already offer branching and have excellent methods to resolve merge conflicts (well, SVN maybe not so much). So you already have a powerful branching technology that can handle your branches and their content efficiently.
Can I Still Use Branches And Want To Structure My Translations
Using branches in your software project is fine. But you don’t need it when working with translation management systems like PhraseApp.
Instead we recommend using two simple techniques:
Tag your keys in groups according to features and/or releases/branches.
Your keys could be tagged with something like “new-profile-feature” or “payment-functionality-branch”. This lets you get a hold of the translations required to completely translate a given feature and even observe the progress of it’s translation with a few clicks.
Need fast tagging? Your developer could easily upload a locale file containing the source translations for the feature she’s working on and specify a set of tags that get added to the newly imported keys automatically!
The most important method to keep your keys organised is not tagging or branching – It’s clear naming! We recommend using generic naming for your keys, starting with the name of the area/feature the key is used in:
- “Welcome to our Website”
This makes it really easy to identify keys that belong to features that have maybe never been released and could be deleted from your PhraseApp project in order to keep it neat and organised.
We encourage you to continue using branching in your workflow. Just let your developers pull all recent translations from PhraseApp and avoid any merge conflicts in your locale files easily!
Be sure to subscribe and receive all updates from the PhraseApp blog straight to your inbox. You’ll receive localization best practices, about cultural aspects of breaking into new markets, guides and tutorials for optimizing software translation and other industry insights and information. Don’t miss out!
Also published on Medium.