如何使用gettext和一些复杂的变量进行翻译

时间:2013-06-03 14:38:05

标签: php-gettext

我们正在使用Gettext翻译我们的网站,但最近我们发现了翻译团队的一些问题。

我们有一些字符串...

  

你好 Bob 这个晚上获胜 * * 红色 * < EM>气球 *

我们得到类似的东西......

sprintf("Hi %s this %s you %s %s %s %s", $name, $action, $number, $color, $object);

问题是我们的翻译团队不知道变量的顺序......并且他们非常难以正确翻译“编码”字符串,他们只看到他们poedit这个文本

Hi %s this %s you %s %s %s %s

¿我们如何处理这些复杂的字符串?

2 个答案:

答案 0 :(得分:2)

使用poedit,这为您提供了向字符串添加注释的机会。

答案 1 :(得分:1)

最后,我们找到了最适合我们的方式。

我们有像

这样的字符串
  

sprintf(“Hi%s this%s you%s%s%s%s”,$ name,$ action,$ number,$ color,$ object);

然后我们可以像这样改变de vars的位置

   sprintf(“Hi%1 $ s this%2 $ s you%3 $ s%4 $ s%5 $ s%6 $ s”,$ name,$ action,$ number,$ color,$ object) ;   翻译团队可以更改位置,只更改数字

然后......最重要的事情......告诉翻译团队这些变量是什么......对gettext的评论如......

<!-- //Hi translator... The variables are $name, $action, $number, $color, $object -->
sprintf(_('Hi %1$s this %2$s you %3$s %4$s %5$s %6$s'), $name, $action, $number, $color, $object);

在xgettext行中添加选项-c,您可以将此注释放在INSIDE .po文件中,这是我们选择工作的方式:)

我希望这对你来说是一个很好的解决方案