在会话变量中跟踪语言

时间:2011-03-29 17:41:16

标签: php

我当前的代码所做的是,在检查数据库时,如果版本(FR和EN)是True还是False,则显示正确的内容,如果两者都存在则显示链接,以便用户可以切换语言。如果只存在一种语言,则内容以该语言显示,并且不显示任何链接。

javascript中的2个函数是这样的,这里是FR的一个:

function makeVisibleFR()
{
    document.getElementById('bbqc_contentFR').style.display="inline"; 
    document.getElementById('bbqc_contentEN').style.display='none';
    document.getElementById('vFrancais').style.display='none';
    document.getElementById('vAnglais').style.display="inline";
}

我想添加的内容是记忆用户的选择并使用相同的语言版本显示以下页面。

我想我需要创建一个$_SESSION['language']变量并在其中存储“FR”或“EN”,但我不知道如何在我当前的代码中实现它。

<?php
                if($versionFR == true)
                { 
                    if($versionEN == true)
                    {
                ?>
                    <a href="javascript:makeVisibleEN()" id="vAnglais">Version Anglaise</a> 
                    <div id="bbqc_contentFR">
                        <h2><?php echo $titleFR; ?></h2>
                        <?php echo $contentFR; ?>
                    </div>

                    <a href="javascript:makeVisibleFR()" id="vFrancais" style="display:none">Version Française </a>
                    <div style="display:none" id="bbqc_contentEN">
                        <h2><?php echo $titleEN; ?></h2>
                        <?php echo $contentEN; ?>
                    </div>
                <?php 
                    }
                    else
                    {
                ?>
                    <div id="bbqc_contentFR">
                        <h2><?php echo $titleFR; ?></h2>
                        <?php echo $contentFR; ?>
                    </div>
                <?php 
                    }
                }
                else
                {
                    if($versionEN == true)
                    {
                ?>
                    <div id="bbqc_contentEN">
                        <h2><?php echo $titleEN; ?></h2>
                        <?php echo $contentEN; ?>
                    </div>
                <?php 
                    }
                    else
                    {
                ?>
                    <h2>Erreur, il n`y a aucun texte</h2>
                <?php 
                    }
                }
                ?>

3 个答案:

答案 0 :(得分:0)

session_start()放在您文件的顶部,然后:

if($versionFR == true) $_SESSION['lang'] = 'FR';
else $_SESSION['lang'] = 'ENG';

//later on (could be in a whole other page with session_start() on top)
if($_SESSION['lang'] == 'FR'){/*display FR stuff*/}
elseif($_SESSION['lang'] == 'ENG'){/*display ENG stuff*/}

这样的东西应该适用于ya ^ _ ^

答案 1 :(得分:0)

这是一个简单的例子:

// assuming that databaseHas() queries available languages
session_start();

$langs = array('ENG', 'FR');
$showlang = '';
if (databaseHas($_SESSION['lang']))
{
    $showlang = $_SESSION['lang'];
}
else
{
    foreach ($langs as $l)
    {
        if (databaseHas($l))
        {
            $showlang = $l;
            break;
        }
    }
}

if ($showlang == '')
{
    die('No languages found!');
}

echo databaseContent($showlang);

// print links to alternate languages
foreach ($langs as $l)
{
    if (databaseHas($l) && $l != $showlang)
    {
        // print link to this language
    }
}

答案 2 :(得分:0)

  

如果1)我将如何添加   两个版本都存在2)lang是ENG 3)   英语部分是显示:无   默认

1)您只需添加以下条款:if($_SESSION['lang'] == 'FR' && $_SESSION['lang'] == 'ENG') 2)不确定你的意思,Neal从我所看到的内容中解释得很清楚 3)如果显示ENG:默认情况下为none,则您需要触发javascript函数以将其重新打开。

但是让我们在这里退一步,考虑一下:制作两个定义每个内容的语言文件。所以对于你的english.php你可能有变量,比如$ GREETING ='Hello'; $ YES ='是';然后在你的french.php中你将这些变量定义为$ GREETING ='Bonjour'; $ YES ='WEE'; (我甚至不确定我们是否意味着,但你明白了!)。因此,现在您可以选择根据用户的语言包含相应的语言文件,并且可以轻松地在未来添加其他语言。要灵活!