2017-04-06 39 views
0

給定一個簡單的靜態網站,只有一個主頁和兩個其他頁面,每個頁面都包含兩種語言的文本:英語和荷蘭語。所有內容應在每頁一個php文件進行:單頁多語言網站只使用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在onefile應用。將語言數據綁定到命名變量並在html中使用它們。 '$ about = $ langarray ['DE'] ['ABOUT'];

  • $約
  • ' – JustOnUnderMillions

    +0

    你的問題的其餘部分是廣泛回答。 Google如何做:基於Cookie和會話製作簡單的多語種wepage。 – JustOnUnderMillions

    +0

    你可以記住用戶選擇通過存儲所選擇的語言在一個cookie中,可以設置爲只要你想記住 – SuperDJ

    回答

    2

    這個問題並不完全合理。如果您使用的是PHP,則需要跟蹤服務器端用戶的語言。這通常是通過會話變量完成的。

    另一種方法是發送兩種語言,並使用css和javascript替換客戶端上的值,具體取決於哪個標誌被點擊。

    +1

    而你可以使用[javascript cookie](http://stackoverflow.com/questions/14573223/set-cookie-and-get-cookie-with-javascript#24103596)記住用戶在多個網址上選擇的語言。 – Tijmen

    +0

    +1謝謝@Michael Arrison和Tijmen。那麼我的目標是在這裏的選擇邁克爾;)但如果我從你的答案正確理解,實際上有兩種方法來解決這個問題:要麼php設置cookie,並記住必須顯示哪種語言* OR * javascript設置Cookie並記住必須顯示哪種語言。不是同時出現,對嗎? Tijmen,這是一個很好的鏈接,我會測試一下。 – Sam

    +0

    @Michael Arrison和Tijmen我是否正確,因爲第一個選項(PHP)讓谷歌認爲結果是兩個頁面,可以保存爲'/ en/page112'和'/ nl/page112'(稍後可以通過htaccess進行設置重寫),而javascript選項使谷歌認爲其擁有兩種語言的頁面「/ page112」,因此可能令人討厭和混淆谷歌? – Sam

    1

    第一個錯誤是你不能在不同的元素中重複id屬性。我認爲,如果沒有CSS最簡單的就是使用$ _GET [ 「郎」] PARAM,這樣的事情:

    在你的PHP的第一行把這個:

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

    荷蘭

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

    英語

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

    如果你想改變語言:

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

    +!謝謝@Christian Carrillo fot這個評論家和解決方案。所以即使選擇器不同(文章/菜單等仍然是一個ID必須是唯一的?)。我會測試這個解決方案,但我確實有一個問題:如何啓動/初始加載英文版(沒有那些用戶選擇語言的舊歡迎屏幕)? – Sam

    +1

    我編輯了anwer,現在檢查 –

    +0

    感謝@Christian Carrillo的升級!我測試了它,但dreamweaver說代碼有錯,第一部分用'if(isset('和page什麼也沒有顯示,我會在代碼運行時刪除這個註釋。多數民衆贊成在沒有biggie – 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']) 
    ?> 
    

    每個網頁應包含在頂部

    <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()之後直接添加一行來解決這個問題;'if(empty($ _ GET ['lang'])$ _SESSION ['lang'] =「EN」;' – Sam

    +1

    感謝您的評論。提供默認語言。 – Alex