PHP更改语言版本

时间:2011-06-08 08:45:12

标签: php

我有一个网站,我想创建其他语言版本。 我不想为每种语言创建文件夹。我在想它 可以在每个页面或主页面上添加组合框 这样用户可以设置语言然后使用php我会 检查选项并显示正确的版本。任何建议 得到那个?

4 个答案:

答案 0 :(得分:3)

如果您有组合框,当用户提交组合框时,请使用session_start();将语言存储在会话中($_SESSION['lang'] = $_POST['lang'];必须调用)。我建议你将语言列入白名单:

session_start();

// define language whitelist
$allowedLangs = array('en', 'de');

// only store the new user language if it's an allowed one
if (isset($_POST['lang']) && in_array($_POST['lang'], $allowedLangs)) {
    $_SESSION['lang'] = $_POST['lang'];
}

// define the user language based on session data or use 'en' as default if not available
$userLang = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'en';

// parse some language file according to the language
$translations = // TODO load some file with $userLang here

当然,您应该根据自己的项目和环境进行调整。对于翻译文件,您可以使用返回数组的普通PHP文件:

<?php 
// en.php
return array(
    'some.key' => 'Translation',
);

然后,如果你包含那个文件,include的返回值将是数组,所以在上面的代码中你可以这样做:

$translations = include 'translations/'.$userLang.'.php';

然后,您必须通过此$translations变量输出所有文字,例如echo $translations['some.key']

答案 1 :(得分:1)

如果你想在lang文件中使用cookies,你可以包含一系列单词或内容来使用。

 <?php

    if($_GET['language']){
        $lang = (string)$_GET['language'];
        setcookie("lang", $lang, time()+3600);
        header('Location: '.$_SERVER['PHP_SELF']);
        die();
    }elseif(!isset($_COOKIE['lang'])){
        $lang='en';
    }else{$lang=$_COOKIE['lang'];}

    switch($lang){
        case "en":
            include('./lang/en.php');
            break;
        case "fr":
            include('./lang/fr.php');
            break;
        case "pol":
            include('./lang/pol.php');
            break;
        default:
            include('./lang/en.php');
            break;
    }
    ?>

答案 2 :(得分:0)

你的意思是

if ($_GET['language']) {
  include $_GET['language'] . ".php";
}

然后将语言保存在带有名称的php文件中,或者根据你想用它做什么来保存函数

答案 3 :(得分:0)

嘿,语言版本。 在combobox中有语言。 在会话中保持您当前的语言。 当您更改语言时调用ajax调用将更改后的语言更新为会话并重新加载页面。

显示与会话存储语言相关的页面视图。

多数民众赞成........