2017-04-06 7 views
0

ホームページと2つの他のページを持つ単純な静的ウェブサイトで、それぞれ英語とオランダの2つの言語でテキストが含まれています。すべての内容はページごとに単一のphpファイル内に保持する必要があります。視聴者はオランダ語を選択しない限り、1ページCSSとPHPのみを使用した多言語ウェブサイト

<body> 
<menu id="EN"> 
    <ul> 
    <li>About</li> 
    <li>Home</li> 
    </ul> 
</menu> 

<menu id="NL"> 
    <ul> 
    <li>Over</li> 
    <li>Thuis</li> 
    </ul> 
</menu> 

<article id="EN"> 
    Goodmorning [...] 
</article> 

<article id="NL"> 
    Goedemorgen [...] 
</article> 
</body> 

デフォルトは英語することができ、その到着英語内容に、示されています。ユーザが言語をクリックすると、システムはその選択肢を「記憶」して、さらなる言語が正しい言語で開かれるようにする必要があります。可能な限り数行のコードでできるだけシンプルなPHP/CSSを使ってこれを設定するには?もし可能ならば?これは、(データベース駆動型の動的な)多言語フレームワークを、この願いの控えめな性質を上回るように設定せずに、多言語ウェブサイトを構築する絶対的で究極の代替方法で最も単純な方法です。

+1

に含まれている必要があります。言語データを名前付き変数にバインドし、htmlで使用します。 '$ about = $ langarray ['DE'] ['ABOUT'];

  • $約
  • ' – JustOnUnderMillions

    +0

    あなたの質問の残りは答えに幅があります。 googleについて:クッキーとセッションに基づいたシンプルな多言語のホームページを作ってください。 – JustOnUnderMillions

    +0

    あなたは、あなたが望むように長い間記憶されるように設定することができるクッキーに選択された言語を保存することにより、選択したユーザを覚えておくことができます – SuperDJ

    答えて

    2

    質問が完全に意味をなさない。 PHPを使用している場合は、サーバー側でユーザーの言語を追跡することを検討しています。これは通常、セッション変数を通じて行われます。

    代わりに、両方の言語を送信し、どのフラグがクリックされたかに応じて、クライアント側の値を置き換えるためにcssとjavascriptを使用します。

    +1

    そして、[javascript cookie](http://stackoverflow.com/questions/14573223)/set-cookie-and-get-cookie-with-javascript#24103596)を使用して、複数のURLにわたってユーザーが選択した言語を覚えています。 – Tijmen

    +0

    +1 @Michael ArrisonとTijmenに感謝します。しかし、私はここの代替を目指していました;)しかし、あなたの答えから正しく理解するなら、これを解決する2つの方法があります。PHPがクッキーを設定し、どの言語が表示されなければならないかを覚えていますか?*または* javascriptはクッキーを設定し、どの言語を表示する必要があります。一度に両方ではない、正しい? Tijmenそれは素晴らしいリンクです私はそれをテストします。 – Sam

    +0

    @Michael ArrisonとTijmen私は、最初のオプション(PHP)は、結果が '/ en/page112'や'/nl/page112'のように保存できる2つのページだと考えている点で正しいです。(後でhtaccess書き換え)javascriptオプションは、Googleが1つのページ '/ page112 'を2つの言語を持っていると考えて、おそらく迷惑と混乱を招くようにします。 – Sam

    1

    最初の間違いは、異なる要素でid属性を繰り返すことができないことです。 PHPのあなたの最初の行で

    がこれを置く:

    <?php 
        if(isset($_GET["lang"]){ 
         $lang = $_GET["lang"]; 
        }else{ 
         $lang = "NL"; // by default 
        } 
    ?> 
    

    オランダ

    <?php if ($lang=="NL"){ ?> 
    <article> 
        Goedemorgen [...] 
    </article> 
    <?php } ?> 
    

    私は、CSSのない最も単純な使用の$ _GET [ "LANG"]のparamである。このような何かを考えます英語

    <?php if ($lang=="EN"){ ?> 
    <article> 
        Goodmorning [...] 
    </article> 
    <?php } ?> 
    

    あなたは言語の変更したい場合:

    <a href="?lang=EN>Website in English</a> 
    
    +0

    +! @クリスチャン・カリーリョがこの批評家と解決策に感謝しています。したがってセレクタが異なっていても(記事/メニューなどはまだIDは一意でなければならないのですか?)私はこのソリューションをテストしますが、私は質問があります:どのように初期化/最初に英語版を読み込むのですか? – Sam

    +1

    私はアンガーを編集しました、今すぐチェックしてください –

    +0

    アップグレードのための@Christian Carrilloありがとうございました!私はそれをテストしましたが、Dreamweaverはコードに誤りがあり、最初の部分は 'if(isset(' 'とページに何も表示されません、コードが動作したら削除します。これはいい意味だよ – Sam

    1

    これは、お客様の情報に基づいた多言語の最も簡単な実装です。他にも多くの優れたソリューションがあります。

    あなたが最初

    <div class="language-selector"> 
        <a href="changelanguage.php?lang=en">EN</a> 
        <a href="changelanguage.php?lang=nl">NL</a> 
    </div> 
    

    changelanguage.php内容言語セレクタを必要とする:

    <?php 
        session_start(); 
        if(!empty($_GET['lang']) $_SESSION['lang'] = $_GET['lang']; 
        header("Location: ".$_SERVER['HTTP_REFERER']) 
    ?> 
    

    すべてのページがonefileアプリケーションでHTMLを繰り返してはいけないトップ

    <style type="text/css"> 
    #EN, #NL { display:none; } 
    <?php 
        session_start(); 
        if($_SESSION['lang'] == "EN" || empty($_SESSION['lang'])) echo "#EN { display: block; }"; 
        if($_SESSION['lang'] == "NL") echo "#NL { display: block; }"; 
    ?> 
    </style> 
    
    +1

    +1この建設的な解決法をお寄せいただきありがとうございます私はこれが私の意図だったと思っています...しかし、デフォルト言語は既に英語に設定されています(言語が設定されていない場合)。これを解決するには、単にsesion_start();の直後に行を追加するだけで解決できます($ _SETSION ['lang'] = "EN"; ' – Sam

    +1

    )デフォルト言語を提供する。 – Alex

    関連する問題