summaryrefslogtreecommitdiff
path: root/front
diff options
context:
space:
mode:
Diffstat (limited to 'front')
-rw-r--r--front/src/App.tsx4
-rw-r--r--front/src/Emelents/IndexElement.tsx10
-rw-r--r--front/src/Emelents/Sidebar.tsx8
-rw-r--r--front/src/Emelents/Topbar.tsx4
-rw-r--r--front/src/Locales/Locales.ts18
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";
+}