How are we supposed to localized the CSSearchableItem.keywords field? It takes an array of NSString *, but it seems like it should take an NSDictionary* of NSLocale -> NSString. I also considered making an array of CSLocalizedString, but I wouldn't expect that to work if there's a mismatch in the number of keywords for a given locale.
localized keywords in CSSearchableItemAttributeSet
I just used an array of all localized strings. So the user can always search for keywords in all languages. Not sure if it's intended like that but it seems convenient.
Given that CSSearchableItem is a subclass of NSString, passing that in the array seems fine. I haven't tried doing so myself, if it doesn't do what you expect, I'd encourage you to file a bug report (and please post the bug number here).
It doesn't look like CSLocalizedString should work for something like this since it has fallback logic to always come up with a localization. To give a concrete example from the docs, say I wanted to add "Song" and "Tune" as keywords in english, and "Chanson" in french. I would expect adding CSLocalizedStrings using @{@"en":@"Song", @"fr":@"Chanson"} and @{@"en":@"Tune"} would result in "Chanson" and "Tune" being added as french keywords.
It turns out I'm wrong. You cannot set a CSLocalizedString for the keywords. You can always keep track of the current language and if it changes update your CoreSpotlight items with the now current keywords based on the current language.