2011-06-08 159 views
1

我有一個網站,我想創建其他語言版本。 我不想爲每種語言創建文件夾。我想知道它 它可以添加一個組合框在每個頁面或主要的一個 ,以便用戶可以設置語言,然後使用PHP我會 檢查選項並顯示正確的版本。任何建議 到達?PHP更改語言版本

回答

0

你的意思是沿着

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

,然後線的東西保存在一個PHP文件的語言與存在的名稱,或功能取決於你想用它

+2

酷,我得到的,包括我自己喜歡的任何文件: – 2011-06-08 08:52:50

+1

我不會用這個例子作爲'由於is'任何文件可以包含 – 2011-06-08 08:55:01

+0

也可以使用後反而使它升技更安全的是更多的psevdo代碼然後複製粘貼 – Touchpad 2011-06-08 08:58:47

0

做什麼哎爲語言版本。 在組合框中有語言。 在會話中維護您當前的語言。 當你改變語言調用ajax調用更改更改語言進入會話並重新加載頁面。

顯示關於會話存儲語言的頁面視圖。

完蛋了........

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', 
); 

然後的返回值包括是數組,所以在上面的代碼中你可以更多信息:

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

你就必須輸出通過這個$translations變量的所有文字,像echo $translations['some.key']

1

如果您想要使用cookies ......在lang文件中,您將包括一系列要使用的單詞或內容。

<?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; 
    } 
    ?>