소스의 오타는 번지기 전에 딱 한 번만 고칠 수 있습니다. 비동기 작업은 하나의 소스 페이로드를 모든 대상 로캘로 분기하고, 각 로캘은 전달받은 텍스트를 그대로 번역합니다. 그래서 소스에 철자가 틀리거나, 단어가 빠졌거나, 문장이 깨져 있으면 그걸로 끝나지 않습니다. 독일어에서도 같은 문제가 생기고, 프랑스어에서도 생기고, 작업이 닿는 모든 로캘에서 똑같은 문제가 반복됩니다. 그리고 결국 각 로캘에서 사후에 따로 수정해야 하죠.
로컬라이제이션 전 AI 편집(preEdit)은 그 틈을 소스 단계에서 막아 줍니다. 이 단계는 비동기 로컬라이제이션 파이프라인의 첫 번째 단계로, 핵심 번역 단계가 실행되기 전에 AI 에이전트가 소스 페이로드를 검토하고 오타, 문법 오류, 철자 오류를 바로잡습니다. 이렇게 정리된 소스가 번역에 들어가기 때문에, 여러 결과물에서 같은 오류를 나중에 각각 잡는 대신 분기 전에 한 번만 고치면 됩니다.
이 단계는 비동기 파이프라인에서만 동작하므로 Async Localization API를 통해 생성된 작업에만 실행됩니다. 동기식 /localize 엔드포인트는 핵심 번역 단계만 실행하며 파이프라인 설정은 무시합니다.
이 단계가 하는 일#
preEdit은 번역이 아니라 소스를 대상으로 동작합니다. AI 에이전트가 소스 페이로드를 읽고 오타, 문법, 철자 같은 표면적인 오류를 없애도록 다듬은 뒤, 수정된 텍스트를 핵심 로컬라이제이션 단계로 넘깁니다. 모든 대상 로캘은 이 정리된 소스를 기준으로 번역합니다.
범위가 의도적으로 좁다는 점이 핵심입니다. 이 단계는 재작성용이 아니라 카피 정리용입니다. 번역 모델이 소스 텍스트를 모호하게 해석하게 만드는 표면적 잡음을 줄여, 모델이 망가진 문장의 뜻을 추측하느라 힘을 쓰기보다 번역 자체에 집중하게 합니다. 소스가 더 깔끔할수록 로캘 전반의 번역도 더 일관돼집니다. 각 로캘이 같은 오류를 제각기 해석하는 대신, 모두가 같은 수정본에서 출발하기 때문입니다.
관용적이고 자연스러운 출력이 필요하다면, 즉 번역 자체를 원어민 카피라이터가 쓴 것처럼 다듬고 싶다면 그건 다른 단계입니다. 자연스러운 카피를 위한 재구성을 참고하세요. preEdit은 입력을 정리하고, rephrase은 출력을 다듬습니다.
이 단계 때문에 작업이 더 나빠지지는 않습니다#
번역 전에 콘텐츠를 손보는 AI 단계에 대해 신중한 엔지니어가 가장 먼저 던지는 질문은 당연합니다. 이 단계가 잘못 수정하거나, 아예 실행되지 않으면 어떻게 되나요?
preEdit은 비핵심 단계입니다. 사전 편집 호출이 실패하거나 시간 초과되면 원본 소스는 수정 없이 그대로 전달되고, 작업은 이 단계가 꺼져 있을 때와 똑같이 번역 단계로 계속 진행됩니다. 여기서 실패해도 잃는 것은 그 작업의 정리 기회뿐이지, 작업 자체가 아닙니다. 번역은 그대로 나갑니다.
사전 편집이 실패하거나 시간 초과되면 어떻게 되나요?
작업은 실패하지 않습니다. 비핵심 단계는 입력값으로 폴백합니다. preEdit에서 실패가 발생하면 편집되지 않은 소스가 그대로 번역되고, 작업은 끝까지 완료됩니다. 작업 상태는 completed_with_warnings가 되고, preEdit 단계는 failed로 기록되며, 그 이유는 작업의 warnings 배열에 남습니다. 즉, 전달은 막지 않으면서도 그런 일이 있었다는 사실은 확인할 수 있습니다. 이런 단계 기록을 읽는 방법은 파이프라인 실행 관찰에서 다룹니다.
정직하게 말하면 기준선은 분명합니다. preEdit을 활성화한다고 해서 원래 성공했을 작업이 실패로 바뀌는 일은 없습니다. 최악의 경우에도 특정 작업에서 도움이 되지 않고 조용히 비켜설 뿐입니다.
이 단계가 아닌 것#
이 단계가 더 많은 일을 해주길 가장 바라는 지점에서 분명히 짚고 넘어갈 필요가 있습니다. preEdit은 best-effort 방식의 표면 오류 정리 단계일 뿐, 여러분의 도메인을 이해하는 교열자도 아니고 주장의 사실 여부를 검증하는 팩트체커도 아닙니다. 오타, 문법, 철자는 바로잡지만 가격이 맞는지, 제품명이 최신인지, 문장이 정말 의도한 의미를 담고 있는지는 확인하지 않습니다. 소스가 사실과 다르다면 preEdit은 잘못된 문장의 문법만 깔끔하게 정리한 뒤, 그 잘못된 내용을 모든 로캘에 깔끔하게 번역합니다.
어떤 AI 단계가 지나가더라도 반드시 원문 그대로 유지되어야 하는 용어, 예를 들어 제품명, 상표, 코드 식별자는 소스에서 고정해 두세요. 엔진의 glossary에서 번역 불가로 지정하거나, 특정 페이로드의 구조적 필드라면 lockedKeys로 제외하면 됩니다. 이런 설정은 데이터 차원의 보장이고, preEdit은 그 바깥을 best-effort로 정리하는 단계입니다.
활성화하면 좋은 때#
preEdit은 소스에 잡음이 섞일 가능성이 있을 때는 추가 패스의 값어치를 하고, 소스가 이미 깔끔하다면 사실상 불필요합니다.
- 활성화하세요. 소스 콘텐츠가 사용자 생성이거나, 기계 추출, 스크래핑, OCR 처리되었거나, 그 밖에 편집 프로세스 밖에서 만들어진 경우처럼 표면적 오류가 흔하고 그 비용이 여러 로캘로 증폭되기 쉬운 상황에 적합합니다.
- 건너뛰세요. 이미 편집이나 사람의 검토를 거친 정제된 콘텐츠라면 그렇습니다. 소스가 깔끔하다면 이 단계가 바로잡을 것은 없고, 결과적으로 할 일이 없는 AI 패스에 비용만 지불하게 됩니다. 활성화된 각 단계는 작업에 한 단계가 더 추가되는 것이고, 비용에도 한 줄이 더해집니다. 소스 품질이 불확실할 때는 그만한 가치가 있지만, 그렇지 않다면 낭비입니다.
결국 트레이드오프는 단순합니다. 소스 품질이 불확실한 작업에만 앞단에서 한 번의 패스를 써서 분기 전에 한 번 고치느냐, 아니면 전달 후 모든 로캘에서 같은 오류를 각각 수정하느냐의 차이입니다.
preEdit은 엔진의 Pipeline 탭에서 켜고 끌 수 있으며, 여기서 해당 엔진으로 라우팅되는 모든 비동기 작업에 적용됩니다. 또는 create-jobs 요청의 pipelineConfig로 단일 제출 건에만 재정의할 수도 있습니다. 두 계층이 어떻게 작동하는지, 그리고 단계를 생략했을 때 엔진 기본값을 어떻게 상속하는지는 파이프라인 구성에서 다룹니다.
