Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to force an ios app to use a certain localization?

i have an app that have two localizations (hebrew and english), and i've been asked to cancel the english localization so that whatever your device's language, the app will be the same (but save the localization for future use).

the localization is via Localizable.strings and also Xib localization (allot of them).

is there a way to tell the app to always use a certain localization and ignore the device language?

thanks !

like image 396
dowi Avatar asked Mar 19 '23 11:03

dowi


2 Answers

I have adapted this to Swift and use this to test localizations with ease. When placed in AppDelegate->didFinishLaunchingWithOptions the simulator needs to run twice to get the correct settings, but maybe there is a better way.

In the example Danish localization is used and more can be found here: Locale codes for iPhone lproj folders

let langCultureCode: String = "da"
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([langCultureCode], forKey: "AppleLanguages")
defaults.synchronize()

And to remove the defaults once again:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.removeObjectForKey("AppleLanguages")
defaults.synchronize()
like image 110
scbojer Avatar answered Mar 22 '23 11:03

scbojer


in that case just set the defaults key AppleLanguages EARLY at startup to override IOS settings

(EARLY = before a xib/storyboard or NSLocalizedString is used)

NSString *langCultureCode = @"he";
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[langCultureCode] forKey:@"AppleLanguages"];
[defaults synchronize];
like image 32
Daij-Djan Avatar answered Mar 22 '23 13:03

Daij-Djan