Adding multi-language support in an app: risks, user experience, testing?


I’m about to dive into a topic that is brand new to me and would like to consult the testing hive-mind.

The native MOBILE app I’m working on is now only available in one country (NL). In the future it will expand to more European countries, so that brings the challenge of multi-language (among other things).

The setting is that the locale + country will be saved in a SAP backend system, and for some countries you have to ask which language the user wants (In Belgium they speak Dutch and French). The mobile app can infer what language to use after that.

There is an obvious problem here:

  • expats can suck it? They want English in stead of the native locale options. We’d have to add English options to all the products in the app, doesn’t even exist right now. Just a data problem I guess…We don’t have English because the company isn’t active in any native English speaking countries :upside_down_face:

More risks that I already thought of:

  • hardcoded stuff because the app is made for 1 language so far (Dutch)
  • it impacts functionality as well: not every country will have every functionality
  • legal texts can differ

Not a risk at this time:

  • Not needed to think of RTL languages like Hebrew.

What am I missing? Who here can shed some wisdom on this situation? Tips to tesk, risks to consider, UX etc.


Other things I’ve had when working in these kind of areas:

  • Making sure support can read those other languages, what happens if someone submits a bug in French. Does anyone on those teams speak French?
  • Legal texts and also options can differ. For example in Germany and other countries you can’t have an opt-in checkbox automatically ticked, it has to be an active opt-in, whereas for other countries, a ticked checkbox is…not great but legal.
  • Then there’s things like dialects/contextual slang/etc

Nous n’est parlez pas Francais (this is probably spelled wrong): so no :stuck_out_tongue:
Good points Gem, I’ll note them down!

Testing legal stuff, my favorite hobby!

Hi @maaike.brinkhof !

We just worked in it last year where we expanded to 14 countries with localised languages on both android and iOS apps.

The challenges that we faced are

  1. Breaking UI changes because of the variation in length an type of texts

  2. Making sure API based content are localised properly

  3. Testing for accessibility (was pretty hard since we didn’t know most of the languages)

  4. Creating and managing App Store/Play store listings (more complex than we thought… especially if payment is involved)

  5. Test coverage across devices. Now you had to test across devices for every language combination. We used visual testing as an option to generate screenshots across various device sizes for every language

  6. What defines a language and locale ? Is it just purely device based? Do you used your SIM based location to set language? We had that feature on android which meant testing became a bit challenging with 14 different SIM cards.

I understand not all of the above might be applicable to you, but nevertheless some of them might be useful.

Happy to share some of our experiences in depth if required.

It was very much fun though!


Screenshot 2021-10-07 082948


When we added multi-language support to an existing code base (that spoke only English, plus one or two West European languages) we had to also convert it from single byte to multi byte, which was a pain. (How many bytes are used to represent one character of text?) As far as testing’s concerned, I guess it’s trying to use text as far from possible from the original code’s assumptions e.g. Korean, to see if it can cope.

Is there any text that is actually an image? It’s likely to get missed when translating UI text.

Numbers and money amounts are formatted slightly differently in different countries. Not all currency symbols go at the start of a money amount e.g. money - Which countries suffix their currency and how much is this stuck to? - Travel Stack Exchange. Also in the UK a comma is used to separate thousands and a dot is used to separate integers from tenths/hundredths e.g. 12,345,67. As in How to Format 30+ Currencies from Countries All Over the World.

Will a user in locale A need to look at data created by a user in locale B? E.g. a Dutch user looking at something created by a French person? If so, should it be in Dutch or French?

If you’re going to be using Chinese etc characters, then if code makes text bold in some circumstances e.g. to mark something as mandatory, this could make characters unreadable if they’re too small (the lines that make up the character swell into each other).

Some cultures don’t share common Western European e.g. colour associations. I’m used to thinking red=danger, but someone from China might associate it more with luck, joy and happiness. How are error messages etc. presented?


Stole everyone’s stuff, added my own, first draft.Change Language|506x500


Some of the items (might) have already been mentioned.

  • is the legal text adjusted to the language of the user?
  • did you look to CCPA, California Consumer Protection Act? This law looks for the home address of the user instead of the current location of the user. A Californian tourist on this planet has other privacy rights than a EU citizen inside the EU.
  • is the UI still usable after translation?
  • is the UI still usable, if the font of the application has been increased?
  • is the alt text of pictures and buttons in the selected language? A screen reader like VoiceOver can be used for this purpose.
  • install the app on a device set on a the Dutch language, then change device language to French. Are all interactions in French?
  • are all sources of the texts on the UI been tested? E.g. local files and libraries.
  • are all flows from the sources to the texts in the UI like error messages and shop item descriptions been tested? This also includes concatenating texts.

Thanks Chris! I love mindmaps to gather information like this too.

And thanks everyone else for the responses, this is more than plenty to get me going

1 Like

Will you be supporting the appropriate date format for each country? Date and time notation in Europe - Wikipedia


We started with language, but now we’re at:
language + date + currency

omg this is going to be hilarious to test!

1 Like

Do dates include Islamic dates? Islamic date today - Hijri date today - Arabic date today As someone’s already said - date formats (DD/MM/YYYY vs. MM/DD/YYYY) are lovely, particularly for days of the month < 13 so you can’t tell at a glance which format it is.

Time zones, e.g. countries going into / out of daylight savings time on different dates. Watch Tom Scott lose his marbles: The Problem with Time & Timezones - Computerphile - YouTube. But it does include things like some time zones, e.g. India, having an offset from GMT that isn’t just N hours but has minutes too. I.e. 13:00 GMT = 18:30.

Multi-currency - can you convert between currencies? If so, what date is the conversion rate taken? Now? The date that the relevant thing occurred e.g. the item was bought / the bill was paid? Do you need to group together money amounts that might be in different currencies - if so, which one wins? E.g. 10% off if your total spend as a company is > $2000 worldwide (across accounts in Euro, US$, £ etc.) Do you produce a sub-total by currency and then convert that to the winning currency, or is each money amount converted separately? Unfortunately this matters due to rounding.

E.g. 10 items in $ that need converting to £, where the exchange rate is 1.36:1. If each item is $1.23 and is converted to £ separately, that is $1.23 / 1.36 = £0.90 (rounding 0.904411… down to the nearest penny). £0.90 * 10 = £9.00. A sub-total in $ before any conversion would be $12.30, and $12.30 / 1.36 = £9.04. It might seem an insignificant difference, but if someone has made a payment of exactly £9, they either have 0 balance or they have a debt of £0.04.

Can you pay off a debt in currency A using a payment in currency B? If some of that payment is later refunded, will that be in currency A, B or something else?

Does currency include tax? E.g. calculating the relevant sales tax on a transaction. At what rate?

I think that hilarious is an interesting choice of word. At a previous company we did the full multi (language, currency, date, tax) to a billing system. It was non-trivial.

1 Like

You’re going waaaaay overboard compared to my question here, though.

The context I’m testing in has:
1 currency (Euro), formatting is going be locale dependent but I don’t have to test multiple currencies.
Timezones: only European ones, that narrows it down a lot.

And I’m guessing you don’t really understand sarcasm.

I do often understand sarcasm, although it’s often harder in text than in speech. I misunderstood the “we” in “we started with language…” I thought it meant “my company” as in “our requirements have grown” when actually it meant “the people on this thread” as in “these answers are to a much bigger question than the one I asked”. Which is why I elaborated, making the thread even more overkill than it already was.

1 Like

No worries. I like the mindmap approach for this sort of question because the categories can help as well. I’m sure you have a whole mountain of contextual information that might spark new ideas for a particular category. Hope it goes well!

1 Like

Hi Maaike,

I’m not totally sure if this is the kind of thing you’re looking for, but I’ll try anyway…

I’ve been testing one of my company’s Android apps which recently included translations into five languages (English, Dutch, German, French and Spanish). I think all the text string translations are stored in a XML config file. Anyway, even a fairly basic check of all the various screens and dialogs is over 60 screenshots, so I have over 300 screenshots just to check the UI in all five languages.

I use Android Debug Bridge commands to quickly change to locale of the mobile device to enable me to easily change the app between languages - I found this to be really useful when I was testing everything 5 times! You need to install an app on the device called “ADB Change Language” but then its just a case of sending a single adb command to change the device language and country setting, full instructions below.

Cheers, John.

ADB is used to change the Android locale and language setting to verify application of translations in app


  • Connect mobile device via USB to PC with ADB installed

  • Install “ACL ADB Change Language” app to mobile device from Google Play store

  • from PC command prompt run adb shell command to allow app permissions
    “adb shell pm grant net.sanapeli.adbchangelanguage android.permission.CHANGE_CONFIGURATION”

To set locale use following abd shell commands as applicable [format “language–country”]

  • “adb shell am start -n net.sanapeli.adbchangelanguage/.AdbChangeLanguage -e language en–UK”
  • “adb shell am start -n net.sanapeli.adbchangelanguage/.AdbChangeLanguage -e language nl–NL”
  • “adb shell am start -n net.sanapeli.adbchangelanguage/.AdbChangeLanguage -e language de–DE”
  • “adb shell am start -n net.sanapeli.adbchangelanguage/.AdbChangeLanguage -e language fr–FR”
  • “adb shell am start -n net.sanapeli.adbchangelanguage/.AdbChangeLanguage -e language es–ES”

This is brilliant @kinofrost thanks for that. I’m literally testing an app for translated content and came upon this gem and I’ve realized lots more consideration is need for our product!