 <p>It seems that the behavior of <code>NSBundle preferredLocalizationsFromArray</code> changed from iOS 8.4 to 9.0.</p> <p>Example: I have selected "Austria" as region, and "German" as language.</p> <ul> <li>iOS 8.4 returns only one preferredLocalization "de".</li> <li>iOS 9.0 returns two - "de_AT" and "de". </li> </ul> <p>For "de_AT", <code>NSBundle pathForResource</code> cannot find the "de" localization, and returns nil.</p> <p>Fixed with this (ideally unnecessary) workaround:</p> <pre><code>NSArray* availableLocalizations = [[NSBundle mainBundle] localizations]; NSArray* userPreferred = [NSBundle preferredLocalizationsFromArray:availableLocalizations forPreferences:[NSLocale preferredLanguages]]; NSString *indexPath; for (NSString *locale in userPreferred) { indexPath = [[NSBundle mainBundle] pathForResource:@"hilfe" ofType:@"html" inDirectory:nil forLocalization:locale]; if (indexPath) break; } </code></pre>