지금까지 Wordpress에서 일부 번역을 처리하고 공식 gettext 설명서를 읽으려고했지만 한 가지 간단한 점은 얻지 못합니다. __ (, _e (등)와 같은 시작 부분의 차이점은 무엇입니까? 더 : 옆에 다른 사람이 있습니까? 미리 감사합니다!
솔직한
지금까지 Wordpress에서 일부 번역을 처리하고 공식 gettext 설명서를 읽으려고했지만 한 가지 간단한 점은 얻지 못합니다. __ (, _e (등)와 같은 시작 부분의 차이점은 무엇입니까? 더 : 옆에 다른 사람이 있습니까? 미리 감사합니다!
솔직한
답변:
__
(이중 밑줄)은 기본 변환 기능입니다. 문자열을 번역하여 문자열로 반환합니다.
_e
와 동일 __
하지만 결과는 바로 에코입니다.
_x
상황에 맞는 번역 함수입니다. 번역을하는 사람들에게 컨텍스트를 제공하는 두 번째 옵션이 있습니다.
_ex
와 동일 _x
하지만 결과는 echo입니다.
사용 예 _x
:
$string = _x( 'Buffalo', 'an animal', 'plugin-domain' );
$string = _x( 'Buffalo', 'a city in New York', 'plugin-domain' );
$string = _x( 'Buffalo', 'a verb meaning to confuse somebody', 'plugin-domain' );
다른 언어에서는 동일한 문자열이 다를 수 있습니다. 번역가에게 문맥을 제공하면 올바른 단어를 선택하는 데 도움이 될 수 있습니다.
바로 가기 기능 :
esc_attr__
: __
결과 와 동일 하지만 결과를 실행합니다 esc_attr
.esc_html__
: __
결과 와 동일 하지만 결과를 실행합니다 esc_html
.esc_attr_e
: _e
결과 와 동일 하지만 결과를 실행합니다 esc_attr
.esc_html_e
: _e
결과 와 동일 하지만 결과를 실행합니다 esc_html
.esc_attr_x
: _x
결과 와 동일 하지만 결과를 실행합니다 esc_attr
.esc_html_x
: _x
결과 와 동일 하지만 결과를 실행합니다 esc_html
._n
복수 처리기입니다. 예:
$string = sprintf( _n(
'You have %d taco.',
'You have %d tacos.',
$number,
'plugin-domain'),
$number );
이 예에서는 단수인지 아닌지에 따라 타코 수를 말하는 두 가지 방법이 있습니다. $ number를 처음 사용 _n
하면 사용할 버전을 함수에 알려줍니다 . 두 번째 $ number는 sprintf에서 발생하여 % d를 문자열의 실제 숫자로 바꿉니다.
에 해당하는 에코 함수는 없지만 _n
이름이 지정된 함수가 _nx
있습니다. 이 조합의 _n
와 _x
. 복수와 맥락.
_n_noop
특별한 것입니다. 복수 문자열을 번역하는 데 사용되지만 실제로 번역을 즉시 수행하지는 않습니다. 이것은 문자열을 중앙 집중화하지만 실제로 다른 곳에서 작업을 수행하려는 경우에 유용합니다. 실제로 다른 곳에서 작업을 수행하는 기능은 translate_nooped_plural
입니다.
예:
$holder = _n_noop('You have %d taco.', 'You have %d tacos.', 'plugin-domain');
// ... later ...
$string = sprintf( translate_nooped_plural( $holder, $count ), $count );
많이 사용되지는 않지만 조직에 유용 할 수 있습니다. 당신은 하나 개의 파일에 모든 문자열을 넣을 경우, 예를 들어, 다음이 바로 가능하지 않을 것, 다른 곳을 참조 _n
, 당신은 같은 것을 필요로 _n_noop
하는 작업을 수행하는합니다.
_nx_noop
와 동일 _n_noop
하지만 번역자와 동일한 문맥을 취할 수 있습니다 _x
.
도메인을 noop 함수 호출 또는 translate_nooped_plural 함수 호출에 넣을 수 있습니다. 조직에 더 적합한 방법이 있습니다. 둘 다 도메인이 있으면 noop 호출에 전달 된 도메인이 우선합니다.
number_format_i18n
PHP의 내장 number_format 과 동일하지만 다른 로케일과는 다른 소수 등의 처리를 추가합니다.
date_i18n
는 PHP의 내장 날짜 와 동일하며 모든 관련 처리도 수행합니다. 월 이름, 요일 이름 등
또한 법을 어 기지 마십시오 . 단지 알림입니다. :)
__()
하고 _e()
있습니다 본질적으로 모두의 래퍼 translate()
(직접 사용하지 않음)과 거의 같은.
차이점은 __()
변환 된 문자열 을 반환하고 _e()
에코한다는 점입니다. 둘 다 문자열을 필수 매개 변수로 제공해야하며 일반적으로 선택 사항이지만 텍스트 도메인도 제공해야합니다.
유사하게, 거기에 _x()
그리고 _ex()
당신이 문자열이 표시되는 위치를 설명 할 수있는 컨텍스트를 지정할 수있는. 프로젝트에 번역 가능한 문자열이 수십 개가 넘는 경우 컨텍스트를 사용하는 것이 좋습니다.
또한 복수형 의 존재 _n()
와 _nx()
복수형에 주목하십시오 .
$output = '<label for="some_field">' .
_x( 'Some Information.', 'Some Form Field', 'your-text-domain' ) .
'</label>' .
'<input type="text" name="some_field" value="" />' .
'<p class="description">' .
_x( 'Here you can enter some info.', 'Some Form Field', 'your-text-domain' ) .
'</p>';
return $output;
__( $text, $domain )
_e( $text, $domain )
_x( $text, $context, $domain )
_ex( $text, $context, $domain )
_n( $single, $plural, $number $domain )
_nx( $single, $plural, $number, $context, $domain )
모든 매개 변수이지만 $number
문자열입니다. 모든하지만 $domain
필요합니다.
문자열에 변수 번호 나 단어가 포함되어 있으면 다음을 사용하십시오 sprintf()
.
$stars = get_post_meta( $post->ID, 'rating', true );
$title = get_the_title( $post->ID );
$output = '<p>' .
sprintf(
_x(
'The movie titled %2$s received a %1$d star rating.',
'Movie Description',
'your-text-domain'
),
$stars,
$title
) .
'</p>';
return $output;
다가오는 WordPress I18n Ninja에 대한 추가 자료 :
나는 번역 전문가가 아니지만 WordPress Codex Page에 좋은 문서가 있으며 각 인스턴스를 사용해야하는 이유를 설명합니다.
코덱스 페이지에서 :
__()
메시지가 다른 함수에 대한 인수로 전달 될 때 사용됩니다. _e()
메시지를 페이지에 직접 쓰는 데 사용됩니다. 이 두 기능에 대한 자세한 내용 :
__('message')
현지화 모듈에서 'message'의 번역을 검색하고 번역을 PHP return 문으로 전달합니다. 'message'에 대한 번역이 없으면 'message'만 반환합니다.
_e('message')
현지화 모듈에서 'message'의 번역을 검색하고 번역을 PHP echo 문으로 전달합니다. 'message'에 대한 번역이 없으면 'message'만 에코합니다.
테마 또는 플러그인을 국제화하는 경우을 사용해야합니다 "Text Domain"
.
gettext 프레임 워크는 대부분의 WordPress를 처리합니다. 그러나 WordPress 배포에는 gettext를 사용할 수없는 곳이 몇 군데 있습니다.
우리에게 알려주지 않고 다른 사람이 도울 수 있거나 더 많은 연구를 할 수 있다면 귀하의 질문에 대답하기를 바랍니다.