moved locale_negotiator into separate module