0

私は他の誰かの php コードに取り組んでおり、ユーザー/メニュー言語に問題があります。これは、この Web サイトのバナー広告の動的価格表を含むページのコードです。選択したメニュー言語に応じて、ユーザーはメニュー言語ごとに異なるバナー広告の価格を確認できます。

ユーザーがこのページにアクセスするときはいつでも、アクティブなバナー広告の価格はユーザーのメニュー言語に合わせてください。現在、ロシア語で修正されており、動的に作成する方法や、少なくとも英語に変更/修正する方法がわかりません。

ご覧いただき、解決策があれば教えてください。ありがとう!

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

}

私の他の投稿が言うように (Google からのビデオがあります)。理想的には、コンテンツをすべて 1 つの言語で、その言語の特定の URL に配置するのが最善です。次に、この魔法のような言語翻訳のすべてが、ユーザーがなじみのない言語で正しいリンクをクリックしているかどうかを選択したり、推測したりする必要なく発生します。

于 2013-06-20T23:07:23.873 に答える