用多种语言翻译网站

时间:2014-03-30 22:12:05

标签: php mysql translation

我的网站有一个文件夹语言,其中包含:

en.php

<?
$lang = array(

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

);
?>

it.php

<?
    $lang = array(

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

    );
    ?>

index.php 中我喜欢:

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

但这是一个从cpanel更改语言的选项,我如何转换为地理语言..当意大利语访问我的网站时可以用意大利语等查看我的网站?

2 个答案:

答案 0 :(得分: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;
}
?>

答案 1 :(得分: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,浏览器可能配置不正确,或者用户可能没有使用自己的计算机,因此无法发送正确的值。

相反,您应将此视为默认设置,允许用户覆盖。这可以像在每个页面上提供将?lang=it(等)添加到当前URL的链接一样简单。然后设置一个包含其偏好的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);
}