diff --git a/src/app/contribute/page.tsx b/src/app/contribute/page.tsx
index 44f9c9e..aeffd33 100644
--- a/src/app/contribute/page.tsx
+++ b/src/app/contribute/page.tsx
@@ -1,3 +1,5 @@
+"use client";
+
import {
Container,
Group,
@@ -13,142 +15,166 @@ import Image from "next/image";
import { IconBrandRust, IconBrandTypescript } from "@tabler/icons-react";
import Link from "next/link";
import { SponsorList } from "@/app/contribute/sponsors";
+import { useTranslation, Trans } from "@/app/translate";
function ContributeCode() {
+ const { t } = useTranslation();
return (
- ๐ฅ๏ธ Contribute code
-
- There's a few different codebases in couple of different languages, and
- we'd welcome any help to try and maintain and improve them.
-
+ ๐ฅ๏ธ {t("contribute.code")}
+ {t("contribute.code-description")}}>
- The actual{" "}
-
- emulator
- {" "}
- itself, and all of the{" "}
-
- desktop player
-
- , is written in Rust.
+
+ {t("contribute.emulator")}
+ ,
+
+ {t("contribute.desktop-player")}
+ ,
+ ]}
+ />
}>
- The{" "}
-
- web player
-
- , the{" "}
-
- extension
- {" "}
- and our{" "}
-
- website
- {" "}
- is written in TypeScript.
+
+ {t("contribute.web-player")}
+ ,
+
+ {t("contribute.extension")}
+ ,
+
+ {t("contribute.website")}
+ ,
+ ]}
+ />
- Check out our{" "}
-
- Contributing Guidelines
- {" "}
- for information on how to start, and come join our{" "}
-
- Discord
- {" "}
- if you need help!
+
+ {t("contribute.guidelines")}
+ ,
+
+ {t("footer.discord")}
+ ,
+ ]}
+ />
);
}
function TestContent() {
+ const { t } = useTranslation();
return (
- ๐น๏ธ Test content
+ ๐น๏ธ {t("contribute.test")}
+ {t("contribute.test-description")}
- Arguably more important than contributing code is testing Ruffle out. Go
- install Ruffle and try out your favourite games and animations. Look for
- any difference from the official Flash Player, and report your findings
- to us.
-
-
- If you find any bugs, changes of behaviour, performance issues or any
- visual differences then please report those to{" "}
-
- our bug tracker
-
- .
+
+ {t("contribute.bug-tracker")}
+ ,
+ ]}
+ />
- If it runs flawlessly, come share the good news on{" "}
-
- our Discord
-
- !
+
+ {t("contribute.our-discord")}
+ ,
+ ]}
+ />
);
}
function Sponsorship() {
+ const { t } = useTranslation();
return (
- ๐ฒ Sponsor the project
-
- If you are able and willing to, we welcome any and all financial support
- to help us fund the project going forward. With your help, we can afford
- to spend more time dedicated to Ruffle, as well as pay for expenses such
- as build servers & hosting. We accept donations and sponsorships of
- any kind, big or small, through Open Source Collective 501(c)(6).
-
+ ๐ฒ {t("contribute.sponsor")}
+ {t("contribute.sponsor-description")}
- For more information, or to view the options available for sponsoring
- the project, please visit{" "}
-
- our Open Collective page
-
- .
+
+ {t("contribute.opencollective")}
+ ,
+ ]}
+ />
);
}
function SpreadTheWord() {
+ const { t } = useTranslation();
return (
- ๐ฌ Spread the word!
-
- Is your favourite Flash-based site shutting down? Let them know they can
- add one JavaScript file and keep it running! Feeling nostalgic for some
- old Flash games? Go play some on Newgrounds with Ruffle installed, and
- tell your friends about it! Maybe you're a streamer and looking for some
- silly content? There's literally decades worth, now unlocked and
- accessible once more.
-
+
+ ๐ฌ {t("contribute.spread-the-word")}
+
+ {t("contribute.spread-the-word-description")}
);
}
export default function Page() {
+ const { t } = useTranslation();
return (
@@ -161,16 +187,8 @@ export default function Page() {
className={classes.image}
/>
- Get Involved
-
- Ruffle is an entirely open source project, maintained by volunteers
- like you who just want to help preserve a slice of history. We rely
- on contributions of any kind to keep this project going, and
- absolutely would not have come as far as we have without the amazing
- support of our community who came together to make Ruffle happen. If
- you'd like to join them, there are many ways to help make Ruffle
- better than ever!
-
+ {t("contribute.involved")}
+ {t("contribute.involved-description")}
diff --git a/src/app/contribute/sponsors.tsx b/src/app/contribute/sponsors.tsx
index 4f22586..79a1b92 100644
--- a/src/app/contribute/sponsors.tsx
+++ b/src/app/contribute/sponsors.tsx
@@ -1,8 +1,11 @@
+"use client";
+
import { Card, Group, Stack, Text, Title } from "@mantine/core";
import classes from "./sponsors.module.css";
import React from "react";
import Link from "next/link";
import Image from "next/image";
+import { useTranslation } from "@/app/translate";
interface Sponsor {
name: string;
@@ -115,14 +118,11 @@ function Sponsor(sponsor: Sponsor) {
}
export function SponsorList() {
+ const { t } = useTranslation();
return (
- ๐ Diamond Sponsors
-
- We'd like to thank all of our sponsors, who help make this project
- possible. Below are our Diamond level sponsors, without whom we would
- not be here. Thank you.
-
+ ๐ {t("contribute.diamond")}
+ {t("contribute.diamond-description")}
{sponsors.map((sponsor, index) => (
diff --git a/src/i18n/translations.en.json b/src/i18n/translations.en.json
index 0802f04..8310ae7 100644
--- a/src/i18n/translations.en.json
+++ b/src/i18n/translations.en.json
@@ -113,5 +113,34 @@
"missing-members": "Missing Members",
"done": "Done"
}
+ },
+ "contribute": {
+ "involved": "Get Involved",
+ "involved-description": "Ruffle is an entirely open source project, maintained by volunteers like you who just want to help preserve a slice of history. We rely on contributions of any kind to keep this project going, and absolutely would not have come as far as we have without the amazing support of our community who came together to make Ruffle happen. If you'd like to join them, there are many ways to help make Ruffle better than ever!",
+ "code": "Contribute code",
+ "code-description": "There's a few different codebases in couple of different languages, and we'd welcome any help to try and maintain and improve them.",
+ "rust": "The actual {{emulator}} itself, and all of the {{desktop-player}}, is written in Rust.",
+ "emulator": "emulator",
+ "desktop-player": "desktop player",
+ "typescript": "The {{web-player}}, the {{extension}} and our {{website}} is written in TypeScript.",
+ "web-player": "web player",
+ "extension": "extension",
+ "website": "website",
+ "getting-started": "Check out our {{guidelines}} for information on how to start, and come join our {{discord}} if you need help!",
+ "guidelines": "Contributing Guidelines",
+ "test": "Test content",
+ "test-description": "Arguably more important than contributing code is testing Ruffle out. Go install Ruffle and try out your favourite games and animations. Look for any difference from the official Flash Player, and report your findings to us.",
+ "report-bugs": "If you find any bugs, changes of behaviour, performance issues or any visual differences then please report those to our {{bug-tracker}}.",
+ "bug-tracker": "our bug tracker",
+ "working": "If it runs flawlessly, come share the good news on {{our-discord}}!",
+ "our-discord": "our Discord",
+ "sponsor": "Sponsor the project",
+ "sponsor-description": "If you are able and willing to, we welcome any and all financial support to help us fund the project going forward. With your help, we can afford to spend more time dedicated to Ruffle, as well as pay for expenses such as build servers & hosting. We accept donations and sponsorships of any kind, big or small, through Open Source Collective 501(c)(6).",
+ "sponsor-info": "For more information, or to view the options available for sponsoring the project, please visit {{opencollective}}.",
+ "opencollective": "our Open Collective page",
+ "spread-the-word": "Spread the word!",
+ "spread-the-word-description": "Is your favourite Flash-based site shutting down? Let them know they can add one JavaScript file and keep it running! Feeling nostalgic for some old Flash games? Go play some on Newgrounds with Ruffle installed, and tell your friends about it! Maybe you're a streamer and looking for some silly content? There's literally decades worth, now unlocked and accessible once more.",
+ "diamond": "Diamond Sponsors",
+ "diamond-description": "We'd like to thank all of our sponsors, who help make this project possible. Below are our Diamond level sponsors, without whom we would not be here. Thank you."
}
}
diff --git a/src/i18n/translations.es.json b/src/i18n/translations.es.json
deleted file mode 100644
index 1fe1a3c..0000000
--- a/src/i18n/translations.es.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "home": {
- "title": "Un emulador de Flash Player de cรณdigo abierto"
- }
-}