워드프레스 번역 문구 원하는 대로 바꾸기: 플러그인 없이 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에 필요한 문자열만 등록해 관리하는 방식이 효율적입니다. 다만 동일한 원문이 여러 곳에서 사용될 수 있다는 점을 고려해 변경 범위를 확인한 후 적용하는 것이 좋습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다