2014-03-30 135 views
-4

我的網站有一個文件夾語言,其中有:翻譯網站在許多語言

en.php

<? 
$lang = array(

    'sp1' => 'Welcome', 
    'sp2' => 'Home', 

); 
?> 

it.php

<? 
    $lang = array(

     'sp1' => 'Benvenuto', 
     'sp2' => 'A casa', 

    ); 
    ?> 

index.php i有這樣的:

<h4><?=$lang['sp1']?></h4> 
<a><u><strong><?=$lang['sp2']?></a></u></strong><br /> 

但是,這是更改選項的cPanel的語言,我怎麼能轉化爲地緣語言。當一個意大利訪問我的網站可以查看我的意大利語網站等?

+1

可以查詢USER_AGENT接受的語言和變化取決於什麼能接受的語言回報爲,有HTTP的讀取要使用的數組: //stackoverflow.com/questions/620276/checking-browsers-language-by-php – Pheonix2105

+0

http://www.php.net/manual/en/book.geoip.php? – Scuzzy

+2

這個問題要麼過於寬泛(翻譯或「i18n」,是一個很大的話題),要麼不是很清楚:你問的是如何檢測用戶的首選語言? cpanel與此有什麼關係? – IMSoP

回答

0

瀏覽器投放廣告的用戶的「首選」的語言中稱爲Accept-Language HTTP頭,您可以在PHP作爲$_SERVER['HTTP_ACCEPT_LANGUAGE']閱讀。

實際上有a fairly complex structure這個標題,允許多種語言給予優先權,並且language itself can take a few different formsThe answers to this previous question討論如何完全解析它。

但作爲第一個近似值,你可以只取前兩個字母,這通常會列出here by the US Library of Congresshere on Wikipedia的ISO 639-1代碼之一:

$default_language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 

然而,這絕不應選擇語言的唯一方法。由於explained fairly clearly by this W3C document,瀏覽器可能沒有正確配置,或者用戶可能沒有使用自己的計算機,因此它不會發送正確的值。

相反,您應該將其視爲默認設置,並且允許用戶覆蓋它。這可以像在每個向當前URL添加?lang=it(etc)的頁面上提供鏈接一樣簡單。然後設置一個cookie包含自己的喜好,並從此忽略accept-language上:

if ($_GET['lang']) { 
    // User asked for a particular language; obey, and remember in a cookie 
    setcookie('lang', $_GET['lang'], 0, '/'); 
    $preferred_language = $_GET['lang']; 
} elseif ($_COOKIE['lang']) { 
    // Cookie found from previous selection 
    $preferred_language = $_COOKIE['lang']; 
} else { 
    // Guess based on browser settings 
    $preferred_language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 
} 
+0

但是如何添加php文件:it.php和en.php – user3462476

+0

@ user3462476那麼,一旦你運行這個代碼,你有一個變量'$ preferred_language'。如果是「它」,則包括'it.php';如果不是,則退回到包括英文字符串;當你添加法語時,你也可以檢查它是否是「fr'',等等。 – IMSoP

+0

如何包括...您可以完全編寫代碼..因爲我不太瞭解 – user3462476

1

您可以使用$_SERVER['HTTP_ACCEPT_LANGUAGE']

<?php 
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 
switch ($lang){ 
    case "fr": 
     //echo "PAGE FR"; 
     include("fr.php"); 
     break; 
    case "it": 
     //echo "PAGE IT"; 
     include("it.php"); 
     break; 
    case "en": 
     //echo "PAGE EN"; 
     include("en.php"); 
     break;   
    default: 
     //echo "PAGE EN - Setting Default"; 
     include("en.php");//include EN in all other cases of different lang detection 
     break; 
} 
?> 
+0

雖然這是一個有用的工具,但不應該單獨使用,並且用戶應該總是明確地選擇語言,正如[本W3C文檔]中所討論的那樣(http://www.w3.org/International/questions/qa-when-lang-neg) – IMSoP

+0

我同意,但我認爲這會有點複雜@ user3462476 – Companjo

+0

好的建議的複雜性是給予不好的建議的藉口;這會導致可怕的可用性。此外,它不需要比這更復雜*:只需使用它來選擇一種默認語言,並讓用戶單擊鏈接進行更改,並將其選擇保存在cookie中。 – IMSoP