Unfortunately, the default implementation of this service has several problems that make it almost unusable.
See https://quality.embarcadero.com/browse/RSP-39832
There is a workaround that solves the most important problem. It turns on language auto-detection instead of using two preferred dictionaries.
Add this code to your main form's unit.
Code: Select all
uses
...
FMX.Platform,
{$IFDEF MACOS}FMX.SpellChecker.Mac,{$ENDIF}
...;
{$IFDEF MACOS}
procedure SetMacSpellCheckerLanguageDetection;
var
Svc: TMacSpellCheckerService;
begin
TPlatformServices.Current.RemovePlatformService(IFMXSpellCheckerService);
Svc := TMacSpellCheckerService.Create;
Svc.MaxUsedPrefferedLanguagesCount := 0; // language auto-detection
TPlatformServices.Current.AddPlatformService(IFMXSpellCheckerService, Svc);
end;
{$ENDIF}
initialization
{$IFDEF MACOS}
SetMacSpellCheckerLanguageDetection;
{$ENDIF}