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 // 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 // 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 // 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: // 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. // $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. // Placeholders with the same ids are connected.
// Example: // Example:
// "Print to console": { // "Print to console": {
@ -18,9 +18,7 @@
"i18n": { "i18n": {
"scope": "svelte", "scope": "svelte",
"prefix": "i18n", "prefix": "i18n",
"body": [ "body": ["{\\$t('common.$1')}"],
"{\\$t('common.$1')}"
],
"description": "i18n Snippet for Project Segfault's website" "description": "i18n Snippet for Project Segfault's website"
} }
} }

View File

@ -1,51 +1,51 @@
{ {
"NAVBAR_INSTANCES": "Instances & Gameservers", "NAVBAR_INSTANCES": "Instances & Gameservers",
"NAVBAR_DONATE": "Donate", "NAVBAR_DONATE": "Donate",
"NAVBAR_FAQ": "FAQ", "NAVBAR_FAQ": "FAQ",
"NAVBAR_CONTACT": "Contact", "NAVBAR_CONTACT": "Contact",
"NAVBAR_BLOG": "Blog", "NAVBAR_BLOG": "Blog",
"FOOTER_COPYRIGHT": "© 2021 - present, Project Segfault", "FOOTER_COPYRIGHT": "© 2021 - present, Project Segfault",
"INDEX_DESCRIPTION": "4 idiots, a Sun server and a Hitachi Compute Rack.", "INDEX_DESCRIPTION": "4 idiots, a Sun server and a Hitachi Compute Rack.",
"INDEX_WHAT": "what", "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_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_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.", "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_TITLE": "Donate to Project Segfault",
"DONATE_DESCRIPTION": "The ways you can donate to us and more", "DONATE_DESCRIPTION": "The ways you can donate to us and more",
"DONATE_PLEASE_DO": "please do", "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_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?", "DONATE_OK_SURE": "sure I'll donate. Links?",
"CONTACT_TITLE": "Contact Us", "CONTACT_TITLE": "Contact Us",
"CONTACT_DESCRIPTION": "Do you want to contact us?", "CONTACT_DESCRIPTION": "Do you want to contact us?",
"CONTACT_OUR_EMAIL": "Our email", "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_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_PEOPLE": "People",
"CONTACT_CLICK": "Click to show who is active on what platform", "CONTACT_CLICK": "Click to show who is active on what platform",
"MINECRAFT_TITLE": "Project Segfault MC", "MINECRAFT_TITLE": "Project Segfault MC",
"MINECRAFT_DESCRIPTION": "Yeah, we have a Minecraft server.", "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_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_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_DISCORD": "Invite link to our Discord",
"MINECRAFT_RULES": "Rules", "MINECRAFT_RULES": "Rules",
"MINECRAFT_RULE_1": "1. Do not modify buildings without permission.", "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_2": "2. Do not bypass protections. (mining around a protected door, bypassing chest locks etc)",
"MINECRAFT_RULE_3": "3. Do not cheat", "MINECRAFT_RULE_3": "3. Do not cheat",
"MINECRAFT_RULE_4": "4. Do not lag the shit out of the server.", "MINECRAFT_RULE_4": "4. Do not lag the shit out of the server.",
"MINECRAFT_IP": "IP", "MINECRAFT_IP": "IP",
"MINECRAFT_NOTE_1": "psst, you can join bedrock on your switch using the app weve linked below!", "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_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_LINKS": "Links",
"MINECRAFT_MC_IOS": "MC Server Connector for iOS", "MINECRAFT_MC_IOS": "MC Server Connector for iOS",
"MINECRAFT_MC_ANDROID": "MC Server Connector for Android", "MINECRAFT_MC_ANDROID": "MC Server Connector for Android",
"MINECRAFT_CLIENT_SIDE_MODS": "Recommended Client-Side Mods", "MINECRAFT_CLIENT_SIDE_MODS": "Recommended Client-Side Mods",
"MINECRAFT_CLIENT_SIDE_MODS_URL": "Click me for a list of 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_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_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_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.", "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_GOBACK": "Click me to go back to the Minecraft site",
"CSM_TITLE": "Recommended mods list", "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_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_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)" "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_INSTANCES": "Våre tjenester og spillservere",
"NAVBAR_DONATE": "Doner", "NAVBAR_DONATE": "Doner",
"NAVBAR_FAQ": "OSS", "NAVBAR_FAQ": "OSS",
"NAVBAR_CONTACT": "Kontakt", "NAVBAR_CONTACT": "Kontakt",
"NAVBAR_BLOG": "Blogg", "NAVBAR_BLOG": "Blogg",
"INDEX_DESCRIPTION": "4 idioter, en Sun server og en Hitachi Compute Rack.", "INDEX_DESCRIPTION": "4 idioter, en Sun server og en Hitachi Compute Rack.",
"INDEX_WHAT": "hva", "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_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_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.", "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_TITLE": "Doner til Project Segfault",
"DONATE_DESCRIPTION": "Veiene du kan donere til oss og mer", "DONATE_DESCRIPTION": "Veiene du kan donere til oss og mer",
"DONATE_PLEASE_DO": "vær så snill", "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_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?", "DONATE_OK_SURE": "greit, jeg skal donere. Hvor kan jeg donere?",
"CONTACT_TITLE": "Få kontakt med oss", "CONTACT_TITLE": "Få kontakt med oss",
"CONTACT_DESCRIPTION": "Veier du kan komme i kontakt med oss.", "CONTACT_DESCRIPTION": "Veier du kan komme i kontakt med oss.",
"CONTACT_OUR_EMAIL": "Våres e-post", "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_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_PEOPLE": "Medlemmer i Project Segfault",
"CONTACT_CLICK": "Klikk for å komme i kontakt med en av medlemmene våres." "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 IconGitHub from "~icons/simple-icons/github";
import IconSignal from "~icons/fa6-solid/signal"; import IconSignal from "~icons/fa6-solid/signal";
import * as global from "../i18n/_global.json"; import * as global from "../i18n/_global.json";
import { t } from '$lib/translations'; import { t } from "$lib/translations";
</script> </script>
<footer> <footer>
<hr /> <hr />
<div class="content"> <div class="content">
<span>{$t('common.FOOTER_COPYRIGHT')}</span> <span>{$t("common.FOOTER_COPYRIGHT")}</span>
<div class="links"> <div class="links">
<a href={global.MATRIX_INVITE}> <a href={global.MATRIX_INVITE}>

View File

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

View File

@ -1,23 +1,21 @@
import i18n from 'sveltekit-i18n'; import i18n from "sveltekit-i18n";
/** @type {import('sveltekit-i18n').Config} */ /** @type {import('sveltekit-i18n').Config} */
const config = ({ const config = {
loaders: [ loaders: [
{ {
locale: 'en', locale: "en",
key: 'common', key: "common",
loader: async () => ( loader: async () => (await import("../i18n/common.json")).default
await import('../i18n/common.json') },
).default, {
}, locale: "nb",
{ key: "common",
locale: 'nb', loader: async () => (await import("../i18n/nb.json")).default
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> <script>
import "$lib/app.css"; import "$lib/app.css";
import Nav from "$lib/Nav.svelte"; import Nav from "$lib/Nav.svelte";
import Footer from "$lib/Footer.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>
<script context="module"> <SvelteSeo
import { locale, loadTranslations } from '$lib/translations'; openGraph={{
title: global.NAME,
export const load = async ({ url }) => { description: $t("common.INDEX_DESCRIPTION"),
const { pathname } = url; type: "website",
images: [
const defaultLocale = 'en'; // get from cookie, user session, ... {
url: Banner,
const initLocale = locale.get() || defaultLocale; // set default if no locale already set width: 850,
height: 650,
await loadTranslations(initLocale, pathname); // keep this just before the `return` alt: "Image"
}
// 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>
<Nav /> <Nav />
<main> <main>
<slot /> <slot />
</main> </main>
<Footer /> <Footer />

View File

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

View File

@ -1,44 +1,53 @@
<script lang="ts"> <script lang="ts">
import MoneroQR from "$lib/images/Monero.png"; import MoneroQR from "$lib/images/Monero.png";
import { t } from '$lib/translations'; import { t } from "$lib/translations";
import * as global from "../i18n/_global.json"; import * as global from "../i18n/_global.json";
</script> </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"> <div class="monero">
<span>{global.MONERO}: <code>47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code></span> <span
<img src={MoneroQR} alt="Monero Qr Code"> >{global.MONERO}:
<code
>47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code
></span
>
<img src={MoneroQR} alt="Monero Qr Code" />
</div> </div>
<style> <style>
.monero { .monero {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.monero > img { .monero > img {
margin-left: 8px; margin-left: 8px;
} }
@media only screen and (max-width: 930px) { @media only screen and (max-width: 930px) {
.monero { .monero {
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
} }
.monero > img { .monero > img {
margin-left: 0; margin-left: 0;
margin-top: 8px; margin-top: 8px;
} }
} }
</style> </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> <script>
import { t } from '$lib/translations'; import { t } from "$lib/translations";
import * as global from "../i18n/_global.json"; import * as global from "../i18n/_global.json";
</script> </script>
<svelte:head>
<title>{global.NAME}</title>
</svelte:head>
<h1>{global.NAME}</h1> <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"> <a
<img src="https://www.abuseipdb.com/contributor/82331.svg" alt="AbuseIPDB Contributor Badge" style="width: 270px;background: var(--accent-primary); padding: 0.5rem; href="https://www.abuseipdb.com/user/82331"
border-radius: 16px;"> title="AbuseIPDB is an IP address blacklist for webmasters and sysadmins to report IP addresses engaging in abusive behavior on their networks"
</a> >
<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> <script>
import { t } from '$lib/translations'; import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
</script> </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> <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>
<li>{$t('common.CSM_OPTIMIZATION_MODS_NOTE')}</li> <a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map"
<li><a href="https://modrinth.com/mod/simple-voice-chat/">Simple Voice Chat</a></li> >Xaero's World Map</a
</ul> >
&
<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> <script>
import { t } from '$lib/translations'; import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json"; import * as global from "../../i18n/_global.json";
</script> </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> <h2>{$t("common.MINECRAFT_RULES")}</h2>
<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>{$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>Java</b>: {global.MINECRAFT_JAVA_IP}</p>
<p><b>Bedrock</b>: {global.MINECRAFT_BEDROCK_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://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> <ul>
<li>BlockLocker</li> <li>BlockLocker</li>
<li>CoreProtect</li> <li>CoreProtect</li>
<li><a href="https://map.mc.projectsegfau.lt">Dynmap</a></li> <li><a href="https://map.mc.projectsegfau.lt">Dynmap</a></li>
<li>EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)</li> <li>EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)</li>
<li>Geyser & Floodgate</li> <li>Geyser & Floodgate</li>
<li>LuckPerms</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>
<li>TabTPS</li> mcMMO <a
<li>Vault</li> href="https://dl.odyssey346.dev/Software/mcMMO_because_fuck_buying_open_source_software.jar"
<li>ViaVersion ({$t('common.MINECRAFT_VIAVERSION_NOTE')})</li> >{$t("common.MINECRAFT_MCMMO")}</a
<li>PlugMan</li> >
<li>CombatLogX</li> </li>
<li>Simple Voice Chat</li> <li>TabTPS</li>
</ul> <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: [
preprocess(), preprocess(),
mdsvex({ mdsvex({
extensions: [".md"], extensions: [".md"]
layout: "./src/lib/Content.svelte"
}) })
], ],