Helpers
useLocaleSelector
useLocaleSelector 钩子 API 参考
概览
该 hook 会返回当前的 locale、locales 列表,以及 useSetLocale hook。
这便于你在创建自定义的语言/locale 选择器组件时使用。
如果你不想自己实现,可以直接使用 <LocaleSelector> 组件。
参考资料
返回值
一个对象,包含当前的 locale、locales 列表,以及 useSetLocale 钩子。
示例
<LocaleSelector>
这是 <LocaleSelector> 组件的实现示例。
export default function LocaleSelector({
  locales: _locales,
  ...props
}: {
  locales?: string[];
  [key: string]: any;
}): React.JSX.Element | null {
  // 获取 Locale 选择器的属性
  const { locale, locales, setLocale, getLocaleProperties } = useLocaleSelector(
    _locales ? _locales : undefined
  );
  // 获取显示名称
  const getDisplayName = (locale: string) => {
    return capitalizeLanguageName(
      getLocaleProperties(locale).nativeNameWithRegionCode
    );
  };
  // 如果没有返回任何 Locale,则不渲染或做降级处理
  if (!locales || locales.length === 0 || !setLocale) {
    return null;
  }
  return (
    <select
      {...props}
      // 当 currentLocale 未定义时,回退为空字符串
      value={locale || ''}
      onChange={(e) => setLocale(e.target.value)}
    >
      {/* 当未设置 Locale 时的可选回退项 */}
      {!locale && <option value='' />}
      {locales.map((locale) => (
        <option key={locale} value={locale} suppressHydrationWarning>
          {getDisplayName(locale)}
        </option>
      ))}
    </select>
  );
}注意事项
- 此 hook 仅限在客户端使用。
- 在这里了解更多关于语言环境代码字符串的说明。
下一步
- 了解更多 <LocaleSelector>组件。
- 进一步了解 useLocale钩子。
这份指南怎么样?

