업데이트 후 플러그인 변환을 유지하는 방법은 무엇입니까?


9

http://wordpress.org/extend/plugins/bbpress/ bbpress '언어 폴더 (wp-content / plugins / bbpress / bbp-languages)에는 다음 경고가 있습니다.

/**
 * Do not put custom translations here. They will be deleted on bbPress updates.
 *
 * Keep custom bbPress translations in /wp-content/languages/
 */

실제로 이것은 새로운 문제가 아니며 그렇습니다. 영어 이외의 언어로 워드 프레스 플러그인을 사용하는 경우 큰 문제입니다.

기본적으로 bbpress를 번역하고 .po 및 .mo 파일을 만들었습니다. 파일을 일반적인 wp-content / plugins / bbpress / bbp-languages ​​폴더에 넣으면 파일이 작동합니다. 그러나 위 경고에 따르면 업데이트 할 때 삭제됩니다. 그러나 문제는 bbpress에서 제안한대로 wp-content / languages ​​/ 폴더에 넣으면 번역이 작동하지 않는다는 것입니다.

나는 그것을 활성화 할 수있는 후크 또는 무언가가 있어야한다고 생각하지만 가장 좋은 해결책은 무엇입니까? 간단히 플러그인 언어 파일을 wp-content / languages ​​/에 유지하고 싶습니다.


잘 .. bbpress 코드를 확인한 후 .. 직접 / wp-content / languages ​​/가 아닌 / wp-content / languages ​​/ bbpress /에 파일을 넣어야 할 것 같습니다. 이제 bbpress에서 작동하지만 질문은 여전히 ​​답변을 받아야합니다. IMO 다른 플러그인을위한
Ünsal KORKMAZ

답변:


3

BBpress의 언어 파일에 대한 호출을 교체해야합니다.

이를 수행하기에 좋은 곳은 일반 언어 디렉토리에있는 언어 별 파일입니다. 터키어의 경우 아마라는 파일 일 것입니다 tr_TR.php. 블로그 언어와 일치하는 경우 에만 자동으로로드됩니다 . 덮어 쓰지 않습니다.

BBPress는이 기능 load_plugin_textdomain을 사용 load_textdomain하지 않고 대신 사용 합니다. 여기서 필터를 찾을 수 있습니다.

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

따라서 언어 PHP 파일에서 경로를 변경하는 필터를 추가하십시오.

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );

버그가있는 것 같습니다.. bbpress.trac.wordpress.org/ticket/1647 보고 .. 기본 언어 폴더 wp-content / languages ​​/를 사용하므로 'FULL_PATH_TO_YOUR_FILE'에 대한 제안은 무엇입니까?
Ünsal Korkmaz

언어 디렉토리 ( WP_LANG_DIR)와 mo 파일 의 경로 입니다.
fuxia

1
좋은 대답입니다. 플러그인 개발자를위한 참고 사항 : load_plugin_textdomain()"init"작업 중에 호출을 수행하십시오 . 그렇지 않으면 "load_textdomain_mofile"필터에 연결할 수 없습니다. 이미 너무 늦을 것입니다.
Geert

2

당신이해야 할 일은 설치된 플러그인의 text_domain을 관리하는 간단한 플러그인을 만드는 것입니다. 글로벌 솔루션을 원하지 않으면 테마의 functions.php에 코드를 추가 할 수 있습니다.

아이디어는 어디에서 번역을 찾을 수 있는지 워드 프레스에 지시하는 것입니다. 모든 플러그인에서 내부적으로 이와 비슷한 것을 사용하여 수행됩니다.

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

이것이 사용할 기능입니다. 여기서 볼 수 있듯이 마지막 인수는 변환 파일이있는 플러그인 경로에 상대적인 값을 설정하는 데 사용됩니다.

다음과 같이 해당 언어 폴더를 변경하려는 각 플러그인마다 한 줄을 입력하여 원하는 것을 수행 할 수 있습니다.

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

그러면 각 플러그인에서 사용하는 것과 동일한 이름을 사용하여 번역 파일 plugins이있는 폴더가있는 폴더 옆의 폴더에서 사용자 정의 번역 파일을로드하도록 wordpress에 지시 bbpress합니다.

모든 플러그인의 텍스트 도메인을 지시하는 방법 init은 다음과 같은 단계 에서 실행해야 합니다

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(유용하다고 생각되면 이것을 답변으로 표시하는 것을 잊지 마십시오)


0

이 작업을 수행하려면 WP_LANG_DIR에 WordPress 번역 파일이 있고 전역 로캘이 해당 언어로 설정되어 있어야합니다. 로케일을 변경하거나 워드 프레스의 핵심 번역 파일을 제공하지 않고 bbPress에 대한 번역 만 포함하는 경우,로드 할 때도 번역되지 않습니다.

bbPress에 대한 로케일을 대체하려면 'bbpress_locale'에 필터를 추가해야 bbPress mo 파일을 대체 할 수 있습니다.

bbPress 2.0이 load_textdomain () 함수를 사용하는 것은 사실이지만, load_plugin_textdomain ()은 어쨌든 load_textdomain ()의 래퍼 일뿐입니다. bbPress 2.0 방법은보다 강력하고 전역 번역 파일 배치를 허용하므로 플러그인 업데이트 중에도 손실되지 않습니다.


-1

필자의 경우 플러그인에 대한 영구 사용자 정의 변환을 작성하려면 다음 단계가 필요합니다 (ACF 플러그인 변환의 예).

  1. 창조하다 wp-content/languages/plugins/디렉토리
  2. 선택 번역 파일 복사 .po플러그인에서 lang/생성에 폴더 (또는 번역 어떤 다른) wp-content/languages/plugins/에서 예 ( lang/acf-pl_PL.powp-content/languages/plugins/acf-pl_PL.po )
  3. 편집 예를 들어 Poedit 또는 다른 프로그램으로 변환을 사용자 정의 .po파일을 다음 생성 .mo및 저장 위치 wp-content/languages/plugins/(예를 들어 wp-content/languages/plugins/acf-pl_PL.mo)

이런 식으로 플러그인 업데이트 후에도 번역이 유지되어야합니다.

이 전략이 모든 플러그인에서 작동하는지 확실하지 않지만 시도해 볼 가치가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.