How to configure Nginx page jump according to different browser languages

王林
Release: 2023-05-13 13:37:11
forward
1109 people have browsed it

Simplified and Traditional Chinese Judgment

I want to decide whether to provide simplified or traditional Chinese files based on the accept-language in the http header. In chrome, chrome://settings/languages ​​can set the preferred language, and the browser will set the accept-language header accordingly. A better way to handle it is to parse the field, obtain the qvalue, and select the most appropriate language based on priority. But it is only used to support Simplified and Traditional Chinese. I want to use a trick: ignore the priority, and as long as the words zh-hant, zh-tw, zh-hk and other words appear in accept-language, return to Traditional Chinese, otherwise return to Simplified Chinese.

map $http_accept_language $lang {
 default zhs;
 ~zh-hant zht;
 ~zh-tw zht;
 ~zh-hk zht;
}
Copy after login

I use hexo to generate the website, and the source files are written in traditional Chinese. For the 2015-10-06-nginx-accept-language-zhs-zht.html generated by hexo generate, use opencc to convert it to the simplified version: 2015-10-06-nginx-accept-language-zhs-zht.html.zhs .html. Depending on the situation, some other files need to be converted, such as atom.xml and popular.json that provide the "most read articles" function.

# zsh
cd ~/maskray.me/public
opencc -c t2s.json -i atom.xml -o atom.xml.zhs.xml
for i in **/*.html 20*; do # 选择需要简繁体支持的文件
 c=${#${(s/.html/%)i}//[^%]/} # 计算子串`.html`出现次数
 if (( $c <= 1 )); then   # 出现一次的为原始文件,需要转换成简体
 opencc -c t2s.json -i $i -o $i.zhs.html
 fi
done
Copy after login

Specify routes that require simplified and traditional Chinese support in the nginx configuration file:

location ~ ^/blog/20?? {
 try_files $uri.$lang.html $uri =404;
 add_header vary accept-language;
}

location ~ /atom.xml {
 try_files $uri.$lang.xml $uri =404;
 add_header vary accept-language;
}

location ~ \.json$ {
 try_files $uri.$lang.json $uri =404;
 add_header vary accept-language;
}

# 其他需要简繁体支持的路由
Copy after login


Forward to different pages based on the accept-language in the http request header:
Go directly to the code

if ($http_accept_language ~* ^zh){
    set $lang "/index_cn.jsp";
}
if ($http_accept_language !~* ^zh){
    set $lang "/index_en.jsp";
}
 
location =/ {
    proxy_set_header host $host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $remote_addr;
    proxy_pass http://localhost:8080$lang;
}
Copy after login

Test:
http://www.findmaven.net is a search engine for findjar and findmaven
Browser settings (English)

How to configure Nginx page jump according to different browser languages

How to configure Nginx page jump according to different browser languages

##Return


How to configure Nginx page jump according to different browser languages

Browser settings (Chinese)


How to configure Nginx page jump according to different browser languages

return


How to configure Nginx page jump according to different browser languages

The above is the detailed content of How to configure Nginx page jump according to different browser languages. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!