TranslatePress 텍스트 음성 변환: 실제로 작동하는 방법
TranslatePress는 요청 시점에 페이지의 렌더링된 HTML을 번역하고, 모든 번역을 로컬 데이터베이스 테이블에 저장합니다. 게시물 ID는 글마다 하나뿐이며, 언어 전환은 게시물을 복제하는 방식이 아닌 trp_translate()를 통해 이루어집니다. 이 구조 하나가 TranslatePress 사이트에서 텍스트 음성 변환을 설정하는 방식 전체를 바꿉니다.
이 글은 다국어 TTS 시리즈의 다섯 번째이자 마지막 편입니다. 앞서 WPML, Polylang, Weglot, GTranslate를 다뤘습니다. TranslatePress는 기술적으로 이들 사이 어딘가에 위치하며, 오디오 설정도 그에 맞게 달라집니다.
TranslatePress가 WPML, Polylang, Weglot과 다른 점
WPML과 Polylang은 언어마다 별도의 게시물을 생성합니다. 번역마다 고유한 게시물 ID, post_content, 고유 퍼머링크가 있습니다. 각 언어가 독립적인 WordPress 객체이므로 오디오 생성은 단순합니다.
Weglot은 정반대 방식을 택합니다. 번역 결과는 Weglot 서버에 저장되고, 프록시나 서브도메인을 통해 페이지에 삽입됩니다. WordPress 데이터베이스는 번역된 텍스트를 전혀 보지 못합니다. 그래서 Weglot에서 서버 측 TTS를 구현하려면 JavaScript 훅 없이는 어렵습니다.
TranslatePress는 그 중간 지점입니다. 글마다 게시물이 하나뿐이라 post_content에는 기본 언어만 담겨 있습니다. 하지만 모든 번역은 WordPress 데이터베이스의 wp_trp_ 테이블에 로컬로 저장됩니다. 읽고, 조회하고, TTS 엔진에 전달할 수 있습니다. 이 점이 다른 네 가지 플러그인과 오디오 접근 방식을 구분합니다.
번역 데이터가 실제로 저장되는 위치
TranslatePress는 wp_trp_로 시작하는 전용 테이블에 번역을 저장합니다. 각 언어 쌍은 wp_trp_dictionary_<source>_<target> 형식의 고유한 사전 테이블을 갖습니다. 원본 문자열용 wp_trp_original_strings 테이블과 테마·플러그인 번역용 gettext 테이블도 있습니다.
저장 방향이 고정되어 있습니다. 영어 사이트의 독일어 번역은 영어-독일어 사전에 저장됩니다. 읽어올 때도 같은 방향을 사용해야 합니다. 핵심 함수는 trp_translate()로, 콘텐츠 문자열과 언어 코드를 받아 번역된 버전을 반환합니다.
if ( function_exists( 'trp_translate' ) ) {
$translated = trp_translate( $post->post_content, 'de_DE' );
// TTS 엔진에 $post->post_content가 아닌 $translated를 전달하세요.
}
TTS 연동에서 이 함수가 유일한 기준점입니다. post_content를 직접 읽으면 방문자가 어떤 URL에 있든 항상 기본 언어가 반환됩니다. TTSWP가 이를 어떻게 처리하는지는 TranslatePress 연동 문서에서 확인하세요.

로케일 코드를 잘못 쓰는 문제
TranslatePress는 슬러그가 아닌 전체 로케일 코드를 사용합니다. 독일어는 de가 아닌 de_DE입니다. 프랑스어는 fr_FR, 브라질 포르투갈어는 pt_BR입니다. Polylang 방식의 두 글자 슬러그를 가정하는 연동 코드는 TranslatePress에서 아무런 오류 없이 조용히 실패합니다.
TranslatePress 개발자 문서는 이 점을 명확히 설명합니다. trp_translate()에 전달하는 언어 코드는 설정 > TranslatePress > 일반에서 정의한 로케일이며, URL의 언어 슬러그와 반드시 일치하지는 않습니다. de처럼 슬러그만 넣으면 어떤 사전과도 매칭되지 않아 경고 없이 원본 문자열로 폴백됩니다. 커스텀 코드를 작성할 때는 trp_translate()를 호출하기 전에 언어 코드를 정규화하고, 나중에 매칭할 수 있도록 오디오 파일과 함께 동일한 로케일 형식을 저장하세요.
URL 구조와 캐싱
TranslatePress는 기본적으로 언어별 하위 디렉토리를 사용합니다. 영어 페이지는 site.com/blog/post에, 독일어 버전은 site.com/de/blog/post에 위치합니다. 기본 언어도 하위 디렉토리에 두는 옵션을 선택하면 모든 언어 URL 구조가 동일해집니다.
캐싱에 유리한 구조입니다. URL이 다르면 언어별 캐시 키도 다릅니다. WP Rocket, LiteSpeed, CDN 엣지 캐시 모두 /de/blog/post를 /blog/post와 별개의 리소스로 처리하므로, 독일어 오디오 파일은 독일어 페이지와 함께, 영어 오디오는 영어 페이지와 함께 제공됩니다. 필요한 경우 캐시 제외 규칙은 캐싱 연동 문서를 참고하세요.
한 가지 주의할 점은 유료 자동 사용자 언어 감지 애드온입니다. 브라우저 언어에 따라 방문자를 리디렉션하는 방식이 페이지 캐시와 충돌해 잘못된 사용자에게 잘못된 리디렉션이 제공될 수 있습니다. 같은 문제를 Polylang 편에서도 다뤘습니다. 이 기능이 유료 애드온이라 TranslatePress 사이트에서 사용하는 경우가 적지만, 사용한다면 리디렉션 로직은 캐시에서 제외하세요.
플레이어 UI 번역 문제
이 문제는 TranslatePress에만 해당합니다. 이 플러그인은 JavaScript가 삽입한 문자열도 감지해 번역을 시도합니다. 대부분의 번역 도구는 JS 렌더링 콘텐츠를 무시하는 것과 다른 점입니다. TranslatePress는 렌더링 후 DOM에서 이를 포착해 번역 대상으로 제안합니다.
그 결과 오디오 플레이어의 '재생', '일시정지', '이 글 듣기' 같은 레이블이 TranslatePress 편집기에서 번역 가능한 문자열로 표시됩니다. 검토 없이 기계 번역되면 버튼 텍스트가 어색하거나 틀릴 수 있고, 더 심각한 경우 스크린 리더를 혼란스럽게 만드는 잘못된 접근성 레이블이 생길 수 있습니다.
TranslatePress 안에서 두 가지 방법으로 해결할 수 있습니다. 번역에서 제외할 요소에 data-no-translation 속성을 추가하거나, 고급 설정의 제외 선택자를 사용해 CSS 선택자로 전체 컨테이너를 건너뛰게 합니다. 두 방법 모두 TranslatePress 자체 설정에 문서화되어 있습니다. TTSWP 플레이어의 경우 플레이어 래퍼를 클래스로 제외하고, 플레이어 레이블은 플러그인의 자체 언어 파일을 통해 제공하세요.
제외할 요소
- 오디오 플레이어 컨테이너 요소
- 재생, 일시정지, 진행 컨트롤의 ARIA 레이블
- 재생 시간 표시 및 총 재생 시간 카운터
- TTSWP가 렌더링하는 음성 이름 또는 언어 이름 레이블
제외 후 플레이어 스타일을 변경하려면 커스텀 CSS 문서에서 선택자를 확인하세요.
콘텐츠 수정 후 번역 불일치 문제
TranslatePress는 모든 번역을 정확한 원본 문자열에 연결합니다. 원본을 수정하면 TranslatePress가 새로운 원본 문자열을 생성하고 기존 번역의 연결을 해제합니다. 번역 메모리가 이전 번역을 제안하지만, 사람이 확인하기 전까지 대상 언어는 원본으로 폴백됩니다.
텍스트 음성 변환 측면에서 보면, 수정 후 오디오가 번역된 텍스트와 어긋날 수 있습니다. 영어 원본에 쉼표 하나를 추가해도 해당 문자열의 모든 언어 번역 연결이 끊어집니다. 독일어 오디오는 여전히 이전 문장을 말하지만, 화면에 보이는 독일어 텍스트는 새 문장을 표시합니다.
콘텐츠 수정 후 점검 목록:
- 활성화된 각 언어에 대해 TranslatePress 편집기에서 새 원본 문자열을 확인합니다.
- 기본 언어 게시물의 오디오를 먼저 재생성합니다.
- 각 언어의 오디오를 재생성한 후, 각 현지화 URL에서 오디오를 재생해 새 파일이 화면 텍스트와 일치하는지 확인합니다.
- 기본 URL뿐만 아니라 모든 현지화 URL의 페이지 캐시를 비웁니다.
TranslatePress 사이트에서 TTSWP 설정하기
현재 설정 흐름입니다. 최신 동작은 연동 문서에서 항상 확인할 수 있습니다.
- WordPress.org 플러그인 디렉토리에서 TTSWP를 설치하세요. 설치 가이드를 따라 진행하면 됩니다.
- 플러그인을 TTSWP 백엔드에 연결하세요. 무료 플랜에는 결제 전에 전체 흐름을 테스트할 수 있는 웰컴 크레딧이 포함됩니다. 사이트 연결하기를 참고하세요.
- TranslatePress가 활성화되어 있는지 확인하고, 전체 로케일 코드로 구성된 대상 언어가 최소 하나 이상 설정되어 있는지 확인하세요.
- 언어-음성 매핑을 사용해 언어별 음성을 지정하세요.
de_DE에는 독일어 음성을,fr_FR에는 프랑스어 음성을 할당하는 방식입니다. 음성 목록은 음성 선택에서 확인하세요. - 게시물을 발행하거나 업데이트하세요. 기본 언어 오디오가 먼저 생성됩니다.
- 번역된 각 URL에서 오디오를 재생하세요. 생성은 요청 시 이루어집니다. 방문자가 보조 언어로 처음 오디오를 재생하면, TranslatePress가 TTSWP에 활성 언어를 알려주고 TTSWP가 해당 언어 파일을 생성해 캐시합니다. 이후 재생은 캐시된 파일을 사용합니다.
data-no-translation또는 고급 설정 선택자를 사용해 TranslatePress에서 플레이어를 제외하세요. 그래야 플레이어 레이블이 TTSWP 자체 번역 파일로 관리됩니다.
TTSWP는 게시물과 언어별로 오디오 파일을 하나씩 저장하며, 플레이어는 방문자가 있는 URL의 언어를 따릅니다. /de/blog/post에서는 독일어 파일을, 기본 URL에서는 기본 언어 파일을 로드합니다. 자동 번역이 활성화된 경우 TTSWP는 ElevenLabs에 전송하기 전에 TranslatePress에서 직접 번역된 텍스트를 읽으므로, 오디오가 페이지에 표시된 내용과 일치합니다.
텍스트 음성 변환을 위한 TranslatePress 무료 vs 유료
무료 TranslatePress는 추가 언어 하나를 지원하고, TranslatePress AI를 통해 2,000단어의 AI 번역을 제공하며, 자체 API 키로 Google 번역을 사용할 수 있습니다. 두 언어로 일치하는 오디오를 갖춘 이중 언어 블로그를 운영하기에 충분합니다.
유료 TranslatePress는 무제한 추가 언어, 번역된 슬러그·메타·hreflang 제어를 위한 SEO Pack, DeepL 지원, 번역자 계정, 자동 사용자 언어 감지 애드온, 언어별 다른 도메인을 추가로 제공합니다. 세 개 이상의 언어가 필요하거나 검색 엔진을 위한 hreflang 태그, TTS 생성 전 DeepL 수준의 번역이 필요한 사이트라면 유료가 현실적인 선택입니다. 오디오 품질 자체는 플랜에 관계없이 동일합니다.
언어별 오디오로 SEO와 AEO 챙기기
SEO Pack을 사용하면 언어별로 hreflang 태그를 설정할 수 있으며, 국가별 로케일, 지역 독립적 언어, 또는 두 가지 모두 선택할 수 있습니다. 검색 엔진과 AI 답변 엔진에게는 이것이 어느 오디오가 어느 지역에 해당하는지 알려주는 신호입니다.
각 언어 URL마다 올바른 inLanguage 값이 hreflang과 일치하는 AudioObject 스키마 항목을 추가하세요. Google과 Bing은 언어 쌍을 인식하며, 자체 테스트 결과 스키마가 깔끔하고 오디오 URL이 정상적으로 연결될 때 Perplexity, ChatGPT Search 같은 AI 엔진이 오디오가 포함된 글을 더 자주 인용하는 경향이 있었습니다. 자세한 내용은 AEO와 오디오 포스트에서 확인하세요.
자주 발생하는 문제와 해결 방법
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| 오디오가 잘못된 언어로 재생됨 | trp_translate() 대신 post_content에서 텍스트를 가져옴 | 전체 로케일 코드와 함께 trp_translate( $content, $locale )를 통해 텍스트를 전달 |
| 플레이어 버튼이 잘못 번역됨 | TranslatePress가 JS 렌더링된 플레이어 레이블을 감지해 기계 번역함 | 플레이어 래퍼에 data-no-translation을 추가하거나 고급 설정에서 CSS 선택자로 제외 |
| 콘텐츠 수정 후 오디오 누락 | 원본 수정 시 번역 연결이 끊어지고 언어별 오디오도 영향받음 | TranslatePress 편집기에서 번역을 확인한 후 언어별 오디오 재생성 |
| 로케일 코드 불일치 | 연동 코드가 de_DE 대신 de를 전달함 | trp_translate() 호출 전에 전체 로케일 코드로 정규화 |
| 아랍어 또는 히브리어의 RTL 레이아웃 깨짐 | 플레이어 CSS가 RTL을 지원하지 않음 | 커스텀 CSS로 RTL 로케일용 플레이어 컨트롤을 미러링 |
| 캐시된 리디렉션이 잘못된 언어로 이동 | 자동 사용자 언어 감지 애드온이 페이지 캐시와 충돌함 | 캐시에서 리디렉션 로직을 제외하거나 언어 감지를 비활성화 |
접근성 안내
플레이어가 키보드로 조작 가능하고 레이블이 올바르게 지정되면, 오디오 나레이션은 여러 WCAG 성공 기준을 충족합니다. TranslatePress에서 플레이어를 제외하더라도 TTSWP 자체 번역 파일의 ARIA 레이블은 그대로 유지하세요. 기준 세부 사항은 WCAG 오디오 가이드를 참고하고, 시작 지점으로 기본 설정 튜토리얼도 도움이 됩니다.
자주 묻는 질문
TranslatePress에서 텍스트 음성 변환이 작동하나요?
네. TranslatePress는 번역을 wp_trp_ 데이터베이스 테이블에 로컬로 저장하며, trp_translate() 함수가 서버 측에서 번역된 콘텐츠를 반환합니다. TTS 연동은 번역된 텍스트를 읽어 언어별 오디오를 생성할 수 있습니다. 단, 오디오를 게시물 ID와 로케일 조합으로 키잉하고, 슬러그 대신 de_DE 같은 전체 로케일 코드를 사용해야 합니다.
오디오를 위해 TranslatePress 유료 버전이 필요한가요?
아닙니다. 무료 TranslatePress는 추가 언어 하나를 지원하며 TranslatePress AI, 자체 키를 사용한 Google 번역, 또는 수동 편집을 통한 번역이 가능합니다. 일치하는 오디오를 갖춘 이중 언어 사이트를 운영하기에 충분합니다. 유료 버전은 무제한 언어, SEO Pack, DeepL, 감지 애드온을 추가해 세 개 이상의 언어나 hreflang 제어가 필요할 때 유용합니다.
플레이어 버튼이 잘못 번역되는 이유는 무엇인가요?
TranslatePress가 JS로 삽입된 문자열을 감지하기 때문에, 오디오 플레이어 레이블이 편집기에 표시되어 기계 번역될 수 있습니다. 플레이어 래퍼에 data-no-translation을 추가하거나, 고급 설정에서 CSS 선택자로 플레이어 컨테이너를 제외해 해결하세요. 그러면 플레이어 레이블은 TTSWP 자체 언어 파일에서 가져옵니다.
오디오가 번역과 맞지 않는 이유는 무엇인가요?
TranslatePress에서 원본 문자열을 수정하면 새로운 원본 문자열이 생성되고 기존 번역의 연결이 끊어집니다. 번역 메모리가 이전 번역을 제안하지만, 확인하기 전까지는 대상 언어가 원본으로 폴백됩니다. 콘텐츠를 수정할 때마다 기본 게시물과 각 언어의 오디오를 재생성하고, 모든 현지화 URL의 캐시를 비우세요.
TTS 측면에서 TranslatePress와 Weglot은 어떻게 다른가요?
Weglot은 번역을 자체 서버에 저장하고 페이지에 삽입하기 때문에, WordPress는 서버 측에서 번역된 텍스트를 전혀 볼 수 없습니다. TranslatePress는 모든 번역을 로컬 데이터베이스에 저장하고 서버 측 접근을 위한 trp_translate()를 제공합니다. 그래서 언어별 오디오 생성이 Weglot보다 TranslatePress에서 더 직접적입니다.
다음 단계
WordPress.org 플러그인 디렉토리에서 텍스트 음성 변환 - TTSWP를 설치하고, 계정에 연결한 다음, TranslatePress에서 이미 사용 중인 각 언어에 음성을 하나씩 지정하세요. 게시물을 발행하고, 각 번역 URL에서 오디오를 재생한 다음, 오디오가 화면 텍스트와 일치하는지 확인하세요. 문제가 생기면 TranslatePress 연동 문서를 가장 먼저 확인하세요.
관련 기사
Polylang 사이트의 텍스트 음성 변환: 실제로 작동하는 방법
번역본마다 별도의 오디오 파일을 생성하고, 언어별로 올바른 목소리를 선택하며, 캐싱 환경에서도 안정적으로 작동하는 Polylang 텍스트 음성 변환 설정 방법을 안내합니다.
WPML 사이트에서 텍스트 음성 변환 제대로 사용하기
언어별로 올바른 목소리를 선택하고, 번역본마다 별도 오디오를 생성하며, AJAX 언어 감지 오류에도 안정적으로 작동하는 WPML 텍스트 음성 변환 설정 방법을 안내합니다.
워드프레스 텍스트 음성 변환 플러그인 추천 (2026)
2026년 최고의 워드프레스 텍스트 음성 변환 플러그인 7가지를 중립적으로 비교합니다. 각 플러그인의 강점과 단점, 전체 기능 비교표를 포함합니다.