Helpers

useLocaleSelector

Справочное руководство по API хука useLocaleSelector

Обзор

Этот хук возвращает текущую локаль, список локалей, хук useSetLocale и функцию для получения свойств локали. Это облегчает создание собственного компонента выбора локали.

Если вы не хотите реализовывать свой компонент, воспользуйтесь компонентом <LocaleSelector>.

Справочные материалы

Возвращает

Объект, содержащий текущую локаль, список локалей, хук useSetLocale и функцию для получения свойств локали.


Примеры

<LocaleSelector>

Это пример реализации компонента <LocaleSelector>.

export default function LocaleSelector({
  locales: _locales,
  ...props
}: {
  locales?: string[];
  [key: string]: any;
}): React.JSX.Element | null {
  // Получаем свойства селектора локали
  const { locale, locales, setLocale, getLocaleProperties } = useLocaleSelector(
    _locales ? _locales : undefined
  );

  // Получаем отображаемое название
  const getDisplayName = (locale: string) => {
    return capitalizeLanguageName(
      getLocaleProperties(locale).nativeNameWithRegionCode
    );
  };

  // Если локали не возвращены, ничего не рендерим или обрабатываем корректно
  if (!locales || locales.length === 0 || !setLocale) {
    return null;
  }

  return (
    <select
      {...props}
      // Резервное значение — пустая строка, если currentLocale не определён
      value={locale || ''}
      onChange={(e) => setLocale(e.target.value)}
    >
      {/* Опциональное резервное значение, если локаль не установлена */}
      {!locale && <option value='' />}

      {locales.map((locale) => (
        <option key={locale} value={locale} suppressHydrationWarning>
          {getDisplayName(locale)}
        </option>
      ))}
    </select>
  );
}

Примечания

  • Этот хук доступен только на стороне клиента.
  • Подробнее о строках локали читайте здесь.

Дальнейшие шаги

Насколько полезно это руководство?

useLocaleSelector