← 기사 목록으로
Web 2026-04-17 · rev. 2026-05-10 ProtoMedia

수십 개의 언어를 구사하는 웹사이트, 번역가 없이

자동 번역된 내용입니다. · 원문 보기

이 페이지 아래에서 작동하는 번역 시스템을 구축한 방법: 필요에 따라 AI, 항상 캐시, 인지된 대기 시간 제로.

전통적인 i18n의 문제점

수년간 웹사이트의 국제화는 워크플로우의 작은 오디세이였습니다: .po 파일, 인간 번역가, 잊혀진 키, "독일어가 아직 없다"는 이유로 지연된 배포. 언어 하나를 추가하는 데는 시간과 비용이 들었고, 열 개를 추가하는 것은 모든 소규모 기업에게는 논외였습니다.

최신 LLM을 통해 자동 번역의 품질이 기업 웹사이트, 문학이 아닌 경우에 충분한 수준에 도달했습니다. 질문은 더 이상 "자동으로 번역할 수 있을까요?"가 아니라 "사용자 경험을 망치지 않고 어떻게 통합할까요?"입니다.

간단한 아키텍처

사이트는 이탈리아어로 정적으로 제공됩니다. 사용자가 다른 언어를 선택하면 세 개의 MongoDB 컬렉션에 대한 작은 엔진이 작동합니다:

  • i18n_base: 선택한 언어(현재 이탈리아어)의 원본 텍스트로, 각 텍스트는 자신의 언어 선언, 웹사이트에 나타나는 위치 및 이유에 대한 설명(번역 품질에 필수적), 어조 및 문자 수 제한과 함께 제공됩니다. 이 설명은 LLM에 대한 프롬프트의 일부가 되어 LLM이 버튼인지 단락인지 알 수 있도록 합니다.
  • i18n_human: LLM 출력 대신 편집 품질을 원할 경우 특정 페이지에 대해 수동으로 큐레이팅된 번역입니다. 자동 캐시보다 우선하며 원본 텍스트가 변경되면 자동으로 "표시"됩니다.
  • i18n_cache: (필드, 언어)로 인덱싱된 이미 생성된 번역입니다. 각 항목은 생성 시 기본 텍스트의 타임스탬프를 보관합니다.
  • articoli_i18n: 이 문서와 같은 더 긴 콘텐츠에 적용되는 동일한 로직입니다.

새로운 언어로 처음 액세스하면 시스템은 LLM에 실제로 누락된 필드만 요청하고, 응답을 캐시에 저장한 다음 브라우저에 반환합니다. 후속 방문 시 동일한 언어는 AI 호출 없이 즉시 제공됩니다.

작동하는 무효화

캐시는 정돈된 거짓말입니다. "나의 진실은 이것이다"라고 말하지만, 누군가가 그것을 반증할 때까지요. 여기서 반증 메커니즘은 간단합니다. 캐시된 각 번역은 이를 생성한 기본 텍스트의 타임스탬프를 저장합니다. 이탈리아어 텍스트를 수정하고 updated_at을 업데이트하면 해당 필드의 모든 언어 번역이 자동으로 오래된 것으로 간주되고 필요에 따라 다시 생성됩니다. 수동 캐스케이드가 없고, 캐시를 비울 필요가 없습니다.

기다리지 않는 사용자

가장 흥미로운 부분은 번역 자체가 아니라 번역을 표시하는 방식입니다. 언어를 변경하면 브라우저에는 업데이트해야 할 각 텍스트 블록 옆에 작은 스피너가 있는 이탈리아어 페이지가 표시됩니다. 한 번에 모든 것을 번역하는 단일 호출을 하려는 유혹이 있습니다. 간단하고 깔끔하지만 사용자가 LLM이 모든 것을 완료할 때까지 기다려야 하기 때문에 어떤 변화도 볼 수 없게 됩니다.

저희는 반대 방향을 택했습니다. 텍스트는 섹션(탐색 모음, 본문, 바닥글)별로 그룹화되고 각 3개 필드로 구성된 마이크로 배치로 분할됩니다. 호출은 순차적으로 시작됩니다. 먼저 몇 개의 탐색 모음 필드가 몇 초 안에 표시되어 사용자가 무언가가 일어나고 있음을 알 수 있고 읽기 시작합니다. 읽는 동안 본문의 첫 번째 부분이 도착하고, 그 다음 두 번째 부분, 마지막으로 바닥글이 도착합니다.

핵심 요약: 체감 속도는 총 속도가 아닙니다. 한 번에 한 조각씩, 보이는 순서대로 번역하는 것이 먼저 끝내는 것보다 중요합니다.

야간 작업

캐시의 유일한 진정한 적은 첫 방문입니다. 첫 번째 독일 사용자가 미래의 모든 번역에 대한 대가를 지불하며, 그의 경험만이 머릿속에 남습니다. 문제를 제거(또는 거의 제거)하기 위해 백그라운드 작업이 매분 깨어나 아직 완료되지 않은 언어 중 가장 기대되는 언어를 선택하고, 번역되지 않은 텍스트를 가져와 LLM을 통해 처리합니다. 다음 분에는 다음 텍스트를 처리합니다. 며칠 만에 가장 널리 사용되는 언어는 모두 준비됩니다.

야간 작업은 두 번째 역할도 수행합니다. 품질이 의심스러운 번역을 자동으로 검토하고 다른 AI 모델을 사용하여 다시 시도합니다. 언어 간 정렬이 중요한 경우, 형편없는 번역은 그대로 남지 않습니다.

하루 중 첫 번째 독일 사용자이고 시스템이 아직 캐시를 완료하는 동안 도착하면, 프로그레시브 로딩으로 시간을 보낼 수 있습니다. 두 번째 사용자라면, 전혀 눈치채지 못할 것입니다.

얻어가는 것

번역가 없이, 관리할 파일 없이, 언어를 추가하기 위한 배포 없이 다국어 웹사이트. 사용자는 ja, ca, eu 등 원하는 코드를 입력하면 페이지가 번역됩니다. 두 번째 접속 시에는 즉시 번역되고, 세 번째 접속 시에는 이미 저희가 번역을 완료했을 가능성이 높습니다. 정확한 시점에 작업을 수행하는 태스크가 잠들지 않기 때문입니다.

만약 지금 이 페이지를 독일어, 스페인어, 한국어로 읽고 계신다면, 번역가가 이 페이지를 작성한 적은 없습니다. LLM에 의해 한 번만 번역되었으며, 그 이후로는 캐시에서 제공되고 있습니다. 현재 이 글을 이탈리아어로 읽고 계신다면, 이것만이 수동으로 작성된 부분입니다.

이 아키텍처를 귀하의 웹사이트에 적용하는 데 관심이 있으신가요? 논의해 봅시다.

문의하기

의견이 있으신가요? 보내주세요

이 메시지는 저희에게만 전달됩니다. 댓글 내용이 유익하면 기사 하단에 게시할 수 있지만, 검토 후 결정됩니다.

입력하시는 동안 브라우저가 간단한 계산 문제를 해결합니다. 이는 타사 서비스 없이, 이미지 선택 없이 스팸 메일을 차단하는 방법입니다. 어떠한 요청도 없으며, 어떤 데이터도 이 사이트를 벗어나지 않습니다.