私の問題:Polylangを使用してWebサイトを翻訳していますが、カスタム文字列の翻訳に苦労しています。 WPダッシュボードの[文字列の翻訳]メニューに文字列が表示されません。
重要:PHPだからpll_register_string function私にとって非常に混乱しています。
Polylangのドキュメントから引用:
https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/
pll_register_string
プラグインが「strings translation」パネルに独自の文字列を追加できるようにします。この関数は、管理者側で呼び出す必要があります(functions.phpファイルはテーマに問題ありません)。空の文字列を登録することは可能ですが(たとえば、オプションから来る場合)、リストテーブルには表示されません。
使用法:
pll_register_string($ name、$ string、$ group、$ multiline); '$ name' =>(必須)並べ替えに便利な名前(例: 'myplugin') '$ string' =>(必須)翻訳する文字列 '$ group' =>(オプション)文字列が含まれるグループ登録済み、デフォルトは 'polylang' '$ multiline' =>(オプション)trueに設定されている場合、翻訳テキストフィールドは複数行、デフォルトはfalse
pll __
以前にpll_register_stringで登録された文字列を変換します
pll __($ string);一意のパラメーターが必要です。
「$ string」=>翻訳する文字列は、翻訳された文字列を返します。
pll_e
以前にpll_register_stringで登録された翻訳済み文字列をエコーします。
pll_e($ string);一意のパラメーターが必要です。
'$ string' =>変換する文字列
宜しくお願いします
最初に、これらすべての文字列を翻訳用に登録する必要があります。
たとえば、次のようなテンプレートファイルで「Hello world」をエコーします。
<?php pll_e('Hello world'); ?>
「文字列の翻訳」に文字列を表示するには、functions.php
:
add_action('init', function() {
pll_register_string('mytheme-hello', 'Hello world');
});
翻訳するすべてのカスタム文字列をこの関数に追加します。
Polylang docs によると、最初にpolylang関数の存在を確認するのが良いと述べています。したがって、サイトはPolylangプラグインの更新時に壊れません-古いファイルを最初に削除するからです。
したがって、私はこのアプローチを提案します:functions.php
forテーマのプラグインのファイルで、polylangが削除または更新された場合、フォールバックで必要なPolylang関数のラッパーを作成できます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.
注pl__
およびpl_e
に単一のl
を含む関数を作成し、元のPolylang関数はpll__
およびpll_e
です。
これらは、翻訳された文字列を出力または返すためにテーマで使用されます。
前述のように、これらの文字列を登録する必要があるため、Polylangはこれらの文字列を翻訳する必要があることを認識します。
テーマを使用する場合は、次のように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' );