Merge pull request #17 from ProjectSegfault/i18n

i18n
This commit is contained in:
Odyssey346 2022-06-23 15:48:09 +02:00 committed by GitHub
commit 8dd012c2ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 747 additions and 392 deletions

24
.vscode/i18n.code-snippets vendored Normal file
View File

@ -0,0 +1,24 @@
{
// 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": {
// "scope": "javascript,typescript",
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
"i18n": {
"scope": "svelte",
"prefix": "i18n",
"body": ["{\\$t('common.$1')}"],
"description": "i18n Snippet for Project Segfault's website"
}
}

View File

@ -2,7 +2,7 @@
"name": "project-segfault-website", "name": "project-segfault-website",
"version": "2.0.0", "version": "2.0.0",
"scripts": { "scripts": {
"dev": "svelte-kit dev", "dev": "svelte-kit dev --host",
"build": "svelte-kit build", "build": "svelte-kit build",
"package": "svelte-kit package", "package": "svelte-kit package",
"preview": "svelte-kit preview", "preview": "svelte-kit preview",
@ -17,13 +17,13 @@
"@iconify-json/simple-icons": "^1.1.15", "@iconify-json/simple-icons": "^1.1.15",
"@sveltejs/adapter-static": "next", "@sveltejs/adapter-static": "next",
"@sveltejs/kit": "next", "@sveltejs/kit": "next",
"mdsvex": "^0.10.6",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"prettier-plugin-svelte": "^2.7.0", "prettier-plugin-svelte": "^2.7.0",
"svelte": "^3.48.0", "svelte": "^3.48.0",
"svelte-check": "^2.7.2", "svelte-check": "^2.7.2",
"svelte-preprocess": "^4.10.7", "svelte-preprocess": "^4.10.7",
"svelte-seo": "^1.4.1", "svelte-seo": "^1.4.1",
"sveltekit-i18n": "^2.2.2",
"tslib": "^2.4.0", "tslib": "^2.4.0",
"typescript": "^4.7.4", "typescript": "^4.7.4",
"unplugin-icons": "^0.14.5" "unplugin-icons": "^0.14.5"

84
pnpm-lock.yaml generated
View File

@ -1,17 +1,17 @@
lockfileVersion: 5.4 lockfileVersion: 5.3
specifiers: specifiers:
'@iconify-json/fa6-solid': ^1.1.4 '@iconify-json/fa6-solid': ^1.1.4
'@iconify-json/simple-icons': ^1.1.15 '@iconify-json/simple-icons': ^1.1.15
'@sveltejs/adapter-static': next '@sveltejs/adapter-static': next
'@sveltejs/kit': next '@sveltejs/kit': next
mdsvex: ^0.10.6
prettier: ^2.7.1 prettier: ^2.7.1
prettier-plugin-svelte: ^2.7.0 prettier-plugin-svelte: ^2.7.0
svelte: ^3.48.0 svelte: ^3.48.0
svelte-check: ^2.7.2 svelte-check: ^2.7.2
svelte-preprocess: ^4.10.7 svelte-preprocess: ^4.10.7
svelte-seo: ^1.4.1 svelte-seo: ^1.4.1
sveltekit-i18n: ^2.2.2
tslib: ^2.4.0 tslib: ^2.4.0
typescript: ^4.7.4 typescript: ^4.7.4
unplugin-icons: ^0.14.5 unplugin-icons: ^0.14.5
@ -20,14 +20,14 @@ devDependencies:
'@iconify-json/fa6-solid': 1.1.4 '@iconify-json/fa6-solid': 1.1.4
'@iconify-json/simple-icons': 1.1.15 '@iconify-json/simple-icons': 1.1.15
'@sveltejs/adapter-static': 1.0.0-next.34 '@sveltejs/adapter-static': 1.0.0-next.34
'@sveltejs/kit': 1.0.0-next.350_svelte@3.48.0 '@sveltejs/kit': 1.0.0-next.352_svelte@3.48.0
mdsvex: 0.10.6_svelte@3.48.0
prettier: 2.7.1 prettier: 2.7.1
prettier-plugin-svelte: 2.7.0_nakrehnrzdf7fdea5k3a4dfy4m prettier-plugin-svelte: 2.7.0_prettier@2.7.1+svelte@3.48.0
svelte: 3.48.0 svelte: 3.48.0
svelte-check: 2.7.2_svelte@3.48.0 svelte-check: 2.7.2_svelte@3.48.0
svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm svelte-preprocess: 4.10.7_svelte@3.48.0+typescript@4.7.4
svelte-seo: 1.4.1_typescript@4.7.4 svelte-seo: 1.4.1_typescript@4.7.4
sveltekit-i18n: 2.2.2_svelte@3.48.0
tslib: 2.4.0 tslib: 2.4.0
typescript: 4.7.4 typescript: 4.7.4
unplugin-icons: 0.14.5 unplugin-icons: 0.14.5
@ -125,8 +125,8 @@ packages:
tiny-glob: 0.2.9 tiny-glob: 0.2.9
dev: true dev: true
/@sveltejs/kit/1.0.0-next.350_svelte@3.48.0: /@sveltejs/kit/1.0.0-next.352_svelte@3.48.0:
resolution: {integrity: sha512-qkZNjp7yIj6t91+wMhmMtGJH0Lb89OaKdVXUDy92CS5/4OHRTKcQPdfOKs4no/upkS3RiFb+rEpOkYqTMcPUXg==} resolution: {integrity: sha512-cYQWGZ2TU1iMsh1cqi44FJm5Aqs3iOkuUOnRpoecthcbmiZaqkD1sPG/uROBIPexXSbfyUfrck/hgr9vdCAmCw==}
engines: {node: '>=16.7'} engines: {node: '>=16.7'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -168,6 +168,20 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@sveltekit-i18n/base/1.2.1_svelte@3.48.0:
resolution: {integrity: sha512-F8gqG2+KAOeT0o2wYlUrW3TRCX7zaD7rBy/1CEVNw0irfw9TgFf/ODmhubkHHT3+6Zk+SMz8RNgeuffBfAMbJw==}
peerDependencies:
svelte: ^3.x
dependencies:
svelte: 3.48.0
optionalDependencies:
'@sveltekit-i18n/parser-default': 1.0.3
dev: true
/@sveltekit-i18n/parser-default/1.0.3:
resolution: {integrity: sha512-HheveklTjp3hxpYQhoHfyA6B4bQaUeSV5MQf2usIv/58UF2jY/YqhCAWj9bDBjufbuZc5pSz4BXvdX3WVT+viA==}
dev: true
/@types/node/18.0.0: /@types/node/18.0.0:
resolution: {integrity: sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==} resolution: {integrity: sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==}
dev: true dev: true
@ -182,10 +196,6 @@ packages:
'@types/node': 18.0.0 '@types/node': 18.0.0
dev: true dev: true
/@types/unist/2.0.6:
resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
dev: true
/acorn/8.7.1: /acorn/8.7.1:
resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
@ -700,18 +710,6 @@ packages:
sourcemap-codec: 1.4.8 sourcemap-codec: 1.4.8
dev: true dev: true
/mdsvex/0.10.6_svelte@3.48.0:
resolution: {integrity: sha512-aGRDY0r5jx9+OOgFdyB9Xm3EBr9OUmcrTDPWLB7a7g8VPRxzPy4MOBmcVYgz7ErhAJ7bZ/coUoj6aHio3x/2mA==}
peerDependencies:
svelte: 3.x
dependencies:
'@types/unist': 2.0.6
prism-svelte: 0.4.7
prismjs: 1.28.0
svelte: 3.48.0
vfile-message: 2.0.4
dev: true
/merge-stream/2.0.0: /merge-stream/2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true dev: true
@ -854,7 +852,7 @@ packages:
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: true dev: true
/prettier-plugin-svelte/2.7.0_nakrehnrzdf7fdea5k3a4dfy4m: /prettier-plugin-svelte/2.7.0_prettier@2.7.1+svelte@3.48.0:
resolution: {integrity: sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==} resolution: {integrity: sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==}
peerDependencies: peerDependencies:
prettier: ^1.16.4 || ^2.0.0 prettier: ^1.16.4 || ^2.0.0
@ -870,15 +868,6 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/prism-svelte/0.4.7:
resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==}
dev: true
/prismjs/1.28.0:
resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==}
engines: {node: '>=6'}
dev: true
/queue-microtask/1.2.3: /queue-microtask/1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true dev: true
@ -1019,7 +1008,7 @@ packages:
picocolors: 1.0.0 picocolors: 1.0.0
sade: 1.8.1 sade: 1.8.1
svelte: 3.48.0 svelte: 3.48.0
svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm svelte-preprocess: 4.10.7_svelte@3.48.0+typescript@4.7.4
typescript: 4.7.4 typescript: 4.7.4
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
@ -1043,7 +1032,7 @@ packages:
svelte: 3.48.0 svelte: 3.48.0
dev: true dev: true
/svelte-preprocess/4.10.7_lvfi2wesz6u4l5rfbnetbucfmm: /svelte-preprocess/4.10.7_svelte@3.48.0+typescript@4.7.4:
resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==}
engines: {node: '>= 9.11.2'} engines: {node: '>= 9.11.2'}
requiresBuild: true requiresBuild: true
@ -1107,6 +1096,16 @@ packages:
engines: {node: '>= 8'} engines: {node: '>= 8'}
dev: true dev: true
/sveltekit-i18n/2.2.2_svelte@3.48.0:
resolution: {integrity: sha512-6eygICleGCSL7elY7A3trF8XUhV+mlW56ZSoD0UUKXlw+Y6u0MTTHDq48u1LyY73SfnlbPHXgTarhTjZ0BvUKA==}
peerDependencies:
svelte: ^3.x
dependencies:
'@sveltekit-i18n/base': 1.2.1_svelte@3.48.0
'@sveltekit-i18n/parser-default': 1.0.3
svelte: 3.48.0
dev: true
/tiny-glob/0.2.9: /tiny-glob/0.2.9:
resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
dependencies: dependencies:
@ -1131,12 +1130,6 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/unist-util-stringify-position/2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
dependencies:
'@types/unist': 2.0.6
dev: true
/unplugin-icons/0.14.5: /unplugin-icons/0.14.5:
resolution: {integrity: sha512-fxi/fuBZXtZu64L8iAPj+ecu/rnSvTbfR14RO44xIWdsI/Ohpzs9Gve7+nHIgD6JFrdtCfzGnXWBEVPbMGWX3A==} resolution: {integrity: sha512-fxi/fuBZXtZu64L8iAPj+ecu/rnSvTbfR14RO44xIWdsI/Ohpzs9Gve7+nHIgD6JFrdtCfzGnXWBEVPbMGWX3A==}
peerDependencies: peerDependencies:
@ -1192,13 +1185,6 @@ packages:
webpack-virtual-modules: 0.4.3 webpack-virtual-modules: 0.4.3
dev: true dev: true
/vfile-message/2.0.4:
resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
dependencies:
'@types/unist': 2.0.6
unist-util-stringify-position: 2.0.3
dev: true
/vite/2.9.12: /vite/2.9.12:
resolution: {integrity: sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==} resolution: {integrity: sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==}
engines: {node: '>=12.2.0'} engines: {node: '>=12.2.0'}

26
src/i18n/_global.json Normal file
View File

@ -0,0 +1,26 @@
{
"NAME": "Project Segfault",
"PROJECT": "Project",
"SEGFAULT": "Segfault",
"MATRIX_INVITE": "https://matrix.to/#/#project-segfault:projectsegfau.lt/",
"DISCORD_INVITE": "https://discord.gg/26EG7fFtfS/",
"GITHUB": "https://github.com/ProjectSegfault/",
"STATUS": "https://status.projectsegfau.lt/",
"MINECRAFT": "Minecraft",
"INSTANCES": "https://instances.projectsegfau.lt/",
"BLOG_URL": "https://blog.projectsegfau.lt/",
"EMAIL": "contact@projectsegfau.lt",
"MIDOU": "Midou",
"MIDOU_MATRIX_URL": "https://matrix.to/#/@midou:projectsegfau.lt/",
"MRLERIEN": "MrLeRien",
"MRLERIEN_DISCORD_URL": "https://discord.com/users/213634643327582208/",
"ODYSSEY": "Odyssey",
"ODYSSEY_MATRIX_URL": "https://matrix.to/#/@odyssey346:ohai.su/",
"ODYSSEY_DISCORD_URL": "https://discord.com/users/315843700490240002/",
"DEVNOL": "Devnol",
"DEVNOL_MATRIX_URL": "https://matrix.to/#/@devnol:projectsegfau.lt/",
"DEVNOL_DISCORD_URL": "https://discordapp.com/users/429353559566319626/",
"MONERO": "Monero",
"MINECRAFT_JAVA_IP": "mc.projectsegfau.lt:25565",
"MINECRAFT_BEDROCK_IP": "mc.projectsegfau.lt:19132"
}

63
src/i18n/common.json Normal file
View File

@ -0,0 +1,63 @@
{
"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)",
"FAQ_TITLE": "Frequently Asked Questions",
"FAQ_OWNER_TITLE": "Who is the project owner?",
"FAQ_OWNER": "Orignally: Midou (Sysadmin) and Mrlerien (Hoster), but now Odyssey346 (Game Server Sysadmin, webdev and social media manager) and Devnol (Hoster) are with us.",
"FAQ_TOXICITY_TITLE": "One of your services contains toxic people!",
"FAQ_TOXICITY_1": "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",
"FAQ_TOXICITY_2": "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.",
"FAQ_TRUST_TITLE": "How can I trust your services?",
"FAQ_TRUST_1": "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,",
"FAQ_TRUST_2": "you are allowed to use Tor on our services",
"FAQ_TRUST_3": ", but we don't host any .onion links.",
"FAQ_CONTACT_TITLE": "Which ways do you prefer to communicate?",
"FAQ_CONTACT": "Look at"
}

63
src/i18n/fr.json Normal file
View File

@ -0,0 +1,63 @@
{
"NAVBAR_INSTANCES": "Instances & Gameservers",
"NAVBAR_DONATE": "Faire un don",
"NAVBAR_FAQ": "FAQ",
"NAVBAR_CONTACT": "Contact",
"NAVBAR_BLOG": "Blog",
"FOOTER_COPYRIGHT": "© 2021 - présent, Project Segfault",
"INDEX_DESCRIPTION": "4 idiots, un server Sun et un server Hitachi",
"INDEX_WHAT": "Hein?",
"INDEX_WHO_ARE_WE": "On est 4 ados qui on un Server assez puissant. Mais on fait quoi de ce server? Eh bien on héberge des servers pour jeu et quelque service qui aident à mieux protéger sa vie privée comme Invidious, Nextcloud, Matrix et etc... et peut être on finira par faire un VRAI projet unique. Ça arrivera patientez!",
"INDEX_TELL_ME_MORE": "Hé, je veux plus de détails! Je veux savoir ce que vous hébergez et ce que vous faites!",
"INDEX_MORE_INFO": "Il y'a une barre en haut de la page avec des boutons dessus, j'espère que vous n'avez pas de problème de vision!",
"DONATE_TITLE": "Faire un don à Project Segfault",
"DONATE_DESCRIPTION": "Les manières dont vous pouvez faire des dons:",
"DONATE_PLEASE_DO": "Faites un don quand vous le pourrez s'il vous plaît!",
"DONATE_EXPLANATION": "Si on reçoit des dons, on sera capable de héberger plus longtemps que prévu, avec votre soutien, on pourra aussi faire des nouvelles fonctionnalités et des nouveaux serveurs. Et vous ferez un peu de bien pour nous, car c'est un projet qui nous fait une part de la vie.",
"DONATE_OK_SURE": "OK! Je suis sûr que je peux faire un don! Ou devrais-je faire un don?",
"CONTACT_TITLE": "Nous contacter",
"CONTACT_DESCRIPTION": "Vous voulez nous contacter?",
"CONTACT_OUR_EMAIL": "Notre mail",
"CONTACT_EMAIL_SPAM": "Si vous attendez un mail, c'est que vous avez un problème avec le spam. Microsoft a un filtre anti-spam qui bloque les mails non connnus, si c'est le cas, veuillez cliquer sur \"ne pas considérer comme spam\". Merci infiniment!",
"CONTACT_PEOPLE": "Les membres",
"CONTACT_CLICK": "Cliquez ici pour afficher les moyens de contact des membres de Project Segfault!",
"MINECRAFT_TITLE": "Serveur Minecraft de Project Segfault",
"MINECRAFT_DESCRIPTION": "Ouep, on a aussi un server Minecraft.",
"MINECRAFT_SMP": "On a un server SMP qui est sur liste blanche, il est jouable sous la version 1.18 jusquà 1.19, le server est bridgé avec la version Bedrock, donc vous pouvez aussi jouer sur mobile!",
"MINECRAFT_JOIN": "Si vous voulez nous rejoindre, contactez nous sous Discord ou Matrix afin de vous laisser accéder au server.",
"MINECRAFT_DISCORD": "Invite Discord",
"MINECRAFT_RULES": "Règles",
"MINECRAFT_RULE_1": "1. Ne détruisez pas les maisons faites par les autres joueurs, et ne les changez pas sans autorisation de son propriétaire.",
"MINECRAFT_RULE_2": "2. Ne contournez pas les portes protégés! C'est comme barricader une maison.",
"MINECRAFT_RULE_3": "3. Trichez pas",
"MINECRAFT_RULE_4": "4. Ne laggez pas le serveur",
"MINECRAFT_IP": "IP",
"MINECRAFT_NOTE_1": "psst, tu peux rejoindre le jeux sous bedrock avec l'application ci dessous!",
"MINECRAFT_NOTE_2": "another psst, Si vous avez bedrock et java, vous pouvez les lier sur geyser mc, comme ça vous aurez le même compte sur les deux côtés!",
"MINECRAFT_LINKS": "Liens",
"MINECRAFT_MC_IOS": "MC Server Connector pour iOS",
"MINECRAFT_MC_ANDROID": "MC Server Connector pour Android",
"MINECRAFT_CLIENT_SIDE_MODS": "Les mods recommandés",
"MINECRAFT_CLIENT_SIDE_MODS_URL": "Cliquez sur moi pour une liste de mods recommandés!",
"MINECRAFT_PLUGIN_LIST_TITLE": "Liste des extensions",
"MINECRAFT_PLUGIN_LIST_NOTE": "Ceci est une liste d'extensions composée manuellement, donc elle peut être un peu datée.",
"MINECRAFT_MCMMO": "Cliquez ici pour télecharger notre version compilée de MCMMO!",
"MINECRAFT_VIAVERSION_NOTE": "Vous devez vous connecter sur une de ces versions (1.18, 1.18.1, 1.18.2). Vous pouvez pas utiliser une version plus récente que celle-ci.",
"CSM_GOBACK": "Clique moi pour revenir sur le site Minecraft!",
"CSM_TITLE": "Liste de mods recommandés",
"CSM_HOW_THEY_ARE_PICKED": "Celles-ci on été choisies par notre équipe pour être les plus utiles pour vous.",
"CSM_NOTE_BEDROCK": "Si vous jouez sous Bedrock, Essayez de trouver d'autre alternatives. Simple Voice Chat n'a pas d'autres alternatives. Désolé.",
"CSM_OPTIMIZATION_MODS_NOTE": "N'importe que optimisation pour minecraft (comme sodium)",
"FAQ_TITLE": "Foire aux questions",
"FAQ_OWNER_TITLE": "C'est qui les membres ?",
"FAQ_OWNER": "Originellement: Midou (Sysadmin) et Mrlerien (Hébergeur), Mais Odyssey346 (Sysadmin coté jeux, développeur web (faut vraiment faire sa pub à la con qui fout plus la honte qu'autre chose?) et le géreur de réseaux sociaux (c'est aussi con que le premier) et Devnol (Hébergeur²) sont avec nous.",
"FAQ_TOXICITY_TITLE": "Un de vos services est vraiment pas acceuillant et toxique! Comment faire pour le signaler?",
"FAQ_TOXICITY_1": "Vous pouvez nous contacter par mail, mais les demandes faites dans le chat (plus précisément le channel de singalement) sont plus efficaces.",
"FAQ_TOXICITY_2": "Si c'est personnel. Vous pouvez nous le demander en MP. On a pas de vie alors on est souvent actif.",
"FAQ_TRUST_TITLE": "Comment je peux faire confiances à vous services?",
"FAQ_TRUST_1": "En vrai, il y'a aucun moyen de prouver que nous sommes des personnes de confiance, mais si vous voulez avoir vos informations (sous la loi GDPR), vous pouvez nous le demander sous le salon requêtes.",
"FAQ_TRUST_2": "Ah, et tor existe",
"FAQ_TRUST_3": ", mai on héberge pas de sites sous tor.",
"FAQ_CONTACT_TITLE": "Quel moyen de communication vous préferez?",
"FAQ_CONTACT": "Regardez"
}

62
src/i18n/nb.json Normal file
View File

@ -0,0 +1,62 @@
{
"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.",
"MINECRAFT_TITLE": "Project Segfault MC",
"MINECRAFT_DESCRIPTION": "Vi har en Minecraft server.",
"MINECRAFT_SMP": "Vi har en semi-privat \"SMP\" Minecraft server som kjører på vår Soleil server. Vi kjører Minecraft versjon 1.18* (1.18, 1.18.1, 1.18.2), som man kan også bli med i med Bedrock, takket være GeyserMC",
"MINECRAFT_JOIN": "Hvis du har lyst til å bli med i serveren, bli med på Discorden våres og spør om å bli puttet på hvitelisten.",
"MINECRAFT_DISCORD": "Invitasjonslenke til våres Discord",
"MINECRAFT_RULES": "Regler",
"MINECRAFT_RULE_1": "1. Ikke modifiser byggninger uten tilatelse.",
"MINECRAFT_RULE_2": "2. Ikke kjør om beskyttninger. (ødelegge blokker rundt en beskyttet dør, kjøre om låser på kister osv)",
"MINECRAFT_RULE_3": "3. Ikke juks",
"MINECRAFT_RULE_4": "4. Ikke gjør serveren treg med vilje.",
"MINECRAFT_IP": "IP",
"MINECRAFT_NOTE_1": "forresten, du kan bli med på din Nintendo Switch med å bruke appen vi har lenket under!",
"MINECRAFT_NOTE_2": "også, hvis du spiller på både Java og Bedrock, så kan du koble kontoene sammen på GeyserMCs nettsted. Du får prikk lik opplevelse på begge kontoene dine.",
"MINECRAFT_LINKS": "Linker",
"MINECRAFT_MC_IOS": "MC Server Connector for iOS",
"MINECRAFT_MC_ANDROID": "MC Server Connector for Android",
"MINECRAFT_CLIENT_SIDE_MODS": "Anbefalte mods som kjører på din maskin",
"MINECRAFT_CLIENT_SIDE_MODS_URL": "Klikk meg for en liste av anbefalt lokale mods",
"MINECRAFT_PLUGIN_LIST_TITLE": "Plugin liste",
"MINECRAFT_PLUGIN_LIST_NOTE": "Denne listen er laget manuelt, så det kan hende at den ikke er oppdatert.",
"MINECRAFT_MCMMO": "Klikk her for å laste ned våres bygg av mcMMO.",
"MINECRAFT_VIAVERSION_NOTE": "Du kan bare koble til serveren fra en basisversjon (for eksempel 1.18) og versjonene som er etter basisstasjonen (for eksempel 1.18.1 eller 1.18.2). Du kan ikke koble til fra en stor versjon som er eldre eller nyere enn den våres server kjører.",
"CSM_GOBACK": "Klikk for å gå tilbake til Minecraft siden",
"CSM_TITLE": "Anbefalte mods",
"CSM_HOW_THEY_ARE_PICKED": "Disse er plukket av våres felleskap eller er for server funksjoner som stemmechat.",
"CSM_NOTE_BEDROCK": "Hvis du spiller på Bedrock, så får du ikke brukt mods som Simple Voice Chat. Unnskyld! :(",
"CSM_OPTIMIZATION_MODS_NOTE": "Hva slags mod som gjør spillet kjappere (Vi anbefaler i det minste Sodium)",
"FAQ_TITLE": "Ofte Stilte Spørsmål",
"FAQ_OWNER_TITLE": "Hvem eier prosjektet?",
"FAQ_OWNER": "Originalt var det Midou (system administrator) og MrLeRien (personen som eierer 2 av våres VPSer og Soleil), men nå har Odyssey346 (Spillserver systemadministrator, nettutvikler og norsk-oversetter) og Devnol (personen som eier Helios) blitt med oss.",
"FAQ_TOXICITY_TITLE": "En av deres tjenester har slemme folk!",
"FAQ_TOXICITY_1": "Du kan få i kontakt med oss på e-post eller på Matrix og vi kan diskutere det med deg. Vi anbefaler at du putter meste av disse forespørselene i våres support-kanal her:",
"FAQ_TOXICITY_2": "på Matrix. Hvis det er personlig, bare si at du har en rapport mot noen på våres tjenester, og at du har lyst til å bli kontaktet av en administrator, så kontakter vi deg når det er mulig.",
"FAQ_TRUST_TITLE": "Hvordan kan jeg stole på dere?",
"FAQ_TRUST_1": "Vel, du kan egentlig ikke det. Vi slepper ikke ut loggene våres, men du kan spørre oss om informasjom vi har om deg på serverene våres med å kontakte oss. Hvis du er paranoid,",
"FAQ_TRUST_2": " det er lov å bruke Tor på våres tjenester",
"FAQ_TRUST_3": ", men vi har ingen .onion lenker.",
"FAQ_CONTACT_TITLE": "Hvordan har dere lyst til å kommunisere?",
"FAQ_CONTACT": "Se på"
}

View File

@ -1,38 +0,0 @@
<script lang="ts">
export let title;
export let description;
export let separator;
import SvelteSeo from "svelte-seo";
import * as strings from "$lib/strings";
// Enjoy the jank.
if (title === "Project Segfault") {
title = "";
separator = "";
} else {
separator = "|";
}
</script>
<SvelteSeo
openGraph={{
title: title,
description: description,
type: "website",
images: [
{
url: strings.SEO_BANNER_URL,
width: 850,
height: 650,
alt: "Image"
}
]
}}
/>
<svelte:head>
<title>{title} {separator} Project Segfault</title>
</svelte:head>
<div class="mdsvex_content">
<slot />
</div>

View File

@ -3,25 +3,26 @@
import IconMatrix from "~icons/simple-icons/matrix"; import IconMatrix from "~icons/simple-icons/matrix";
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 strings from "$lib/strings"; import * as global from "../i18n/_global.json";
import { t } from "$lib/translations";
</script> </script>
<footer> <footer>
<hr /> <hr />
<div class="content"> <div class="content">
<span>{strings.COPYRIGHT}</span> <span>{$t("common.FOOTER_COPYRIGHT")}</span>
<div class="links"> <div class="links">
<a href={strings.MATRIX_INVITE}> <a href={global.MATRIX_INVITE}>
<IconMatrix /> <IconMatrix />
</a> </a>
<a href={strings.DISCORD_INVITE}> <a href={global.DISCORD_INVITE}>
<IconDiscord /> <IconDiscord />
</a> </a>
<a href={strings.GITHUB}> <a href={global.GITHUB}>
<IconGitHub /> <IconGitHub />
</a> </a>
<a href={strings.STATUS}> <a href={global.STATUS}>
<IconSignal /> <IconSignal />
</a> </a>
</div> </div>

View File

@ -1,26 +1,27 @@
<script> <script>
import * as strings from "$lib/strings"; import * as global from "../i18n/_global.json";
import { t } from "$lib/translations";
</script> </script>
<nav> <nav>
<a class="brand" href="/"> <a class="brand" href="/">
<img src="/logo.png" alt="{strings.NAME} logo" /> <img src="/logo.png" alt="{global.NAME} logo" />
<span <span
style="color: var(--accent-secondary); margin-left: 4px; margin-right: 4px;" style="color: var(--accent-secondary); margin-left: 4px; margin-right: 4px;"
>{strings.PROJECT}</span >{global.PROJECT}</span
> >
<span style="color: var(--accent-primary); margin-right: 8px;" <span style="color: var(--accent-primary); margin-right: 8px;"
>{strings.SEGFAULT}</span >{global.SEGFAULT}</span
> >
</a> </a>
<div class="links"> <div class="links">
<a href="https://instances.projectsegfau.lt/">{strings.INSTANCES}</a> <a href={global.INSTANCES}>{$t("common.NAVBAR_INSTANCES")}</a>
<a href="/minecraft">{strings.MINECRAFT}</a> <a href="/minecraft">{global.MINECRAFT}</a>
<a href="/donate">{strings.DONATE}</a> <a href="/donate">{$t("common.NAVBAR_DONATE")}</a>
<a href="/faq">{strings.FAQ}</a> <a href="/faq">{$t("common.NAVBAR_FAQ")}</a>
<a href="/contact">{strings.CONTACT}</a> <a href="/contact">{$t("common.NAVBAR_CONTACT")}</a>
<a href="https://blog.projectsegfau.lt/">{strings.BLOG}</a> <a href={global.BLOG_URL}>{$t("common.NAVBAR_BLOG")}</a>
</div> </div>
</nav> </nav>

View File

@ -24,12 +24,13 @@ body {
flex-direction: column; flex-direction: column;
position: relative; position: relative;
min-height: 100vh; min-height: 100vh;
line-height: 1.625;
} }
main { main {
padding: 1rem; padding: 1rem;
flex-grow: 1; flex-grow: 1;
padding-bottom: 200px; padding-bottom: 100px;
} }
a { a {

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

View File

@ -1,17 +0,0 @@
{
"NAME": "Project Segfault",
"PROJECT": "Project",
"SEGFAULT": "Segfault",
"INSTANCES": "Instances & Gameservers",
"MINECRAFT": "Minecraft",
"DONATE": "Donate",
"FAQ": "FAQ",
"CONTACT": "Contact",
"BLOG": "Blog",
"SEO_BANNER_URL": "https://projectsegfau.lt:8448/_matrix/media/r0/download/projectsegfau.lt/HBgjhWUExhKPzbpkpIqQfUkF",
"COPYRIGHT": "© 2021 - present, Project Segfault",
"MATRIX_INVITE": "https://matrix.to/#/#project-segfault:projectsegfau.lt",
"DISCORD_INVITE": "https://discord.gg/26EG7fFtfS",
"GITHUB": "https://github.com/ProjectSegfault",
"STATUS": "https://status.projectsegfau.lt/"
}

33
src/lib/translations.js Normal file
View File

@ -0,0 +1,33 @@
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
},
{
locale: "fr",
key: "common",
loader: async () => (await import("../i18n/fr.json")).default
}
/*
{
locale: "el",
key: "common",
loader: async () => (await import("../i18n/el.json")).default
}
*/
]
};
export const { t, locale, locales, loading, loadTranslations } = new i18n(
config
);

View File

@ -1,11 +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>
<SvelteSeo
openGraph={{
title: global.NAME,
description: $t("common.INDEX_DESCRIPTION"),
type: "website",
images: [
{
url: Banner,
width: 850,
height: 650,
alt: "Image"
}
]
}}
/>
<Nav /> <Nav />
<main> <main>
<slot /> <slot />
</main> </main>
<Footer /> <Footer />

View File

@ -1,98 +0,0 @@
---
title: Contact Us
description: Do you want to contact us?
---
# {title}
## {description}
# Our email
<p><a href="mailto:contact@projectsegfau.lt">contact@projectsegfau.lt</a></p>
<p><i>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!</i></p>
<h1>People</h1>
<div id="Active" style="display:none">
<div class="parent">
<div class="div1">Midou:</div>
<a class="div2 matrixcolored" href="https://matrix.to/#/@midou:projectsegfau.lt">[Matrix]</a>
<div class="div3"></div>
<div class="div4">MrLeRien:</div>
<a class="div5 discordcolored" href="https://discord.com/users/213634643327582208">Discord</a>
<div class="div6"></div>
<div class="div7">Odyssey:</div>
<a class="div8 matrixcolored" href="https://matrix.to/#/@odyssey346:ohai.su">[Matrix]</a>
<a class="div9 discordcolored" href="https://discord.com/users/315843700490240002">Discord</a>
<div class="div10">Devnol:</div>
<a class="div11 matrixcolored" href="https://matrix.to/#/@devnol:projectsegfau.lt">[Matrix]</a>
<a class="div12 discordcolored" href="https://discordapp.com/users/429353559566319626">Discord</a>
</div>
</div>
<button
id="hide"
type="button"
onclick='document.getElementById("Active").style.display ="block"; document.getElementById("hide").style.display = "none" ;'
>
Click to show who is active on what platform
</button>
<style>
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;
}
.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: .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;
}
</style>

117
src/routes/contact.svelte Normal file
View File

@ -0,0 +1,117 @@
<script lang="ts">
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<svelte:head>
<title>{$t("common.CONTACT_TITLE")} | {global.NAME}</title>
</svelte:head>
<h1>{$t("common.CONTACT_TITLE")}</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>
<h1>{$t("common.CONTACT_PEOPLE")}</h1>
<div id="Active">
<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>
<style>
.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;
}
#Active a {
border: none;
border-radius: 10px;
padding: 0.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;
}
</style>

View File

@ -1,46 +0,0 @@
---
title: Donate to Project Segfault
description: Our donation methods
---
<script lang="ts">
import MoneroQR from "$lib/images/Monero.png";
</script>
# {title}
## {description}
# please do
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.
# yeah sure I'll donate. links?
<div class="monero">
<span>Monero: <code>47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code></span>
<img src={MoneroQR} alt="Monero Qr Code">
</div>
<style>
.monero {
display: flex;
align-items: center;
}
.monero > img {
margin-left: 8px;
}
@media only screen and (max-width: 930px) {
.monero {
flex-direction: column;
align-items: flex-start;
}
.monero > img {
margin-left: 0;
margin-top: 8px;
}
}
</style>

53
src/routes/donate.svelte Normal file
View File

@ -0,0 +1,53 @@
<script lang="ts">
import MoneroQR from "$lib/images/Monero.png";
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<svelte:head>
<title>{$t("common.DONATE_TITLE")} | {global.NAME}</title>
</svelte:head>
<h1>{$t("common.DONATE_TITLE")}</h1>
<h2>{$t("common.DONATE_DESCRIPTION")}</h2>
<h1>{$t("common.DONATE_PLEASE_DO")}</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" />
</div>
<style>
.monero {
display: flex;
align-items: center;
}
.monero > img {
margin-left: 8px;
}
@media only screen and (max-width: 930px) {
.monero {
flex-direction: column;
align-items: flex-start;
}
.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>.

34
src/routes/faq.svelte Normal file
View File

@ -0,0 +1,34 @@
<script lang="ts">
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<svelte:head>
<title>{$t("common.FAQ_TITLE")} | {global.NAME}</title>
</svelte:head>
<h1>{$t("common.FAQ_TITLE")}</h1>
<h2>{$t('common.FAQ_OWNER_TITLE')}</h2>
<p>{$t('common.FAQ_OWNER')}</p>
<h2>{$t('common.FAQ_TOXICITY_TITLE')}</h2>
<p>
{$t('common.FAQ_TOXICITY_1')}
<a href="https://matrix.to/#/#support:projectsegfau.lt">#support:projectsegfau.lt</a>
{$t('common.FAQ_TOXICITY_2')}
</p>
<h2>{$t('common.FAQ_TRUST_TITLE')}</h2>
<p>
{$t('common.FAQ_TRUST_1')}
<strong>{$t('common.FAQ_TRUST_2')}</strong>
{$t('common.FAQ_TRUST_3')}
</p>
<h2>{$t('common.FAQ_CONTACT_TITLE')}</h2>
<p>
{$t('common.FAQ_CONTACT')}
<a href="/contact">{$t('common.NAVBAR_CONTACT')}</a>
.
</p>

View File

@ -1,16 +0,0 @@
---
title: Project Segfault
description: 4 idiots, a Sun server and a Hitachi Compute Rack.
---
# {title}
## {description}
# what
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!
# Tell me more! What do you guys host? Where can I contact you? Can you fix my daughter's iPad?
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.

54
src/routes/index.svelte Normal file
View File

@ -0,0 +1,54 @@
<script>
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>
<div>
<h2>{$t("common.INDEX_DESCRIPTION")}</h2>
<h1>{$t("common.INDEX_WHAT")}</h1>
<!-- Cause I feel the need to scream -->
<p>{$t("common.INDEX_WHO_ARE_WE")}</p>
<h1>{$t("common.INDEX_TELL_ME_MORE")}</h1>
<p>{$t("common.INDEX_MORE_INFO")}</p>
</div>
<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"
/>
</a>
<style>
div {
padding-bottom: 150px;
}
img {
width: 270px;
background: var(--accent-primary);
padding: 0.5rem;
position: absolute;
bottom: 80px;
border-radius: 10px;
}
@media only screen and (max-width: 508px) {
img {
bottom: 160px;
}
}
</style>

View File

@ -1,17 +0,0 @@
---
title: Project Segfault MC
---
# {title}
# [Click me to go back to the Minecraft site](/minecraft)
## Recommended mods list
These are picked by our community or are for server features like voice chatting.
If you play on Bedrock, try to find an alternative to these. Mods like Simple Voice Chat have no alternative on Bedrock, sorry.
- [Xaero's World Map](https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map) & [Xaero's Minimap](https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap)
- Any optimization mod (We recommend at least Sodium)
- [Simple Voice Chat](https://www.curseforge.com/minecraft/mc-mods/simple-voice-chat)

View File

@ -0,0 +1,35 @@
<script>
import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
</script>
<svelte:head>
<title>{$t("common.MINECRAFT_TITLE")} | {global.NAME}</title>
</svelte:head>
<h1>{$t("common.MINECRAFT_TITLE")}</h1>
<h1><a href="/minecraft">{$t("common.CSM_GOBACK")}</a></h1>
<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>

View File

@ -1,59 +0,0 @@
---
title: Project Segfault MC
description: Yeah, we have a Minecraft server.
---
# {title}
# {description}
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.
If you would like to join, please [join our Discord](https://discord.gg/26EG7fFtfS) and ask us there to be whitelisted.
## Rules
1. Do not modify buildings without permission.
2. Do not bypass protections. (mining around a protected door, bypassing chest locks etc)
3. Do not cheat
4. Do not lag the shit out of the server.
## IP
**Java**: mc.projectsegfau.lt:25565
**Bedrock** mc.projectsegfau.lt:19132
_psst, you can join bedrock on your switch using the app we've linked below!_
_another psst, if you play on both Java and Bedrock, [link your accounts together on GeyserMC's website!](https://link.geysermc.org)_ Your accounts will be linked together meaning you will have the exact same experience.
## Links
[Dynmap](https://map.mc.projectsegfau.lt)
[MC Server Connector for iOS](https://apps.apple.com/us/app/mc-server-connector/id1548251304)
[MC Server Connector for Android](https://play.google.com/store/apps/details?id=com.smokiem.mcserverconnector&hl=no&gl=US)
## Recommended Client-Side Mods
[Click me for a list of recommended client-side mods](/minecraft/client-side-mods)
## Plugin list
This is a manually made list of our plugins, so it might not be up to date.
- BlockLocker
- CoreProtect
- [Dynmap](https://map.mc.projectsegfau.lt)
- EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)
- Geyser & Floodgate
- LuckPerms
- mcMMO (Imagine paying for a build of an open source piece of software. [Click here to download our build.](https://dl.odyssey346.dev/Software/mcMMO_because_fuck_buying_open_source_software.jar))
- TabTPS
- Vault
- ViaVersion (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 than the major version the server is running.)
- PlugMan
- CombatLogX
- Simple Voice Mod

View File

@ -0,0 +1,80 @@
<script>
import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
</script>
<svelte:head>
<title>{$t("common.MINECRAFT_TITLE")} | {global.NAME}</title>
</svelte:head>
<h1>{$t("common.MINECRAFT_TITLE")}</h1>
<h1>{$t("common.MINECRAFT_DESCRIPTION")}</h1>
<p>{$t("common.MINECRAFT_SMP")}</p>
<p>{$t("common.MINECRAFT_JOIN")}</p>
<a href={global.DISCORD_INVITE}>{$t("common.MINECRAFT_DISCORD")}</a>
<h2>{$t("common.MINECRAFT_RULES")}</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>
<br />
<i>{$t("common.MINECRAFT_NOTE_2")}</i>
<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://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>
<a href="/minecraft/client-side-mods"
>{$t("common.MINECRAFT_CLIENT_SIDE_MODS_URL")}</a
>
<h2>{$t("common.MINECRAFT_PLUGIN_LIST_TITLE")}</h2>
<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.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

@ -1,20 +1,15 @@
import adapter from "@sveltejs/adapter-static"; import adapter from "@sveltejs/adapter-static";
import preprocess from "svelte-preprocess"; import preprocess from "svelte-preprocess";
import icons from "unplugin-icons/vite"; import icons from "unplugin-icons/vite";
import { mdsvex } from "mdsvex";
/** @type {import('@sveltejs/kit').Config} */ /** @type {import('@sveltejs/kit').Config} */
const config = { const config = {
// Consult https://github.com/sveltejs/svelte-preprocess // Consult https://github.com/sveltejs/svelte-preprocess
// for more information about preprocessors // for more information about preprocessors
extensions: [".svelte", ".md"], extensions: [".svelte"],
preprocess: [ preprocess: [
preprocess(), preprocess(),
mdsvex({
extensions: [".md"],
layout: "./src/lib/Content.svelte"
})
], ],
kit: { kit: {