Localization doesn't work on iOS

UE v4.11.2
iOS v9.2

I’ve done a French (fr) localization for my game and it does work in all standalone builds (Windows, Mac, Android) except iOS. I tried both “All” and “EFIGS” localization support settings (both work, no difference). Culture is changed at runtime in a language select screen, but I also tried changing iOS language to French with no results.

I’m also unable to get localization working on iOS (4.13.0). I have added a ‘German’ culture as a test and that works on PC when using the “-culture=de” launch option.

But on iOS (packaged, shipping), I can’t get the German culture to work, regardless of the language I am using on the device. If I turn on logging in shipping, and then play on the device (iOS 10), I can see in the device log:

LogTextLocalizationManager: No translations for ('') exist, falling back to 'en' for localization and internationalization data.

This happens whether my iPhone has its language set to German or English. So it seems like it’s just not detecting the device’s language correctly.

I don’t have too much to localize and I need to ship asap (upgrading is not trivial for me so trying 4.14+ isn’t an option), so I’m going to work around the problem by just translating “manually” (using a csv imported as a data table, and saving their selected language to the SaveGame, the old skool way). But figured this is worth reporting anyway…

UPDATE:

Localization will stop working if you set -bCompileICU=False for custom iOS build flags.

Kudos to @derekvanvliet

ORIGINAL:

I figured out why it wasn’t working for me:
I had a bunch of extra iOS specific flags to make iOS binary smaller

-[/Script/BuildSettings.BuildSettings]
-bCompileAPEX=False
-bCompileBox2D=False
-bCompileICU=False
-bCompileSimplygon=False
-bCompileLeanAndMeanUE=True
-bIncludeADO=False
-bCompileRecast=False
-bCompileSpeedTree=False
-bCompilePhysXVehicle=False
-bCompileFreeType=True
-bCompileForSize=True
-bCompileCEF3=False

Once I removed them, it worked. I’m not sure which exact flag is responsible for breaking localisations, so if you happen to know, please comment.

@Spoondog if you have iOS specific flags, try removing them. That fixed it for me.

■■■■ - thank you for the suggestion, unfortunately it doesn’t appear to have worked for me (I had a few of those build flags in my build settings but removing and rebuilding/packaging didn’t seem to work).

I’m thinking the manual method might be better for me anyhow, since I can’t find a way to change the culture at runtime in Blueprint.

I encountered the same problem and your comment helped. Thanks!

I did some additional testing and found that it was specifically the bCompileICU=false flag that caused blank locales to be passed into the localization manager. After removing that flag, I get actual locales.

That would do it. ICU is required for localisation to function correctly (unless you only plan to target English).

Hello,

i have the same problem on IOS. I read your comment; but i don’t know where to change the flag -bCompileICU. where is the ios build specific file ? I don’t have anyone in my project.

Thanks

Hello,

i have the same problem on IOS. I’ve read your comment; but i don’t know where to change the flag -bCompileICU. Where is the ios build specific file ? I don’t have anyone in my project.

Thanks

Do you guys know how to fix this issues? I met this problem, the localization is not work on both IOS& Mac