sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
41 lines (35 loc) • 1.3 kB
text/typescript
/* eslint-disable no-process-env */
import {type TFunction} from 'i18next'
/**
* Mode to use for debugging. `reverse`, `triangles` or `log`.
*/
const DEBUG_MODE = typeof process === 'undefined' ? false : process?.env?.SANITY_STUDIO_DEBUG_I18N
/**
* Whether or not the debug mode for i18n should be enabled
*
* @internal
* @hidden
*/
export const DEBUG_I18N = Boolean(DEBUG_MODE)
/**
* Wrapper function use for debugging. The "reverse" approach is less disruptive to the layout, but
* may be hard to use since it is hard to read labels. The "triangles" approach is easy to spot.
*/
const debugWrappers = {
reverse: (str: string) => `${str}`,
triangles: (str: string) => `◤ ${str} ◢`,
}
/**
* If in debug mode, wrap the given `t` function in a function that adds a prefix and suffix to the
* translated string. If not, return the original `t` function as-is.
*
* @param t - The `t` function to wrap
* @returns The wrapped `t` function, or the original `t` function if not in debug mode
* @internal
* @hidden
*/
export function maybeWrapT(t: TFunction): TFunction {
const wrapper =
DEBUG_MODE === 'reverse' || DEBUG_MODE === 'triangles' ? debugWrappers[DEBUG_MODE] : null
return wrapper ? (((...args: any) => wrapper(t(...args)) as any) as TFunction) : t
}