使用php中的会话翻译网站

时间:2014-11-10 21:30:32

标签: php locale session-cookies translate

我尝试使用PHP翻译我的网站并使其提醒语言即使用户在页面之间导航也无法以我想要的方式进行。我想要的方式是使用'locale'文件夹。

主文件名为index.php,可以包含以下内容:

<?php
include "locale/en.php";
echo $locale['test'];
?>

..并且en.php位于“it.php”,“ro.php”,“fr.php”等附近的“locale”文件夹中。 En.php文件包含:

<?php
$locale['test'] = "anything";
?> 

现在问题就在这里..我知道php中的术语“会话”,但我不知道如何使这种语法在PHP中运行。

session_start();
if user clicks the Italy flag{
translate the site in italian;
}else{ 
if the user click the France flag{
translate the site in french
}else{...

我希望当用户在页面之间导航以查看他选择的语言内容时。可选择存储他在cookie中选择的语言,即使回到站点第二,第三......时间,也可以用他想要的语言查看站点。谢谢,抱歉我的坏语:)

1 个答案:

答案 0 :(得分:3)

这样做的一种方法是:

session_start(); //include this at the top of your page(s)

if(!isset($_SESSION['language'])){
    $_SESSION['language'] = 'en'; // set the default language
    }

if(isset($_GET['setLanguage'])){
    $_SESSION['language'] = $_GET['setLanguage']; //if the user change language
    }

$allowedLanguages = array('en','es');  

if(in_array($_SESSION['language'],$allowedLanguages)){
   include('languages/'.$_SESSION['language'].'.php');
   }

然后语言文件如下:

en.php:

$header = '<h1>My header</h1>';

其他语言,例如es.php:

$header = '<h1>Mi encabezado</h1>';

在页面上,您可以引用变量$header,而不是硬编码文本。 作为语言文件,变量的值根据会话变量所选择的语言而变化,页面内容将相应更改。