Seventeen languages in Googly Player, and the Android details that make them work
A language picker can list every language and still fall back to English, and nothing in the logs will tell you. This is how we built the one in Googly Player so that every choice holds.
Plenty of people read their phone in one language and want a particular app in another. Without an in-app choice, the only option is to switch the whole device. And an in-app picker that reaches only the screens you tap through is not much better: the playback notification, a confirmation dialog or a background service keeps speaking the system language, and the app feels half translated.
The harder failures are the silent ones. An app delivered as an App Bundle can lose its translations at install time, so the picker lists every language and renders all of them in English, with no crash and nothing in the logs. A count glued onto the end of a label lands on the wrong side in Arabic. A single format string cannot express a number correctly in a language that has six grammatical forms for it.
Googly Player is our Android app for videos, music and photos. It has a full in-app language picker covering 17 languages, entirely independent of the system language. Here is what that picker does, and each Android-level decision that keeps it from failing quietly.
Key takeaways
- Googly Player offers 17 languages from inside the app, independent of the system language, each listed by its own name in its own script.
- The choice is applied process-wide, so services, notifications and dialogs follow it, not just the activities.
- On Android 13 and later the choice is handed to the platform and also appears in the phone's per-app language settings.
- Language splits are disabled in the App Bundle; without that, Play would deliver only the system language and the picker would silently show English.
- Arabic and Urdu get full right-to-left support, and counts use format strings and plural resources so numbers and grammar come out right.
Seventeen languages, each listed by its own name
The picker covers these languages, shown here as they appear in it: the language's own name first, with the English name underneath.
- English
- हिन्दी (Hindi)
- Español (Spanish)
- العربية (Arabic)
- Français (French)
- বাংলা (Bengali)
- Português (Portuguese)
- Русский (Russian)
- اردو (Urdu)
- Bahasa Indonesia (Indonesian)
- Deutsch (German)
- 日本語 (Japanese)
- Türkçe (Turkish)
- Tiếng Việt (Vietnamese)
- 한국어 (Korean)
- Italiano (Italian)
- ગુજરાતી (Gujarati)
Leading with the endonym, the name a language uses for itself, matters most for the person who needs the picker. Someone who reads Gujarati but not English should be able to find ગુજરાતી without first recognising the word Gujarati. The English name sits underneath for everyone else, including a support person helping over someone's shoulder.
The list is searchable, and a "Suggested" section at the top is built from the device locale, so the likeliest choice is already near the top of the list instead of somewhere in a list of seventeen.
One setting that reaches the whole app
The language choice is applied through AppCompatDelegate.setApplicationLocales, which sets it for the whole app process rather than screen by screen. That distinction is what separates a picker that looks finished from one that is.
A media player does a lot of its work away from the visible screens. Googly Player keeps playing music in the background through a foreground media-playback service, and on Android 13 and later it posts a media notification while it does. Applied process-wide, the chosen language covers those services and notifications, and the dialogs that pop up mid-task, not only the activities. Someone who picks Türkçe gets Türkçe on the lock-screen notification too.
The same goes for the parts of the app that span all three libraries, such as Global Search, which scans videos, music and photos in one pass and shows sectioned results. The whole app speaks one language, the one the person chose.
Android 13 and later: the system knows the choice too
From Android 13, Android has its own per-app language setting. Googly Player hands its choice to the platform there, so the language picked inside the app also appears under Settings › Apps › Googly Player › Language, and the setting shows up in both places.
This matters for anyone who manages a phone through system settings rather than through each app, and for anyone helping someone else set up a device: the language can be checked or changed without opening the app at all. On devices older than Android 13, which have no per-app language setting in the system, the in-app picker is where the choice lives.
Either way, the app's language stays separate from the device's. Changing Googly Player to Español does not touch the language of the rest of the phone.
The App Bundle setting that would have broken it silently
Googly Player ships as an Android App Bundle, and by default Play uses a bundle to deliver only the resources a particular device needs, including only the language resources that match the system language. For most apps that is a sensible saving. For an app with an in-app picker it is a trap.
With language splits left on, a phone set to English would receive only English strings. The picker would still list all 17 languages, the person would choose Deutsch, and every screen would stay in English. Nothing crashes and nothing appears in the logs; the translations simply are not on the device. We disable language splits in the App Bundle deliberately, so every translation ships in the base APK and every entry in the picker has its strings behind it.
Right-to-left, including inside the picker
Two of the 17 languages, Arabic and Urdu, are written right to left. Googly Player has full RTL support for both, so choosing العربية or اردو gives a reader an app that runs in their reading direction rather than English layouts filled with Arabic or Urdu words.
The detail extends into the picker itself, which is the one screen that has to show every script at once. There the Arabic and Urdu names are correctly anchored, so they sit the way a right-to-left reader expects even among the left-to-right entries around them. It is a small thing to get right and an obvious thing to get wrong, and it is the first screen a new Arabic or Urdu reader sees after choosing.
Right-to-left support is also why the way numbers are written into text matters, which is the next decision.
Counts that land on the right side of the label
An app full of libraries is an app full of counts: how many videos, how many songs, how many photos. The easy way to write one is to concatenate a label and a number in code, and in English the result looks fine. In Arabic and Urdu, concatenation puts the number on the wrong side of the label, because the code has fixed the order and the translation has no say in it.
Googly Player formats counts and never concatenates them. The string resource is Total Videos: %d, with the number as a placeholder inside the text, rather than the label Total Videos: followed by + n in code. Each translation then carries the placeholder in the position its own grammar and direction need, and the number lands where a reader of that language expects it.
Plurals that one format string cannot express
Placing the number correctly is half the job; the words around it also change with the number. English gets by with a singular and a plural, which is why a single format string so often seems enough. It is not enough for this set of languages: Arabic needs six grammatical forms for a number, and Russian needs four.
Googly Player uses Android's plural resources for these strings, so each language supplies as many forms as its grammar has and the right one is picked for each count. A Russian reader with one video and one with five see properly declined words, and an Arabic reader sees the form their language actually uses for that quantity, instead of a sentence that is grammatically wrong for most numbers.
Getting Googly Player running in your language
Googly Player runs on Android and is delivered through Google Play, with every translation included in the install. Nothing extra needs adding for a language to work. The per-app entry in the phone's system settings requires Android 13 or later; on earlier versions the in-app picker handles the choice on its own.
Open the language picker in the app
The picker is part of Googly Player itself and works regardless of the language the phone is set to.
Find your language
Check the Suggested section, built from your device locale, or search the list. Each language is shown by its own name with the English name underneath.
Choose it
The language applies across the app, including background playback services, notifications and dialogs. Arabic and Urdu switch the app to right-to-left.
On Android 13 and later, manage it from Settings if you prefer
The same choice appears under Settings › Apps › Googly Player › Language, where it can be checked or changed without opening the app.
Questions
Does changing Googly Player's language change my phone's language?
No. The in-app picker is entirely independent of the system language. It changes Googly Player only.
Which languages does Googly Player support?
Seventeen: English, Hindi, Spanish, Arabic, French, Bengali, Portuguese, Russian, Urdu, Indonesian, German, Japanese, Turkish, Vietnamese, Korean, Italian and Gujarati.
Do notifications and background playback follow the language I pick?
Yes. The choice is applied process-wide through AppCompatDelegate.setApplicationLocales, so services, notifications and dialogs use it as well as the app's screens.
Do I need to download anything to use another language?
No. Language splits are disabled in the App Bundle, so every translation ships in the base APK and is already on the device when the app is installed.
Can I set the language from Android's own settings?
On Android 13 and later, yes: the choice appears under Settings › Apps › Googly Player › Language. On earlier versions, use the picker inside the app.
- #Android localisation
- #Android media app
- #Android plural resources
- #Googly Player
- #RTL Arabic Urdu
- #in-app language picker



Comments