WordPress 플러그인 번역을 준비하는 방법?


19

번역 준비가 된 플러그인을 만드는 가장 좋은 방법은 무엇입니까?

처음부터 번역 할 필요는 없지만 다른 문화권의 동료 개발자가 플러그인의 현지화 프로세스에 참여할 수 있도록 쉽게 번역 할 수 있어야합니다.

답변:


38

1. 현지화를 염두에두고 작성

사용하지 마십시오 echo또는 print()대신, 텍스트 출력을 생성하는 워드 프레스 기능을 사용 __()하고 _e():

/** Not localization friendly */
echo "Welcome to my plugin";    
// OR
print("Welcome to my plugin");

/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;

_e()그리고 __()현재 언어 - - 번역을 제공합니다 첫 번째 매개 변수로 제공된 텍스트의. _e()텍스트를 출력하지만 __()반환합니다.

두 번째 매개 변수는 텍스트 도메인 입니다. 첫 번째 매개 변수로 제공된 텍스트 가이 플러그인에 속한다고 WordPress에 알리기 위해 원하는 이름을 사용할 수 있지만 플러그인에 사용한 것과 동일한 이름을 선호합니다 디렉토리 파일, 더 직관적이라고 생각합니다.

"Hello <username>"과 같은 동적 텍스트를 출력하는 방법은 무엇입니까?

로 __()와 sprintf():

/** Get the username */
$username = 'Magictrick';

/** Not localization friendly */
echo "Hello $username";     

/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR 
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;

2. .pot / .po / .mo 파일을 준비하십시오

정의

  • .pot 파일 : 플러그인 개발자가 귀하의 처분에 따라 새 번역을 작성하는 출발점으로 사용되며 WordPress에서는 사용하지 않습니다.
  • .po 파일 : WordPress에서 사용하지 않거나 완료되었거나 완료된 번역 파일입니다.
  • A.mo 파일 : .po 파일을 저장할 때마다 Poedit에 의해 자동으로 생성됩니다. 이러한 파일로 수행 할 수있는 모든 작업은 .po 파일을 만들거나 업데이트 할 때마다 파일을 업로드하거나 다시 업로드하는 것입니다. WordPress는 .mo 파일에서 번역을 가져옵니다 .

열기 Poedit 및 새 카탈로그를 작성 (파일> 새로 Catallog ...) 이러한 설정 :

  • 프로젝트 정보 : (또는 팀) 정보를 사용하십시오. 언어 및 국가는 플러그인 기본 언어와 일치해야합니다.
  • 경로 :
    • 기본 경로 : .
    • 경로 : 모두 제거 및 추가 ..(언어 파일은 언어라는 플러그인 하위 디렉토리에 저장 됨)
  • 키워드 : 모두 제거 및 추가 __하고_e

저장 과 카탈로그 및 스캔 업데이트 버튼을 누르면 번역 텍스트의 플러그인 파일을. 업데이트가 해당 카탈로그를 닫으면 플러그인 에 번역 가능한 새 문자열 ( 또는로 묶음 )을 추가하지 않으면 해당 파일을 업데이트 할 필요가 없습니다 ./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot__()_e()

이제 첫 번째 번역을 만들어 봅시다 (fr_FR을 사용하겠습니다) :

사용 Podeit 것은 , 냄비 파일에서 카탈로그 생성 (파일> POT 파일에서 새로운 카탈로그를 ...) :

  • 프로젝트 정보 : 귀하의 (또는 귀하의 팀) 정보를 사용하고, 언어와 국가를 변경하십시오 . 나는 프랑스와 프랑스를 사용할 것입니다
  • 경로 : 변경하지 마십시오
  • 키워드 : chage하지 마십시오

카탈로그를로 저장하십시오 . 문자열의 일부 또는 전부를 번역 하고 .po 파일을 다시 저장 한 다음 .po 및 .mo 파일을 모두 업로드 하십시오./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po

.po 파일을 저장할 때마다 .mo 파일이 동일한 이름으로 생성되고 .po 파일의 파일 이름이 중요 하며 플러그인 텍스트 도메인 (my-plugin)과 언어 로케일 ( fr_FR), 항상 플러그인의 .po 파일 이름을 [textdomain]-[locale] .po 와 같이 지정하십시오. 여기 몇 가지 예가 있습니다.

  • 이탈리아어 / 이탈리아 : wpcf7-it_IT.po
  • 포르투갈어 / 브라질 : wpcf7-pt_BR.po
  • 아랍어 : wpcf7-ar.po... 네!

플러그인이 새 텍스트로 업데이트 될 때마다 po 파일을 업데이트 하고 새 문자열을 번역 한 다음 .po 및 .mo 파일을 다시 업로드 하십시오.

3. 플러그인이 현재 언어로 번역 된 텍스트를로드하도록 지시

플러그인 어딘가에서 WordPress에 .mo 파일을 사용하도록 지시해야합니다. 플러그인 파일의 시작 부분에서이 코드를 사용하여 수행 할 수 있습니다.

function my_plugin_init() {
  load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');

교체 my-plugin의 1, 3 매개 변수 플러그인 이름으로 load_plugin_textdomain기능.

4. 테스트 및 문제 해결

작동하지 않는 몇 가지 이유는 다음과 같습니다.

  • 문자열은 .pot 또는 .po 파일로 가져 오지 않습니다.
    • → 잘못된 카탈로그 설정 (경로 또는 키워드 또는 둘 다)
  • WordPress 사이트에서 텍스트가 번역되지 않았습니다
    • 해당 언어의 .mo 파일이 없거나 파일 이름이 잘못되었습니다.
    • → 텍스트 도메인 (대체 사용하지 _e('my text')으로 _e('my text', 'my-plugin'))
    • → 텍스트 도메인이로드되지 않았습니다 (위 매개 변수를 사용하여 위의 예를 사용하면 WP에서 실수에 대해 경고하지 않습니다)

3
+1 Nice write-up :)이 기사를 살펴보십시오. WordPress 언어 파일을 올바르게로드하는 방법 , " WordPress에서 언어 파일을로드하는 데 어려움을 겪는 실용적인 지침 ". :::::: Glotpress 와 Polyglots 그룹도 언급 할 가치가 있습니다.
— brasofilo

이 멋진 교육에 감사드립니다! _e () 및 __ ()을 사용하는 모든 메소드에서 load_plugin_textdomain ()을 호출해야합니다.
— Andreas

2

Nabil의 답변은 상당히 완전하지만 쉬운 변형이 제공됩니다.

  1. 플러그인이 WordPress.org 플러그인 저장소에 있습니다.

  2. 플러그인은 WordPress 4.6 이상에서만 작동해야합니다.

단계는 다음과 같습니다.

  1. 플러그인의 readme.txt 파일에서을 추가하십시오 Requires at least: 4.6. https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/를 참조 하십시오.

  2. 아직 플러그인이 아닌 경우 플러그인을 WordPress 플러그인 저장소에 업로드하십시오. https://wordpress.org/plugins/developers/add/를 참조 하십시오 .

  3. 플러그인의 슬러그 / 텍스트 도메인을 찾으십시오. 그렇게하려면 WordPress 플러그인 저장소의 플러그인 페이지로 이동하십시오. URL은 https://wordpress.org/plugins/your-plugin-slug/ 와 같습니다 . URL의 마지막 부분 인“your-plugin-slug”는 플러그인의 슬러그입니다. 이것이 번역 함수의 텍스트 도메인에 사용하는 것입니다.

  4. 플러그인에서 WordPress의 번역 기능을 사용하십시오 (예 :) __e(‘hello’, ‘my-plugin-domain’);. 이전 단계에서 얻은 올바른 플러그인 텍스트 도메인을 사용하십시오. 자세한 내용은 https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ 를 참조 하십시오 .

위의 단계를 수행하면 WordPress가 처리합니다.

  • 번역 가능한 모든 문자열에 대해 플러그인을 파싱 (Poedit 또는 기타를 설치하고 실행할 필요가 없음)
  • translate.wordpress.org에서 누구나 자신의 플러그인 번역을 쉽게 제공 할 수 있습니다 (자신의 사이트에서 플러그인 번역 전용 또는 번역가가 번역을 제출할 수있는 사용자 정의 프로세스가 필요 없음)
  • 누군가 플러그인을 사용하면 워드 프레스가 언어로 번역되어 있는지 확인하고 언어로 번역되어 있는지 확인합니다 (필요한 경우에는 번역자 파일을 웹 사이트에로드 할 필요가 없음).

(내 블로그 게시물의 답변 : https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )


왜 이것이 다운 보트인지 확실하지 않습니다. 그것은 wordpress.org/plugins/print-my-blog 번역 준비 (및 플러그인이 성공적으로 번역되었습니다) 를 만들기 위해 한 것입니다
— thespacecamel

플러그인 / 테마가 WordPress 플러그인 저장소에 없지만 플러그인의 텍스트 도메인을 사용하는 경우 워드 프레스가 잘못된 번역 파일을로드한다는 의미입니까?
— bodo

좋은 질문 @bodo. 플러그인이 wp.org 저장소에있는 다른 플러그인의 텍스트 도메인을 사용한다고 표시하면 WordPress가 wp.org 플러그인의 번역 파일을 행복하게 사용할 것이라고 생각합니다. 그러나 미안하지만 확실하지 않습니다.
— thespacecamel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.