Helpers
useLocaleSelector
useLocaleSelector フックのAPIリファレンス
概要
このフックは、現在の locale、対応ロケールの一覧、useSetLocale フック、および locale のプロパティを取得する関数を返します。
独自の locale セレクターコンポーネントを作成する際に手軽に利用できるよう設計されています。
独自に実装しない場合は、代わりに <LocaleSelector> コンポーネントを使用できます。
リファレンス
戻り値
現在の locale、対応ロケールの一覧、useSetLocale フック、そして locale のプロパティを取得する関数を含むオブジェクト。
例
<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>
);
}注意事項
- このフックはクライアントサイド専用です。
- ロケールコード文字列の詳細はこちらをご覧ください。
次のステップ
<LocaleSelector>コンポーネントについてさらに学ぶuseLocaleフックについてさらに学ぶ
このガイドはいかがですか?