Parameters 是否可以将参数传递到.po翻译文件中的翻译句子中?

Parameters 是否可以将参数传递到.po翻译文件中的翻译句子中?,parameters,gettext,translate,Parameters,Gettext,Translate,我正在使用.po和.mo文件翻译我的网站。 我的问题是,是否有可能将参数传递到语言中的翻译句子中 例如: 嗨,我叫莎拉,我是个酒鬼 我想用两个参数来翻译这句话,名字(莎拉)和职业(一个酒鬼) 提前谢谢。这取决于语言,但基本上,是的,你总是可以的 printf(_("Hi, my name is %s and I am %s"), name, prof); 在c 在php中 alert( _('Hi, my name is %s and I am %s') .replace('%s',n

我正在使用
.po
.mo
文件翻译我的网站。 我的问题是,是否有可能将参数传递到语言中的翻译句子中

例如: 嗨,我叫莎拉,我是个酒鬼 我想用两个参数来翻译这句话,名字(莎拉)和职业(一个酒鬼)


提前谢谢。

这取决于语言,但基本上,是的,你总是可以的

printf(_("Hi, my name is %s and I am %s"), name, prof);
在c

在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实现依赖于在预处理时或作为运行时下划线函数提供翻译机制


诸如此类。

这是一个古老的话题,但仅提及

在许多语言中,您还可以指示要使用的参数,例如(在PHP中):


这是一个很老的话题,但不得不说一个潜在的错误:“你好,我是一个叫酒精的旧金山人。”。翻译这个句子有很多方法,这证明了gettext的翻译是正确的,但结果是错误的。我不确定你到底想说什么。当然,如果使用错误的方法,gettext可能会产生错误的结果。你可能只是误译了原文,你可能在翻译原文时没有太多注意语法(大小写、性别等),你可能有一个原文应该根据上下文进行不同的翻译(这一个很容易解决)。我不明白的是,为什么很多翻译方法都是正确翻译的证明,但却得到了错误的gettext结果?哈哈,我从来没想到这里会有答案。我的意思是,对于一种语言,一个带有两个参数的文本字符串可以被翻译成另一种语言中带有不同顺序参数的字符串。第一个是英文名称,第二个是专业名称,第一个是专业名称,第二个是西班牙语名称。除了javascript的第二种情况,它看起来会很好地工作。有不同的替代机制。在gnu中(至少)c
*printf*
系列函数将使用翻译字符串中的
%1$s
%2$s
占位符。(为什么不在通知后回答?:)php可能在所有平台上都支持
%1$s
(注意,它不是
%$1s
),但我相信它的来源是gnu libc。但是,值得注意的是,如果使用
%1$s
,则不能在同一字符串中使用
%s
,也不允许在编号上有间隙。
alert( _('Hi, my name is %1 and I am %2')
    .replace('%1',name).replace('%2',prof) );
$name = 'Agustinus';
printf(_("Hi %1$s.\n The owner of this page is: %1$s. Today is %s.", 
   $name, date('d-m-Y'));