답변:
에서 구텐베르크의 GitHub의 저장소 당신이 사용하는 국제화 패키지의 소스를 볼 수 있습니다. 이 소스에서 Jed 가 수입되고 (gutenberg / packages / i18n / src / index.js의 4 행) 수입 된 후 대부분의 번역 작업에 사용됩니다.
Jed 는 "현대 JavaScript 앱을위한 Gettext Style i18n"을 소개합니다.
귀하의 질문은 .po 파일에 대한 것입니다. 제드는 자신의 사이트에서 다음과 같이 설명합니다.
거기에는 꽤 많은 .po-.json 변환기가 있습니다. Gettext .po 파일은 오래된 표준이므로 대부분의 번역 회사에서 제공하는 표준 출력입니다.
나는 현재 사용 : po2json
그러나 향후 버전에서는이 기능을 별도의 Jed 모듈에 추가하고 싶습니다.
그러나 이것은 여기에 적용되지 않는 것 같습니다.
추가 파기는 다음과 같은 방식으로setLocaleData( data: Object, domain: string )
번역을 전달하는 데 사용됩니다 .
$locale_data = gutenberg_get_jed_locale_data( 'gutenberg' );
wp_add_inline_script(
'wp-i18n',
'wp.i18n.setLocaleData( ' . json_encode( $locale_data ) . ' );'
);
( gutenberg_get_jed_locale_data( $domain )
에 대한 래퍼입니다 get_translations_for_domain( $domain )
)
따라서 WordPress는 PHP를 통해 번역 데이터를 검색 한 다음 Jed로 전달합니다. Jed 자체는 번역 파일을로드하지 않는 것 같습니다.
패키지 추가 정보는 지역화 된 문자열이 포함 된 .pot 파일을 올바르게 생성하는 방법도 설명합니다 .
이 패키지에는
pot-to-php
.pot 파일에 나열된 메시지가 포함 된 PHP 파일을 생성하는 데 사용 되는 스크립트 도 포함되어 있습니다. 현재 WordPress.org 번역 문자열 검색을 속이는 데 유용합니다. 현재 WordPress.org는 JavaScript 파일에서 직접 문자열을 구문 분석 할 수 없기 때문입니다.npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
속성 일 필요는 없지만 그렇습니다. PHP는 값을 검색하고이를 통해 JS에 전달합니다wp_add_inline_script
적어도 지금은 더 나은 자동화 프로세스가 없다면 JS에서 .pot 파일을 전혀 생성하지 않는 것이 좋습니다.
@kero가 그의 대답에서 지금 설명하는 것처럼 GB 변환은 .mo 파일에서 JS로 일종의 블로 브 배열로 전달됩니다. 이 워크 플로는 결과 __
및 연결 의 필터링에 의존하는 모든 현지화 변조 플러그인을 중단합니다 . __
GB가 아닌 컨텍스트에서 JS 변환을 수행하는 방법과 비슷하게 호출 로 변환되는 문자열에서 Blob 배열을 명시 적으로 생성하는 것이 더 나은 워크 플로입니다 . 이것은 또한 .pot 파일 생성 문제를 해결합니다.
여기서 누락 된 것은 JS 파일을 실행하고 관련 PHP 코드를 생성하는 자동화 된 프로세스이며 poedit와 같은 도구로 분석 할 수 있습니다.
window
를 통해로드 된 JSON 으로 일부 속성에 번역을 저장wp_add_inline_script
한 다음 React 측에서 검색하여 Jed로 전달한다는 의미입니까? ... 그리고 제드는 더 마술을합니까?