From 9a7c70bd55b3e3ba8c55214f6f6dbe39583fdab4 Mon Sep 17 00:00:00 2001 From: MathMan05 Date: Fri, 1 Nov 2024 13:31:15 -0500 Subject: [PATCH] added language switcher and defualt language finder --- src/webpage/i18n.ts | 23 ++++++++++++++++- src/webpage/localuser.ts | 43 +++++++++++++++++++------------- src/webpage/translations/en.json | 5 ++-- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/src/webpage/i18n.ts b/src/webpage/i18n.ts index 6a2f533..162086c 100644 --- a/src/webpage/i18n.ts +++ b/src/webpage/i18n.ts @@ -105,6 +105,27 @@ class I18n{ return trans; } } + static options(){ + return ["en","ru"] + } + static setLanguage(lang:string){ + if(this.options().indexOf(userLocale)!==-1){ + localStorage.setItem("lang",lang); + I18n.create("/translations/en.json",lang); + } + } } -I18n.create("/translations/en.json","en") + +let userLocale = navigator.language.slice(0,2) || "en"; +if(I18n.options().indexOf(userLocale)===-1){ + userLocale="en"; +} +const storage=localStorage.getItem("lang"); +if(storage){ + userLocale=storage; +}else{ + localStorage.setItem("lang",userLocale) +} +I18n.create("/translations/en.json",userLocale); + export{I18n}; diff --git a/src/webpage/localuser.ts b/src/webpage/localuser.ts index ba03042..db9dbc9 100644 --- a/src/webpage/localuser.ts +++ b/src/webpage/localuser.ts @@ -1243,25 +1243,7 @@ class Localuser{ { initColor: userinfos.accent_color } ); } - { - const box=tas.addCheckboxInput(I18n.getTranslation("localuser.enableEVoice"),()=>{},{initState:Boolean(localStorage.getItem("Voice enabled"))}); - box.onchange=(e)=>{ - if(e){ - if(confirm(I18n.getTranslation("localuser.VoiceWarning"))){ - localStorage.setItem("Voice enabled","true") - }else{ - box.value=true; - const checkbox=box.input.deref(); - if(checkbox){ - checkbox.checked=false; - } - } - }else{ - localStorage.removeItem("Voice enabled"); - } - } - } } { const update=settings.addButton(I18n.getTranslation("localuser.updateSettings")) @@ -1434,6 +1416,31 @@ class Localuser{ } }); }); + + security.addSelect(I18n.getTranslation("localuser.language"),(e)=>{ + I18n.setLanguage(I18n.options()[e]); + },I18n.options(),{ + defaultIndex:I18n.options().indexOf(I18n.lang) + }); + { + const box=security.addCheckboxInput(I18n.getTranslation("localuser.enableEVoice"),()=>{},{initState:Boolean(localStorage.getItem("Voice enabled"))}); + box.onchange=(e)=>{ + if(e){ + if(confirm(I18n.getTranslation("localuser.VoiceWarning"))){ + localStorage.setItem("Voice enabled","true") + + }else{ + box.value=true; + const checkbox=box.input.deref(); + if(checkbox){ + checkbox.checked=false; + } + } + }else{ + localStorage.removeItem("Voice enabled"); + } + } + } }; genSecurity(); } diff --git a/src/webpage/translations/en.json b/src/webpage/translations/en.json index a927fa3..c7cce94 100644 --- a/src/webpage/translations/en.json +++ b/src/webpage/translations/en.json @@ -303,7 +303,8 @@ "saveToken":"Save token to localStorage", "noToken":"Don't know token so can't save it to localStorage, sorry", "advancedBot":"Advanced Bot Settings", - "botInviteCreate":"Bot Invite Creator" + "botInviteCreate":"Bot Invite Creator", + "language":"Language:" }, "instanceStats":{ "name":"Instance stats: $1", @@ -370,5 +371,5 @@ "retrying":"Retrying...", "unableToConnect":"Unable to connect to the Spacebar server. Please try logging out and back in." }, - "ru": "./ru.json" + "ru": "/translations/ru.json" }