-2

このコードを使用して、Webサイトの言語を切り替えています。すべて正常に動作しますが、言語を変更すると常に最初の項目が選択されます。どの言語がウェブサイトの言語であるかを選択し続けたい。これが私のコードです。

<td width="85%" align=right class=top_section> 
          <form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected';?>English</option> 
          <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected';?>Русский</option> 
          <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected';?>Точики</option> 
          </select> 

    </form>
    </td>

それを正しく機能させる方法は?ロシア語を選択した場合は、ロシア語のままにする必要があります。しかし、それは常に英語になります。

そして、このコードを使用してWebサイトの言語を変更します

if(!isset($_POST['switchlanguage']))
  {
  include_once($DOCUMENT_LANG.'en.lng.php');
  }
  else
  {
  include_once($DOCUMENT_LANG.$_POST['switchlanguage'].'.lng.php');
  }

タブを使用してドロップダウンボックスに入り、下キーを使用しても、自動的に最初のアイテムに移動します。

4

7 に答える 7

1

何が問題なのかわかりました。smartyには<{php}>タグと<{/php}>タグが必要だとは知りませんでした。そのため、smartyは書くことを知りませんでした。私はついにこのコードを書きました、そしてそれは働きました。

<form method='POST'>
      <select name="switchlanguage" onchange="this.form.submit()"> 
      <option value="en" <{php}>if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';<{/php}>> English</option> 
      <option value="ru" <{php}>if($_POST['switchlanguage'] == 'ru') echo 'selected="selected"';<{/php}>> Русский</option> 
      <option value="tj" <{php}>if($_POST['switchlanguage'] == 'tj') echo 'selected="selected"';<{/php}>> То?ик?</option> 
      </select> 

私を助けてくれたすべての人に感謝します。

于 2013-02-07T13:05:32.500 に答える
0

うーん、クッキーを使ってみませんか?何らかの理由でそれらを使用できない場合を除いて(つまり、Cookieに関するEU法を気にかけたくない場合を除いて)、これはこの問題に対してかなりSOPであるはずです。

于 2013-02-07T08:30:38.903 に答える
0

あなたが使用する必要があります

selected="selected"

PHPプログラマーではありませんが、試してみることができますか

<td width="85%" align=right class=top_section> 
          <form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';?>English</option> 
          <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected="selected"';?>Русский</option> 
          <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected="selected"';?>Точики</option> 
          </select> 

    </form>
    </td>

ちょっとやってみて

<form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';?>> English</option> 
          <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected="selected"';?>> Русский</option> 
          <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected="selected"';?>> Точики</option> 
          </select> 

    </form>
于 2013-02-07T08:34:23.530 に答える
0

コードにタイプミスがあります。これを見る

<option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected';?>English</option>

これは

<option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected'; ?>>English</option>

オプション開始タグの閉じ中括弧に注意してください(英語および他の言語の前)。

選択したコードを次のコードに置き換えることができます。

<select name="switchlanguage" onchange="this.form.submit()"> 
    <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected'; ?>>English</option> 
    <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected'; ?>>Русский</option> 
    <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected'; ?>>Точики</option> 
</select> 

編集:

編集コードは次のようになりますか?

<?php
$_POST['switchlanguage'] ='ru';
?>
<table>
<tr>
    <td width="85%" align=right class=top_section> 
        <form method='POST'>
            <select name="switchlanguage" onchange="this.form.submit()"> 
                <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected'; ?>>English</option> 
                <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected'; ?>>Русский</option> 
                <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected'; ?>>Точики</option> 
            </select> 
        </form>
    </td>
</tr>
</table>

私はこれを最後にテストし、正常に動作しています。

于 2013-02-07T08:37:35.453 に答える
0

問題については、次の1つ以上を使用できます。

  • 匿名ユーザーが言語を選択します。選択した言語の値でCookieを設定するPHPスクリプトを選択します。例:setcookie( "switchlanguage"、'en'、time()+ 3600、 "/"、 "example.com") ;
  • 認証されたユーザー:現在のユーザーの優先言語をDBに保存することを考えるかもしれません(次に、選択を保存および取得するスクリプトを作成します)
  • uはいつでもセッションを使用して言語を保存することを考えることができますが、ユーザーがWebサイトを離れると期限切れになります(新しいセッションを開始します)

上記のいずれの場合でも、Cookie、セッション、またはDBに言語値を設定してから元のページにリダイレクトするスクリプトを作成する必要があります。または、valを格納するこのPHPスクリプトをAjaxで呼び出してから、値が設定されたJSONオブジェクトまたはエラーを返す方がよいでしょう。

最後に、HTMLを調整して、正しい言語を選択する必要があります(Cookieを使用する場合など)。

<select name="switchlanguage" onchange="this.form.submit()"> 
<option value="en" <?php if(!isset($_COOKIE['switchlanguage']) || empty($_COOKIE['switchlanguage']) || $_COOKIE['switchlanguage'] == 'en') echo 'selected';?>English</option> 
<option value="ru" <?php if($_COOKIE['switchlanguage'] == 'ru') echo 'selected';?>Русский</option> 
<option value="tj" <?php if($_COOKIE['switchlanguage'] == 'tj') echo 'selected';?>Точики</option> 
</select> 

デフォルトのケースuが欠落していることも追加しました:(!isset($ _ COOKIE ['switchlanguage'])|| empty($ _ COOKIE ['switchlanguage']))言語がまだ選択されていない場合は英語を選択してください。

于 2013-02-07T08:49:10.847 に答える
0

この投稿結果は

<?php if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';?. ?>     

他のページから来ているのか、このページ自体の言語を変更しているのか。POSTリクエストを通じて他のページから来ている場合は問題ありませんが、このページ自体の言語を変更している場合は、javascriptを使用して特定のフィールドを選択してください。

于 2013-02-07T08:59:36.127 に答える
0

より良い解決策を見つけることができなかったので、私は少しトリックをしました...私はもう1つのオプションを追加しました。常に最初のオプションに移動します。最初のオプションは言語の選択です。誰かが別のアプローチを見つけたら、私は幸せになります。今のところ、私はより良い解決策を見つけることができませんでした。

<td width="85%" align=right class=top_section> 
    <form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option  > Choose language</option> 
          <option value="en" > English</option> 
          <option value="ru" > Русский</option> 
          <option value="tj" > Точики</option> 
          </select> 

    </form>
    </td>  

私はそれが良くないことを知っていますが、何もないよりはましです。それは私の問題を解決しなかったので、私はこの答えを受け入れません。

于 2013-02-07T10:16:52.673 に答える