2009-10-23 119 views
0

我想要做多語言網站使用PHP基於這樣的網站untiny.comPHP多語言網站

我嘗試用這個代碼,但沒有工作會議:

<? 

session_start(); 
$lang = $_GET['lang']; 
if (!isset($lang)) { 
    include ('ar/language.php'); 
    $lang = "ar"; 
} 
else if ($lang == "en") {include ('en/language.php'); $SESSION["lang"] = "en"; header("Location: http://it2.in/");} 
else if ($lang == "ar") {include ('ar/language.php'); $SESSION["lang"] = "ar"; header("Location: http://it2.in/");} 
else if ($lang != "ar" || "en") {header("Location: http://it2.in/"); header("Location: http://it2.in/");} 

?> 

任何人都可以幫助我。 謝謝


謝謝大家。 但@現在沒有什麼工作,是否有其他想法。

回答

2

可能你的問題是在最後一行。它應該像:

else if ($lang != "ar" || $lang != "en") {header("Location: http://it2.in/");} 

此外,我建議你創建一個單獨的陣列來存儲可用語言

$known_languages = array('en', 'ar'); ## just add new language here when you need 
session_start(); 

## if language is stored in SESSION then use it, otherwise use GET params 
if (array_key_exists('lang', $_SESSION)) { 
    $lang = $_SESSION['lang']; 
    include($lang.'/language.php'); 
    ## echo "You current language is <strong>$lang</strong>"; 
    include("page.php"); 
} 
else { 
    $lang = $_GET['lang']; 

    ## if language is not set or is not available, then use default value 
    if (!isset($lang) || !in_array($lang, $known_languages) { 
     $lang = "ar"; 
    } 
    include($lang.'/language.php'); 
    $SESSION["lang"] = $lang; 
    header("Location: http://it2.in/"); 
} 
+0

我試試這個代碼,但是當我運行的網站給了我環路錯誤「該頁沒有正確重定向「 – jack55 2009-10-23 19:14:24

+0

嘗試使用'header(」Location:new_page.html「);'而不是'http:// it2.in /' – 2009-10-23 20:20:15

+0

也不能正常工作:( – jack55 2009-10-23 20:35:49

1

你能解釋一下究竟是什麼不起作用?

您的if語句存在錯誤。最後一個else if總是如此,因爲你正在比較字符串「en」的比較結果。一個else語句將完成這項工作。

<? 

    session_start(); 
    $lang = $_GET['lang']; 
    if (!isset($lang)) { 
     include ('ar/language.php'); 
     $lang = "ar"; 
    } 
    else if ($lang == "en") {include ('en/language.php'); $SESSION["lang"] = "en"; header("Location: http://it2.in/");} 
    else if ($lang == "ar") {include ('ar/language.php'); $SESSION["lang"] = "ar"; header("Location: http://it2.in/");} 
    else {header("Location: http://it2.in/"); header("Location: http://it2.in/");} 

?> 
1
$lang= $_GET['lang']; 
include $lang . "/language.php"; 

PHP默認爲禁用這些類型的包含,所以你必須手動啓用它。

真正的問題是:language.php中是什麼?

// en/language.php 
$MESSAGES[0] = "Hello"; 
// es/language.php 
$MESSAGES[0] = "Hola"; 
// fr/language.php 

然後在你的代碼,你做的事:

print "<h1>" . $MESSAGES[0] . "</h1>"; 

這不會擴大,而你的頭會explote非常快(等待,消息是1023或1022或2149???)。請考慮將您的代碼移植到GetText,恕我直言是一個更好的解決方案,並允許您添加新的語言而無需新的代碼。這是來自谷歌的第一擊,它會給你一個良好的開端。如果您需要更多信息,請圍繞。 http://www.phpdig.net/ref/rn26.html

+0

+1在language.php可變暗示的getText – 2009-10-23 19:01:33

+0

這樣的: $標題 和HTML: jack55 2009-10-23 19:16:16

+0

如果($ _REQUEST [ 'bday1'] &&!$ _REQUEST ['bday2']) $ error_user_forgot_to_add_birthday_to_page_1_but_he_wrote_on_page2 - >錯誤的錯誤代碼...再次,這不會在現實生活中擴大規模。被警告。 – elcuco 2009-10-23 21:36:02

1

當你使用頭函數時,一定要考慮使用exit();後 停止代碼

<?php 
session_start(); 
$lang = $_GET['lang']; 
if (!isset($lang)) { 
    include ('ar/language.php'); 
    $lang = "ar"; 
} 
else if ($lang == "en") { 
include ('en/language.php'); 
$SESSION["lang"] = "en"; 
header("Location: http://it2.in/"); 
exit(); 
} 
else if ($lang == "ar") { 
include ('ar/language.php'); 
$SESSION["lang"] = "ar"; 
header("Location: http://it2.in/"); 
exit(); 
} 
else if ($lang != "ar" || $lang != "en") { 
header("Location: http://it2.in/"); 
exit(); 
} 

?> 

現在的執行,你應該被重定向到您想要的頁面:)

0
<?php 
session_start(); 

$lang = &$_SESSION['lang']; 
$lang = $_GET['lang']; 
switch ($lang) 
{ 
    case 'en' : 
     include ($lang . '/language.php'); 
     break; 
    case 'ar' : 
    default : 
     include ('ar/language.php'); 
     $lang = 'ar'; 
} 

header('Location: http://it2.in/'); 
?> 
+0

給我循環錯誤「頁面沒有正確重定向」 – jack55 2009-10-23 20:39:13