← Dev Log

Gloddy - 다국어 지원

·2 min read

오늘 한 일

  • gloddy 개발
    • 페이지 애니메이션 구현
    • 더보기 버튼 클릭 시 바텀시트 띄우기
    • i18n 세팅
  • 블로그 allMdx 오류 수정

Gloddy

이제 QA 한 것들을 거의 다 반영한 것 같다.

다국어 지원

i18n을 사용하여 다국어 지원을 했다.

next-i18next 라이브러리를 사용하려고 했는데 next 13 App dir에서는 지원하지 않는다고 한다..

그래서 이 을 보면서 직접 세팅했다.

서버 컴포넌트에서 사용하는 방법

import Link from 'next/link'
import { serverTranslation } from '../i18n'

export default async function Page({ params: { lng } }) {
  const { t } = await serverTranslation(lng)
  return (
    <>
      <h1>{t('title')}</h1>
      <Link href={`/${lng}/second-page`}>{t('to-second-page')}</Link>
    </>
  )
}

클라이언트 컴포넌트에서 사용하는 방법

'use client'

import Link from 'next/link'
import { useTranslation } from '../../i18n/client'
import { Footer } from '../components/Footer/client'
import { useState } from 'react'

export default function Page({ params: { lng } }) {
  const { t } = useTranslation(lng, 'client-page')
  const [counter, setCounter] = useState(0)
  return (
    <>
      <h1>{t('title')}</h1>
      <p>{t('counter', { count: counter })}</p>
      <div>
        <button onClick={() => setCounter(Math.max(0, counter - 1))}>-</button>
        <button onClick={() => setCounter(Math.min(10, counter + 1))}>+</button>
      </div>
      <Link href={`/${lng}`}>
        <button type="button">{t('back-to-home')}</button>
      </Link>
      <Footer lng={lng} />
    </>
  )
}

내일 할 일

  • gloddy 개발
    • 다국어 적용
    • 테일윈드 SSR 시 스타일 깨지는 문제 해결
  • 7시 GDSC 회의