RAII guard returned by test_lock(). Holds the serialisation
mutex AND restores the locale that was current at lock-acquire
time. Field declaration order matters: original (with its
Drop impl below) drops before _guard, so the locale is
restored while the lock is still held — the next waiter never
sees a transient mixed state.
Serialization lock for tests that mutate the global locale.
Prevents test races when multiple tests call set_locale, AND
restores the original locale on guard drop so a test that flips
to ZhCn doesn’t leak into the next test that assumes the
default En.