Home  >  Article  >  Operation and Maintenance  >  How to configure Nginx page jump according to different browser languages

How to configure Nginx page jump according to different browser languages

王林
王林forward
2023-05-13 13:37:111086browse

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

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

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

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


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

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete