繁体   English   中英

基于页面的语言下拉列表

[英]Language Dropdown Based on Page

我有一个带有语言选项的简单选择框。 每个选项将根据所选语言加载不同的页面。 导航有效,但是我需要默认的选定项基于页面ID(使用PHP设置)。

我已经在页面上加载了jQuery 1.12,因此可以根据需要使用该库。

<?php
    $body_id = "en";
?>

<form id="language" method="post">
    <select class="language" onchange="window.location.href=this.value">
        <option selected="selected">LANGUAGE</option>
        <option value="index-da.php">DANSK</option>
        <option value="index-de.php">DEUTSCH</option>
        <option value="index.php">ENGLISH</option>
        <option value="index-es.php">ESPA&#209;OL</option>
        <option value="index-fr.php">FRAN&#199;AIS</option>
        <option value="index-it.php">ITALIANO</option>
        <option value="index-pl.php">POLSKI</option>
    </select>
</form>

使用filter获取目标option元素并根据option的值应用条件

 var $body_id = "en"; var filtered = $('.language').find('option').filter(function() { return this.value.split('.')[0].split('-')[1] == $body_id; }); if (filtered.length) { filtered.prop('selected', true); } else { $('.language').find('option[value="index.php"]').prop('selected', true); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <form id="language" method="post"> <select class="language" onchange="window.location.href=this.value"> <option selected="selected">LANGUAGE</option> <option value="index-da.php">DANSK</option> <option value="index-de.php">DEUTSCH</option> <option value="index.php">ENGLISH</option> <option value="index-es.php">ESPA&#209;OL</option> <option value="index-fr.php">FRAN&#199;AIS</option> <option value="index-it.php">ITALIANO</option> <option value="index-pl.php">POLSKI</option> </select> </form> 

对于其他语言

 var $body_id = "da"; var filtered = $('.language').find('option').filter(function() { return this.value.split('.')[0].split('-')[1] == $body_id; }); if (filtered.length) { filtered.prop('selected', true); } else { $('.language').find('option[value="index.php"]').prop('selected', true); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <form id="language" method="post"> <select class="language" onchange="window.location.href=this.value"> <option selected="selected">LANGUAGE</option> <option value="index-da.php">DANSK</option> <option value="index-de.php">DEUTSCH</option> <option value="index.php">ENGLISH</option> <option value="index-es.php">ESPA&#209;OL</option> <option value="index-fr.php">FRAN&#199;AIS</option> <option value="index-it.php">ITALIANO</option> <option value="index-pl.php">POLSKI</option> </select> </form> 

无需遍历整个地方,您可以制作各种语言并在该迭代周围回显您的模板,然后检查$_SERVER['SCRIPT_NAME']是否相等,如果是,则将其设置为选中。

<?php
$languages = array(
  'da' => 'DANSK',
  'de' => 'DEUTSCH',
  'en' => 'ENGLISH',
  'es' => 'ESPA&#209;OL',
  'fr' => 'FRAN&#199;AIS',
  'it' => 'ITALIANO',
  'pl' => 'POLSKI'
);
?>

<form id="language" method="post">
    <select class="language" onchange="window.location.href=this.value">
      <option selected="selected" disabled>LANGUAGE</option>

<?php
foreach ($languages as $code => $language){

  $page = "index-$code.php";

  if (basename($_SERVER['SCRIPT_NAME']) === $page)
    $selected = 'selected="selected"';
  else
    $selected = '';

  echo "<option value='$page' $selected>$language</option>".PHP_EOL;

}
?>

    </select>
</form>

像这样做会更灵活:

<?php
$body_id = !empty($_POST['lang']) ? $_POST['lang'] : '';

$options = array
(
    'da' => 'Dansk',
    'de' => 'Deutsch',
    'en' => 'English',
    'es' => 'Español',
    'fr' => 'Français',
    'it' => 'Italiano',
    'pl' => 'Polski'
);
?>
<form action="<?=getenv('PHP_SELF')?>" method="post">
    <select name="lang" onchange="this.form.submit()">
        <option>Language</option>
<?php foreach ($options as $key => $val):?>
        <option value="<?=$key?>"<?=($key == $body_id ? 'selected' : '')?>><?=htmlentities($val)?></option>
<?php endforeach?>
    </select>
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM