web-dev-qa-db-ja.com

文字列をHTMLに変換するには、__($ str)と_e($ str)を使用します。

私は現在些細ではないテーマを開発しています、ほとんどの場合、テキスト内に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.')

そのような機能を正しく使うには?

5
5ervant

それのすべての長所と短所は、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>' );
3
Pieter Goosen

2番目のオプションは、(@ mmmが既に述べたように)翻訳者を混乱させるだけでなく、文中の単語の順序も言語によって大きく異なる場合があります。

最初の選択肢では、翻訳者は適切に調整して翻訳することができますが、2番目の選択肢では不可能です。

3
Claudio Rimann