diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm index 1b2038b5f63ea..1b172b9334777 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm @@ -61,8 +61,14 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { // Returns an empty array if no spell check suggestions. - (NSArray*>*)findAllSpellCheckSuggestionsForText:(NSString*)text inLanguage:(NSString*)language { - // Transform Dart Locale format to iOS language format. - language = [language stringByReplacingOccurrencesOfString:@"-" withString:@"_"]; + // Transform Dart Locale format to iOS language format if necessary. + if ([language containsString:@"-"]) { + NSArray* languageCodes = [language componentsSeparatedByString:@"-"]; + FML_DCHECK(languageCodes.count == 2); + NSString* lastCode = [[languageCodes lastObject] uppercaseString]; + language = [NSString stringWithFormat:@"%@_%@", [languageCodes firstObject], lastCode]; + } + if (![UITextChecker.availableLanguages containsObject:language]) { return nil; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm index 221050638efea..d35d72f0154d8 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm @@ -274,7 +274,7 @@ - (void)testSupportSubLanguage { self.partialMockPlugin = OCMPartialMock(self.plugin); OCMStub([self.partialMockPlugin textChecker]).andReturn(self.mockTextChecker); id textCheckerClassMock = OCMClassMock([UITextChecker class]); - [[[textCheckerClassMock stub] andReturn:@[ @"en_us" ]] availableLanguages]; + [[[textCheckerClassMock stub] andReturn:@[ @"en_US" ]] availableLanguages]; NSArray* suggestions1 = @[ @"suggestion 1", @"suggestion 2" ]; [self mockUITextCheckerWithExpectedMisspelledWordRange:NSMakeRange(0, 5)