【发布时间】:2010-11-29 11:01:01
【问题描述】:
我正在使用.po 和.mo 文件来翻译我的网站。
我的问题是,是否可以将参数传递到 .po translation file 中的翻译句子中?
例如: en -> 嗨,我叫莎拉,我是个酒鬼 我想用两个参数翻译那句话,名字(莎拉)和职业(酒鬼)。
提前谢谢你。
【问题讨论】:
标签: parameters gettext translate
我正在使用.po 和.mo 文件来翻译我的网站。
我的问题是,是否可以将参数传递到 .po translation file 中的翻译句子中?
例如: en -> 嗨,我叫莎拉,我是个酒鬼 我想用两个参数翻译那句话,名字(莎拉)和职业(酒鬼)。
提前谢谢你。
【问题讨论】:
标签: parameters gettext translate
这是一个老话题,但只是提一下......
在许多语言中,您还可以指出要使用的参数,例如(在 PHP 中):
$name = 'Agustinus';
printf(_("Hi %1$s.\n The owner of this page is: %1$s. Today is %s.",
$name, date('d-m-Y'));
【讨论】:
%1$s(注意不是%$1s),但我相信起源是gnu libc。不过,值得注意的是,如果您使用%1$s,您可能不会在同一字符串中使用%s,并且您也不允许在编号上有空格。
这取决于语言,但基本上,是的,你总是可以的。
printf(_("Hi, my name is %s and I am %s"), name, prof);
在 c.
echo sprintf(_("Hi, my name is %s and I am %s"), $name, $prof);
在 php 中。
alert( _('Hi, my name is %s and I am %s')
.replace('%s',name).replace('%s',prof) );
在 javascript 或更好的东西中:
alert( _('Hi, my name is %1 and I am %2')
.replace('%1',name).replace('%2',prof) );
或者任何你能想到的占位符。 Javascript 实现当然依赖于在预处理时或作为运行时下划线函数提供的翻译机制。
等等。
【讨论】:
*printf* 系列函数将与 translated 字符串中的 %1$s、%2$s 占位符一起使用。 (为什么一接到通知就不回复?:))