2011-03-29 133 views
2

我当前的代码所做的是在检查数据库时,如果版本(FR和EN)为True或False,则显示正确的内容并显示链接,以便显示链接用户可以切换语言。如果只存在一种语言,则内容以该语言显示,并且不显示链接。跟踪会话变量中的语言

JavaScript中的2个功能都是这样的,here`s的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 
        } 
       } 
       ?> 
+0

为什么不把语言标识符放入URL中,例如在'/ en/...'的路径中? – Gumbo 2011-03-29 18:01:22

+0

因为这将涉及太多的变化,我需要硬编码进入像超过100页:( – 2011-03-29 18:11:21

回答

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 
    } 
} 
+0

这正是我需要开始的,这个简单的例子现在已经清楚了,谢谢 – 2011-03-29 18:14:39

+0

在将链接打印到备用语言,您还应该检查以确保您确实拥有其他语言(如果您只有英语,则无论用户偏好,都不应该有法语链接)。我只是更新了代码来证明这一点。 – Unsigned 2011-03-29 18:18:37

+0

酷,同样的想法 – 2011-03-29 18:58:03

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*/} 

类似的东西应该为亚运作良好^ _^

+0

我怎么去添加,如果1)两个版本都存在2)郎是ENG 3)英文部分是显示:无默认 – 2011-03-29 17:53:28

+0

两个版本都存在什么? – Neal 2011-03-29 17:55:14

+0

如果英文和法文都存在于数据库中,它会使$ versionFR和$ versionEN = true,因此进入第一个和第二个if语句首先显示FR和链接到EN – 2011-03-29 17:58:46

0

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

1)你只加上一句:if($_SESSION['lang'] == 'FR' && $_SESSION['lang'] == 'ENG') 2)不知道你的意思在这里,尼尔解释3)如果ENG是显示:默认情况下没有,你会想要关闭一个javascript函数来重新打开它。

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