私は最近、ワードプレスのコードでトークン%1 $やそれに類するものをより頻繁に見ましたが、それが何を意味するのか理解できません。ここに例があります:
sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
誰がそれが何を意味するのか知っていますか?
Sprintf()の PHP docs を読んでください。
%s
は文字列の単なるプレースホルダーです%d
は、単なる数値のプレースホルダーです。したがって、sprintfの例は次のようになります。
$variable = sprintf(
'The %s ran down the %s', // String with placeholders
'dog', // Placed in the first %s placeholder
'street' // Placed in the second %s placeholder
);
これにより、変数$variable
に文字列が返されます。
dog は street を走った
プレースホルダに番号を付けることで、どちらの後続の文字列がどこに配置されるかをすばやく判断することが開発者にやさしい方法です。文字列を再利用することもできます。番号付けされたプレースホルダーを使った別の例を見てみましょう:
$variable = sprintf(
'The %1$s ran down the %2$s. The %2$s was made of %3$s', // String with placeholders
'dog', // Will always be used in %1$s placeholder
'street', // Will always be used in %2$s placeholder
'gravel' // Will always be used in %3$s placeholder
);
これにより、変数$variable
に文字列が返されます。
dog は street を走った。 street は gravel でできていました
最後に、 __()
関数を使って、渡された文字列を翻訳しましょう。 __()
プレースホルダーを渡してから、その文字列全体をsprintf()
に渡すことで、文字列とアプリケーションをもう少し動的にすることができるように、変換関数に渡されるものすべてを変換できます。
これはWordPressのものではなく、PHPのものです。 %1$s
、%2$s
などは、 sprintf()
によって返される(または printf()
によって出力される)フォーマットされた文字列内の変数のプレースホルダーです。
1$
は、それが first 変数であることを示し、2$
は2番目になります。 s
は、それが 文字列 変数であることを示します。他のオプションもあります(例えば、d
は整数を示します)。
あなたが与える例は不完全です:それは確かに全体としてこのようなものです:
sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
$string_1,
$string_2 );