我正在为PHP中的表单创建一些翻译,我将所有日语翻译成英语,然后在单独的PHP文件中,我根据特定国家/地区提供所有翻译。
以前我使用PHP Echo进行翻译,如下所示:
<?php echo __('Subject'); ?>
在我的翻译文件中,我会编写例如:
'Subject' => 'ご用件',
我如何向以下内容添加翻译,我认为我的尝试是正确的:
上一个代码:
$body = $applicant['username'].' さま
<br/><br/>
我的尝试:
$body = $userData['username'].' __('Dear:username', array(':username' => $userData));さま
<br/><br/>
答案 0 :(得分:2)
占位符在该地方看起来是最佳解决方案。
您可以使用“sprintf”轻松实现未命名的占位符,如下所示:
$t = ['Hello, %s!' => 'Hello in Japanese, %s!'];
$result = sprintf($t['Hello, %s!'], $username);
或者您可以使用“strtr”函数对命名占位符执行此操作:
$t = ['Hello, :username!' => 'Hello in Japanese, :username!'];
$result = strtr($t['Hello, %s!'], ['username' => $username]);
PS我非常喜欢Yii-way。看这里:http://www.yiiframework.com/doc/guide/1.1/en/topics.i18n
答案 1 :(得分:0)
非常常见创建__函数允许接收带有var的数组,您可以在以下位置看到标准实现:
https://github.com/oscarotero/Gettext/blob/master/Gettext/translator_functions.php#L4
他使用%作为vsprinf函数的特殊字符。
也许会有趣的重新发明轮子。