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에서 언어 파일을로드하는 데 어려움을 겪는 실용적인 지침 ". :::::: GlotpressPolyglots 그룹도 언급 할 가치가 있습니다.
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.