I’m a European, my devices run Android and I’ve set their display language to American English. However, I’d also like to use a 24-hour clock, have a sensible date format, start the week on Mondays, and use a comma character to separate decimals in numbers. In other words: I want my Android devices to use European English. Luckily, Android naively supports European English – it’s just unfortunately not made available to users without a bit of tweaking.
Android follows a trend where the operating system has great support for localization, but where the capabilities are not made available to the user. You can still customize your language and locale settings separately from each other with a bit of tweaking.
In this article, I’ll talk you through you can change your devices running Android 7.0 or later to use the European English locale. The European English locale is different from the American English locale in a few significant ways:
- Uses a comma instead of a period as the decimal separator.
- Uses a period instead of a comma as the thousand separator. (The majority of European locales use a space and not period.)
- Uses the metric system instead of imperial units. (This isn’t actually a part of the locale settings, but most the apps I’ve tested changed to metric.)
- First day of the week is Monday instead of Sunday.
- Uses the day month year (little-endian) instead of moth day year (middle-endian) date format.
- Uses a 24-hour instead of 12-hour time format.
- First week of the year always contains 1. January. (The majority of European locales follows the 4-day-minimum-week/ISO-week rule.)
- Uses the generic currency symbol is ¤ instead of US$.
You can learn more about this in my article on the World English and European English locales. As you may have noticed from my notes, the locale setting for European English may not perfectly match your expectations. You can of course follow along in this article to set other custom locales – use the ICU Locale Explorer to learn about available locales.
Not all apps will have good localization support and may either choose to use a fallback langauge’s locale, or whatever the programmer hardcoded into the app. I’ll get back to talking about app compatibility towards the end of this article.
Preparing your device
The first thing you’ll need to do is to install the MoreLocale 2 app. However, unless you’re running a rooted phone (you’d know if you were) you’ll also need to use Android Developer mode to grant it some special privileges.
You’ll need to install and enable Android Developer Bridge on your PC. On Linux this can be installed from the android-tools package. Windows and macOS can download it as part of the Android platform tools. You’ll next need to enable Developer mode and debugging over USB on your device.
Once you’ve setup ADB and have connected your Android device to your PC over USB, you should be ready to go. I’ve not included exact details on doing this here as there are many good tutorials available if you need further assistance. The only thing you needed ADB for is executing this one command on your PC while your Android device is connected:
The above commands gives the MoreLocale 2 app access to changing your device’s configuration. Granting apps extra privileges can be a security risk, and you shouldn’t do it with untrusted apps people randomly tell you about on the web. (I do see the irony in recommending you do something and then recommending you don’t do it in the next paragraph.)
Adding a custom locale
You can now open the MoreLocale 2 app that we installed and granted extra privileges to in the previous section. It will list some of the locales available on your device. Unless your device manufacturer has interfered too much with the Android project, you should have a list of hundreds of languages and locales.
You may also notice that some locales, including European English (or English (Europe)) aren’t on the list.
To add European English to the list, click the small label at the top of the list marked Custom locale. Enter “en” (for English) in the Language field and “150” (for the continent of Europe) in the Country field. Finally click the Set button to add it to the list and set it as the systems locale.
Your device is now set to European English. However, the change will not persist after a reboot and it may not work in all of your apps yet. When you change the system locale, some apps will be automatically restarted to apply the new locale. The automatic restart doesn’t work with all apps nor most of the system provided user interface.
To make the change persistent, you’ll also have to confirm the locale change in the Language preferences screen. You’ll find this screen either in the System Settings app: Languages, or System Settings: System: Languages and input. The Language preference screen should contain one entry called “English (Europe)”. Click Add language and add a fallback language. I recommend you pick another variant of English such as American English (English (United States)) as your secondary language.
Your locale settings are now permanent and should persist after a reboot. You may remove the fallback language again at this stage. However, I do recommend you keep at least one common fallback language such as American English on the list to ensure good app compatibility.
You should reboot your device at this point to make sure all apps pick up the change in system locale.
Apps that have been created with internationalization and localization in mind will just work, and will apply the new locale. Everything from the Calculator app to Google Maps will switch from period to comma as the decimal mark, and you’ll see European date formatting in almost every app.
Some apps don’t go all the way and may use your locale settings inconsistently. This is a problem with the app, but it’s actually a relatively rare problem for any app that is available in more than one language.
I’m only aware of a single app that doesn’t work with the European English locale: the Google AdSense app. The app will switch from period to comma decimal marks and apply your localization settings alright. However, it will no longer be able to update data and will be stuck displaying the same data forever. This is caused by a app specific problem where the app expects language codes to have four letters and a dash, and fails when encountering the European English language code (en-150).
In general, you can expect to have the same type of localization issues with a more “exotic” locale setting as you’d have with any other locale setting. The operating system will handle most of the localization for any apps that use the provided localization tools in Android.