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


How can I keep the product option based on the menu/user language in PHP

我在别人的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;
}
}
?>

我在这里有一个关于语言检测的答案中的代码。它包含一个很酷的易于修改的小片段,我用它来检查谁来自哪里,基于他们的浏览器语言偏好。简而言之,您需要从$_SERVER['HTTP_ACCEPT_LANGUAGE']中检测语言,或者检测用户偏好(例如。?lang=de)来覆盖其浏览器中的默认语言首选项。这是如果你不使用自定义URL像tr.example.com。然后你可以做一个switch()。现在看起来您正在将所有的语言<span>标记连接在一起。

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>';
}

正如我的另一篇文章所说(有一个来自谷歌的视频)。理想情况下,最好是将所有内容都以一种语言提供给该语言的特定URL。然后,所有这些神奇的语言翻译都发生了,用户不必做出选择或猜测他们是否点击了他们不熟悉的语言的正确链接。