2014-03-30 87 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