您最好的选择是使用sprintf()
功能。然后,您将使用printf
符号来处理字符串中的动态内容。这是我不久前在这里找到的一个函数,可以为您轻松处理这个问题:
function translate()
{
$args = func_get_args();
$num = func_num_args();
$args[0] = gettext($args[0]);
if($num <= 1)
return $args[0];
return call_user_func_array('sprintf', $args);
}
现在例如 1,您希望将字符串更改为:
%s poked %s
您将translate()
像这样输入到函数中:
<?php echo translate('%s poked %s', $user1, $user2); ?>
translate()
您将使用 poEdit解析所有函数。然后将字符串翻译"%s poked %s"
成您想要的任何语言,而无需修改%s
字符串占位符。这些将在translate()
函数输出时分别用 user1 和 user2 替换。sprintf()
您可以在 PHP 手册中阅读更多内容以了解更高级的用法。
对于问题 #2。您需要创建一个 poEdit 可以解析包含类别名称的静态文件。例如misctranslations.php
:
<?php
_('Cars');
_('Trains');
_('Airplanes');
然后有 poEdit 解析misctranslations.php
。然后,您将能够使用输出类别名称翻译<?php echo gettext($data['name']); ?>