PHP使用gettext来转换数组

时间:2014-06-26 10:52:24

标签: php translation gettext

我有一个PHP网页,我正在使用gettext _("STRING_TO_TRANSLATE")进行翻译。

我的数据库中有一个包含我网站所有用户个人资料的表格。我把它们放在选择框中选择一个。

现在我要翻译个人资料名称。

有没有办法翻译(使用GETTEXT)来自数据库的个人资料名称?

我的选择框的代码示例:

while($row = mysqli_fetch_array($result_user_type))
{
    echo "<option $selected value=\"".$row['id']."\">".$row['designation']." </option>";
}   

3 个答案:

答案 0 :(得分:1)

你不会......

while($row = mysqli_fetch_array($result_user_type))
{
   echo "<option $selected value=\"".$row['id']."\">"._($row['designation'])." </option>";
}   

我不确定,但是从来没有使用过gettext或者其他东西,但是如果它只是一个带参数的函数并返回一个已翻译的字符串,那么就应该这样做。

答案 1 :(得分:1)

你无法翻译PHP变量! gettext不执行PHP,它只是扫描你的代码以获得简单的字符串。

你应该看一下这个例子http://ottopress.com/2012/internationalization-youre-probably-doing-it-wrong/

干杯

答案 2 :(得分:0)

要翻译我的user_type数组,我创建了一个类,将数据库中的结果打印到文件translate.php

public function createArrayType()
{
    $filePHP   = fopen("translate.php", "a");
    $initial = true;

    if (!is_resource($filePHP))
        return false;

    $sql_activity     = "SELECT id, name FROM user_type";
    $result_activity  = mysqli_query( $this->mysqli , $sql_activity  );

    fwrite($filePHP, "\n  \$user_types = array(");
    while($row = mysqli_fetch_array($result_activity))
    {
        if(!$initial)
        fwrite($filePHP, ",");

        fwrite($filePHP, "'".$row['id']."' => _('".$row['name']."')" );

        $initial = false;
    }
    fwrite($filePHP, "); \n");
    fclose($filePHP);
}

然后只需使用poEdit翻译并使用$ user_types数组:

while($row = mysqli_fetch_array($result_user_type))
{
   echo "<option $selected value=\"".$row['id']."\">".$user_types[$row['id']]." </option>";
}  

我不知道它是否是最佳选择,但这些选项可以解决我的问题。