diff options
Diffstat (limited to 'front')
| -rw-r--r-- | front/src/App.tsx | 4 | ||||
| -rw-r--r-- | front/src/Emelents/IndexElement.tsx | 10 | ||||
| -rw-r--r-- | front/src/Emelents/Sidebar.tsx | 8 | ||||
| -rw-r--r-- | front/src/Emelents/Topbar.tsx | 4 | ||||
| -rw-r--r-- | front/src/Locales/Locales.ts | 18 |
5 files changed, 29 insertions, 15 deletions
diff --git a/front/src/App.tsx b/front/src/App.tsx index a685379..6bfce7b 100644 --- a/front/src/App.tsx +++ b/front/src/App.tsx @@ -7,6 +7,7 @@ import ClassesList from './Emelents/ClassList'; import Topbar from './Emelents/Topbar'; import { AllowedLanguages, LanguageContext } from './Locales/Context'; import { useState } from 'react'; +import { ReadCurrentLocale, SaveCurrentLocale } from './Locales/Locales'; const router = createBrowserRouter([ { @@ -20,10 +21,11 @@ const router = createBrowserRouter([ ]); function App() { - const [lang, setLang] = useState<AllowedLanguages>("en"); + const [lang, setLang] = useState<AllowedLanguages>(ReadCurrentLocale()); function SetLanguage(newLang: AllowedLanguages) { console.log(`Setting a new language ${newLang}...`); + SaveCurrentLocale(newLang); setLang(newLang); } diff --git a/front/src/Emelents/IndexElement.tsx b/front/src/Emelents/IndexElement.tsx index 9914e89..2209fe1 100644 --- a/front/src/Emelents/IndexElement.tsx +++ b/front/src/Emelents/IndexElement.tsx @@ -1,11 +1,13 @@ -import { useState } from "react"; -import { GetString } from "../Locales/Locales"; +import { useContext, useState } from "react"; +import { LanguageContext } from "../Locales/Context"; +import { GetLocalizedString } from "../Locales/Locales"; function IndexElement() { - const [lang, setLang] = useState('en'); + var lang = useContext(LanguageContext); + return ( <div> - <h1> {GetString("index", lang)} </h1> + <h1> {GetLocalizedString("index", lang)} </h1> </div> ); } diff --git a/front/src/Emelents/Sidebar.tsx b/front/src/Emelents/Sidebar.tsx index 4802e76..d94cef8 100644 --- a/front/src/Emelents/Sidebar.tsx +++ b/front/src/Emelents/Sidebar.tsx @@ -1,6 +1,6 @@ import { useContext } from 'react'; import { AllowedLanguages, LanguageContext } from '../Locales/Context'; -import { GetString } from '../Locales/Locales'; +import { GetLocalizedString } from '../Locales/Locales'; import './Elements.css'; type SidebarProps = { @@ -13,11 +13,11 @@ function Sidebar({setLang}: SidebarProps) { return ( <nav className='Sidebar'> <div className='SidebarContents'> - <button onClick={() => setLang("ru")}> ru </button> - <button onClick={() => setLang("en")}> en </button> - <h1> {GetString("contents", language)} </h1> + <h1> {GetLocalizedString("contents", language)} </h1> <ul> </ul> + <button onClick={() => setLang("ru")}> ru </button> + <button onClick={() => setLang("en")}> en </button> </div> </nav> ); diff --git a/front/src/Emelents/Topbar.tsx b/front/src/Emelents/Topbar.tsx index 667b42f..73e0e38 100644 --- a/front/src/Emelents/Topbar.tsx +++ b/front/src/Emelents/Topbar.tsx @@ -1,6 +1,6 @@ import { useContext } from "react"; import { LanguageContext } from "../Locales/Context"; -import { GetString } from "../Locales/Locales"; +import { GetLocalizedString } from "../Locales/Locales"; const defaultPathName = 'index'; @@ -12,7 +12,7 @@ function Topbar() { <div className="Topbar"> <h1> View from the edge </h1> <div className="TopbarContents"> - <h2> {GetString(path, language)} </h2> + <h2> {GetLocalizedString(path, language)} </h2> </div> </div> ); diff --git a/front/src/Locales/Locales.ts b/front/src/Locales/Locales.ts index af76045..6e6a33e 100644 --- a/front/src/Locales/Locales.ts +++ b/front/src/Locales/Locales.ts @@ -1,5 +1,4 @@ -import { createContext } from 'vm'; -import { LanguageContext } from './Context'; +import { AllowedLanguages } from './Context'; import en_us from './en_US'; import Language from './Language'; import ru_ru from './ru_RU'; @@ -12,13 +11,14 @@ const nameToLocale = new Map<string, Language>([ ['ru', ru_ru], ]); -function getCurrentLocale(lang: string): Language { +function getCurrentLocale(lang: AllowedLanguages): Language { const outp = nameToLocale.get(lang); if (outp == undefined) return defaultLocale; return outp; } -export function GetString(query: string, lang: string): string { +export function GetLocalizedString(query: string, lang: AllowedLanguages): string { + query = query.toLowerCase(); const locale = getCurrentLocale(lang); const found = locale.LocalizedStrings.get(query); if (found == undefined) return defaultLocale.LocalizedStrings.get(query) || query; @@ -28,3 +28,13 @@ export function GetString(query: string, lang: string): string { export function SetLocale(locale: string, setLang: (x: string) => void) { if (nameToLocale.has(locale)) setLang(locale); } + +const StorageLanguageName = "language"; + +export function SaveCurrentLocale(lang: AllowedLanguages) { + localStorage.setItem(StorageLanguageName, lang) +} + +export function ReadCurrentLocale(): AllowedLanguages { + return localStorage.getItem(StorageLanguageName) as AllowedLanguages || "en"; +} |
