개발 slecs

쿠키·정책 링크를 Footer에 다국어로 추가

목차

Footer 컴포넌트에 쿠키 정책(Cookies Policy)과 개인정보 정책(Privacy Policy) 링크를 다국어(한국어/영어/일본어)로 추가했다. 겉으로는 단순한 레이아웃 작업처럼 보이지만, 뒤에는 법적 의무 충족, 다국어 지원 전략, 그리고 팀의 우선순위 조정 같은 결정들이 얽혀 있다.

왜 이 작업이 필요했나

글로벌 서비스를 제공하면서 특정 지역의 법규(예: EU GDPR, 일본의 개인정보보호법) 준수는 선택이 아니다. 사용자가 서비스를 이용하기 전에 쿠키 수집 정책과 개인정보 처리 방식을 명확히 알 수 있어야 하고, 그 정보는 항상 접근 가능한 위치에 있어야 한다. Footer는 모든 페이지 하단에 표시되는 공간이므로, 법적 링크를 배치하기에 가장 적합한 위치다.

단순히 링크를 추가하는 것만으로는 충분하지 않았다. 서비스가 한국, 영어권, 일본 사용자를 대상으로 하는 만큼, 각 사용자의 언어로 된 정책 문서에 접근할 수 있어야 했다. 이는 단순한 번역 이상으로, 각 지역별 법적 요구사항이 문서에 반영되어야 함을 의미했다.

작업 내용: 두 파일의 역할 분담

파일 역할 변경 포인트
src/components/Footer.astro UI/레이아웃 정책 링크 UI 추가, 반응형 배치
src/lib/i18n.ts 번역 관리 각 언어별 링크 URL, 레이블 텍스트 등록

Footer.astro 는 컴포넌트 레이어에서 사용자에게 보이는 링크들을 렌더링한다. 여기서는 "이 위치에, 어떤 스타일로" 링크를 표시할지 결정한다. 동시에 i18n.ts 는 언어별 텍스트와 URL을 중앙 집중식으로 관리한다. 이렇게 분리하면, 향후 정책 URL이 바뀌거나 일본어 번역을 수정해야 할 때도 i18n 파일만 건드리면 되고, Footer 컴포넌트의 로직은 건드릴 필요가 없다.

다국어 지원 시 흔한 실수 중 하나는 컴포넌트에 하드코딩된 문자열을 남겨두는 것이다. 예를 들어:

//   좋은 : 컴포넌트에 하드코딩
<Footer>
  <a href="/policy">정책</a>
  <a href="/cookies">쿠키</a>
</Footer>

//  좋은 : i18n 매핑 활용
<Footer links={i18n.footer.legalLinks[currentLang]} />

첫 번째 방식은 나중에 "일본어 사용자를 위해 쿠키 정책이 필요하다"는 요청이 오면 Footer 컴포넌트를 직접 수정해야 한다. 두 번째 방식은 i18n 설정만 추가하면 된다.

회고: 우선순위와 팀 협업

처음엔 이 작업이 "법적 요구사항이니까 빨리 끝내자" 정도의 우선순위였다. 하지만 리뷰 과정에서 팀원들이 좋은 질문을 던졌다:

  • "지금 지원하는 언어는 3개인데, 4개 언어를 추가하려면 어떻게 확장할 것인가?"
  • "정책 문서는 CMS에서 관리할 건가, 하드코딩된 URL을 쓸 건가?"
  • "Footer 링크가 아니라 가입 페이지나 결제 전 단계에도 약관 동의 필수 팝업이 필요하지 않을까?"

이런 질문들이 없었다면, 그냥 Footer에 링크 3개 추가하고 끝났을 것이다. 하지만 법적 문서 관리는 한 번 잘못 설계하면 나중에 고치기 어렵다. 그래서 이번 커밋의 범위를 명확히 했다:

이번 작업의 범위:
- Footer에 정책/쿠키 링크 표시 (현재 지원 언어 3개)
- i18n 레이어를 통한 번역 관리

향후 작업으로 미룬 것:
- CMS 연동 (정책 문서의 소스 관리)
- 가입/결제 단계의 약관 동의 로직
- 새로운 언어 추가 시의 프로세스 정의

이렇게 경계를 명확히 하는 것이 팀의 소통과 번다운 차트 정확성에 중요하다.

일반론: 다국어 지원에서 피해야 할 패턴

비슷한 다국어 기능을 만들 때 경험상 중요한 포인트들:

  • 중앙 집중식 번역 관리: 각 컴포넌트가 독립적으로 번역을 관리하면, 같은 단어가 다르게 번역될 가능성이 높다. 예를 들어 "Cookie Policy"가 어떤 페이지에선 "쿠키 정책", 다른 페이지에선 "쿠키 정책서"로 번역되는 식이다.

  • URL과 텍스트의 분리: URL은 개발자가 관리하고, 텍스트는 번역자나 법무팀이 관리하는 경우가 많다. 둘을 같은 파일에서 관리해야 버전 관리와 검수가 쉬워진다.

  • 언어별 폴백 전략: 예를 들어 아직 일본어 번역이 안 된 항목이 있다면, 영어로 보여줄 것인가 아니면 숨길 것인가? 이 정책을 미리 정해놓는 것이 나중에 런타임 에러를 줄인다.

다음 단계로는 정책 문서 자체의 수정이나 새로운 언어 추가 시 자동화할 수 있는 부분들을 살펴보면 좋을 것 같다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.