我構建PHP頁面的多語言支持。 比方說,我有一個網頁,網址:PHP多語言GET參數
http://mypage.php?user=eric&city=newyork
至極是常見的解決方案,使參數之間進行切換郎= EN和lang = es編輯而在網址中已經保持GET參數?
感謝 盧卡
我構建PHP頁面的多語言支持。 比方說,我有一個網頁,網址:PHP多語言GET參數
http://mypage.php?user=eric&city=newyork
至極是常見的解決方案,使參數之間進行切換郎= EN和lang = es編輯而在網址中已經保持GET參數?
感謝 盧卡
,在當前「GET數據」返回當前頁面的相對URL一個有用的腳本。
<?php
function getCurrentURL() {
$currentURL = basename($_SERVER["PHP_SELF"]);
$i = 0;
foreach($_GET as $key => $value) {
$i++;
if($i == 1) { $currentURL .= "?"; }
else { $currentURL .= "&"; }
$currentURL .= $key."=".$value;
}
return $currentURL;
}
?>
修改,並相應地串連你的語言參數
計劃,如果你去要使用這種方法,那麼在你調用函數之前,你可以執行'isset($ _ GET ['lang'])? $ _GET ['lang']:'en''當你調用函數時它會自動將它附加到URL。 – RobertPitt 2011-03-30 08:45:17
這是一個非常棒的功能,真的幫了我很大的忙。我在返回前添加了以下內容,所以我可以使用它,而不必擔心是否獲取參數:if($ i!= 0){$ currentURL。='&';} \t else {$ currentURL。= '?';} – 2011-07-08 10:37:12
你不會保持GET PARAMS在網址在任何時候,只有當你設定的語言,你會使用會話記住什麼語言,目前客戶正在使用。
在你的PHP創建下面的函數
function getCurrentLanguage()
{
if(isset($_REQUEST['lang']))
{
//Validate that $_REQUEST['lang'] is valid
return $_SESSION['lang'] = $_REQUEST['lang'];
}
if(isset($_SESSION['lang']))
{
return $_SESSION['lang'];
}
return 'en'; //Default
}
現在,當用戶進入網站的默認語言是英語,但如果他導航到index.php?lang=es
那麼這種語言將被設置爲ES,所以當他在沒有?lang=es
的情況下瀏覽網站,然後顯示西班牙語版本。
感謝羅伯特如果即時通訊在搜索中(我有一個在使用GET參數的頁面中的搜索欄),我想切換語言,但仍然保持搜索creterea在url?=) – luca 2011-03-29 10:05:27
然後,您將在語言的表單中放置一個下拉框,例如'',然後語言將與搜索一起發送,如果上述功能是在你製作任何內容之前調用它會很好。 – RobertPitt 2011-03-29 10:09:04
'getCurrentLanguage()'將總是返回該用戶的最後已知的設置語言,如果用戶從未選擇過默認爲'en'的語言,則一旦通過了'lang = xx',就不需要它通過再次,它會記住該用戶在網站上。另外,您可以使用cookie並將有效期設置爲1年。 – RobertPitt 2011-03-29 10:11:50
最好使用cookie或session/id數據來存儲這類信息。 我會有更少的東西隨身攜帶。
如果我正確理解問題,則需要一種方法將參數添加到URL或使用新值替換其值(如果它已存在)。
下面是URL中的所有方式,以便安全地做一個函數:
function url_with_parameter($url, $name, $value) {
if(strpos($url, '?') === false) {
if (strpos($url, '#') === false) {
// No query and no fragment -- append a new query to the url
$newurl = $url.'?'.$name.'='.$value;
}
else {
// No query with fragment -- insert query before existing fragment
$newurl = str_replace('#', '?'.$name.'='.$value.'#', $url);
}
}
else {
if (strpos($url, $name.'=') === false) {
// With query, param does not exist -- insert at beginning of query
$newurl = str_replace('?', '?'.$name.'='.$value.'&', $url);
}
else {
// With query, param exists -- replace it
$parsed = parse_url($url, PHP_URL_QUERY);
parse_str($parsed, $vars);
$newurl = str_replace($name.'='.$vars[$name], $name.'='.$value, $url);
}
}
return $newurl;
}
記住使用此函數的輸出做一個鏈接之前調用urlencode
。
你可以用我喜歡的語言PHP Multi Language Class - LangQuery
這是我見過的最簡單的一個。
您可以保存您的語言數據.ini文件不僅僅是通過
include("LangQuery.php");
$L=new LangQuery();
// Write Hello World
echo($L('hello_world'));
// Write Hello World Easier - In-line Echo Feature
// You don't have to write echo. Just add '>'
$L('>hello_world');
// Use in Strings
echo("Hello Universe. {$L('hello_world')} Hello Europe");
// Write my age with parameter
$L(">my_age",25);
// Write my name and age with parameters
$L(">my_name_age","Recep",25);
以及調用它,我想是這樣......如果不是llike'en.wikipedia.org'或工程 – 2011-03-29 09:42:46