programing

폴리랑:커스텀 문자열을 번역하는 방법

powerit 2023. 4. 3. 21:46
반응형

폴리랑:커스텀 문자열을 번역하는 방법

문제:Polylang을 사용하여 웹 사이트를 번역하고 있습니다만, 커스텀 문자열 번역에 어려움을 겪고 있습니다.문자열이 WP 대시보드의 "Strings translation" 메뉴에 표시되지 않습니다.

중요:저는 PHP에 대해 잘 모르기 때문에 pll_register_string 함수는 매우 혼란스럽습니다.

Polylang 문서에서 인용:

https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/

pll_register_string

플러그인이 "문자열 변환" 패널에 자체 문자열을 추가할 수 있습니다.함수는 관리자 측에서 호출해야 합니다(함수).테마에 대해서는 php 파일이 OK입니다).빈 문자열(예를 들어 옵션에서 가져온 문자열)을 등록할 수 있지만 목록 테이블에 나타나지 않습니다.

사용방법:

pll_register_string => (필수) 정렬 편의를 위해 제공된 이름(예: 'myplugin') '$string' => (필수) 문자열이 등록된 그룹(옵션)은 기본적으로 'polylang' '$line'으로 설정됩니다.번역 텍스트 필드는 여러 줄이며 기본값은 false입니다.

pl_

는 이전에 pll_register_string에 등록된 문자열을 변환합니다.사용방법:

pll_($string);고유 파라미터가 필요합니다.

'$string' => 변환할 문자열은 변환된 문자열을 반환합니다.

pl_e

이전에 pll_register_string에 등록된 변환된 문자열을 에코합니다.사용방법:

pll_e-string);고유 파라미터가 필요합니다.

'$string' => 번역할 문자열

안부 전합니다

먼저 이 모든 문자열을 번역용으로 등록해야 합니다.

예를 들어 다음과 같은 템플릿파일로 "Hello world"를 에코합니다.

<?php pll_e('Hello world'); ?>

Strings translation에 문자열을 표시하려면functions.php:

add_action('init', function() {
  pll_register_string('mytheme-hello', 'Hello world');
});

이 함수에 변환할 모든 사용자 지정 문자열을 추가합니다.

Polylang 문서에서는 Polylang 함수의 존재를 먼저 확인하는 것이 좋다고 합니다.따라서 Polylang 플러그인 업데이트 시 사이트가 중단되지 않습니다. 오래된 파일을 먼저 삭제하기 때문입니다.

그래서 저는 이 접근방식을 제안합니다.functions.php플러그인의 파일내의 테마에 대해서는, 폴리랭이 삭제되었을 경우에 폴백을 가지는 필요한 폴리랭 함수의 래퍼를 작성할 수 있습니다.또는 WP가 정의되지 않은 함수 에러로 크래쉬 하지 않게 갱신할 수 있습니다.

/**
 * Outputs localized string if polylang exists or  output's not translated one as a fallback
 *
 * @param $string
 *
 * @return  void
 */
function pl_e( $string = '' ) {
    if ( function_exists( 'pll_e' ) ) {
        pll_e( $string );
    } else {
        echo $string;
    }
}

/**
 * Returns translated string if polylang exists or  output's not translated one as a fallback
 *
 * @param $string
 *
 * @return string
 */
function pl__( $string = '' ) {
    if ( function_exists( 'pll__' ) ) {
        return pll__( $string );
    }

    return $string;
}

// these function prefixes can be either you are comfortable with.

하나의 요.lpl__ ★★★★★★★★★★★★★★★★★」pl_e는 및 and and and are are are are are are are are are are and and입니다.pll__ ★★★★★★★★★★★★★★★★★」pll_e.

이것들은, 테마내에서 변환된 문자열을 출력 또는 반환하기 위해서 사용됩니다.

앞에서 설명한 바와 같이 이러한 문자열을 등록해야 폴리랑에서 번역해야 한다는 것을 알 수 있습니다.

테마로 작업하는 경우는, 아마, 로 초기화하는 것이 좋을 것입니다.after_setup_theme뭇매를 맞다

function your_prefix_after_setup_theme() {

   // register our translatable strings - again first check if function exists.

    if ( function_exists( 'pll_register_string' ) ) {

        pll_register_string( 'ToggleNavigation', 'Toggle navigation', 'YourThemeName', false );

        pll_register_string( 'ToggleSearch', 'Toggle Search', 'YourThemeName', false );

        pll_register_string('404Message', 'It looks like nothing was found. Try getting back to the <a href="%s">home page</a>.', 'YourThemeName', true);

    }
}
 add_action( 'after_setup_theme', 'your_prefix_after_setup_theme' );

안녕하세요, 이름을 사용해서 번역할 수 있는 방법이 있나요?

add_action('init', function() {
    pll_register_string('footer-Newsletter-form', 'Subscribe to Newsletter');
});

$translated_string =  pll_translate_string('footer-Newsletter-form', $lang);

감사합니다!이 설정을 추가한 후 다른 함수에 번역 가능한 텍스트를 추가할 수 있는 다른 트릭을 찾았습니다.php 파일:

 __(pll__('string to translate'), 'text-domain')

언급URL : https://stackoverflow.com/questions/46557981/polylang-how-to-translate-custom-strings

반응형