테마 및 플러그인의 텍스트를 WPML에서 번역 가능하게 만들기 위해 gettext 함수를 사용하는 방법을 알아보세요.
테마 및 플러그인의 텍스트를 번역할 수 있고 사이트에 올바르게 표시되도록 하려면 다음 두 가지 조건을 충족해야 합니다.
- 텍스트를 gettext 함수로 감싸기
- 텍스트 도메인 인수 포함하기
Gettext 기본 사항
“my-plugin-domain” 도메인에 속하는 다음 “Thank you!” 문자열을 살펴보겠습니다.
__( 'Thank you!', 'my-plugin-domain' );
브라우저에 문자열을 출력하려면 _e() 함수를 사용하세요.
_e( 'Thank you!', 'my-plugin-domain' );
HTML을 사용할 때는 HTML 태그로 감싸세요.
<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>
주변 텍스트와 분리된 링크가 있는 경우 esc_html_e() 함수를 사용하세요.
<a href="http://wpml.org/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>
Gettext 모범 사례
1. 변수나 상수를 gettext 함수로 감싸지 않기
이렇게 하면 문자열을 스캔할 수 없게 되어 번역할 수 없습니다.
잘못된 예
<?php
if ( $morning ) {
define( 'GREETING', 'Good morning' );
} else {
define( 'GREETING', 'Good afternoon' );
}
_e( GREETING, 'my-domain' );
?>
올바른 예
<?php
if ( $morning ) {
_e( 'Good morning', 'my-domain' );
} else {
_e( 'Good afternoon', 'my-domain' );
}
?>
2. 보안을 위한 출력 이스케이프
문자열이 출력에 즉시 렌더링되는 경우, XSS 공격으로부터 보호하기 위해 esc_html_ 및 esc_attr_과 같은 이스케이프 함수를 사용하세요.
echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';
3. 번역가를 위한 주석 추가
이는 번역가가 텍스트나 변수가 표시되는 컨텍스트를 이해하는 데 도움이 됩니다.
/* translators: %1$s is status label (e.g. "active" and %2$s is quantity of bits/s (e.g. 12 Gbit/s) */ printf( esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ), $state, $speed );
추가 리소스
gettext에 대해 자세히 알아보려면 공식 WordPress 코덱스를 참조하세요.