/**
 * Ambient per-request locale, readable from client-safe i18n code.
 *
 * This module carries no server-only imports so it can live in the browser
 * bundle, where the resolver is never registered and every read returns
 * `undefined`. The server registers a resolver from
 * `@/server/i18n/request-locale`, which is the only place `node:async_hooks`
 * is referenced.
 */

import type { Locale } from './index';

type RequestLocaleResolver = () => Locale | undefined;

let resolve: RequestLocaleResolver | undefined;

export function setRequestLocaleResolver(resolver: RequestLocaleResolver): void {
  resolve = resolver;
}

/** The locale of the in-flight server request, or `undefined` on the client. */
export function getRequestLocale(): Locale | undefined {
  return resolve?.();
}
