Skip to content

Instantly share code, notes, and snippets.

@n4bb12
Last active January 16, 2023 05:14
Show Gist options
  • Save n4bb12/26ae983f1ed6bd07f0d7c3eb1657a9a2 to your computer and use it in GitHub Desktop.
Save n4bb12/26ae983f1ed6bd07f0d7c3eb1657a9a2 to your computer and use it in GitHub Desktop.
Simple React localization pattern
export const locales = ["de", "en"] as const
export type Locale = typeof locales[number]
export function useLocale(): Locale {
const router = useRouter()
return (router.locale as Locale) || locales[0]
}
export type LocalizedTexts<T> = Record<Locale, T>
export function useLocalizedText<T>(texts: LocalizedTexts<T>) {
const locale = useLocale()
return texts[locale]
}
export const ResetButtonExample: FC = () => {
const T = useLocalizedText({ de, en })
return (
<button>{T.reset}</button>
)
}
const de = {
reset: "Zurücksetzen",
}
const en: typeof de = {
reset: "Reset",
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment