나는 해결책을 찾았지만 조금 전에
전제
load_theme_textdomain()
와 load_child_theme_textdomain()
기본적으로 동일, 유일한 차이점은 사용하는 기본 경로는 다음과 같습니다
- 현재 언어를 사용하여 (을 사용하여
get_locale()
) 상대 .mo 파일을 인수로 전달 된 경로에 추가합니다 .
- 그런 다음
load_textdomain()
텍스트 도메인과 .mo 파일의 결과 경로를 모두 인수로 전달하여 호출 합니다.
그런 다음 load_textdomain
.mo 파일을 전역 textdomain 변수로로드하지만 소스 에서 읽을 수 있습니다 .
도메인이 이미 존재하면 번역이 병합됩니다.
두 세트의 문자열이 모두 같은 경우 원래 값의 변환이 수행됩니다.
따라서 원하는 테마 부모의 문자열 만 재정의 / 바꾸려면 부모 테마가 .mo 파일을로드 하기 전에 번역 된 문자열 만 포함하는 부모 textdomain에 대한 사용자 지정 .mo 파일을로드해야 합니다.
해결책
결국, 나는 간단하게 부모 테마의 이름을 가진 폴더를 자식 테마 언어 폴더에 만들고 폴더 안에 부모 텍스트 도메인에 대한 사용자 정의 .mo 파일 (언어, xx_XX.mo
양식, xx_XX
언어 코드는 어디에 있습니까 ?
그런 다음 작업 functions.php
중에 after_setup_theme
자식 테마 텍스트 도메인의 .mo 파일을로드 하는 줄 근처에 자식 테마 파일에 줄을 추가했습니다 .
add_action( 'after_setup_theme', function () {
// load custom translation file for the parent theme
load_theme_textdomain( 'parent-textdomain', get_stylesheet_directory() . '/languages/parent-theme' );
// load translation file for the child theme
load_child_theme_textdomain( 'my-child-theme', get_stylesheet_directory() . '/languages' );
} );
functions.php
자식 테마 의 파일이 부모의 파일보다 먼저로드되기 때문에이 문자열 집합은 부모 테마 변환보다 우선합니다 (또는 add_action
함수 의 세 번째 매개 변수를 사용하여 우선 순위를 설정할 수 있습니다).
참고 : 전제에서 말했듯 load_child_theme_textdomain
이 load_theme_textdomain
, 대신 사용할 수있었습니다 .