์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
๋ฒ์ ๊ธฐ๋ก
- "`onLocaleChange` ๊ธฐ๋ณธ๊ฐ์ `replace`๋ก ์ค์ "v8.0.02026. 1. 26.
- "์ด๊ธฐ ์ด๋ ฅ"v5.5.102025. 6. 29.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Next.js ํตํฉ: next-intlayer์ฉ useLocale ํ
๋ฌธ์
์ด ์น์
์์๋ next-intlayer ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด Next.js ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง์ถคํ๋ useLocale ํ
์ ๋ํ ์์ธํ ๋ฌธ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ํ
์ ๋ก์ผ์ผ ๋ณ๊ฒฝ๊ณผ ๋ผ์ฐํ
์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
Next.js์์ useLocale ๊ฐ์ ธ์ค๊ธฐ
Next.js ์ ํ๋ฆฌ์ผ์ด์
์์ useLocale ํ
์ ์ฌ์ฉํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ๊ฐ์ ธ์ค์ธ์:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฌ์ฉ๋ฒ
๋ค์์ Next.js ์ปดํฌ๋ํธ ๋ด์์ useLocale ํ
์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์
๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
"use client";
import type { FC } from "react";
import { Locales } from "intlayer";
import { useLocale } from "next-intlayer";
const LocaleSwitcher: FC = () => {
const { locale, defaultLocale, availableLocales, setLocale } = useLocale();
return (
<div>
<h1>ํ์ฌ ๋ก์ผ์ผ: {locale}</h1>
<p>๊ธฐ๋ณธ ๋ก์ผ์ผ: {defaultLocale}</p>
<select value={locale} onChange={(e) => setLocale(e.target.value)}>
{availableLocales.map((loc) => (
<option key={loc} value={loc}>
{loc}
</option>
))}
</select>
</div>
);
};
๋งค๊ฐ๋ณ์
useLocale ํ
์ ๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํฉ๋๋ค:
onLocaleChange: ๋ก์ผ์ผ์ด ๋ณ๊ฒฝ๋ ๋ URL์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ๋ฌธ์์ด์ ๋๋ค."replace","push"๋๋"none"์ด ๋ ์ ์์ต๋๋ค.์์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค:
- ํ์ฌ
/fr/home์ ์์ต๋๋ค. /fr/about์ผ๋ก ์ด๋ํฉ๋๋ค.- ๋ก์ผ์ผ์
/es/about์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. - ๋ธ๋ผ์ฐ์ ์ "๋ค๋ก ๊ฐ๊ธฐ" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
onLocaleChange๊ฐ์ ๋ฐ๋ผ ๋์์ด ๋ฌ๋ผ์ง๋๋ค:"replace"(๊ธฐ๋ณธ๊ฐ): ํ์ฌ URL์ ์๋ก์ด ๋ก์ปฌ URL๋ก ๊ต์ฒดํ๊ณ ์ฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค. -> "๋ค๋ก ๊ฐ๊ธฐ" ๋ฒํผ์ ๋๋ฅด๋ฉด/es/home์ผ๋ก ์ด๋ํฉ๋๋ค."push": ์๋ก์ด ๋ก์ปฌ URL์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก์ ์ถ๊ฐํ๊ณ ์ฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค. -> "๋ค๋ก ๊ฐ๊ธฐ" ๋ฒํผ์ ๋๋ฅด๋ฉด/fr/about์ผ๋ก ์ด๋ํฉ๋๋ค."none": URL์ ๋ณ๊ฒฝํ์ง ์๊ณ ํด๋ผ์ด์ธํธ ์ปจํ ์คํธ์ ๋ก์ผ์ผ๋ง ์ ๋ฐ์ดํธํ๊ณ ์ฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค. -> "๋ค๋ก ๊ฐ๊ธฐ" ๋ฒํผ์ ๋๋ฅด๋ฉด/fr/home์ผ๋ก ์ด๋ํฉ๋๋ค.(locale) => void: ์ฟ ํค๋ฅผ ์ค์ ํ๊ณ ๋ก์ผ์ผ์ด ๋ณ๊ฒฝ๋ ๋ ํธ์ถ๋ ์ปค์คํ ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.undefined์ต์ ์ ๊ธฐ๋ณธ ๋์์ด๋ฉฐ, ์๋ก์ด ๋ก์ผ์ผ๋ก ์ด๋ํ ๋๋Link์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์์:tsx์ฝ๋ ๋ณต์ฌ์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
- ํ์ฌ
๋ฐํ ๊ฐ
useLocale ํ
์ ํธ์ถํ๋ฉด ๋ค์ ์์ฑ์ ํฌํจํ๋ ๊ฐ์ฒด๊ฐ ๋ฐํ๋ฉ๋๋ค:
locale: React ์ปจํ ์คํธ์ ์ค์ ๋ ํ์ฌ ๋ก์ผ์ผ์ ๋๋ค.defaultLocale: ๊ตฌ์ฑ์์ ์ ์๋ ๊ธฐ๋ณธ ๋ก์ผ์ผ์ ๋๋ค.availableLocales: ๊ตฌ์ฑ์์ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ก์ผ์ผ ๋ชฉ๋ก์ ๋๋ค.setLocale: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก์ผ์ผ์ ๋ณ๊ฒฝํ๊ณ URL์ ์ด์ ๋ง๊ฒ ์ ๋ฐ์ดํธํ๋ ํจ์์ ๋๋ค. ๊ตฌ์ฑ์ ๋ฐ๋ผ ๊ฒฝ๋ก์ ๋ก์ผ์ผ์ ์ถ๊ฐํ ์ง ์ฌ๋ถ ๋ฐ ์ ๋์ฌ ๊ท์น์ ์ฒ๋ฆฌํฉ๋๋ค.next/navigation์useRouter๋ฅผ ์ฌ์ฉํ์ฌpush๋ฐrefresh์ ๊ฐ์ ๋ด๋น๊ฒ์ด์ ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค.pathWithoutLocale: ๋ก์ผ์ผ์ด ์ ๊ฑฐ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐํํ๋ ๊ณ์ฐ๋ ์์ฑ์ ๋๋ค. URL์ ๋น๊ตํ ๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ ๋ก์ผ์ผ์ดfr์ด๊ณ URL์ดfr/my_path์ธ ๊ฒฝ์ฐ, ๋ก์ผ์ผ์ด ์๋ ๊ฒฝ๋ก๋/my_path์ ๋๋ค. ํ์ฌ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํดnext/navigation์usePathname์ ์ฌ์ฉํฉ๋๋ค.
๊ฒฐ๋ก
next-intlayer์ useLocale ํ
์ Next.js ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ก์ผ์ผ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ๋๊ตฌ์
๋๋ค. ๋ก์ผ์ผ ์ ์ฅ, ์ํ ๊ด๋ฆฌ, URL ์์ ๋ฑ์ ์ํํ๊ฒ ์ฒ๋ฆฌํ์ฌ ๋ค์ค ๋ก์ผ์ผ์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉ์ ์ผ๋ก ์ ์์ํฌ ์ ์๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
