워드프레스 다국어 사이트에서 get_bloginfo() 활용하기

워드프레스에서 WPML이나 Polylang같은 플러그인을 사용하면 쉽게 다국어 사이트를 구축할 수 있습니다.

워드프레스에서 첫 페이지의 경우 보통 index.php 파일을 사용하는 경우가 많습니다. 이럴 경우 Polylang 등의 플러그인을 사용하면 언어에 따라 첫 페이지가 원하는 대로 표시되지 않는 경우가 있습니다. 예를 들어, 유료 테마에서 첫 페이지(Home)에 카테고리별로 표시하는 경우 언어별로 조정하기가 쉽지 않을 수도 있습니다. 이 경우 쉬운 해법은 언어별로 다른 프런트 페이지를 설정하는 것입니다. 가령, index.php 파일을 언어별로 약간 변형하여 page-english.php, page-korean.php 템플릿을 만드는 방법을 생각해볼 수 있습니다. (언어별로 템플릿 만들기 참고)

하지만 위와 같은 방법을 사용할 경우에도 카테고리 페이지 등 일부 페이지는 제어할 수 없습니다. 예를 들어, 다음과 같이 언어별 카테고리에 해당 언어로 된 특정 문구를 출력하고 싶은 경우가 있을 수 있습니다.
Category per language in wordpress
위의 경우 영어 카테고리 페이지와 한글 카테고리 페이지의 카테고리 타이틀에 글 개수를 표시하고 있습니다. 위와 같이 한글과 영어 카테고리 페이지 각각의 카테고리 제목 문구를 달리하려는 경우, 카테고리가 몇 개가 되지 않으면 is_category()를 사용하여 언어별로 제어할 수 있을 것입니다.

하지만 카테고리가 많거나 자주 변경되는 경우에는 번거로울 수 있습니다. 그리고 프런트 페이지(홈페이지)를 언어별로 개별 페이지를 사용하지 않고 index.php 페이지를 그대로 사용하기를 원할 수도 있습니다. 이 경우 사용할 수 있는 워드프레스 내장 함수가 get_bloginfo()입니다. get_bloginfo()에는 다양한 파라미터를 사용할 수 있습니다. 우리가 원하는 파라미터는 "language"입니다. 다음과 같이 get_bloginfo('language')를 사용하면 언어별로 제어가 가능합니다.

<?php if( get_bloginfo('language') == 'en-US' ) : ?>

// 영어 버전용 코드

<?php elseif( get_bloginfo('language') == 'ko-KR' ) : ?>

// 한국어 버전용 코드 

<?php else: ?>

// 기타 언어용 버전용 코드 

<?php endif; ?>

언어별 언어코드(예: en-US, ko-KR)가 무엇인지 잘 모르는 경우

echo get_bloginfo('language');

코드를 삽입하여 테스트해 보면 됩니다.

그리고 get_bloginfo('language') 코드를 요소에 나타나도록 추가하면 CSS를 통해 언어별로 레이아웃을 다르게 구성하기에 용이해집니다.

get_bloginfo()에 대한 자세한 내용은 WordPress Codex 페이지를 참고하시기 바랍니다.


참고: Polylang과 같은 무료 플러그인은 개인이 개발하여 운영하기 때문에 언제든지 업데이트가 중단될 수 있습니다. 실제로 또 다른 무료 다국어 플러그인인 qTranslate X는 qTranslate가 중단된 것을 다른 제작자가 이어받아서 개발된 것입니다. 보다 안정적으로 다국어를 운영하거나 기업인 경우 유료 플러그인인 WPML을 고려해보시기 바랍니다. 참고로 아래 배너를 클릭하여 WPML을 구입할 경우 제가 7달러(Multilingual Blog 버전)/20달러(Multilingual CMS 버전)를 받을 수 있습니다. 홍보 여부를 떠나서 많은 사용자들이 사용하고 있고 WooCommerce 등도 지원합니다.

Multilingual WordPress



7개 댓글

  1. 정말정말 유용한 내용 감사합니다!!!

    polylang 플러그인을 적용했는데 index페이지때문에 너무 고민이었어요!

    저는 4개국어를 적용해야 하는데..
    중간에 elseif 라인만 추가해서 하니까 안먹어요... ㅠㅠ 어떻게 해야 할까요??

    1. 안녕하세요?

      저는 인덱스 파일을 새롭게 복사하여 별도의 템플릿을 하나 더 만들어서 연결하여 사용해본 적이 있습니다.
      상황에 따라 이 방법도 괜찮을 것 같습니다.
      index.php 파일이 정형화된 경우, 영문용 index 파일에서 약간의 수정이 필요할 수 있습니다.
      이런 내용은 직접 설명해드리기에는 지면이 너무 부족하네요.
      무료 플러그인으로 잘 안 되면 WPML과 같은 유료 플러그인도 한 번 고려해보시기 바랍니다.
      (구입하기 전에 이런 내용도 한 번 문의해보셔도 될 것 같습니다.)

    2. 우선 위의 코드를 활용하여 영문 버전과 한글 버전에서 제대로 표시되는지를 확인해보시겠어요?
      그래도 적용이 안 되면 캐시를 지운 후에 확인해보시기 바랍니다.

      각 언어에 대한 언어 코드가 문제라면
      echo get_bloginfo('language');

      위의 PHP 코드를 사용하여 각 언어별 코드(예: ko-KR)를 체크해보셔도 될 것 같습니다.

      1. 빠른 답변 감사드려요!!
        영어, 일본어, 한국어는 테스트했는데 중국어만 안되고 있어요.. 제가 웹디자이너라 php는 전혀 모른는거나 마찬가지라 elseif를 중복해서 쓰면 안되는건가.. 4개국어 는 소스를 다른걸 적용하는건가.. 싶었는데.. 말씀해주신 다른문제도 체크해봐야겠습니다! 🙂
        감사해요!! ^^*

      2. 다음과 같이 하면 되지 않을까요?

        <?php if( get_bloginfo('language') == 'en-US' ) : ?>

        // 영어 버전용 코드

        <?php elseif( get_bloginfo('language') == 'ko-KR' ) : ?>

        // 한국어 버전용 코드

        <?php else( get_bloginfo('language') == 'jp-JP' ) : ?>

        // 일본어 버전용 코드

        <?php else: ?>

        // 기타 언어용 버전용 코드

        <?php endif; ?>

        jp-JP는 정확하지 않습니다.

      3. 꺅!!!!!
        정말 아~ 너무너무 감사해요 ㅠㅠ
        아까는 영어버전, 중국어버전, 일본어버전을 넣고 기타언어용을 한국어로 하려고 했었는데, 위의 소스대로(일본어코드에 elseif로)하니까 잘 되요!!!
        사내에 개발자가 없고 웹담당자도 저뿐이라 구글링에 영어에 고생했는데..
        해결되었습니다!!!!
        감사합니다~!!

댓글 남기기

* 이메일 주소는 공개되지 않습니다.