Fix language driver for deployment
This commit is contained in:
parent
e17bdda081
commit
eb796bfa51
|
@ -0,0 +1,6 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "en",
|
||||||
|
"name": "English"
|
||||||
|
}
|
||||||
|
]
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../lib/utils/langDriver';
|
||||||
interface Props {
|
interface Props {
|
||||||
loggedIn: string;
|
loggedIn: string;
|
||||||
active: string;
|
active: string;
|
||||||
|
@ -19,7 +19,7 @@ interface NavElement {
|
||||||
dropdowns?: Array<NavElement>;
|
dropdowns?: Array<NavElement>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const lang = await getLocales(getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'navbar');
|
const lang = await getLocales(await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'navbar');
|
||||||
|
|
||||||
const listOfElements: Array<NavElement> = [{
|
const listOfElements: Array<NavElement> = [{
|
||||||
id: "home",
|
id: "home",
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
---
|
---
|
||||||
import { ObjectId } from 'mongodb';
|
import { ObjectId } from 'mongodb';
|
||||||
import { calculateCurrentAvailableResources, getUserResources } from '../lib/utils/resourceManager';
|
import { calculateCurrentAvailableResources, getUserResources } from '../lib/utils/resourceManager';
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../lib/utils/langDriver';
|
||||||
|
|
||||||
import resourceTypes from '../lib/data/resources.json';
|
import resourceTypes from '../lib/data/resources.json';
|
||||||
|
|
||||||
const resourceLang = await getLocales(getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'resources');
|
const resourceLang = await getLocales(await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'resources');
|
||||||
const resBarLang = await getLocales(getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'resourcebar');
|
const resBarLang = await getLocales(await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'resourcebar');
|
||||||
|
|
||||||
const resources = await calculateCurrentAvailableResources(new ObjectId(Astro.cookies.get('userid')?.value ?? ''));
|
const resources = await calculateCurrentAvailableResources(new ObjectId(Astro.cookies.get('userid')?.value ?? ''));
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
import fs from 'fs';
|
export async function getSupportedLanguages() {
|
||||||
import path from 'path';
|
const metadata: [] = await (await fetch('http://localhost:4321/lang/metadata.json')).json();
|
||||||
import { fileURLToPath } from 'url';
|
|
||||||
|
|
||||||
export function getSupportedLanguages() {
|
const response: Array<string> = [];
|
||||||
const supportedLanguages = fs.readdirSync(path.dirname(fileURLToPath(import.meta.url))).filter((file: string) => {
|
|
||||||
return fs.statSync(path.join(path.dirname(fileURLToPath(import.meta.url)), file)).isDirectory();
|
metadata.forEach((lang: any) => {
|
||||||
|
response.push(lang.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
return supportedLanguages;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getHighestWeightedLanguage(header: string | null): any {
|
export async function getHighestWeightedLanguage(header: string | null): Promise<any> {
|
||||||
if(header === null) return 'en';
|
if(header === null) return 'en';
|
||||||
const supportedLanguages = getSupportedLanguages();
|
const supportedLanguages = await getSupportedLanguages();
|
||||||
|
|
||||||
const langs = header.split(',');
|
const langs = header.split(',');
|
||||||
let highestWeight = 0;
|
let highestWeight = 0;
|
||||||
|
@ -33,11 +33,12 @@ export function getHighestWeightedLanguage(header: string | null): any {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getLocales(language: string, type: string) {
|
export async function getLocales(language: string, type: string) {
|
||||||
if(!getSupportedLanguages().includes(language)) {
|
if(!(await getSupportedLanguages()).includes(language)) {
|
||||||
|
console.log(await getSupportedLanguages(), language)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const lang = (await import(`./${language}/${type}.json`)).default;
|
const lang = await (await fetch(`http://localhost:4321/lang/${language}/${type}.json`)).json();
|
||||||
const out: any = {};
|
const out: any = {};
|
||||||
|
|
||||||
for(const category in lang) {
|
for(const category in lang) {
|
|
@ -2,7 +2,7 @@
|
||||||
import Layout from '../../layouts/Layout.astro';
|
import Layout from '../../layouts/Layout.astro';
|
||||||
import NavBar from '../../components/NavBar.astro';
|
import NavBar from '../../components/NavBar.astro';
|
||||||
import { getUserByAccessToken } from '../../lib/db/users';
|
import { getUserByAccessToken } from '../../lib/db/users';
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
|
||||||
import ResourceBar from '../../components/ResourceBar.astro';
|
import ResourceBar from '../../components/ResourceBar.astro';
|
||||||
// import { calculateCurrentAvailableResources } from '../../lib/utils/resourceManager';
|
// import { calculateCurrentAvailableResources } from '../../lib/utils/resourceManager';
|
||||||
// import { getUserResources } from '../../lib/utils/resourceManager';
|
// import { getUserResources } from '../../lib/utils/resourceManager';
|
||||||
|
@ -18,7 +18,7 @@ if(checkUser === null || checkUser.username !== username) return Astro.redirect(
|
||||||
|
|
||||||
// const resources = await getUserResources(checkUser._id);
|
// const resources = await getUserResources(checkUser._id);
|
||||||
|
|
||||||
const locale = getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
||||||
|
|
||||||
const langResources = await getLocales(locale, 'resources');
|
const langResources = await getLocales(locale, 'resources');
|
||||||
const langGame = await getLocales(locale, 'game');
|
const langGame = await getLocales(locale, 'game');
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import Layout from '../../layouts/Layout.astro';
|
import Layout from '../../layouts/Layout.astro';
|
||||||
import NavBar from '../../components/NavBar.astro';
|
import NavBar from '../../components/NavBar.astro';
|
||||||
import { getAllUsers, getUserByAccessToken } from '../../lib/db/users';
|
import { getAllUsers, getUserByAccessToken } from '../../lib/db/users';
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
|
||||||
import format from '../../lib/utils/format';
|
import format from '../../lib/utils/format';
|
||||||
|
|
||||||
const loggedToken = Astro.cookies.get('sessionToken')?.value ?? null;
|
const loggedToken = Astro.cookies.get('sessionToken')?.value ?? null;
|
||||||
|
@ -14,7 +14,7 @@ if(checkUser === null || checkUser.username !== username) return Astro.redirect(
|
||||||
|
|
||||||
const allUsers = await getAllUsers();
|
const allUsers = await getAllUsers();
|
||||||
|
|
||||||
const langGame = await getLocales(getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'game');
|
const langGame = await getLocales(await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), 'game');
|
||||||
---
|
---
|
||||||
|
|
||||||
<Layout title="Galaxy view">
|
<Layout title="Galaxy view">
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import Layout from '../../layouts/Layout.astro';
|
import Layout from '../../layouts/Layout.astro';
|
||||||
import NavBar from '../../components/NavBar.astro';
|
import NavBar from '../../components/NavBar.astro';
|
||||||
import { getUserByAccessToken, getUserByNickOrEmail } from '../../lib/db/users';
|
import { getUserByAccessToken, getUserByNickOrEmail } from '../../lib/db/users';
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
|
||||||
import ResourceBar from '../../components/ResourceBar.astro';
|
import ResourceBar from '../../components/ResourceBar.astro';
|
||||||
import format from '../../lib/utils/format';
|
import format from '../../lib/utils/format';
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
|
||||||
const checkUser = await getUserByAccessToken(loggedToken);
|
const checkUser = await getUserByAccessToken(loggedToken);
|
||||||
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
||||||
|
|
||||||
const locale = getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
||||||
|
|
||||||
const user = await getUserByNickOrEmail(username);
|
const user = await getUserByNickOrEmail(username);
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { Icon } from 'astro-icon/components'
|
||||||
import Layout from '../../layouts/Layout.astro';
|
import Layout from '../../layouts/Layout.astro';
|
||||||
import NavBar from '../../components/NavBar.astro';
|
import NavBar from '../../components/NavBar.astro';
|
||||||
import { getUserByAccessToken } from '../../lib/db/users';
|
import { getUserByAccessToken } from '../../lib/db/users';
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
|
||||||
import ResourceBar from '../../components/ResourceBar.astro';
|
import ResourceBar from '../../components/ResourceBar.astro';
|
||||||
|
|
||||||
type ResearchDetail = { id: string, level: number, requiredResearch: { id: string, level: number}[], cost: { [key: string]: number } };
|
type ResearchDetail = { id: string, level: number, requiredResearch: { id: string, level: number}[], cost: { [key: string]: number } };
|
||||||
|
@ -18,7 +18,7 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
|
||||||
const checkUser = await getUserByAccessToken(loggedToken);
|
const checkUser = await getUserByAccessToken(loggedToken);
|
||||||
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
||||||
|
|
||||||
const locale = getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
||||||
|
|
||||||
const langResources = await getLocales(locale, 'resources');
|
const langResources = await getLocales(locale, 'resources');
|
||||||
const langGame = await getLocales(locale, 'game');
|
const langGame = await getLocales(locale, 'game');
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import Layout from '../../layouts/Layout.astro';
|
import Layout from '../../layouts/Layout.astro';
|
||||||
import NavBar from '../../components/NavBar.astro';
|
import NavBar from '../../components/NavBar.astro';
|
||||||
import { getUserByAccessToken } from '../../lib/db/users';
|
import { getUserByAccessToken } from '../../lib/db/users';
|
||||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/lang/langDriver';
|
import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
|
||||||
import ResourceBar from '../../components/ResourceBar.astro';
|
import ResourceBar from '../../components/ResourceBar.astro';
|
||||||
|
|
||||||
import ships from '../../lib/data/ships.json';
|
import ships from '../../lib/data/ships.json';
|
||||||
|
@ -14,7 +14,7 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
|
||||||
const checkUser = await getUserByAccessToken(loggedToken);
|
const checkUser = await getUserByAccessToken(loggedToken);
|
||||||
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
||||||
|
|
||||||
const locale = getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
||||||
const langShips = await getLocales(locale, 'ships');
|
const langShips = await getLocales(locale, 'ships');
|
||||||
|
|
||||||
const playerShips = checkUser.ships;
|
const playerShips = checkUser.ships;
|
||||||
|
|
Loading…
Reference in New Issue