日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php设置accept,PHP或htaccess通过Accept-Language重写URL?

發布時間:2023/12/19 php 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php设置accept,PHP或htaccess通过Accept-Language重写URL? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在PHP中這樣做。接受語言是一件復雜的事情。瀏覽器可以建議它想要接受的多種語言(每種語言都有一個顯示它更喜歡的品質因子)。

不幸的是,我的網站只有主要語言(EN,ES,FR)的翻譯,而不是(en_US,en_GB,es_MX,es_ES),因此我選擇了這些主要語言中指定的最高質量因子。

下面是一個未經測試的編輯,它應該從我的代碼中刪除大多數或所有依賴項。對不起,事情讓我以前的答案感到困惑。我對我的函數進行了幾次調用,并在其他地方進行了一些語言檢查。下面的代碼應該設置會話語言變量,您應該在其他地方使用它來確定正確的翻譯。

它似乎比我以前的答案復雜得多,我不得不在我自己的代碼中實現它。對于需要特定翻譯(EN_US,EN_GB)的人,應修改以下代碼以考慮preg_match_all中的匹配2。

$websiteLanguages = array('EN', 'ES');

session_start();

// The user wants a specific language regardless of their accept settings.

if (isset($_GET["lang"]))

{

$_SESSION["language"] = $_GET["lang"];

return;

}

// A language has already been decided upon.

if (isset($_SESSION["language"]))

{

return;

}

// No language has been chosen we should choose from the accept language.

if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))

{

// Parse the Accept-Language according to:

// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4

preg_match_all(

'/([a-z]{1,8})' . // M1 - First part of language e.g en

'(-[a-z]{1,8})*\s*' . // M2 -other parts of language e.g -us

// Optional quality factor M3 ;q=, M4 - Quality Factor

'(;\s*q\s*=\s*((1(\.0{0,3}))|(0(\.[0-9]{0,3}))))?/i',

$_SERVER['HTTP_ACCEPT_LANGUAGE'],

$langParse);

$langs = $langParse[1]; // M1 - First part of language

$quals = $langParse[4]; // M4 - Quality Factor

$numLanguages = count($langs);

$langArr = array();

for ($num = 0; $num < $numLanguages; $num++)

{

$newLang = strtoupper($langs[$num]);

$newQual = isset($quals[$num]) ?

(empty($quals[$num]) ? 1.0 : floatval($quals[$num])) : 0.0;

// Choose whether to upgrade or set the quality factor for the

// primary language.

$langArr[$newLang] = (isset($langArr[$newLang])) ?

max($langArr[$newLang], $newQual) : $newQual;

}

// sort list based on value

// langArr will now be an array like: array('EN' => 1, 'ES' => 0.5)

arsort($langArr, SORT_NUMERIC);

// The languages the client accepts in order of preference.

$acceptedLanguages = array_keys($langArr);

// Set the most preferred language that we have a translation for.

foreach ($acceptedLanguages as $preferredLanguage)

{

if (in_array($preferredLanguage, $websiteLanguages))

{

$_SESSION['Language'] = $preferredLanguage;

return;

}

}

}

// We will have returned by now if a language could be chosen, otherwise use

// our default language.

$_SESSION['Language'] = "EN";

總結

以上是生活随笔為你收集整理的php设置accept,PHP或htaccess通过Accept-Language重写URL?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。