私は現在些細ではないテーマを開発しています、ほとんどの場合、テキスト内にHTMLタグがあるときは __($str)
翻訳関数 を使用しません。出力するテキストがあるときはいつでも__($str)
や_e($str)
のような変換関数を使うのは良いことですか?それについて何か欠点がありますか?
このようなHTMLタグが混在している非常に長いテキストでも、まだ使用できますか?
__("This <em>text</em> have an <b>HTML</b> tag. Another sentence...")
それともこのように使うのはいいですか? (*面倒くさい..)
__('This ').'<em>'.__('text').'</em>'.' have an '.'<b>'.__('HTML').'</b>'__(' tag.')
そのような機能を正しく使うには?
それのすべての長所と短所は、HTMLタグを翻訳しようとしないことです。 HTMLタグを使用して文字列を変換するには、プレースホルダとprintf
またはsprintf
を使用します。
このような何かがするでしょう
printf()
printf( __( 'This %s text %s have an %s HTML %s tag. Another sentence...' ), '<em>', '</em>', '<b>', '</b>' );
sprintf()
sprintf( __( 'This %s text %s have an %s HTML %s tag. Another sentence...' ), '<em>', '</em>', '<b>', '</b>' );
2番目のオプションは、(@ mmmが既に述べたように)翻訳者を混乱させるだけでなく、文中の単語の順序も言語によって大きく異なる場合があります。
最初の選択肢では、翻訳者は適切に調整して翻訳することができますが、2番目の選択肢では不可能です。