I should switch the unicode compare ervice to using CompareString (http://msdn.microsoft.com/en-us/library/ms647476%28VS.85%29.aspx)
(it now uses wcscmpi, which isn't aware of surrogate pairs and suchlike). CompareString comes with a bunch of baggage: -- a bunch of flags, which I can code into keywords -- a locale, which can be LOCALE_SYSTEM_DEFAULT LOCALE_USER_DEFAULT LOCALE_NEUTRAL LOCALE_INVARIANT which again I can handle with keywords. What I can't do easily is handle the other possibility for locales, which is to specify an arbitrary one e.g. LANG_GALICIAN, SUBLANG_GALICIAN_GALICIAN: only way I can do that is do a string-to-constant mapping for every possible language, and that seems a bit over the top...
