Skip to content
achimnol edited this page Oct 9, 2012 · 3 revisions

텍스트큐브는 관리자 모드와 블로그 모드에 대한 다국어 인터페이스를 지원하고 있습니다. 이에 따라 플러그인 또한 다국어 지원이 가능합니다.

플러그인 드라이버(index.xml)의 다국어 지원

index.xml에서 xml:lang 속성만 다르게 하여 원하는 언어로 번역한 태그를 중복해서 추가해주면 됩니다. 예를 들어 플러그인 제목을 나타내는 <title> 태그에 대해 한글/영문 버전을 제공하고 싶다면 다음과 같이 하면 됩니다.

  <title xml:lang="ko">한글 제목</title>
  <title xml:lang="en">English Title</title>

환경설정의 경우 <config> 태그 자체를 통째로 복사하여 마찬가지로 xml:lang 속성을 바꾸고 안쪽 내용을 번역하면 됩니다. (<config> 태그 아래의 태그들은 별도로 이 속성을 지정하지 않아도 됩니다.) 환경설정 항목을 수정할 경우 다른 언어에도 반영해야 플러그인이 제대로 동작하므로 주의해야 합니다.

플러그인 내용 자체의 다국어 지원 (텍스트큐브 1.8 이상 필요)

텍스트큐브 1.8부터 환경설정, 전역변수 등을 Context 객체를 통해 접근하도록 바뀌었습니다. 플러그인의 다국어 지원 또한 내부적으로 같은 방식을 사용하는데 사용하는 방법은 텍스트큐브의 다른 코어 소스코드와 거의 같습니다.

  1. 플러그인 코드에서 다국어 지원이 필요한 문자열들을 모두 _t() 함수로 감쌉니다.

    someFunction("테스트"); => someFunction(_t("테스트"));
  2. 플러그인 디렉토리(index.xml, index.php가 있는 곳)에 locale 디렉토리를 만들고 2자리 ISO 언어 코드를 파일명으로 하는 php 파일("언어 파일")을 만듭니다. (예: 한국어는 ko.php, 영어는 en.php, 일본어는 ja.php, 중국어 번체 zh-TW.php, 중국어 간체는 zh-CN.php, 베트남어는 vi.php)

  3. 언어 파일에 다음과 같이 _t() 함수로 감싼 문자열들에 대한 언어별 번역을 추가합니다. 참고로, 현재 설정된 언어에 대한 번역 파일이 존재하지 않을 경우 _t() 함수는 전달받은 문자열을 그대로 돌려주므로 코드에 사용한 언어가 한국어인 경우 한국어 언어 파일은 별도로 만들지 않아도 됩니다.

    <?php
    $__text['테스트'] = 'test';
    ...
    ?>

    다음과 같이 인자가 필요한 문자열의 경우, _t() 함수 대신 _textf() 함수를 사용하고, 인자를 %1, %2와 같이 _textf() 함수에 전달받는 순서대로 참조할 수 있습니다.

    • 사용하는 곳:
      _textf('%1님을 %2님이 초대합니다', $name, $senderName);
    • 언어 파일:
      ...
      $__text['%1님을 %2님이 초대합니다'] = '%2 invites %1';
      ...

    플러그인이 지정하는 고유 URL은 <listener> 태그에서 지정한 scope 속성에 따라 블로그 모드 또는 관리자 모드의 언어 설정을 따르게 됩니다. 자세한 것은 고유 URL 지정 방법을 참고하세요.

Clone this wiki locally