๊ฐœ๋ฐœ์ผ์ง€์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๊ฐœ๋ฐœ์ผ์ง€์•ฝ 1๋ถ„ ์ฝ๊ธฐ

[Dev Log] Next.js 14 + next-intl๋กœ ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค ์ค€๋น„ํ•˜๊ธฐ ๐ŸŒ

์™œ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?

์„œ๋น„์Šค์˜ ๊ธ€๋กœ๋ฒŒ ํ™•์žฅ์„ ์œ„ํ•ด ๋‹ค๊ตญ์–ด ์ง€์›์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Next.js 14 App Router ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”next-intl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

1. next-intl ์„ค์น˜ ๋ฐ ์„ค์ •

pnpm install next-intl

๋ฏธ๋“ค์›จ์–ด๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์–ธ์–ด ์„ค์ •์„ ๊ฐ์ง€ํ•˜๊ณ  ์ ์ ˆํ•œ ๊ฒฝ๋กœ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•ฉ๋‹ˆ๋‹ค.

2. ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ

๊ธฐ์กด์˜ app/page.tsx ๋“ฑ์„ app/[locale]/page.tsx ๋กœ ์ด๋™ํ•˜์—ฌ ๋™์  ๋ผ์šฐํŒ…์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

3. ์–ธ์–ด ๋ณ€๊ฒฝ ํ† ๊ธ€ (Language Toggle)

shadcn/ui์˜ DropdownMenu๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ง๊ด€์ ์ธ ์–ธ์–ด ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ๐Ÿ’ก Tip: usePathname๊ณผ useRouter ํ›…์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๊ฒฝ๋กœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์–ธ์–ด prefix๋งŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

์ด์ œ /en ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ•˜๋ฉด ์˜์–ด ํŽ˜์ด์ง€๊ฐ€, /ko ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ•˜๋ฉด ํ•œ๊ตญ์–ด ํŽ˜์ด์ง€๊ฐ€ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ฒซ ๊ฑธ์Œ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋‚ด๋””๋Ž ์Šต๋‹ˆ๋‹ค! ๐Ÿš€

๊ณต์œ ํ•˜๊ธฐ

โฌ‡๏ธ ์ด ๊ธ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด, ์•„๋ž˜ ๊ด‘๊ณ ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ํด๋ฆญํ•ด์ฃผ์„ธ์š”! ์ €์—๊ฒŒ ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค ๐Ÿ™‡โ€โ™‚๏ธ โฌ‡๏ธ

[Dev Log] Next.js 14 + next-intl๋กœ ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค ์ค€๋น„ํ•˜๊ธฐ ๐ŸŒ | ์ •ํ›ˆ์˜ ๋ธ”๋กœ๊ทธ