Skip to content
Gradle plugin which simplifies Android string resources & translations synchronization with POEditor.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
build.gradle version bump Nov 11, 2019


Gradle plugin which simplifies Android string resources & translations synchronization with POEditor (API v2).

With the help of this plugin you can either download strings.xml for all existing locales in your project or export your own terms and translations to POEdtior in order to keep both sources - local and remote - up-to-date.


1. Add plugin's classpath to your app-level build.gradle.

buildscript {
    repositories {
        maven { url "" }
    dependencies {
        final localizerVer = '1.0.5'

        classpath "$localizerVer"

2. Apply plugin in your module-level build.gradle.

apply plugin: 'com.betterme.localizer'

3. Set up POEditor configs and translations upload/download parameters.

localizer {
    apiToken = getPoEditorApiToken()
    projectId = getPoEditorProjectId()

    resourcesPath = "${rootDir}/app/src/main/res".toString()

    overwriteOnExport = "true"
    syncTerms = "true"
    exportLocale = "en"
    supportRegions = "true" // optional, false by default
    filters = ["translated"]
    tags = ["android"]

apiToken: api token for your POEditor project.

projectId: project ID of your project in POEditor.

resourcesPath: path to your values folder in current project.

It's important to convert resourcesPath to Groovy String type with toString() method for compatibility with Java type system.

overwriteOnExport: allows or denies (if set to false) strings overwriting on their upload.

exportLocale: desired locale for local strings resources to be uploaded to POEditor. Usually, should be set to your default language ("en"), as it's the most common case when you need to keep your English (as primary ones) terms up-to-date in POEditor as well. But other languages may also be the case if there are some typos in POEditor translations or special symbols need to be used in remote strings.xml, that need to be applied to remote versions of your strings.

syncTerms: allows or denies (if set to false) two-sided strings synchronization with POEditor API, and automatically removes strings remotely deleted locally.

filters: Filter strings by 'translated', 'untranslated', 'fuzzy', 'not_fuzzy', 'automatic', 'not_automatic', 'proofread', 'not_proofread' (only available when Proofreading is set to "Yes" in Project Settings).

tags: Filter strings by tags.

supportRegions: enables or disables (if set to false or not defined) regional locales support (which are usually defined in the following pattern in POEditor zh_CH). By default, or if set to false externally, the regional postfix (i.e. _CH in zh_CH will be omitted).

Finally, this plugin is ready to use!


In order to trigger the tasks consider selecting downloadTranslations and uploadTranslations tasks in translations group Gradle tasks folder associated to the module where you apply this plugin.

Improvement ideas and pull requests are highly appreciated.

You can’t perform that action at this time.