add titles to pages

This commit is contained in:
Akis 2022-06-22 09:57:47 +03:00
parent 36e25f4f42
commit d1c2c1842c
15 changed files with 399 additions and 352 deletions

View File

@ -1,9 +1,9 @@
{
// Place your ProjectSegfaultWebsite workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
// Place your ProjectSegfaultWebsite workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
// Placeholders with the same ids are connected.
// Example:
// "Print to console": {
@ -18,9 +18,7 @@
"i18n": {
"scope": "svelte",
"prefix": "i18n",
"body": [
"{\\$t('common.$1')}"
],
"body": ["{\\$t('common.$1')}"],
"description": "i18n Snippet for Project Segfault's website"
}
}
}

View File

@ -1,51 +1,51 @@
{
"NAVBAR_INSTANCES": "Instances & Gameservers",
"NAVBAR_DONATE": "Donate",
"NAVBAR_FAQ": "FAQ",
"NAVBAR_CONTACT": "Contact",
"NAVBAR_BLOG": "Blog",
"FOOTER_COPYRIGHT": "© 2021 - present, Project Segfault",
"INDEX_DESCRIPTION": "4 idiots, a Sun server and a Hitachi Compute Rack.",
"INDEX_WHAT": "what",
"INDEX_WHO_ARE_WE": "We are 4 teenagers who have a decently powerful server. What do we do with this server? Host game servers and random assortment of privacy respecting tools like Invidious, Nextcloud, Matrix etc.... and maybe some original works. You'll see eventually!",
"INDEX_TELL_ME_MORE": "Tell me more! What do you guys host? Where can I contact you? Can you fix my daughter's iPad?",
"INDEX_MORE_INFO": "We can't fix your daughter's iPad, but there is a navigation bar at the top of the page with links to websites that explain things about us, or contain useful information about us.",
"DONATE_TITLE": "Donate to Project Segfault",
"DONATE_DESCRIPTION": "The ways you can donate to us and more",
"DONATE_PLEASE_DO": "please do",
"DONATE_EXPLANATION": "If you donate, we will be more motivated to work on the server and host more stuff and maybe even get more hardware. I really recommend you donate any spare money you have if you enjoy or use our services on a daily basis. Thanks!",
"DONATE_OK_SURE": "sure I'll donate. Links?",
"CONTACT_TITLE": "Contact Us",
"CONTACT_DESCRIPTION": "Do you want to contact us?",
"CONTACT_OUR_EMAIL": "Our email",
"CONTACT_EMAIL_SPAM": "Please be aware that Microsoft often blocks non-popular emails, if you do contact us through there, make sure to check your spam and mark it as not-spam!",
"CONTACT_PEOPLE": "People",
"CONTACT_CLICK": "Click to show who is active on what platform",
"MINECRAFT_TITLE": "Project Segfault MC",
"MINECRAFT_DESCRIPTION": "Yeah, we have a Minecraft server.",
"MINECRAFT_SMP": "We have an invite-only SMP server running on our network on version 1.18* (1.18, 1.18.1, 1.18.2) which is also bridged to Bedrock using GeyserMC.",
"MINECRAFT_JOIN": "If you would like to join, please join our Discord and ask us there to be whitelisted.",
"MINECRAFT_DISCORD": "Invite link to our Discord",
"MINECRAFT_RULES": "Rules",
"MINECRAFT_RULE_1": "1. Do not modify buildings without permission.",
"MINECRAFT_RULE_2": "2. Do not bypass protections. (mining around a protected door, bypassing chest locks etc)",
"MINECRAFT_RULE_3": "3. Do not cheat",
"MINECRAFT_RULE_4": "4. Do not lag the shit out of the server.",
"MINECRAFT_IP": "IP",
"MINECRAFT_NOTE_1": "psst, you can join bedrock on your switch using the app weve linked below!",
"MINECRAFT_NOTE_2": "another psst, if you play on both Java and Bedrock, link your accounts together on GeyserMCs website! Your accounts will be linked together meaning you will have the exact same experience.",
"MINECRAFT_LINKS": "Links",
"MINECRAFT_MC_IOS": "MC Server Connector for iOS",
"MINECRAFT_MC_ANDROID": "MC Server Connector for Android",
"MINECRAFT_CLIENT_SIDE_MODS": "Recommended Client-Side Mods",
"MINECRAFT_CLIENT_SIDE_MODS_URL": "Click me for a list of recommended client-side mods",
"MINECRAFT_PLUGIN_LIST_TITLE": "Plugin list",
"MINECRAFT_PLUGIN_LIST_NOTE": "This is a manually made list of our plugins, so it might not be up to date.",
"MINECRAFT_MCMMO": "Click here to download our build of mcMMO.",
"MINECRAFT_VIAVERSION_NOTE": "You may only connect from a base version and its subversions (1.18, 1.18.1, 1.18.2). You cannot connect from a major version older or newer than the major version the server is running.",
"CSM_GOBACK": "Click me to go back to the Minecraft site",
"CSM_TITLE": "Recommended mods list",
"CSM_HOW_THEY_ARE_PICKED": "These are picked by our community or are for server features like voice chatting.",
"CSM_NOTE_BEDROCK": "If you play on Bedrock, try to find an alternative to these. Mods like Simple Voice Chat have no alternative on Bedrock, sorry.",
"CSM_OPTIMIZATION_MODS_NOTE": "Any optimization mod (We recommend at least Sodium)"
}
"NAVBAR_INSTANCES": "Instances & Gameservers",
"NAVBAR_DONATE": "Donate",
"NAVBAR_FAQ": "FAQ",
"NAVBAR_CONTACT": "Contact",
"NAVBAR_BLOG": "Blog",
"FOOTER_COPYRIGHT": "© 2021 - present, Project Segfault",
"INDEX_DESCRIPTION": "4 idiots, a Sun server and a Hitachi Compute Rack.",
"INDEX_WHAT": "what",
"INDEX_WHO_ARE_WE": "We are 4 teenagers who have a decently powerful server. What do we do with this server? Host game servers and random assortment of privacy respecting tools like Invidious, Nextcloud, Matrix etc.... and maybe some original works. You'll see eventually!",
"INDEX_TELL_ME_MORE": "Tell me more! What do you guys host? Where can I contact you? Can you fix my daughter's iPad?",
"INDEX_MORE_INFO": "We can't fix your daughter's iPad, but there is a navigation bar at the top of the page with links to websites that explain things about us, or contain useful information about us.",
"DONATE_TITLE": "Donate to Project Segfault",
"DONATE_DESCRIPTION": "The ways you can donate to us and more",
"DONATE_PLEASE_DO": "please do",
"DONATE_EXPLANATION": "If you donate, we will be more motivated to work on the server and host more stuff and maybe even get more hardware. I really recommend you donate any spare money you have if you enjoy or use our services on a daily basis. Thanks!",
"DONATE_OK_SURE": "sure I'll donate. Links?",
"CONTACT_TITLE": "Contact Us",
"CONTACT_DESCRIPTION": "Do you want to contact us?",
"CONTACT_OUR_EMAIL": "Our email",
"CONTACT_EMAIL_SPAM": "Please be aware that Microsoft often blocks non-popular emails, if you do contact us through there, make sure to check your spam and mark it as not-spam!",
"CONTACT_PEOPLE": "People",
"CONTACT_CLICK": "Click to show who is active on what platform",
"MINECRAFT_TITLE": "Project Segfault MC",
"MINECRAFT_DESCRIPTION": "Yeah, we have a Minecraft server.",
"MINECRAFT_SMP": "We have an invite-only SMP server running on our network on version 1.18* (1.18, 1.18.1, 1.18.2) which is also bridged to Bedrock using GeyserMC.",
"MINECRAFT_JOIN": "If you would like to join, please join our Discord and ask us there to be whitelisted.",
"MINECRAFT_DISCORD": "Invite link to our Discord",
"MINECRAFT_RULES": "Rules",
"MINECRAFT_RULE_1": "1. Do not modify buildings without permission.",
"MINECRAFT_RULE_2": "2. Do not bypass protections. (mining around a protected door, bypassing chest locks etc)",
"MINECRAFT_RULE_3": "3. Do not cheat",
"MINECRAFT_RULE_4": "4. Do not lag the shit out of the server.",
"MINECRAFT_IP": "IP",
"MINECRAFT_NOTE_1": "psst, you can join bedrock on your switch using the app weve linked below!",
"MINECRAFT_NOTE_2": "another psst, if you play on both Java and Bedrock, link your accounts together on GeyserMCs website! Your accounts will be linked together meaning you will have the exact same experience.",
"MINECRAFT_LINKS": "Links",
"MINECRAFT_MC_IOS": "MC Server Connector for iOS",
"MINECRAFT_MC_ANDROID": "MC Server Connector for Android",
"MINECRAFT_CLIENT_SIDE_MODS": "Recommended Client-Side Mods",
"MINECRAFT_CLIENT_SIDE_MODS_URL": "Click me for a list of recommended client-side mods",
"MINECRAFT_PLUGIN_LIST_TITLE": "Plugin list",
"MINECRAFT_PLUGIN_LIST_NOTE": "This is a manually made list of our plugins, so it might not be up to date.",
"MINECRAFT_MCMMO": "Click here to download our build of mcMMO.",
"MINECRAFT_VIAVERSION_NOTE": "You may only connect from a base version and its subversions (1.18, 1.18.1, 1.18.2). You cannot connect from a major version older or newer than the major version the server is running.",
"CSM_GOBACK": "Click me to go back to the Minecraft site",
"CSM_TITLE": "Recommended mods list",
"CSM_HOW_THEY_ARE_PICKED": "These are picked by our community or are for server features like voice chatting.",
"CSM_NOTE_BEDROCK": "If you play on Bedrock, try to find an alternative to these. Mods like Simple Voice Chat have no alternative on Bedrock, sorry.",
"CSM_OPTIMIZATION_MODS_NOTE": "Any optimization mod (We recommend at least Sodium)"
}

View File

@ -1,23 +1,23 @@
{
"NAVBAR_INSTANCES": "Våre tjenester og spillservere",
"NAVBAR_DONATE": "Doner",
"NAVBAR_FAQ": "OSS",
"NAVBAR_CONTACT": "Kontakt",
"NAVBAR_BLOG": "Blogg",
"INDEX_DESCRIPTION": "4 idioter, en Sun server og en Hitachi Compute Rack.",
"INDEX_WHAT": "hva",
"INDEX_WHO_ARE_WE": "Vi er 4 tenåringer med en grei server. Hva gjør vi med denne serveren? Vi ofrer tjenester som respekterer personvernet ditt som for eksempel Invidious, Matrix, Pleroma. Vi kjører også noen spillservere på serveren våres, for eksempel Minecraft. Kanskje vi lager noe originalt... det får du se etterhvert!",
"INDEX_TELL_ME_MORE": "Fortell meg mer! Hva kjører dere på serverene deres? Hvor kan jeg komme i kontakt med dere? Kan dere fikse min datters iPad?",
"INDEX_MORE_INFO": "Vi kan ikke fikse din datters iPad, men det er navigasjonslinje på toppen av siden som har lenker til sider som forklarer ting om oss, eller har nyttig informasjon om oss.",
"DONATE_TITLE": "Doner til Project Segfault",
"DONATE_DESCRIPTION": "Veiene du kan donere til oss og mer",
"DONATE_PLEASE_DO": "vær så snill",
"DONATE_EXPLANATION": "Hvis du donerer, blir vi mer motivert til å jobbe på serverene våres og ofre flere tjenester, og kanskje skaffe oss mer maskinvare. Jeg anbefaler at du donerer reservepenger hvis du liker å bruke tjenestene våres, eller hvis du bruker våres tjenester på en daglig basis. Takk!",
"DONATE_OK_SURE": "greit, jeg skal donere. Hvor kan jeg donere?",
"CONTACT_TITLE": "Få kontakt med oss",
"CONTACT_DESCRIPTION": "Veier du kan komme i kontakt med oss.",
"CONTACT_OUR_EMAIL": "Våres e-post",
"CONTACT_EMAIL_SPAM": "Microsoft (Outlook, Hotmail) pleier å markere e-poster som ikke er populære som søppelpost. Hvis du sender oss en e-post via Microsoft, husk å markere oss som ikke søppelpost!",
"CONTACT_PEOPLE": "Medlemmer i Project Segfault",
"CONTACT_CLICK": "Klikk for å komme i kontakt med en av medlemmene våres."
}
"NAVBAR_INSTANCES": "Våre tjenester og spillservere",
"NAVBAR_DONATE": "Doner",
"NAVBAR_FAQ": "OSS",
"NAVBAR_CONTACT": "Kontakt",
"NAVBAR_BLOG": "Blogg",
"INDEX_DESCRIPTION": "4 idioter, en Sun server og en Hitachi Compute Rack.",
"INDEX_WHAT": "hva",
"INDEX_WHO_ARE_WE": "Vi er 4 tenåringer med en grei server. Hva gjør vi med denne serveren? Vi ofrer tjenester som respekterer personvernet ditt som for eksempel Invidious, Matrix, Pleroma. Vi kjører også noen spillservere på serveren våres, for eksempel Minecraft. Kanskje vi lager noe originalt... det får du se etterhvert!",
"INDEX_TELL_ME_MORE": "Fortell meg mer! Hva kjører dere på serverene deres? Hvor kan jeg komme i kontakt med dere? Kan dere fikse min datters iPad?",
"INDEX_MORE_INFO": "Vi kan ikke fikse din datters iPad, men det er navigasjonslinje på toppen av siden som har lenker til sider som forklarer ting om oss, eller har nyttig informasjon om oss.",
"DONATE_TITLE": "Doner til Project Segfault",
"DONATE_DESCRIPTION": "Veiene du kan donere til oss og mer",
"DONATE_PLEASE_DO": "vær så snill",
"DONATE_EXPLANATION": "Hvis du donerer, blir vi mer motivert til å jobbe på serverene våres og ofre flere tjenester, og kanskje skaffe oss mer maskinvare. Jeg anbefaler at du donerer reservepenger hvis du liker å bruke tjenestene våres, eller hvis du bruker våres tjenester på en daglig basis. Takk!",
"DONATE_OK_SURE": "greit, jeg skal donere. Hvor kan jeg donere?",
"CONTACT_TITLE": "Få kontakt med oss",
"CONTACT_DESCRIPTION": "Veier du kan komme i kontakt med oss.",
"CONTACT_OUR_EMAIL": "Våres e-post",
"CONTACT_EMAIL_SPAM": "Microsoft (Outlook, Hotmail) pleier å markere e-poster som ikke er populære som søppelpost. Hvis du sender oss en e-post via Microsoft, husk å markere oss som ikke søppelpost!",
"CONTACT_PEOPLE": "Medlemmer i Project Segfault",
"CONTACT_CLICK": "Klikk for å komme i kontakt med en av medlemmene våres."
}

View File

@ -1,30 +0,0 @@
<script lang="ts">
import SvelteSeo from "svelte-seo";
import Banner from "$lib/images/ProjectSegfault_Desktop_16-9.png";
import * as global from "../i18n/_global.json";
import { t } from '$lib/translations';
</script>
<SvelteSeo
openGraph={{
title: global.NAME,
description: $t('common.INDEX_DESCRIPTION'),
type: "website",
images: [
{
url: Banner,
width: 850,
height: 650,
alt: "Image"
}
]
}}
/>
<svelte:head>
<title>{global.NAME}</title>
</svelte:head>
<div class="mdsvex_content">
<slot />
</div>

View File

@ -4,13 +4,13 @@
import IconGitHub from "~icons/simple-icons/github";
import IconSignal from "~icons/fa6-solid/signal";
import * as global from "../i18n/_global.json";
import { t } from '$lib/translations';
import { t } from "$lib/translations";
</script>
<footer>
<hr />
<div class="content">
<span>{$t('common.FOOTER_COPYRIGHT')}</span>
<span>{$t("common.FOOTER_COPYRIGHT")}</span>
<div class="links">
<a href={global.MATRIX_INVITE}>

View File

@ -1,6 +1,6 @@
<script>
import * as global from "../i18n/_global.json";
import { t } from '$lib/translations';
import { t } from "$lib/translations";
</script>
<nav>
@ -16,12 +16,12 @@
</a>
<div class="links">
<a href={global.INSTANCES}>{$t('common.NAVBAR_INSTANCES')}</a>
<a href={global.INSTANCES}>{$t("common.NAVBAR_INSTANCES")}</a>
<a href="/minecraft">{global.MINECRAFT}</a>
<a href="/donate">{$t('common.NAVBAR_DONATE')}</a>
<a href={global.FAQ_URL}>{$t('common.NAVBAR_FAQ')}</a>
<a href="/contact">{$t('common.NAVBAR_CONTACT')}</a>
<a href={global.BLOG_URL}>{$t('common.NAVBAR_BLOG')}</a>
<a href="/donate">{$t("common.NAVBAR_DONATE")}</a>
<a href={global.FAQ_URL}>{$t("common.NAVBAR_FAQ")}</a>
<a href="/contact">{$t("common.NAVBAR_CONTACT")}</a>
<a href={global.BLOG_URL}>{$t("common.NAVBAR_BLOG")}</a>
</div>
</nav>

View File

@ -1,23 +1,21 @@
import i18n from 'sveltekit-i18n';
import i18n from "sveltekit-i18n";
/** @type {import('sveltekit-i18n').Config} */
const config = ({
loaders: [
{
locale: 'en',
key: 'common',
loader: async () => (
await import('../i18n/common.json')
).default,
},
{
locale: 'nb',
key: 'common',
loader: async () => (
await import('../i18n/nb.json')
).default,
}
],
});
const config = {
loaders: [
{
locale: "en",
key: "common",
loader: async () => (await import("../i18n/common.json")).default
},
{
locale: "nb",
key: "common",
loader: async () => (await import("../i18n/nb.json")).default
}
]
};
export const { t, locale, locales, loading, loadTranslations } = new i18n(config);
export const { t, locale, locales, loading, loadTranslations } = new i18n(
config
);

View File

@ -1,35 +1,56 @@
<script context="module">
import { locale, loadTranslations } from "$lib/translations";
export const load = async ({ url }) => {
const { pathname } = url;
const defaultLocale = "en"; // get from cookie, user session, ...
const initLocale = locale.get() || defaultLocale; // set default if no locale already set
await loadTranslations(initLocale, pathname); // keep this just before the `return`
// firefox
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language
// chrome
// https://developer.chrome.com/extensions/i18n#overview-getAcceptLanguages
// edge
// https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
return {};
};
</script>
<script>
import "$lib/app.css";
import Nav from "$lib/Nav.svelte";
import Footer from "$lib/Footer.svelte";
import SvelteSeo from "svelte-seo";
import Banner from "$lib/images/ProjectSegfault_Desktop_16-9.png";
import * as global from "../i18n/_global.json";
import { t } from "$lib/translations";
</script>
<script context="module">
import { locale, loadTranslations } from '$lib/translations';
export const load = async ({ url }) => {
const { pathname } = url;
const defaultLocale = 'en'; // get from cookie, user session, ...
const initLocale = locale.get() || defaultLocale; // set default if no locale already set
await loadTranslations(initLocale, pathname); // keep this just before the `return`
// firefox
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language
// chrome
// https://developer.chrome.com/extensions/i18n#overview-getAcceptLanguages
// edge
// https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
return {};
}
</script>
<SvelteSeo
openGraph={{
title: global.NAME,
description: $t("common.INDEX_DESCRIPTION"),
type: "website",
images: [
{
url: Banner,
width: 850,
height: 650,
alt: "Image"
}
]
}}
/>
<Nav />
<main>
<slot />
</main>
<Footer />

View File

@ -1,101 +1,133 @@
<script lang="ts">
import { t } from '$lib/translations';
import * as global from "../i18n/_global.json";
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<h1>{$t('common.CONTACT_TITLE')}</h1>
<svelte:head>
<title>{$t("common.CONTACT_TITLE")} | {global.NAME}</title>
</svelte:head>
<h2>{$t('common.CONTACT_DESCRIPTION')}</h2>
<h1>{$t("common.CONTACT_TITLE")}</h1>
<h1>{$t('common.CONTACT_OUR_EMAIL')}</h1>
<h2>{$t("common.CONTACT_DESCRIPTION")}</h2>
<h1>{$t("common.CONTACT_OUR_EMAIL")}</h1>
<p><a href="mailto:{global.EMAIL}">{global.EMAIL}</a></p>
<p><i>{$t('common.CONTACT_EMAIL_SPAM')}</i></p>
<p><i>{$t("common.CONTACT_EMAIL_SPAM")}</i></p>
<h1>{$t('common.CONTACT_PEOPLE')}</h1>
<h1>{$t("common.CONTACT_PEOPLE")}</h1>
<div id="Active" style="display:none">
<div class="parent">
<div class="div1">{global.MIDOU}:</div>
<a class="div2 matrixcolored" href={global.MIDOU_MATRIX_URL}>[Matrix]</a>
<div class="div3"></div>
<div class="div4">{global.MRLERIEN}:</div>
<a class="div5 discordcolored" href={global.MRLERIEN_DISCORD_URL}>Discord</a>
<div class="div6"></div>
<div class="div7">{global.ODYSSEY}:</div>
<a class="div8 matrixcolored" href={global.ODYSSEY_MATRIX_URL}>[Matrix]</a>
<a class="div9 discordcolored" href={global.ODYSSEY_DISCORD_URL}>Discord</a>
<div class="div10">{global.DEVNOL}:</div>
<a class="div11 matrixcolored" href={global.DEVNOL_MATRIX_URL}>[Matrix]</a>
<a class="div12 discordcolored" href={global.DEVNOL_DISCORD_URL}>Discord</a>
</div>
<div class="parent">
<div class="div1">{global.MIDOU}:</div>
<a class="div2 matrixcolored" href={global.MIDOU_MATRIX_URL}>[Matrix]</a
>
<div class="div3" />
<div class="div4">{global.MRLERIEN}:</div>
<a class="div5 discordcolored" href={global.MRLERIEN_DISCORD_URL}
>Discord</a
>
<div class="div6" />
<div class="div7">{global.ODYSSEY}:</div>
<a class="div8 matrixcolored" href={global.ODYSSEY_MATRIX_URL}
>[Matrix]</a
>
<a class="div9 discordcolored" href={global.ODYSSEY_DISCORD_URL}
>Discord</a
>
<div class="div10">{global.DEVNOL}:</div>
<a class="div11 matrixcolored" href={global.DEVNOL_MATRIX_URL}
>[Matrix]</a
>
<a class="div12 discordcolored" href={global.DEVNOL_DISCORD_URL}
>Discord</a
>
</div>
</div>
<button
id="hide"
type="button"
onclick='document.getElementById("Active").style.display ="block"; document.getElementById("hide").style.display = "none" ;'
id="hide"
type="button"
onclick="document.getElementById("Active").style.display ="block"; document.getElementById("hide").style.display = "none" ;"
>
{$t('common.CONTACT_CLICK')}
{$t("common.CONTACT_CLICK")}
</button>
<style>
button {
background-color: var(--accent-primary);
border: none;
border-radius: 10px;
padding: 1rem;
cursor: pointer;
font-family: var(--font-primary);
}
button {
background-color: var(--accent-primary);
border: none;
border-radius: 10px;
padding: 1rem;
cursor: pointer;
font-family: var(--font-primary);
}
.parent {
display: grid;
grid-template-columns: repeat(3, max-content);
grid-template-rows: repeat(4, 1fr);
grid-column-gap: 16px;
grid-row-gap: 16px;
max-width: 50%;
align-items: center;
}
.parent {
display: grid;
grid-template-columns: repeat(3, max-content);
grid-template-rows: repeat(4, 1fr);
grid-column-gap: 16px;
grid-row-gap: 16px;
max-width: 50%;
align-items: center;
}
/* this is a hack to make the grid work, need to improve this */
.div1 { grid-area: 1 / 1 / 2 / 2; }
.div2 { grid-area: 1 / 2 / 2 / 3; }
.div3 { grid-area: 1 / 3 / 2 / 4; }
.div4 { grid-area: 2 / 1 / 3 / 2; }
.div5 { grid-area: 2 / 2 / 3 / 3; }
.div6 { grid-area: 2 / 3 / 3 / 4; }
.div7 { grid-area: 3 / 1 / 4 / 2; }
.div8 { grid-area: 3 / 2 / 4 / 3; }
.div9 { grid-area: 3 / 3 / 4 / 4; }
.div10 { grid-area: 4 / 1 / 5 / 2; }
.div11 { grid-area: 4 / 2 / 5 / 3; }
.div12 { grid-area: 4 / 3 / 5 / 4; }
/* this is a hack to make the grid work, need to improve this */
.div1 {
grid-area: 1 / 1 / 2 / 2;
}
.div2 {
grid-area: 1 / 2 / 2 / 3;
}
.div3 {
grid-area: 1 / 3 / 2 / 4;
}
.div4 {
grid-area: 2 / 1 / 3 / 2;
}
.div5 {
grid-area: 2 / 2 / 3 / 3;
}
.div6 {
grid-area: 2 / 3 / 3 / 4;
}
.div7 {
grid-area: 3 / 1 / 4 / 2;
}
.div8 {
grid-area: 3 / 2 / 4 / 3;
}
.div9 {
grid-area: 3 / 3 / 4 / 4;
}
.div10 {
grid-area: 4 / 1 / 5 / 2;
}
.div11 {
grid-area: 4 / 2 / 5 / 3;
}
.div12 {
grid-area: 4 / 3 / 5 / 4;
}
#Active a {
border: none;
border-radius: 10px;
padding: 0.5rem;
cursor: pointer;
font-family: var(--font-primary);
color: var(--secondary);
text-decoration: none;
}
#Active a {
border: none;
border-radius: 10px;
padding: .5rem;
cursor: pointer;
font-family: var(--font-primary);
color: var(--secondary);
text-decoration: none;
}
.matrixcolored {
background-color: #fff;
}
.discordcolored {
background-color: #5865F2;
color: #fff !important;
}
.matrixcolored {
background-color: #fff;
}
.discordcolored {
background-color: #5865f2;
color: #fff !important;
}
</style>

View File

@ -1,44 +1,53 @@
<script lang="ts">
import MoneroQR from "$lib/images/Monero.png";
import MoneroQR from "$lib/images/Monero.png";
import { t } from '$lib/translations';
import * as global from "../i18n/_global.json";
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<h1>{$t('common.DONATE_TITLE')}</h1>
<svelte:head>
<title>{$t("common.DONATE_TITLE")} | {global.NAME}</title>
</svelte:head>
<h2>{$t('common.DONATE_DESCRIPTION')}</h2>
<h1>{$t("common.DONATE_TITLE")}</h1>
<h1>{$t('common.DONATE_PLEASE_DO')}</h1>
<h2>{$t("common.DONATE_DESCRIPTION")}</h2>
<p>{$t('common.DONATE_EXPLANATION')}</p>
<h1>{$t("common.DONATE_PLEASE_DO")}</h1>
<h1>{$t('common.DONATE_OK_SURE')}</h1>
<p>{$t("common.DONATE_EXPLANATION")}</p>
<h1>{$t("common.DONATE_OK_SURE")}</h1>
<div class="monero">
<span>{global.MONERO}: <code>47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code></span>
<img src={MoneroQR} alt="Monero Qr Code">
<span
>{global.MONERO}:
<code
>47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code
></span
>
<img src={MoneroQR} alt="Monero Qr Code" />
</div>
<style>
.monero {
display: flex;
align-items: center;
}
.monero {
display: flex;
align-items: center;
}
.monero > img {
margin-left: 8px;
}
.monero > img {
margin-left: 8px;
}
@media only screen and (max-width: 930px) {
.monero {
flex-direction: column;
align-items: flex-start;
}
@media only screen and (max-width: 930px) {
.monero {
flex-direction: column;
align-items: flex-start;
}
.monero > img {
margin-left: 0;
margin-top: 8px;
}
}
.monero > img {
margin-left: 0;
margin-top: 8px;
}
}
</style>

View File

@ -1,27 +0,0 @@
---
title: FAQ
description: Frequently or not frequently asked questions about Project Segfault!
---
# {title}
## Who is the project owner?
Orignally: Midou (Sysadmin) and Mrlerien (Hoster), but now Odyssey346 (Game Server Sysadmin, webdev and social media manager) and Devnol (Hoster) are with us.
# Hold on, what if Devnol decides to backstab you?
I highly doubt he will, but in any case this happens, critical services will stay up. So only extra (non important services) running on the server will be gone, but you should be aware of that anyways.
# One of your services contains toxic people!
You can contact us by mail or Matrix and we can figure this out with you. But we recommend that you put most of these requests in our support channel at [#support:projectsegfau.lt](https://matrix.to/#/#support:projectsegfau.lt) on Matrix.
If it's something personal, just say that you have a report against someone on one of our services and you'd like to be contacted by an admin and we'll constact you ASAP. We have no lives so we're quite active.
# How can I trust your services?
Well, you really can't. We don't make our logs or anything public, however, if you would like the data we have on you, please contact us. If you're paranoid, **you are allowed to use Tor on our services**, but we don't host any .onion links.
# Which ways do you prefer to communicate?
Look at <a href="/contact">Contact</a>.

View File

@ -1,21 +1,33 @@
<script>
import { t } from '$lib/translations';
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<svelte:head>
<title>{global.NAME}</title>
</svelte:head>
<h1>{global.NAME}</h1>
<h2> {$t('common.INDEX_DESCRIPTION')} </h2>
<h2>{$t("common.INDEX_DESCRIPTION")}</h2>
<h1> {$t('common.INDEX_WHAT')} </h1> <!-- Cause I feel the need to scream -->
<h1>{$t("common.INDEX_WHAT")}</h1>
<!-- Cause I feel the need to scream -->
<p> {$t('common.INDEX_WHO_ARE_WE')} </p>
<p>{$t("common.INDEX_WHO_ARE_WE")}</p>
<h1> {$t('common.INDEX_TELL_ME_MORE')} </h1>
<h1>{$t("common.INDEX_TELL_ME_MORE")}</h1>
<p>{$t('common.INDEX_MORE_INFO')}</p>
<p>{$t("common.INDEX_MORE_INFO")}</p>
<a href="https://www.abuseipdb.com/user/82331" title="AbuseIPDB is an IP address blacklist for webmasters and sysadmins to report IP addresses engaging in abusive behavior on their networks">
<img src="https://www.abuseipdb.com/contributor/82331.svg" alt="AbuseIPDB Contributor Badge" style="width: 270px;background: var(--accent-primary); padding: 0.5rem;
border-radius: 16px;">
</a>
<a
href="https://www.abuseipdb.com/user/82331"
title="AbuseIPDB is an IP address blacklist for webmasters and sysadmins to report IP addresses engaging in abusive behavior on their networks"
>
<img
src="https://www.abuseipdb.com/contributor/82331.svg"
alt="AbuseIPDB Contributor Badge"
style="width: 270px;background: var(--accent-primary); padding: 0.5rem;
border-radius: 16px;"
/>
</a>

View File

@ -1,17 +1,35 @@
<script>
import { t } from '$lib/translations';
import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
</script>
<h1>{$t('common.MINECRAFT_TITLE')}</h1>
<h1><a href="/minecraft">{$t('common.CSM_GOBACK')}</a></h1>
<svelte:head>
<title>{$t("common.MINECRAFT_TITLE")} | {global.NAME}</title>
</svelte:head>
<h2>{$t('common.CSM_TITLE')}</h2>
<h1>{$t("common.MINECRAFT_TITLE")}</h1>
<p>{$t('common.CSM_HOW_THEY_ARE_PICKED')}</p>
<h1><a href="/minecraft">{$t("common.CSM_GOBACK")}</a></h1>
<p>{$t('common.CSM_NOTE_BEDROCK')}</p>
<h2>{$t("common.CSM_TITLE")}</h2>
<p>{$t("common.CSM_HOW_THEY_ARE_PICKED")}</p>
<p>{$t("common.CSM_NOTE_BEDROCK")}</p>
<ul>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map">Xaero's World Map</a> & <a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap">Xaero's Minimap</a></li>
<li>{$t('common.CSM_OPTIMIZATION_MODS_NOTE')}</li>
<li><a href="https://modrinth.com/mod/simple-voice-chat/">Simple Voice Chat</a></li>
</ul>
<li>
<a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map"
>Xaero's World Map</a
>
&
<a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap"
>Xaero's Minimap</a
>
</li>
<li>{$t("common.CSM_OPTIMIZATION_MODS_NOTE")}</li>
<li>
<a href="https://modrinth.com/mod/simple-voice-chat/"
>Simple Voice Chat</a
>
</li>
</ul>

View File

@ -1,63 +1,80 @@
<script>
import { t } from '$lib/translations';
import * as global from "../../i18n/_global.json";
import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
</script>
<h1>{$t('common.MINECRAFT_TITLE')}</h1>
<svelte:head>
<title>{$t("common.MINECRAFT_TITLE")} | {global.NAME}</title>
</svelte:head>
<h1>{$t('common.MINECRAFT_DESCRIPTION')}</h1>
<h1>{$t("common.MINECRAFT_TITLE")}</h1>
<p>{$t('common.MINECRAFT_SMP')}</p>
<h1>{$t("common.MINECRAFT_DESCRIPTION")}</h1>
<p>{$t('common.MINECRAFT_JOIN')}</p> <a href={global.DISCORD_INVITE}>{$t('common.MINECRAFT_DISCORD')}</a>
<p>{$t("common.MINECRAFT_SMP")}</p>
<h2>{$t('common.MINECRAFT_RULES')}</h2>
<p>{$t("common.MINECRAFT_JOIN")}</p>
<a href={global.DISCORD_INVITE}>{$t("common.MINECRAFT_DISCORD")}</a>
<p>{$t('common.MINECRAFT_RULE_1')}</p>
<p>{$t('common.MINECRAFT_RULE_2')}</p>
<p>{$t('common.MINECRAFT_RULE_3')}</p>
<p>{$t('common.MINECRAFT_RULE_4')}</p>
<h2>{$t("common.MINECRAFT_RULES")}</h2>
<h2>{$t('common.MINECRAFT_IP')}</h2>
<p>{$t("common.MINECRAFT_RULE_1")}</p>
<p>{$t("common.MINECRAFT_RULE_2")}</p>
<p>{$t("common.MINECRAFT_RULE_3")}</p>
<p>{$t("common.MINECRAFT_RULE_4")}</p>
<h2>{$t("common.MINECRAFT_IP")}</h2>
<p><b>Java</b>: {global.MINECRAFT_JAVA_IP}</p>
<p><b>Bedrock</b>: {global.MINECRAFT_BEDROCK_IP}</p>
<i>{$t('common.MINECRAFT_NOTE_1')}</i>
<i>{$t("common.MINECRAFT_NOTE_1")}</i>
<br>
<br />
<i>{$t('common.MINECRAFT_NOTE_2')}</i>
<i>{$t("common.MINECRAFT_NOTE_2")}</i>
<h2>{$t('common.MINECRAFT_LINKS')}</h2>
<h2>{$t("common.MINECRAFT_LINKS")}</h2>
<a href="https://map.mc.projectsegfau.lt">Dynmap</a>
<a href="https://apps.apple.com/us/app/mc-server-connector/id1548251304">{$t('common.MINECRAFT_MC_IOS')}</a>
<a href="https://apps.apple.com/us/app/mc-server-connector/id1548251304"
>{$t("common.MINECRAFT_MC_IOS")}</a
>
<a href="https://play.google.com/store/apps/details?id=com.smokiem.mcserverconnector&hl=no&gl=US">{$t('common.MINECRAFT_MC_ANDROID')}</a>
<a
href="https://play.google.com/store/apps/details?id=com.smokiem.mcserverconnector&hl=no&gl=US"
>{$t("common.MINECRAFT_MC_ANDROID")}</a
>
<h2>{$t('common.MINECRAFT_CLIENT_SIDE_MODS')}</h2>
<h2>{$t("common.MINECRAFT_CLIENT_SIDE_MODS")}</h2>
<a href="/minecraft/client-side-mods">{$t('common.MINECRAFT_CLIENT_SIDE_MODS_URL')}</a>
<a href="/minecraft/client-side-mods"
>{$t("common.MINECRAFT_CLIENT_SIDE_MODS_URL")}</a
>
<h2>{$t('common.MINECRAFT_PLUGIN_LIST_TITLE')}</h2>
<h2>{$t("common.MINECRAFT_PLUGIN_LIST_TITLE")}</h2>
<p>{$t('common.MINECRAFT_PLUGIN_LIST_NOTE')}</p>
<p>{$t("common.MINECRAFT_PLUGIN_LIST_NOTE")}</p>
<ul>
<li>BlockLocker</li>
<li>CoreProtect</li>
<li><a href="https://map.mc.projectsegfau.lt">Dynmap</a></li>
<li>EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)</li>
<li>Geyser & Floodgate</li>
<li>LuckPerms</li>
<li>mcMMO <a href="https://dl.odyssey346.dev/Software/mcMMO_because_fuck_buying_open_source_software.jar">{$t('common.MINECRAFT_MCMMO')}</a></li>
<li>TabTPS</li>
<li>Vault</li>
<li>ViaVersion ({$t('common.MINECRAFT_VIAVERSION_NOTE')})</li>
<li>PlugMan</li>
<li>CombatLogX</li>
<li>Simple Voice Chat</li>
</ul>
<li>BlockLocker</li>
<li>CoreProtect</li>
<li><a href="https://map.mc.projectsegfau.lt">Dynmap</a></li>
<li>EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)</li>
<li>Geyser & Floodgate</li>
<li>LuckPerms</li>
<li>
mcMMO <a
href="https://dl.odyssey346.dev/Software/mcMMO_because_fuck_buying_open_source_software.jar"
>{$t("common.MINECRAFT_MCMMO")}</a
>
</li>
<li>TabTPS</li>
<li>Vault</li>
<li>ViaVersion ({$t("common.MINECRAFT_VIAVERSION_NOTE")})</li>
<li>PlugMan</li>
<li>CombatLogX</li>
<li>Simple Voice Chat</li>
</ul>

View File

@ -12,8 +12,7 @@ const config = {
preprocess: [
preprocess(),
mdsvex({
extensions: [".md"],
layout: "./src/lib/Content.svelte"
extensions: [".md"]
})
],