1

I am loading the plist like so:

 NSString * plistPath = [[NSBundle mainBundle] pathForResource:@"Names" ofType:@"plist"];
 NSDictionary * contentArray = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

But contentArray is nil if the plist doesn't exist for the current device's language. How can I default to English?

yuf
  • 3,082
  • 3
  • 20
  • 18

1 Answers1

1

NSBundle effectively uses the CFBundleDevelopmentRegion (aka "Localization native development region") entry in the application/bundle's Info.plist file to specify the "fallback" language, if you will.

For example, let's assume we have the following bundle layout:

MyApp.app
 // no Numbers.plist here
.....
en.lproj/
    Numbers.plist // english-version
es.lproj/
    Numbers.plist // spanish-version

And, the Info.plist specifies a CFBundleDevelopmentRegion of en.

If a French user runs the app, and there is no localized Numbers.plist file for fr, then NSBundle should return the Numbers.plist file in the en.lproj directory.

NSGod
  • 22,699
  • 3
  • 58
  • 66