Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Kunstmaan Translations Editor


  • Edit your String.xml of specified Locales directly in the application
  • Share the modified values (xml or json)
  • Custom json and xml format
  • Add patterns to be ignored in the translations window (Strings from libraries, ...)
  • See the strings in 3 categories :
    • Current : Strings from the current view
    • In memory : Strings present in memory
    • All : All Strings of the application


Example project integrating this in the Android build process can be found here


in the build.gradle of your app, put:

implementation ''
// implementationDebug if needed only for debugging purposes


1. Build the Kunstmaan Translations Editor

// locales to be considered by the Translations Editor
List<Locale> localeList = new ArrayList<>();
                localeList.add(new Locale("nl"));
                localeList.add(new Locale("en", "US"));
new KunstmaanTranslationUtil.Builder(application, R.string.class.getFields(), locales, new Locale("en", "US"))

The builder needs the application context, the fields from the string class, the locales to be used in the Editor and the application's default locale

2. Show the Editor

with KunstmaanTranslationUtil.showTranslationsWindow();

In this example we use a button to show the Editor but we recommend the library KunstmaanShakerMenu to show the Editor after shaking the phone.


Add a Pattern to be ignored by the Editor

Use a [regex] ( to specify which keys from strings.xml should be ignored by the Editor.


Set a custom Json format

The default Json format of the shared changes is :

    "key": "key_of_string",
    "locale": "localeOfTheString",
    "newValue": "new value",
    "oldValue": "old value"

you can provide your own format to be used.
Use this place holders where you want the value to appear :

  • ${key}
  • ${locale}
  • ${newValue}
  • ${oldValue}
.addCustomJsonFormat("{\n" +
                     "  \"myCustomNameForTheKey\": \"${key}\",\n" +
                     "  \"myCustomNameForTheNewValue\": \"${newValue}\",\n" +

will give you

  "myCustomNameForTheKey": "key_of_the_string",
  "myCustomNameForTheNewValue": "new value",

Set a custom Xml format

The default Xml format of the shared changes is :

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
    <oldValue>old value</oldValue>
    <newValue>new value</newValue>

you can provide your own format. Use this place holders where you want the value to appear :

  • ${key}
  • ${locale}
  • ${newValue}
  • ${oldValue}
	"<myName>\n" +
	"    <myLocaleTag>${locale}</myLocaleTag>\n" +
	"    <myKeyTag>${key}</myKeyTag>\n" +
	"    <myOldValueTag>${oldValue}</myOldValueTag>\n" +
	"    <myNewValueTag>${newValue}</myNewValueTag>\n" +

will give

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
    <myOldValueTag>old value</myOldValueTag>
    <myNewValueTag>new value</myNewValueTag>