 
      - returns: Translations dictionary for the given language.
      */
-    public func findTranslationMatchingLanguage(language: String?, inJSON json: [String : AnyObject]) -> [String : AnyObject]? {
+    public func findTranslationMatchingLanguage(language: String, inJSON json: [String : AnyObject]) -> [String : AnyObject]? {
         guard configured else {
             print(NStackError.Translations.NotConfigured.description)
             return nil
         }
 
-        // FIXME: Improve, remove unnecessary casts, cleanup
-
-        // Intentionally passed nil to get the first language in the file
-        guard let language = language else {
-
-            // json.keys.flatMap({$0})
-            if let keys = (json as NSDictionary).allKeys as? [String] {
-                return json[keys[0]] as? [String : AnyObject]
-            }
-
-            return nil
-        }
-
         for (key, _) in json {
-            if (key as NSString).substringToIndex(2) == (language as NSString).substringToIndex(2) {
+            if key == language {
+                if language.characters.count < key.characters.count { /* iOS 8 returns two-char language without the region */
+                    return json[key.substringToIndex(key.startIndex.advancedBy(language.characters.count))] as? [String : AnyObject]
+                }
                 return json[key] as? [String : AnyObject]
             }
         }

            }
            if languageJSON == nil {
                // No English translation, just use whatever the first one is
                languageJSON = findTranslationMatchingLanguage(nil, inJSON: json)
            }
        }
        

        if languageJSON == nil {
            // First check to see if any of the translations match one of the user's device languages
            for userLanguage in NSLocale.preferredLanguages() {
                languageJSON = findTranslationMatchingLanguage(userLanguage, inJSON: json)
                if languageJSON != nil { break }
            }
            
            if languageJSON == nil {
