플러그인 및 테마의 사용자 입력 텍스트를 번역용으로 등록하는 방법을 알아보세요. 등록한 후에는 문자열 번역을 사용하여 번역할 수 있습니다.
사용자 입력 텍스트를 등록하는 방법
사용자가 새 문자열을 생성하거나 기존 문자열을 업데이트할 때 해당 문자열을 WPML의 문자열 테이블에 등록해야 합니다.
wpml_register_single_string 액션 훅을 사용하여 이 호출을 수행할 수 있습니다.
do_action( 'wpml_register_single_string', string $context, string $name, string $value )
- $context – 사람이 읽을 수 있는 형식의 플러그인 또는 테마 이름입니다.
- $name – 번역가가 번역할 내용을 이해하는 데 도움이 되는 문자열 이름입니다.
- $value – 번역할 문자열입니다.
title, 한 줄 input 필드 및 textarea가 포함된 이 사용자 정의 위젯 예제를 살펴보세요. 위젯 옵션이 저장되거나 업데이트될 때 이러한 필드를 번역용으로 등록하려면 update 함수를 사용합니다.
wpml_register_single_string 액션 훅 사용
function update($new_instance, $old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['custom_input'] = strip_tags($new_instance['custom_input']);
$instance['custom_textarea'] = $new_instance['custom_textarea'];
//WPML
/**
* register strings for translation
*/
do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
//WPML
return $instance;
}이 예제에서는 input 및 textarea 필드의 사용자 입력 텍스트를 번역해야 한다고 WPML에 알립니다. 이러한 텍스트는 Widgets 문자열 컨텍스트 아래에 각각 Custom Widget – input field 및 Custom Widget – textarea field라는 이름으로 등록됩니다.
텍스트를 등록한 후에는 wpml_translate_single_string 액션 훅을 사용하여 프런트엔드에 번역을 표시할 수 있습니다.
문자열 번역을 플러그인 및 테마와 통합하는 방법
문자열 번역을 플러그인 또는 테마와 통합할 때는 호출이 존재하는지 확인하는 것이 중요합니다.
조건부 호출 구현
호출을 if_function_exists() 문으로 감싸서 WPML이 활성화된 경우 호출되고, 그렇지 않은 경우 정상 작동이 유지되도록 하세요.
WPML의 지연 활성화 처리
테마 또는 플러그인 개발자로서 사용자가 테마나 플러그인을 사용하기 시작한 지 한참 후에 WPML이 활성화되는 경우도 고려해야 합니다.
이러한 경우에는 문자열이 생성될 때 wpml_register_single_string에 대한 호출이 이루어지지 않으므로 문자열이 번역되지 않습니다. 이 문제를 해결하려면 플러그인의 관리 화면이 로드될 때마다 모든 사용자 문자열을 등록해야 합니다.
이렇게 하면 무시할 수 있는 수준의 실행 시간이 추가되지만, 문자열이 항상 번역을 위해 전송되고 최신 상태로 유지되도록 보장합니다.
코드에서 먼저 wpml_register_single_string 함수가 존재하는지 확인해야 합니다. 존재하는 경우, 함수를 호출하여 모든 사용자 입력 텍스트를 등록해야 합니다. 작동 방식은 다음과 같습니다.
- 함수가 비어 있거나 NULL 값으로 호출되면 WPML은 이러한 호출을 무시합니다.
- 문자열이 이미 존재하고 수정되지 않은 경우 WPML은 호출을 무시합니다.
- 이 함수는 새 문자열이나 수정된 문자열이 등록된 경우에만 작업을 수행합니다.
전체 번역 테이블이 메모리에 캐시되므로 반복해서 호출하더라도 처리 능력이 거의 소모되지 않습니다.
추가 리소스
테마 및 플러그인의 하드코딩된 텍스트를 번역용으로 등록하려면 문자열 번역 페이지에 나타나지 않는 문자열 찾기에 대한 문서를 참조하세요.
번역을 위해 테마 또는 플러그인 옵션을 등록하려면 언어 구성 파일 사용에 대한 가이드를 참조하세요.
테마 또는 플러그인 요소를 그룹으로 번역하려면 문자열 패키지 번역을 참조하세요.