Foreach WHERE子句?

时间:2012-09-10 23:57:29

标签: php mysql xml lang

我正在试图弄清楚如何使用xml和php处理多语言?我希望能够默认使用英语,但如果用户选择了一种语言,那就说德语,我想将语言更改为。这部分我可以弄清楚,但我希望能够,如果某个语言字符串,没有被翻译成德语,请选择该字符串的英文版本。我用常规的php和mysql这样做了:

$language = "de";
$sql = "SELECT * FROM ".$prefix."_countries WHERE con_id=$language"; 
$result = mysql_query($sql) ;
$row = mysql_fetch_assoc($result);

$userlang = $row['lang'];

$languagestring = array();
$res1 = mysql_query("SELECT * FROM ".$prefix."_language WHERE lang = 'en'");
while($row1 = mysql_fetch_assoc($res1)){

    $langid = $row1['id'];

    $res = mysql_query("SELECT * FROM ".$prefix."_language WHERE fk_id = $langid AND lang = '$userlang'");
    $row = mysql_fetch_assoc($res);

    if(!$row){
        $languagestring[] = $row1['text'];
    } else {
        $str = $row['text'];
        $languagestring[] = $str;
    }

}

现在我以与db相同的方式构建我的xml:

<data>
  <record id="1">
    <fk_id>0</fk_id>
    <lang>en</lang>
    <text>Network Error</text>
  </record>
  <record id="2">
    <fk_id>0</fk_id>
    <lang>en</lang>
    <text>There is a problem with the network!</text>
  </record>
  <record id="3">
    <fk_id>0</fk_id>
    <lang>en</lang>
    <text>OK</text>
  </record>
  <record id="4">
    <fk_id>1</fk_id>
    <lang>de</lang>
    <text>Das netvaerk sind corrupt!</text>
  </record>

” 我如何用xml完成​​mysql的操作?

感谢任何帮助: - )

1 个答案:

答案 0 :(得分:0)

有标准可以做这些事情,不需要XML! 对于翻译,最常见的方法是使用gettext,这在开源世界非常流行。

此外,gettext中使用的MO文件是编译文件,这意味着它们比解析XML更快。

查看http://php.net/manual/en/function.gettext.php

要创建PO和MO文件,我建议您使用PoEditVirtaal