0

我正在处理其他人的 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;
}
}

?>
4

1 回答 1

0

我在这里有关于语言检测的答案中的代码。它包含一个很酷的、易于修改的片段,我用来根据浏览器对语言的偏好来检查谁来自哪里。简而言之,您需要检测语言$_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 上以一种语言提供全部内容。然后,所有这些神奇的语言翻译都发生了,用户无需做出选择或猜测他们是否点击了他们不熟悉的语言的正确链接。

于 2013-06-20T23:07:23.873 回答