Skip to content

Commit

Permalink
Added German language and other Multi-Language-Features
Browse files Browse the repository at this point in the history
  • Loading branch information
CraftException committed Jul 2, 2021
1 parent fbeeb3d commit 068df56
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 10 deletions.
17 changes: 16 additions & 1 deletion backend/ApiHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const {version} = require("../package.json");
// Import Password Hashing
import * as hashing from "password-hash";
import {sendRecoveryMail} from "./mailHelper";
import {LanguageManager} from "./LanguageManager";

// Get Router
const router = express.Router();
Expand Down Expand Up @@ -93,6 +94,21 @@ router.post("/api/login", (req, res) => {
}
});

// Update the language
router.get("/api/lang", (req, res) => {
LanguageManager.initializeLang(req, res);

if (!LanguageManager.languageExists(req.query["lang"].toString())) {
res.json({
message: "Language not found"
});
return;
} else {
LanguageManager.updateLanguage(res, req.query["lang"].toString());
res.redirect(req.query["source"].toString());
}
});

// Check if the user is logged in
router.get("/api/isLoggedIn", (req, res) => {
SessionHandler.initializeSession(req, res);
Expand All @@ -109,7 +125,6 @@ router.get("/api/isLoggedIn", (req, res) => {
message: "Not logged in",
});
}
console.log(req.cookies)
});

// Register a new account
Expand Down
19 changes: 15 additions & 4 deletions backend/LanguageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export module LanguageManager {

loagLanguages();
const LANGUAGE_COOKIE_KEY:string = "LANG";
const DEFAULT_LANG:string = "en";
export const DEFAULT_LANG:string = "en";

export const languages:object[] = []

Expand All @@ -23,6 +23,10 @@ export module LanguageManager {
CookieAPI.setCookie(res, LANGUAGE_COOKIE_KEY, DEFAULT_LANG)
}

export function updateLanguage(res, lang):void {
CookieAPI.setCookie(res, LANGUAGE_COOKIE_KEY, lang);
}

export function getLanguage(lang:string):object {
if (!languages[lang])
loagLanguages();
Expand All @@ -44,10 +48,17 @@ export module LanguageManager {
return Object.keys(languages);
}

export function getLanguagesLongCodes() {
var languageLongCodes:string[] = [];
export function languageExists(language:string):boolean {
return languages[language] != undefined;
}

export function getLanguagesCodes() {
var languageLongCodes:object[] = [];
getAllLanguages().forEach(lang => {
languageLongCodes.push(getLanguage(lang)["names"]["long"]);
languageLongCodes.push({
names: getLanguage(lang)["names"],
code: getLanguage(lang)["details"]["lang"]
});
});
return languageLongCodes;
}
Expand Down
103 changes: 103 additions & 0 deletions lang/de.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"details": {
"lang": "de",
"fallback": "en",
"version": "0.0.1",
"finished": true
},
"names": {
"short": "DE",
"long": "German"
},

"lang": {
"footer": {
"about": "Über Lnkdto.link",
"description": "Lnkdto.link ist ein simpler URL-Kürzer um lange URLs zu kürzen",
"legal": {
"legal": "Rechtliches",
"imprint": "Impressum",
"privacy": "Datenschutz"
},
"copyright": "© 2021 CraftException und"
},

"header": {
"longUrl": "Lange URL",
"button": "Link kürzen"
},

"modals": {
"login": {
"title": "Einloggen",
"name": "Name",
"password": "Passwort",
"button": "Anmelden",
"passwordLost": "Passwort vergessen?"
},
"register": {
"title": "Registrieren",
"email": "E-Mail Addresse",
"name": "Name",
"password": "Passwort",
"button": "Registrieren"
},
"passwordRecovery": {
"title": "Passwort zurücksetzen",
"username": "Benutzname",
"button": "Passwort zurücksetzen"
}
},

"navbar": {
"brand": "lnkdto.link (beta)",
"home": "Startseite",
"account": {
"account": "Account",
"shortenurls": "Deine gekürzten URLs",
"edituser": "Account bearbeiten",
"logout": "Abmelden",
"login": "Einloggen",
"register": "Registrieren"
},
"statistics": "Statistiken",
"github": "GitHub",
"jusoft": "JuSoft"
},

"edituser": {
"mail": {
"title": "Mail ändern",
"newMail": "Neue Mail",
"updateMail": "Neue Mail wiederholen",
"button": "Mail ändern"
},
"password": {
"title": "Passwort ändern",
"newPassword": "Neues Passwort",
"repeatPassword": "Neues Passwort wiederholen",
"button": "Passwort ändern"
}
},

"stats": {
"shortenUrls": "Gekürzte URLs",
"totalClicks": "Gesamt Aufrufe",
"mostClicks": "Meistgeklickte URL",
"users": "Registrierte Nutzer"
},

"overview": {
"title": "Deine gekürzten URLs",
"noURLs": "Du hast noch keine URL gekürzt",
"buttons": {
"stats": "Statistiken",
"open": "Link öffnen",
"delete": "Link löschen"
},
"detailedStats": "Statisiken von",
"totalClicks": "Gesamte Aufrufe:",
"clicks": "Aufrufe"
}
}
}
2 changes: 1 addition & 1 deletion layout/partials/navbar.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
</a>
<div class="dropdown-menu dropdown-menu-right navDropdown" aria-labelledby="navbarDropdownMenuLink">
<% availableLangs.forEach(function (lang) { %>
<a href="/api/lang?lang=<%= lang %>" class="dropdown-item" id="lang_en"><%= lang %></a>
<a onclick="document.location.href='/api/lang?lang=<%= lang.code %>&source=' + document.location.href" class="dropdown-item" id="lang_en"><%= lang.names.long %></a>
<% }) %>
</div>
</li>
Expand Down
12 changes: 8 additions & 4 deletions router/Main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ const router = express.Router();

router.get("*", (req, res, next) => {
LanguageManager.initializeLang(req, res);

if (!LanguageManager.languageExists(LanguageManager.getLanguageCode(req))) {
LanguageManager.updateLanguage(res, LanguageManager.DEFAULT_LANG);
}
next();
});

Expand All @@ -23,7 +27,7 @@ router.get("/", (req, res) => {
navbarWithForm: true,
isLoggedIn: typeof SessionHandler.getStorage(req)["username"] !== 'undefined',
selectedLangShortCode: LanguageManager.getLanguage(LanguageManager.getLanguageCode(req))["names"]["short"],
availableLangs: LanguageManager.getLanguagesLongCodes(),
availableLangs: LanguageManager.getLanguagesCodes(),
view: "start"
});
});
Expand All @@ -33,7 +37,7 @@ router.get("/stats", (req, res) => {
navbarWithForm: false,
isLoggedIn: typeof SessionHandler.getStorage(req)["username"] !== 'undefined',
selectedLangShortCode: LanguageManager.getLanguage(LanguageManager.getLanguageCode(req))["names"]["short"],
availableLangs: LanguageManager.getLanguagesLongCodes(),
availableLangs: LanguageManager.getLanguagesCodes(),
view: "stats"
});
});
Expand All @@ -43,7 +47,7 @@ router.get("/user/edituser", (req, res) => {
navbarWithForm: true,
isLoggedIn: typeof SessionHandler.getStorage(req)["username"] !== 'undefined',
selectedLangShortCode: LanguageManager.getLanguage(LanguageManager.getLanguageCode(req))["names"]["short"],
availableLangs: LanguageManager.getLanguagesLongCodes(),
availableLangs: LanguageManager.getLanguagesCodes(),
view: "edituser"
});
});
Expand All @@ -53,7 +57,7 @@ router.get("/user/usercontrol", (req, res) => {
navbarWithForm: true,
isLoggedIn: typeof SessionHandler.getStorage(req)["username"] !== 'undefined',
selectedLangShortCode: LanguageManager.getLanguage(LanguageManager.getLanguageCode(req))["names"]["short"],
availableLangs: LanguageManager.getLanguagesLongCodes(),
availableLangs: LanguageManager.getLanguagesCodes(),
view: "usercontrol"
});
});
Expand Down

0 comments on commit 068df56

Please sign in to comment.