Evolution of Translations Management for Android
Article Summary
Yaroslav T from Revolut reveals how managing translations for 6 apps across 330 modules and 33 languages evolved from a simple library to a custom Gradle plugin. The journey took 7 years and countless iterations.
Revolut's Android team needed to scale their translation workflow as they grew from a single app to a multi-app, multi-module architecture. They partnered with Lokalise for translations but had to completely rethink their engineering approach multiple times to handle the complexity.
Key Takeaways
- Started with Lokalise SDK but hit API limits and performance issues
- Migrated through Python, Groovy, Yaml/Bash/Kotlin before landing on custom Gradle plugin
- Final solution enables parallel downloads and independent module configuration
- Automated CI pipeline prevents merge conflicts and protects older app versions
- Non-transitive R classes solved duplicate strings across 300+ modules
Critical Insight
A custom Gradle plugin with conventional configuration replaced fragile Bash scripts, enabling each of 330+ modules to manage translations independently while preventing conflicts and breaking changes.