在__()
作用它应该设置为您用于插件或主题的域。在下面的示例中,我使用\'text_domain\'
. 您的域字符串应该是唯一的。它不应与任何其他域字符串匹配。不使用文本域参数默认为\'default\'
WordPress域名。有关更多详细信息,请参阅链接。
始终使用字符串(\'text_domain\'
). 切勿将变量、函数或常量与字符串一起使用。大多数(全部?)如果没有字符串,翻译程序将无法看到它。
您的代码:
echo __( \'Hello \' . $first . \' you own me money.\' );
不要在字符串中包含变量。
更好的方法:
echo sprintf( __( \'Hello %s you own me money.\', \'text_domain\' ), $first );
或者只是:
printf( __( \'Hello %s you own me money.\', \'text_domain\' ), $first );
The
%s
占位符告诉人工翻译器一个字符串将进入其中。使用
%d
对于数字。还有
other placeholders.
(这句英语语法错误。请使用\'Hello %s, you owe me money.\'
或\'Hello %s, you own my money.\'
取决于您的意图。)
您的代码:
$html = \'<div><p>Top: \' . $t_margin . \'</p>\' . <p>Bottom: \' . $b_margin . \'</p></div>\';
不要翻译HTML。这在任何语言中都是一样的。
更好的方法:
$html = sprintf( \'<div><p>%s</p><p>%s</p></div>\', __( \'Top: \', \'text_domain\' ) . $t_margin, __( \'Bottom: \', \'text_domain\' ) . $b_margin );
或者将其拆分为多行:
$html = sprintf(
\'<div><p>%s</p><p>%s</p></div>\',
__( \'Top: \', \'text_domain\' ) . $t_margin,
__( \'Bottom: \', \'text_domain\' ) . $b_margin
);
如果不清楚顶部和底部是什么,可以使用
_x()
解释这些术语的上下文。
您可以在此处找到其他翻译案例:Internationalization: You’re probably doing it wrong