개발 노트

Next.js 구글번역을 이용한 웹페이지 번역 본문

React

Next.js 구글번역을 이용한 웹페이지 번역

한츄 2024. 8. 5. 18:21

쿠키관련 사용부분 업데이트

 

  //언어설정값에 따라 useState 변경
  const handleChange = (value: string) => {
    const lang = "/auto/" + value;
    setLangCookie(lang);
  };

 앞쪽에 auto를 붙여서 사용하는 코드로  변경

 

  //langCookie값 변화에 따라 실행시키는 이벤트 (언어감지)
  useEffect(() => {
    const splitLangCookie = langCookie.split("/")[2];
    if (splitLangCookie === "ko") {
      resetGoogleTranslate();
    } else {
      const element = document.querySelector<HTMLSelectElement>(".goog-te-combo");
      if (element) {
        element.value = splitLangCookie;
        element.dispatchEvent(new Event("change"));
      }
    }
  }, [langCookie]);

사용시에는  split으로 잘라서 사용

<div>
      <div id="google_translate_element" style={{ visibility: "hidden", width: "1px", height: "1px" }}></div>
      <LanguageSelector onChange={handleChange} value={langCookie.split("/")[2]} />
      {langCookie.split("/")[2] !== 'ko' && 
      <Script
        src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"
        strategy="afterInteractive"
      />
      }
    </div>

 return부분도  잘라서 사용하는 코드로 변경

export default function LanguageSelector({ onChange, value }: LanguageSelectorProps) {
  return (
    <Select
      className='w-[70px] py-0.5'
      onChange={onChange}
      value={value ? value : 'ko'}
    >
      {languages.map(lang => (
        <Option key={lang.value} value={lang.value}>
          <p className='flex flex-row items-center'>
            <img src={lang.src} alt={lang.label} className="w-6 h-4" />
            {/* {lang.label} */}
          </p>
        </Option>
      ))}
    </Select>
  );
}

LanguageSelector에서 값이 없을 시 'ko'로 처리하도록 변경

 

import { cookies } from 'next/headers';

export const getPrefLangCookie = () => {
  return cookies().get("googtrans")?.value ?? "ko";
};


return(
   <Layout settingData={parsedSettingData} langCookie={langCookie}>{children}</Layout>
)

 

서버컴포넌트 내에서 쿠키값 가져온 뒤 prop으로 전달

'React' 카테고리의 다른 글

next-auth  (2) 2024.10.31
CMAN BUILD  (0) 2024.09.02
next.js에 구글 번역 적용하기  (0) 2024.07.26
다국어 지원 관련 방법 2  (0) 2024.07.25
국제화 관련 사이트  (0) 2024.07.25