Trying to follow along here... you're doing the moral equivalent of strxfrm(), so sort keys have the transitive property but direct string comparisons don't? Or is this because LCIDs reach a different algorithm somehow (or otherwise why do you need to use LCIDs for this, when there is a non-LCID version of that function, with a warning not to use the older LCID version[1]?)
[1] https://learn.microsoft.com/en-us/windows/win32/api/winnls/nf-winnls-lcmapstringw