问题
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?
回答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.
来源:https://stackoverflow.com/questions/13017013/how-can-i-load-a-default-language-plist-if-the-localized-version-does-not-exist