useLocaleSelector
Referencia de API del hook useLocaleSelector
Descripción general
Este hook devuelve el locale actual, la lista de locales, el hook useSetLocale y una función para obtener las propiedades del locale.
Está pensado para facilitar su uso al crear tu propio componente de selector de idioma.
Si no quieres implementar el tuyo propio, puedes usar el componente <LocaleSelector>.
Referencias
Devuelve
Un objeto que contiene el locale actual, la lista de locales, el hook useSetLocale y una función para obtener las propiedades del locale.
Ejemplos
<LocaleSelector>
Este es el ejemplo de implementación del componente <LocaleSelector>.
export default function LocaleSelector({
locales: _locales,
...props
}: {
locales?: string[];
[key: string]: any;
}): React.JSX.Element | null {
// Obtener las propiedades del selector de idioma
const { locale, locales, setLocale, getLocaleProperties } = useLocaleSelector(
_locales ? _locales : undefined
);
// Obtener el nombre para mostrar
const getDisplayName = (locale: string) => {
return capitalizeLanguageName(
getLocaleProperties(locale).nativeNameWithRegionCode
);
};
// Si no se devuelven locales, no renderizar nada o manejarlo de forma adecuada
if (!locales || locales.length === 0 || !setLocale) {
return null;
}
return (
<select
{...props}
// Usar una cadena vacía como contenido de respaldo predeterminado si currentLocale no está definido
value={locale || ''}
onChange={(e) => setLocale(e.target.value)}
>
{/* Contenido de respaldo opcional cuando no se ha establecido ningún locale */}
{!locale && <option value='' />}
{locales.map((locale) => (
<option key={locale} value={locale} suppressHydrationWarning>
{getDisplayName(locale)}
</option>
))}
</select>
);
}Notas
- Este hook funciona únicamente en el lado del cliente.
- Más información sobre los códigos de configuración regional aquí.
Próximos pasos
- Más información sobre el componente
<LocaleSelector>. - Más información sobre el hook
useLocale.
¿Qué te parece esta guía?