Open for new projects · sublimearts.io
← Blog
Web Design2026년 5월 28일·8분 읽기

모든 커미션에서 기본적으로 네이티브 다국어 Next.js 라우트 (IT/EN/ES)를 설계하는 이유.

Next.js/Astro에서 국제 SEO 라우트를 설계해 두면 렌더링 지연을 막을 수 있고, 느린 자동 번역기를 쓸 때 드러나는 결함도 없앨 수 있습니다. 바로 지금 이 웹사이트를 9개 언어로 돌리고 있는 아키텍처가 이것입니다.

마음에 드시나요? 마지막에 ❤️가 기다리고 있어요.

다국어가 보이는 것보다 중요한 이유

지역 비즈니스는 한 가지 언어로 생각합니다. 관광, 숙박, 전문 서비스, 이커머스처럼 해외 고객을 원하는 비즈니스는 실제 고객이 검색하는 언어로 사이트가 네이티브하게 존재해야 합니다. 나중에 덧붙이는 것이 아니라요. 본국 밖으로 도달 범위를 넓히고 싶은 클라이언트의 사이트를 만들 때는 처음부터 다국어 라우팅을 넣습니다. 단일 언어 사이트에 나중에 붙이려면 메타데이터, URL 구조, 그리고 종종 콘텐츠 전략까지 처음부터 다시 해야 하기 때문입니다.

뻔한 두 가지 지름길이 모두 실패하는 이유

누구나 가장 먼저 손을 뻗는 지름길이 두 가지 있는데, 둘 다 진짜 SEO에서는 실패합니다. 첫째는 떠다니는 번역 위젯(Google Translate 임베드 등)입니다. 이는 페이지가 이미 원래 언어로 로드된 뒤 클라이언트 쪽에서 동작하므로, 검색 엔진은 원본 텍스트를 색인합니다. 스페인어로 검색하는 스페인어권 방문자는 Google에게 스페인어로 읽히는 페이지를 절대 찾지 못합니다. 둘째는 ?lang=es 같은 쿼리 파라미터가 붙은 단일 URL입니다. 검색 엔진은 쿼리 파라미터 변형을 독립적으로 순위를 매길 수 있는 별개의 페이지로 안정적으로 취급하지 않습니다. 같은 URL의 중복 콘텐츠로 처리되는 경우가 많아서, 스페인어 콘텐츠가 스페인어 검색에서 독립적으로 순위를 얻지 못하고 영어 콘텐츠와 경쟁하게 됩니다.

해법: 언어마다 하나씩, 진짜 라우트

모든 언어가 크롤링 가능한 자신만의 경로(/it/, /en/, /es/)를 가지며, 각각 완전히 번역된 콘텐츠, 고유한 <html lang> 속성, 고유한 메타데이터와 함께 서버 사이드에서 렌더링됩니다. Next.js에서는 localePrefix를 “always”로 설정한 next-intl이 이를 기본으로 제공합니다. JavaScript로 텍스트만 바꾸는 하나의 페이지가 아니라, 검색 엔진이 크롤링하고 색인하고 독립적으로 순위를 매길 수 있는 진짜로 분리된 페이지를 얻게 됩니다. 각각이 해당 언어의 진짜 완전한 페이지이며, 같은 콘텐츠 위에 씌운 번역 껍데기가 아닙니다.

이 사이트가 실제로 어떻게 연결되어 있는지

1지원하는 로케일을 정의하고 next-intl 라우팅 설정에서 localePrefix: “always”를 지정합니다. 기본 언어를 포함한 모든 URL이 명시적인 /it/, /en/, /es/ 접두사를 갖게 되어 모호한 루트 라우트가 사라집니다
2번역 문자열을 언어당 하나의 JSON 파일(messages/en.json, messages/it.json 등)에 저장합니다. 모든 UI 문자열과 페이지 문구가 컴포넌트에 흩어지지 않고 로케일별로 제자리를 갖게 됩니다
3generateMetadata()에서 alternates.canonical을 현재 로케일의 URL로, alternates.languages를 모든 로케일의 대응 URL을 담은 전체 맵으로 설정합니다. 이것이 검색 엔진이 같은 페이지의 언어 변형을 연결하는 데 쓰는 hreflang 태그를 실제로 출력합니다
4페이지마다 openGraph.locale과 알맞은 og:image를 설정해, 어떤 언어 변형이 공유되더라도 공유된 링크가 올바르게 미리 보이도록 합니다
5요청 시점에 기계 번역은 절대 하지 않습니다. 한 번 번역해 저장하고, 로케일별로 정적으로 제공합니다. 이렇게 하면 첫 바이트까지의 시간이 빠르게 유지되고 핵심 렌더링 경로에 번역 API가 끼어들지 않습니다

이렇게 하면 실제로 얻는 것

각 언어 변형은 자기 조건으로 순위를 얻습니다. 이탈리아어 검색에는 이탈리아어 페이지가, 스페인어 검색에는 스페인어 페이지가 나오며, Google의 눈에는 어느 쪽도 서로 경쟁하거나 희석하지 않습니다. 전환에서도 똑같이 중요한 점은 방문자가 구석에 번역 위젯이 눈에 띄는 페이지가 아니라, 정말 그들의 언어로 쓰인 것처럼 읽히는 페이지에 도착한다는 것입니다. 국제 독자에게 신뢰감을 주려는 레스토랑, 호텔, 전문 서비스에게 이 차이는 종종 이탈과 고객 확보를 가르는 간극입니다.

이 아키텍처를 여러분의 사이트에서 돌리고 싶으신가요?

이야기해 봅시다 →

About

Patrick Chen — Sublimearts.io를 만든 독립 개발자 겸 웹 디자이너. next-intl, localePrefix always, 언어별 메타데이터로 이루어진 바로 이 라우팅 구성이, 지금 여러분이 읽고 있는 이 페이지를 9개 언어 중 보고 계신 언어로 렌더링하고 있습니다.

Did you find this helpful?