Merge pull request #868 from rjmacarthy/chore/leaderboard-locales

website: Add locale to Leaderboard and organize locale files
This commit is contained in:
Keith Stevens
2023-01-22 09:45:23 +09:00
committed by GitHub
7 changed files with 37 additions and 30 deletions
+1 -2
View File
@@ -13,6 +13,5 @@
"sign_in": "Sign In", "sign_in": "Sign In",
"sign_out": "Sign Out", "sign_out": "Sign Out",
"terms_of_service": "Terms of Service", "terms_of_service": "Terms of Service",
"title": "Open Assistant", "title": "Open Assistant"
"last_updated_at": "Last updated at: {{val, datetime}}"
} }
+6 -7
View File
@@ -1,16 +1,15 @@
{ {
"title": "Open Assistant",
"subtitle": "Conversational AI for everyone.",
"description": "Conversational AI for everyone. An open source project to create a chat enabled GPT LLM run by LAION and contributors around the world.",
"blurb": "We believe we can create a revolution.", "blurb": "We believe we can create a revolution.",
"blurb1": "In the same way that Stable Diffusion helped the world make art and images in new ways, we want to improve the world by providing amazing conversational AI.", "blurb1": "In the same way that Stable Diffusion helped the world make art and images in new ways, we want to improve the world by providing amazing conversational AI.",
"join_us_title": "Join us", "description": "Conversational AI for everyone. An open source project to create a chat enabled GPT LLM run by LAION and contributors around the world.",
"join_us_description": "All open source projects begin with people like you. Open source is the belief that if we collaborate we can together gift our knowledge and technology to the world for the benefit of humanity. Are you in? Find us here:",
"faq_title": "Frequently Asked Questions",
"faq_items": { "faq_items": {
"q0": "How far along is this project?", "q0": "How far along is this project?",
"a0": "We are in the early stages of development, working from established research in applying RLHF to large language models.", "a0": "We are in the early stages of development, working from established research in applying RLHF to large language models.",
"q1": "Who is behind Open Assistant?", "q1": "Who is behind Open Assistant?",
"a1": "Open Assistant is a project organized by LAION and individuals around the world interested in bringing this technology to everyone." "a1": "Open Assistant is a project organized by LAION and individuals around the world interested in bringing this technology to everyone."
} },
"faq_title": "Frequently Asked Questions",
"join_us_description": "All open source projects begin with people like you. Open source is the belief that if we collaborate we can together gift our knowledge and technology to the world for the benefit of humanity. Are you in? Find us here:",
"join_us_title": "Join us",
"subtitle": "Conversational AI for everyone."
} }
@@ -0,0 +1,11 @@
{
"daily": "Daily",
"last_updated_at": "Last updated at: {{val, datetime}}",
"leaderboard": "Leaderboard",
"monthly": "Monthly",
"overall": "Overall",
"rank": "Rank",
"score": "Score",
"user": "User",
"weekly": "Weekly"
}
+2 -2
View File
@@ -6,7 +6,7 @@ import { AnimatedCircles } from "./AnimatedCircles";
import { Container } from "./Container"; import { Container } from "./Container";
export function Hero() { export function Hero() {
const { t } = useTranslation("index"); const { t } = useTranslation(["index", "common"]);
const { colorMode } = useColorMode(); const { colorMode } = useColorMode();
const pTextColor = colorMode === "light" ? "text-gray-600" : "text-white"; const pTextColor = colorMode === "light" ? "text-gray-600" : "text-white";
const fancyTextGradientClasses = const fancyTextGradientClasses =
@@ -17,7 +17,7 @@ export function Hero() {
<Box className="lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20"> <Box className="lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20">
<Box className="relative mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6"> <Box className="relative mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6">
<Text as="h1" className="text-5xl mb-6 font-bold tracking-tight"> <Text as="h1" className="text-5xl mb-6 font-bold tracking-tight">
{t("title")} {t("common:title")}
</Text> </Text>
<Text <Text
as="h2" as="h2"
@@ -6,19 +6,19 @@ import { get } from "src/lib/api";
import { LeaderboardReply, LeaderboardTimeFrame } from "src/types/Leaderboard"; import { LeaderboardReply, LeaderboardTimeFrame } from "src/types/Leaderboard";
import useSWRImmutable from "swr/immutable"; import useSWRImmutable from "swr/immutable";
const columns = [ const getColumns = (t) => [
{ {
Header: "Rank", Header: t("rank"),
accessor: "rank", accessor: "rank",
style: { width: "90px" }, style: { width: "90px" },
}, },
{ {
Header: "Score", Header: t("score"),
accessor: "leader_score", accessor: "leader_score",
style: { width: "90px" }, style: { width: "90px" },
}, },
{ {
Header: "User", Header: t("user"),
accessor: "display_name", accessor: "display_name",
}, },
]; ];
@@ -27,11 +27,13 @@ const columns = [
* Presents a grid of leaderboard entries with more detailed information. * Presents a grid of leaderboard entries with more detailed information.
*/ */
const LeaderboardGridCell = ({ timeFrame }: { timeFrame: LeaderboardTimeFrame }) => { const LeaderboardGridCell = ({ timeFrame }: { timeFrame: LeaderboardTimeFrame }) => {
const { t } = useTranslation(); const { t } = useTranslation(["leaderboard", "common"]);
const { data: reply } = useSWRImmutable<LeaderboardReply>(`/api/leaderboard?time_frame=${timeFrame}`, get, { const { data: reply } = useSWRImmutable<LeaderboardReply>(`/api/leaderboard?time_frame=${timeFrame}`, get, {
revalidateOnMount: true, revalidateOnMount: true,
}); });
const columns = useMemo(() => getColumns(t), [t]);
const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable({ const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable({
columns, columns,
data: reply?.leaderboard ?? [], data: reply?.leaderboard ?? [],
+2 -8
View File
@@ -3,17 +3,17 @@ import Head from "next/head";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { useSession } from "next-auth/react"; import { useSession } from "next-auth/react";
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
import { useEffect } from "react"; import { useEffect } from "react";
import { CallToAction } from "src/components/CallToAction"; import { CallToAction } from "src/components/CallToAction";
import { Faq } from "src/components/Faq"; import { Faq } from "src/components/Faq";
import { Hero } from "src/components/Hero"; import { Hero } from "src/components/Hero";
import { getTransparentHeaderLayout } from "src/components/Layout"; import { getTransparentHeaderLayout } from "src/components/Layout";
export { getDefaultStaticProps as getStaticProps } from "src/lib/default_static_props";
const Home = () => { const Home = () => {
const router = useRouter(); const router = useRouter();
const { status } = useSession(); const { status } = useSession();
const { t } = useTranslation("index"); const { t } = useTranslation();
useEffect(() => { useEffect(() => {
if (status === "authenticated") { if (status === "authenticated") {
router.push("/dashboard"); router.push("/dashboard");
@@ -37,10 +37,4 @@ const Home = () => {
Home.getLayout = getTransparentHeaderLayout; Home.getLayout = getTransparentHeaderLayout;
export const getStaticProps = async ({ locale }) => ({
props: {
...(await serverSideTranslations(locale, ["index", "common"])),
},
});
export default Home; export default Home;
+8 -6
View File
@@ -1,27 +1,29 @@
import { Box, Heading, Tab, TabList, TabPanel, TabPanels, Tabs } from "@chakra-ui/react"; import { Box, Heading, Tab, TabList, TabPanel, TabPanels, Tabs } from "@chakra-ui/react";
import Head from "next/head"; import Head from "next/head";
import { useTranslation } from "next-i18next";
import { getDashboardLayout } from "src/components/Layout"; import { getDashboardLayout } from "src/components/Layout";
import { LeaderboardGridCell } from "src/components/LeaderboardGridCell"; import { LeaderboardGridCell } from "src/components/LeaderboardGridCell";
export { getDefaultStaticProps as getStaticProps } from "src/lib/default_static_props"; export { getDefaultStaticProps as getStaticProps } from "src/lib/default_static_props";
import { LeaderboardTimeFrame } from "src/types/Leaderboard"; import { LeaderboardTimeFrame } from "src/types/Leaderboard";
const Leaderboard = () => { const Leaderboard = () => {
const { t } = useTranslation(["leaderboard", "common"]);
return ( return (
<> <>
<Head> <Head>
<title>Leaderboard - Open Assistant</title> <title>{`${t("leaderboard")} - ${t("common:title")}`}</title>
<meta name="description" content="Leaderboard Rankings" charSet="UTF-8" /> <meta name="description" content="Leaderboard Rankings" charSet="UTF-8" />
</Head> </Head>
<Box display="flex" flexDirection="column"> <Box display="flex" flexDirection="column">
<Heading fontSize="2xl" fontWeight="bold" pb="4"> <Heading fontSize="2xl" fontWeight="bold" pb="4">
Leaderboard {t("leaderboard")}
</Heading> </Heading>
<Tabs isFitted isLazy> <Tabs isFitted isLazy>
<TabList> <TabList>
<Tab>Daily</Tab> <Tab>{t("daily")}</Tab>
<Tab>Weekly</Tab> <Tab>{t("weekly")}</Tab>
<Tab>Monthly</Tab> <Tab>{t("monthly")}</Tab>
<Tab>Overall</Tab> <Tab>{t("overall")}</Tab>
</TabList> </TabList>
<TabPanels> <TabPanels>