当前位置:  开发笔记 > 编程语言 > 正文

gettext如何处理动态内容?

如何解决《gettext如何处理动态内容?》经验,为你挑选了1个好方法。

在php(或者通常是gettext)中,当gettext看到变量为动态内容时,它会做什么?

我有2个案例.

1)让我说我有 poked John .也许在某种语言中,单词的顺序是不同的.gettext如何处理?(不,我不是在构建facebook,这只是一个例子)

2)假设我将一些类别存储在数据库中.它们很少,但它们存储在数据库中.如果我这样做 会怎么样?我希望翻译人员也翻译这些类别名称,但它是否必须在数据库中完成?

谢谢



1> Mark..:

您最好的选择是使用spritf()函数.然后,您将使用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()函数中,如下所示:


您将使用poEdit解析所有translate()函数.然后将字符串"%s poked%s"翻译成您想要的任何语言,而不修改%s字符串占位符.那些将分别由user(1)和user2的translate()函数输出替换.您可以在PHP手册中阅读有关sprintf()的更多信息,以获得更多高级用法.

问题#2.您需要创建一个poEdit可以解析的静态文件,其中包含类别名称.例如"misctranslations.php":



然后poEdit解析misctranslations.php.然后,您可以使用输出类别名称转换


案例1可以更容易处理:`<?php echo sprintf(_('%s poked%s'),$ user1,$ user2); ?>`.你不需要一个额外的功能,poedit仍然可以像其他任何一样解析字符串.
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有