On October 16, 2026 we read the language list of every app we have live on the App Store. All nine said English, and nothing else. Seven of the nine are translated, one of them into twelve languages.
How it was measured
Apple’s public iTunes lookup endpoint returns a field called languageCodesISO2A for every app. It’s the list the App Store shows under Languages. We asked it for each of our nine live apps, then counted the languages each app actually ships from its translation files in the repo.
| App | Languages in the app | App Store says |
|---|---|---|
| Taco Rain | 12 | EN |
| Step And Earn | 7 | EN |
| Play And Earn | 7 | EN |
| Househand | 4 | EN |
| Todo And Earn | 4 | EN |
| Asteroid Duel | 3 | EN |
| Handyman Calc | 2 | EN |
| Daily: Learn And Earn | 1 | EN |
| Community Stress First Aid | 1 | EN |
Two of the nine are right. The other seven ship 32 languages between them, English aside, that the App Store doesn’t list.
The cause
Every one of these apps is Flutter, and every one started from Flutter’s iOS project, which has a single Base.lproj folder holding the launch screen. Flutter’s internationalization guide says to list your languages under CFBundleLocalizations in Info.plist, and most of ours did.
That didn’t reach the listing. Handyman Calc is the clearest case: its Info.plist named English and Spanish, the app runs in Spanish, and the lookup still returned ["EN"] the day after launch. What the seven apps have in common is that the bundle has no folder for any language. As far as we can tell from our own builds, that folder is what the listing is read from.
The fix
For each language the app ships, add ios/Runner/<lang>.lproj/InfoPlist.strings and register it in the Xcode project, so Xcode copies it into the app. Ours hold only the home-screen name, plus a permission message where we already had a real translation of it. We didn’t machine-translate permission text to fill the folders.
Registering is the step that’s easy to miss. A folder that exists on disk but isn’t in project.pbxproj never makes it into the build. The way to be sure is to unzip the .ipa and look inside Payload/Runner.app. For Taco Rain that now shows twelve .lproj folders next to Base.lproj.
We made the change in 17 app repositories and both of our app templates, and added a check to our release preflight that fails a build when an app ships a language with no folder for it. The check is in the store preflight skill.
What we haven’t verified
None of the fixed builds is on the App Store yet. The first two, Covert Mail and a Handyman Calc update, are uploaded and waiting to be submitted. Until one of them is released and the lookup returns more than EN, the fix is a well-supported guess rather than a result. We’ll add the before and after here when it lands.
We also haven’t measured whether the missing languages cost us anything in search or installs. The App Store does let people see an app’s languages before installing, and a Spanish speaker reading “English” on a Spanish app has a reason to skip it. That’s the whole of the case for fixing it; we have no number for it.
If you ship a translated Flutter app, the lookup takes a minute. Put your app id into itunes.apple.com/lookup?id= and read the languages back.