mirror of
https://github.com/rustdesk/doc.rustdesk.com.git
synced 2025-06-20 17:57:47 +02:00
Merge pull request #129 from jimmyGALLAND/fix-detect-language
fix and improves compatibility with the browser language detector
This commit is contained in:
commit
e405967397
@ -12,17 +12,26 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const default_language = 'en'
|
|
||||||
var root_path = (new URL('{{ site.BaseURL }}')).pathname;
|
var deleteFinalSlash = function(s){
|
||||||
|
if ( s.substr(-1) == '/' ){
|
||||||
|
return s.slice(0, -1)
|
||||||
|
}else{
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const default_language = '{{ site.Language.Lang }}'
|
||||||
|
const wlp = deleteFinalSlash(window.location.pathname)
|
||||||
|
const root_path = deleteFinalSlash( (new URL('{{ site.BaseURL }}')).pathname )
|
||||||
|
|
||||||
// Only do i18n at root,
|
// Only do i18n at root,
|
||||||
// otherwise, redirect immediately
|
// otherwise, redirect immediately
|
||||||
|
if ( wlp !== root_path) {
|
||||||
if ( window.location.pathname !== root_path) {
|
|
||||||
window.location.replace('{{ .Permalink }}')
|
window.location.replace('{{ .Permalink }}')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var getFirstBrowserLanguage = function () {
|
var getFirstBrowserLanguage = function () {
|
||||||
var nav = window.navigator,
|
var nav = window.navigator,
|
||||||
browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'],
|
browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'],
|
||||||
@ -33,7 +42,7 @@
|
|||||||
for (i = 0; i < nav.languages.length; i++) {
|
for (i = 0; i < nav.languages.length; i++) {
|
||||||
language = nav.languages[i]
|
language = nav.languages[i]
|
||||||
if (language && language.length) {
|
if (language && language.length) {
|
||||||
return language
|
return language.replace('_', '-').toLowerCase()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -41,25 +50,43 @@
|
|||||||
for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
|
for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
|
||||||
language = nav[browserLanguagePropertyKeys[i]]
|
language = nav[browserLanguagePropertyKeys[i]]
|
||||||
if (language && language.length) {
|
if (language && language.length) {
|
||||||
return language
|
return language.replace('_', '-').toLowerCase()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return default_language
|
return default_language
|
||||||
}
|
}
|
||||||
|
|
||||||
const list_languages = ({{site.Languages}}).map(function(value,index) { return value['Lang']; })
|
var languages_available = [];
|
||||||
|
( {{ site.Languages }} ).forEach(
|
||||||
|
function(value,index) {
|
||||||
|
if ( value['Disabled'] == false ){
|
||||||
|
languages_available.push(value['Lang'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
const nav_lang = getFirstBrowserLanguage()
|
const nav_lang = getFirstBrowserLanguage()
|
||||||
|
|
||||||
if ( root_path.substr(-1) == '/' ) root_path = root_path.slice(0, -1)
|
var found_lang = default_language
|
||||||
|
|
||||||
if ( list_languages.indexOf( nav_lang ) !== -1 ){
|
if ( languages_available.indexOf( nav_lang ) !== -1 ){
|
||||||
window.location.replace(`${root_path}/${nav_lang}/`)
|
|
||||||
} else {
|
found_lang = nav_lang
|
||||||
// fallback to English
|
|
||||||
window.location.replace(`${root_path}/${default_language}/`)
|
}else if ( nav_lang.length > 2 ) {
|
||||||
|
|
||||||
|
const short_code_lang = nav_lang.slice(0,2)
|
||||||
|
|
||||||
|
if ( languages_available.indexOf( short_code_lang ) !== -1 ){
|
||||||
|
found_lang = short_code_lang
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
window.location.replace(`${root_path}/${found_lang}/`)
|
||||||
|
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user