如何在PHP中保持基于菜单/用户语言的产品选项

如何在PHP中保持基于菜单/用户语言的产品选项,php,mysql,Php,Mysql,我正在处理其他人的php代码,但用户/菜单语言有问题。这是本网站横幅广告动态价目表页面的代码。根据选择的菜单语言,用户可以看到不同菜单语言的横幅广告价格 每当用户来到此页面时,活动的横幅广告价格应为用户菜单语言。现在它固定在俄语上,我不知道如何动态地制作它,或者至少把它改成英语 请看一看,让我知道你是否能找到解决办法。谢谢 <?php class reklama_content { private $db; private $cms; private $valid; private $da

我正在处理其他人的php代码,但用户/菜单语言有问题。这是本网站横幅广告动态价目表页面的代码。根据选择的菜单语言,用户可以看到不同菜单语言的横幅广告价格

每当用户来到此页面时,活动的横幅广告价格应为用户菜单语言。现在它固定在俄语上,我不知道如何动态地制作它,或者至少把它改成英语

请看一看,让我知道你是否能找到解决办法。谢谢

<?php
class reklama_content
{
private $db;
private $cms;
private $valid;
private $data;
private $tools;

public function __construct()
{
$reg = Registry::getInstance();
$this->db = $reg->get('db');
$this->cms = $reg->get('cms');
$this->valid = $reg->get('Validate');
$this->data = $reg->get('methodData');
$this->tools = $reg->get('tools');
}

public function get_reklama_content()
{
$lang = language::getLang();

if ($_GET['ryb'])
  $ryb = $_GET['ryb'];
else
  $ryb = 'banners';

if ($ryb == 'banners')
  $ret = $this->getBanner($lang);
elseif ($ryb == 'classifieds')
  $ret = $this->getClassifieds($lang); 
return $ret;
}

 public function getClassifieds($lang)
 {
$contetn = $this->db->selectArray($this->db->Select('*', 'block', "`name` = 'classifieds_content'"));
$ret = $contetn['content_' . $lang];
return $ret;
}

public function getBanner($lang)
{
$header = array();
$top = array();
$center = array();
$bottom = array();

$banners = $this->db->selectAssoc($this->db->Select('*', 'banners', false, 'page_id', false, true));
$contetn_top = $this->db->selectArray($this->db->Select('*', 'block', "`name` = 'reklams_baner_top'"));
$contetn_bottom = $this->db->selectArray($this->db->Select('*', 'block', "`name` = 'reklams_baner_bottom'"));

foreach ($banners as $x => $y) {
  if ($y['position'] == 'header')
    $header[$x] = $y;
  elseif ($y['position'] == 'top')
    $top[$x] = $y; elseif ($y['position'] == 'center')
    $center[$x] = $y; elseif ($y['position'] == 'bottom')
    $bottom[$x] = $y;
}

$ret = $contetn_top['content_' . $lang];


$langs = ($this->tools->getAllLang(true));

$ret .= '
        <hr style="width: 100%; margin: 40px 0;" />
       <div class="rek_banner_conteiner header_conteiner">
            <span class="ban_title">' . l::top_banner1() . '</span>
            <img src="styles/them_01/img/banner_468x60.jpg" class="header_example" />
            <div class="lang_menu">' . l::menu_language1() . '<br />';

$ret .= '<span id="eng_header" >' . l::english() . '</span>';
$ret .= '<span id="de_header" >' . l::german() . '</span>';
$ret .= '<span id="rus_header" >' . l::russian() . '</span>';
$ret .= '<span id="tr_header" >' . l::turkish() . '</span>';
$ret .= '</div>';
foreach ($langs as $z => $g) {
  $ret .= '
            <div id="' . $g['name'] . '_header_box" class="hide">
                <table>
                    <tr class="order_table_title">
                        <td class="order_table_position">' . l::location() . '</td>
                        <td class="order_table_size">' . l::size1() . '</td>
                        <td class="order_table_date">' . l::fee_per_month() . '</td>
                    </tr>
                    ';
  foreach ($header as $z => $f) {
    $page = $this->db->selectArray($this->db->Select('title_' . $lang, 'pages', "`id` = '" . $f['page_id'] . "'"));
    $ret .= '<tr>
                                <td>' . $page['title_' . $lang] . '</td>
                                <td>' . $f['size'] . '</td>
                            ';
    if ($f['price' . '_header_' . $g['name']])
      $ret .= '<td>$ ' . $f['price' . '_header_' . $g['name']] . '</td>';
    else
      $ret .= '<td></td>';
    $ret .= '

                            </tr>';
  }
  $ret .= '
                </table>  
            </div>
        ';
}
$ret .= '</div>';

$ret .= $contetn_bottom['content_' . $lang];
return $ret;
}
}

?>
我有一个。它包含一个很酷的、易于修改的代码片段,我用它来根据浏览器对语言的偏好来检查谁来自哪里。简而言之,您需要从
$\u服务器['HTTP\u ACCEPT\u language']
检测语言,或者检测用户首选项(例如
?lang=de
),以覆盖其浏览器中的默认语言首选项。这是因为您没有使用像
tr.example.com
这样的自定义URL。然后您可以执行一个
开关()
。现在看起来您正在将所有的语言
标记连接在一起

switch($lang){
  case "ru":
  //Russian
     $ret .= '<span id="rus_header" >' . l::russian() . '</span>';
  break;

  case "de":
  //German
     $ret .= '<span id="de_header" >' . l::german() . '</span>';
  break;

  case "tr":
  //Turkish
     $ret .= '<span id="tr_header" >' . l::turkish() . '</span>';
  break;

  default:
  //English
     $ret .= '<span id="eng_header" >' . l::english() . '</span>';

}
开关($lang){
案例“ru”:
//俄罗斯人
$ret.=''.l::俄语();
打破
案例“de”:
//德文
$ret.=''.l::德语();
打破
案例“tr”:
//土耳其语
$ret.=''.l::turkish()';
打破
违约:
//英式
$ret.=''.l::english()';
}

正如我的另一篇帖子所说(有一段来自谷歌的视频)。理想情况下,最好将所有内容都放在一种语言的特定URL上。然后,所有这些神奇的语言翻译都可以在用户不必进行选择或猜测的情况下完成。

language::getLang()返回什么?似乎
$ret
将包含所有四种语言的文本。是否有一个单独的过程(Javascript?CSS?)隐藏了不需要的特定于语言的跨度?@George Cummins,如前所述,这是其他人的代码,我只是注意到CSS中的一些附加样式。很明显,这项工作不是很好,我会尽量坚持绝对的想法。。。但是谢谢你的反馈和兴趣。非常感谢你的反馈,我的PHP技能不是很好,但我认为你给了我正确的方向。我会尽力实施你的建议来解决它。