워드프레스 번역 문구 원하는 대로 바꾸기: 플러그인 없이 gettext 필터로 간단하게 수정하는 방법
워드프레스를 사용하다 보면 기본 번역이 다소 어색하거나 사이트의 성격에 맞지 않는 경우가 있습니다. 예를 들어 로그인 화면의 Username을 아이디로 바꾸거나, Register를 회원가입 또는 가입하기처럼 더 자연스럽게 표현하고 싶을 때가 있습니다.
이럴 때 번역 플러그인을 설치하는 방법도 있지만, 단 몇 개의 문구만 수정한다면 오히려 불필요하게 사이트를 무겁게 만들 수 있습니다. 이런 경우에는 워드프레스의 gettext 필터를 활용하면 플러그인 없이도 원하는 문구만 정확하게 변경할 수 있습니다.
이 글에서는 gettext 필터를 이용해 특정 번역 문구를 수정하는 방법과 함께 사용할 때 주의해야 할 사항까지 살펴보겠습니다.
gettext 필터란?
워드프레스는 화면에 표시되는 대부분의 문자열을 번역 함수(__(), _e() 등)를 통해 출력합니다.
이 과정에서 gettext 필터를 사용하면 실제 화면에 출력되기 직전의 문자열을 원하는 내용으로 변경할 수 있습니다.
즉,
- 원본 문자열이 무엇인지 확인한 뒤
- 특정 문자열과 일치하는 경우
- 내가 원하는 문구로 교체하여 출력하는 방식입니다.
번역 파일(.mo/.po)을 직접 수정하지 않아도 되므로 업데이트 시 덮어쓰일 걱정이 없다는 점도 장점입니다.
적용 위치
다음 코드는 차일드 테마의 functions.php 파일에 추가하는 것이 가장 안전합니다.
부모 테마에 직접 추가하면 테마 업데이트 시 수정 내용이 사라질 수 있기 때문입니다.
function kh_custom_translate($translated_text, $text, $domain)
{
switch ($text)
{
case 'Username':
$translated_text = '아이디';
break;
case 'Username or Email Address':
$translated_text = '아이디';
break;
case 'Reset Password':
$translated_text = '설정하기';
break;
case 'Register':
$translated_text = '가입하기';
break;
case 'Register For This Site':
$translated_text = '길호넷 가입하기';
break;
case 'Image':
$translated_text = '이미지';
break;
}
return $translated_text;
}
add_filter('gettext', 'kh_custom_translate', 20, 3);
코드가 동작하는 방식
함수에는 세 개의 값이 전달됩니다.
| 매개변수 | 설명 |
|---|---|
$translated_text | 현재 번역된 문자열 |
$text | 원본 영문 문자열 |
$domain | 해당 문자열이 속한 텍스트 도메인 |
위 예제에서는 switch 문을 사용하여 원본 문자열($text)과 비교한 뒤 원하는 번역으로 변경합니다.
예를 들어 원래 출력되는 문자열이
Username
이라면 화면에는
아이디
가 표시됩니다.
원하는 문구를 추가하는 방법
새로운 문구를 수정하고 싶다면 case를 하나씩 추가하면 됩니다.
예를 들어
case 'Log In':
$translated_text = '로그인';
break;
처럼 작성하면 해당 문자열이 출력될 때 자동으로 변경됩니다.
동일한 방식으로 관리자 화면이나 로그인 페이지, 플러그인에서 사용하는 다양한 영문 문구도 수정할 수 있습니다.
단, 변경하려는 문자열은 원본 영문과 대소문자까지 정확히 일치해야 합니다.
이 방법이 특히 유용한 경우
다음과 같은 상황에서는 번역 플러그인보다 이 방법이 더 간단합니다.
- 로그인 페이지 문구만 일부 수정하고 싶은 경우
- 회원가입 버튼 문구를 사이트에 맞게 변경하고 싶은 경우
- 기본 번역이 어색한 표현을 자연스럽게 바꾸고 싶은 경우
- 특정 영문 문장만 빠르게 수정하고 싶은 경우
몇 개의 문자열만 수정하는 목적이라면 코드 몇 줄만 추가하면 되므로 관리도 훨씬 간편합니다.
사용할 때 알아두면 좋은 점
모든 문자열이 변경되는 것은 아니다
gettext 필터는 워드프레스의 번역 함수를 통해 출력되는 문자열에만 적용됩니다.
플러그인이나 테마가 문자열을 직접 출력하거나 번역 함수를 사용하지 않는 경우에는 이 방법으로 변경되지 않을 수 있습니다.
동일한 문자열은 모두 함께 변경된다
예를 들어 Register라는 문자열을 변경하면 동일한 문자열을 사용하는 다른 화면에도 영향을 줄 수 있습니다.
필요하다면 $domain 값을 함께 확인하여 특정 테마나 플러그인에서만 변경하도록 조건을 추가하는 방법도 고려할 수 있습니다.
차일드 테마 사용을 권장
코드는 부모 테마가 아닌 차일드 테마에 추가해야 업데이트 이후에도 수정 사항이 유지됩니다.
번역 플러그인 대신 이 방법을 선택하면 좋은 이유
번역 문구를 대량으로 관리하거나 여러 언어를 운영한다면 전용 번역 플러그인이 더 적합할 수 있습니다.
반면 로그인 화면, 회원가입 페이지, 버튼 이름처럼 몇 개의 문구만 수정하려는 경우에는 gettext 필터가 훨씬 단순하고 관리하기 쉽습니다.
추가 플러그인을 설치하지 않아도 되고, 필요한 문자열만 선택적으로 변경할 수 있다는 점이 가장 큰 장점입니다.
마무리
워드프레스는 기본 번역만 그대로 사용하는 것이 정답은 아닙니다. 사이트의 성격과 사용자 경험에 맞게 용어를 다듬으면 훨씬 자연스럽고 이해하기 쉬운 화면을 만들 수 있습니다.
gettext 필터는 이러한 작은 개선을 가장 간단하게 적용할 수 있는 기능 가운데 하나입니다. 몇 개의 문구만 수정해야 한다면 번역 파일을 직접 수정하거나 별도의 플러그인을 추가하기보다, 차일드 테마의 functions.php에 필요한 문자열만 등록해 관리하는 방식이 효율적입니다. 다만 동일한 원문이 여러 곳에서 사용될 수 있다는 점을 고려해 변경 범위를 확인한 후 적용하는 것이 좋습니다.