How to translate

We use Crowdin as our translation system. To submit translations, create an account, click the desired language and apply as translator. Once you are accepted, you can click through the various files and suggest translations.

A general rule of thumb is: Quality, not quantity! If you are unsure about the context of a string or about what it could mean, leave it untouched. It’s much better to have the correct English string there instead of having a wrong translation which doesn’t make sense to the user.

Difference between LineageOS and LineageOS AOSP

On Crowdin you will notice two different projects:

My language is not there and I have checked several times

You seem to speak a language which nobody else does… or there has just been the lack of someone willing to provide support. Contact one of the managers so we can support you by adding your language as well.

I have translated a lot, how do I get these to my device now?

There is (or should be) at least one proofreader for each language (you can apply, if not). Proofreaders will look through the strings and validate those which they think are fitting the context and are of a high-enough quality. In the event that you do not see an active review or acceptance of your (or alternative) suggestions, you can contact one of the proofreaders via the sidebar on the right. To do so, simply type “@” followed by the name and then add the message (e.g. “@NameHere: Please look through my translations on this file”).
After the strings have been validated, a scripted job is run (by one of the Managers to import the strings to Gerrit. After a successful test build they get merged to source code and will be part of every new official build.

Correcting wrong strings

Translated strings

Sometimes you will notice translated strings which seem to be slightly different from what you’d expect or simply wrong. There are various reasons to how this can happen, but still, the only relevant thing is how to improve the translation. Just suggest your translation like you would do for any untranslated string. After saving it you will have the possibility to “Notify the proofreader”.

Original strings

There is no guarantee the original strings you want to translate are perfect. If you notice an issue there, use the side bar and mark the field “issue”, then type some info on what you think is wrong. If the mistake is only minor, correct this error in your translation, and submit it.

What not to translate

Having the source code and crowdin strings in sync is not an easy job and stuff can slip through. Generally you need to pay attention to a few things:

  1. Strings starting with @ (very often used in strings like @string/<something>) - these are marked as translatable when they shouldn’t be. Please use the issue checkbox on the right of the screen to notify us.
  2. Strings with xliff tags, e.g. <xliff:g id="name" example="Help improve LineageOS">%1$s</xliff:g>: Keep the whole thing untouched and embed it into your translation at an appropriate place. The example is just there to tell you what can be inserted instead of %1$s in the OS so you know where to place it in your translation. There is no need to touch this either.


Every string requires to be validated by a proofreader. In case your language doesn’t have an active proofreader, you can apply for it. As a proofreader, you also have to make sure that the submitted strings match the context.