Localization between iOS and Android (and also client!)


Localization in multiple languages is harder to keep track between iOS and Android as the screens and test cases increase over time.

Besides, we faced the challenge of getting client’s copy text input efficiently as second language is often provided progressively in middle development phase and time is wasted emailing back and forth or creating another files on text changes.


A collaborative platform for localisation of copy text would benefit to users.

Our strategy on what to focus on which areas:

  1. The solution has to cater for both iOS and Android platform syntax
  2. It has to be intuitive enough for a non-technical person to use
First version of our prototype


Localization file is a one-stop place for developers to align on using the right keys values in both platforms and it provides fast overview to track translated/ untranslated copy texts. We used the localization file for a period of time and in between I got some observations and pain points from the other developers.

  1. Too many steps: There were too many steps(in total 6 steps) to produce a sheet even though the localization copy texts were now at one place.
  2. Troublesome export: Most of them only saved the link of localization file but not the folder so it was troublesome to dig up the folder to get exported sheet every time in Google drive. Ironically, this increased developers efforts and frustrations.
  3. Dynamic input in a sentence: iOS and Android are using different syntax for parameters. It’s not ideal for developers to create duplicate sentences just to cater for different code syntaxes.


Below are how we managed to edit the functionalities based on the feedbacks:

  1. Increase efficiency: We decided to reduce the steps, from 6 steps to 3 steps within the same screen by providing copy paste function instead of export function as developers no longer need to track the localization file folder location and replace app file location as well. We provide preview of the localization as an assurance to the developers that they have the right copy texts.
  2. Parameter input for both platforms: We come up with a placeholder text({string} and {number}) so that we can further replace the placeholder with the correct syntax according to the selection platform to avoid duplicates.

iOS localization.strings

// Last updated: 22/10/2017, 15:35:46"home.addNewContact" = "ADD NEW CONTACT NAME: %@, AGE: %@";
"home.title" = "Dashboard";
"home.welcome" = "Welcome %@! Do you want to %@?";
"settings.retry" = "You still have %@ tries.";
"settings.profile.subtitle" = "Welcome!";
"settings.logout" = "See you again!";

Android XML

<!-- Last updated: 26/10/2017, 06:49:52 -->
<string name="home.addNewContact">"ADD NEW CONTACT NAME: %1$s, AGE: %1$d"</string>
<string name="home.title">"Dashboard"</string>
<string name="home.welcome">"Welcome %1$s! Do you want to %2$s?"</string>
<string name="settings.retry">"You still have %1$d tries."</string>
<string name="settings.profile.subtitle">"Welcome!"</string>
<string name="settings.logout">"See you again!"</string>


  1. Currently, we need to copy existing spreadsheet template as the base for new project. This process can be automated to save time.




Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Amy Cheong

Amy Cheong

Current: Product Manager at Workmate • Always Software Engineer.