useLocaleSelector
Referencia de API del hook useLocaleSelector
Descripción general
Este hook devuelve la locale actual, la lista de locales y el hook useSetLocale.
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> en su lugar.
Referencias
Devuelve
Un objeto que contiene el locale actual, la lista de locales y el hook useSetLocale.
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 contenido de respaldo predeterminado con una cadena vacía si currentLocale no está definido
      value={locale || ''}
      onChange={(e) => setLocale(e.target.value)}
    >
      {/* Contenido de respaldo predeterminado opcional para cuando no se haya 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 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 ha parecido esta guía?

