rtetley commited on
Commit
776840e
·
verified ·
1 Parent(s): 87189e1

feat(login): add internationalisation to login comonents

Browse files
frontend/src/components/shared/AuthContainer.jsx DELETED
@@ -1,139 +0,0 @@
1
- import React from "react";
2
- import {
3
- Box,
4
- Typography,
5
- Button,
6
- Chip,
7
- Stack,
8
- Paper,
9
- CircularProgress,
10
- } from "@mui/material";
11
- import HFLogo from "../Logo/HFLogo";
12
- import { useAuth } from "../../hooks/useAuth";
13
- import LogoutIcon from "@mui/icons-material/Logout";
14
- import { useNavigate } from "react-router-dom";
15
-
16
- function AuthContainer({ actionText = "DO_ACTION" }) {
17
- const { isAuthenticated, user, login, logout, loading } = useAuth();
18
- const navigate = useNavigate();
19
-
20
- const handleLogout = () => {
21
- if (isAuthenticated && logout) {
22
- logout();
23
- navigate("/", { replace: true });
24
- window.location.reload();
25
- }
26
- };
27
-
28
- if (loading) {
29
- return (
30
- <Paper
31
- elevation={0}
32
- sx={{
33
- p: 3,
34
- mb: 4,
35
- border: "1px solid",
36
- borderColor: "grey.300",
37
- display: "flex",
38
- flexDirection: "column",
39
- alignItems: "center",
40
- gap: 2,
41
- }}
42
- >
43
- <CircularProgress size={24} />
44
- </Paper>
45
- );
46
- }
47
-
48
- if (!isAuthenticated) {
49
- return (
50
- <Paper
51
- elevation={0}
52
- sx={{
53
- p: 3,
54
- mb: 4,
55
- border: "1px solid",
56
- borderColor: "grey.300",
57
- display: "flex",
58
- flexDirection: "column",
59
- alignItems: "center",
60
- gap: 2,
61
- }}
62
- >
63
- <Typography variant="h6" align="center">
64
- Login to {actionText}
65
- </Typography>
66
- <Typography variant="body2" color="text.secondary" align="center">
67
- You need to be logged in with your Hugging Face account to{" "}
68
- {actionText.toLowerCase()}
69
- </Typography>
70
- <Button
71
- variant="contained"
72
- onClick={login}
73
- startIcon={
74
- <Box
75
- sx={{
76
- width: 20,
77
- height: 20,
78
- display: "flex",
79
- alignItems: "center",
80
- }}
81
- >
82
- <HFLogo />
83
- </Box>
84
- }
85
- sx={{
86
- textTransform: "none",
87
- fontWeight: 600,
88
- py: 1,
89
- px: 2,
90
- }}
91
- >
92
- Sign in with Hugging Face
93
- </Button>
94
- </Paper>
95
- );
96
- }
97
-
98
- return (
99
- <Paper
100
- elevation={0}
101
- sx={{ p: 2, border: "1px solid", borderColor: "grey.300", mb: 4 }}
102
- >
103
- <Stack
104
- direction="row"
105
- spacing={2}
106
- alignItems="center"
107
- justifyContent="space-between"
108
- >
109
- <Stack direction="row" spacing={1} alignItems="center">
110
- <Typography variant="body1">
111
- Connected as <strong>{user?.username}</strong>
112
- </Typography>
113
- <Chip
114
- label={`Ready to ${actionText}`}
115
- color="success"
116
- size="small"
117
- variant="outlined"
118
- />
119
- </Stack>
120
- <Button
121
- variant="contained"
122
- onClick={handleLogout}
123
- endIcon={<LogoutIcon />}
124
- color="primary"
125
- sx={{
126
- minWidth: 120,
127
- height: 36,
128
- textTransform: "none",
129
- fontSize: "0.9375rem",
130
- }}
131
- >
132
- Logout
133
- </Button>
134
- </Stack>
135
- </Paper>
136
- );
137
- }
138
-
139
- export default AuthContainer;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/src/i18n.tsx CHANGED
@@ -1,4 +1,5 @@
1
  import { createI18nApi, declareComponentKeys } from "i18nifty";
 
2
  export {declareComponentKeys};
3
 
4
  //List the languages you with to support
@@ -21,9 +22,10 @@ export const {
21
  /** For use outside of React */
22
  getTranslation,
23
  } = createI18nApi<
24
- | import ("pages/LeaderboardPage/LeaderboardPage").I18n
25
  | import ("components/Header/Header").I18n
26
  | import ("components/Navigation/Navigation").I18n
 
27
  >()(
28
  {
29
  languages,
@@ -31,16 +33,6 @@ export const {
31
  },
32
  {
33
  "en": {
34
- "LeaderboardPage": {
35
- "greating": ({ who })=> `Hello ${who}`,
36
- "how are you": "How are you feeling today?",
37
- "learn more": ({ href }) => (
38
- <>
39
- Learn more about
40
- <a href={href}>this website</a>.
41
- </>
42
- )
43
- },
44
  "header": {
45
  "tagline": "Benchmark for large language models in French",
46
  "service": "LLM leaderboard for the French language"
@@ -48,20 +40,25 @@ export const {
48
  "Navigation": {
49
  "submit": "Submit",
50
  "about": "About"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
  },
53
  /* spell-checker: disable */
54
  "fr": {
55
- "LeaderboardPage": {
56
- "greating": ({ who })=> `Bonjour ${who}`,
57
- "how are you": "Comment vous sentez vous au jour d'hui?",
58
- "learn more": ({ href }) => (
59
- <>
60
- En savoir plus à propos de
61
- <a href={href}>ce site web</a>.
62
- </>
63
- )
64
- },
65
  "header": {
66
  "tagline": "Comparaison de modèles d'IA génératifs sur des jeux de données adaptés à la langue française",
67
  "service": "Leaderboard des modèles de langage pour le français"
@@ -69,6 +66,21 @@ export const {
69
  "Navigation": {
70
  "submit": "Soumettre",
71
  "about": "A propos"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  }
73
  }
74
  /* spell-checker: enable */
 
1
  import { createI18nApi, declareComponentKeys } from "i18nifty";
2
+ import { Typography } from "@mui/material";
3
  export {declareComponentKeys};
4
 
5
  //List the languages you with to support
 
22
  /** For use outside of React */
23
  getTranslation,
24
  } = createI18nApi<
25
+ | import ("pages/AddModelPage/AddModelPage").I18n
26
  | import ("components/Header/Header").I18n
27
  | import ("components/Navigation/Navigation").I18n
28
+ | import ("components/shared/AuthContainer").I18n
29
  >()(
30
  {
31
  languages,
 
33
  },
34
  {
35
  "en": {
 
 
 
 
 
 
 
 
 
 
36
  "header": {
37
  "tagline": "Benchmark for large language models in French",
38
  "service": "LLM leaderboard for the French language"
 
40
  "Navigation": {
41
  "submit": "Submit",
42
  "about": "About"
43
+ },
44
+ "AddModelPage": {
45
+ "title": "Submit a model for evaluation",
46
+ "subtitle": "Add your model to the LLM leaderboard for the French language."
47
+ },
48
+ "AuthContainer": {
49
+ "login": "Login to submit a model",
50
+ "need": "You need to be logged in with your Hugging Face account to submit a model",
51
+ "logout": "Logout",
52
+ "button": "Sign in with Hugging Face",
53
+ "loggedin": ({user}) => (
54
+ <Typography variant="body1">
55
+ Connected as <strong>{user}</strong>
56
+ </Typography>
57
+ )
58
  }
59
  },
60
  /* spell-checker: disable */
61
  "fr": {
 
 
 
 
 
 
 
 
 
 
62
  "header": {
63
  "tagline": "Comparaison de modèles d'IA génératifs sur des jeux de données adaptés à la langue française",
64
  "service": "Leaderboard des modèles de langage pour le français"
 
66
  "Navigation": {
67
  "submit": "Soumettre",
68
  "about": "A propos"
69
+ },
70
+ "AddModelPage": {
71
+ "title": "Soumettre un modele a l'evaluation",
72
+ "subtitle": "Ajoutez votre modele au leaderboard des modeles de langage pour le francais"
73
+ },
74
+ "AuthContainer": {
75
+ "login": "Se connecter pour soumettre un modele",
76
+ "need": "Il vous faut vous connecter avec votre compte Hugging Face pour soumettre un modele",
77
+ "logout": "Se deconnecter",
78
+ "button": "Se connecter avec Hugging Face",
79
+ "loggedin": ({user}) => (
80
+ <Typography variant="body1">
81
+ Connecte en tant que <strong>{user}</strong>
82
+ </Typography>
83
+ )
84
  }
85
  }
86
  /* spell-checker: enable */
frontend/src/pages/AddModelPage/AddModelPage.jsx DELETED
@@ -1,48 +0,0 @@
1
- import React from "react";
2
- import { Box, CircularProgress } from "@mui/material";
3
- import { useAuth } from "../../hooks/useAuth";
4
- import PageHeader from "../../components/shared/PageHeader";
5
- import EvaluationQueues from "./components/EvaluationQueues/EvaluationQueues";
6
- import ModelSubmissionForm from "./components/ModelSubmissionForm/ModelSubmissionForm";
7
- import SubmissionGuide from "./components/SubmissionGuide/SubmissionGuide";
8
-
9
- function AddModelPage() {
10
- const { isAuthenticated, loading, user } = useAuth();
11
-
12
- if (loading) {
13
- return (
14
- <Box
15
- sx={{
16
- display: "flex",
17
- justifyContent: "center",
18
- alignItems: "center",
19
- height: "100vh",
20
- }}
21
- >
22
- <CircularProgress />
23
- </Box>
24
- );
25
- }
26
-
27
- return (
28
- <Box sx={{ width: "100%", maxWidth: 1200, margin: "0 auto", padding: 4 }}>
29
- <PageHeader
30
- title="Submit a Model for Evaluation"
31
- subtitle={
32
- <>
33
- Add <span style={{ fontWeight: 600 }}>your</span> model to the Open
34
- LLM Leaderboard
35
- </>
36
- }
37
- />
38
-
39
- <SubmissionGuide />
40
-
41
- <ModelSubmissionForm user={user} isAuthenticated={isAuthenticated} />
42
-
43
- <EvaluationQueues defaultExpanded={false} />
44
- </Box>
45
- );
46
- }
47
-
48
- export default AddModelPage;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/src/pages/AddModelPage/components/SubmissionGuide/SubmissionGuide.jsx CHANGED
@@ -52,6 +52,10 @@ const StepNumber = ({ number }) => (
52
  </Box>
53
  );
54
 
 
 
 
 
55
  const LOCALIZED_STEPS = {
56
  STEP1: {
57
  TITLE: {
@@ -375,7 +379,7 @@ function SubmissionGuide() {
375
  variant="h6"
376
  sx={{ fontWeight: 600, color: "text.primary" }}
377
  >
378
- Submission Guide
379
  </Typography>
380
  <ExpandMoreIcon
381
  sx={{
 
52
  </Box>
53
  );
54
 
55
+ const TITLE = {
56
+ "en": "Submission guide",
57
+ "fr": "Guide de soumission"
58
+ }
59
  const LOCALIZED_STEPS = {
60
  STEP1: {
61
  TITLE: {
 
379
  variant="h6"
380
  sx={{ fontWeight: 600, color: "text.primary" }}
381
  >
382
+ {resolveLocalizedString(TITLE)}
383
  </Typography>
384
  <ExpandMoreIcon
385
  sx={{