@azonenberg newlocale/uselocale for thread-local locale. Swapping using uselocale should be effectively a zero cost operation.