mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-25 06:24:19 +00:00
🌍 Translated UI
This commit is contained in:
parent
75c6ba0833
commit
f72382412f
7 changed files with 85 additions and 27 deletions
|
@ -5,7 +5,7 @@
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="FLASK_CONFIG" value="../config.py" />
|
<env name="FLASK_CONFIG" value="config.py" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="$USER_HOME$/.cache/pypoetry/virtualenvs/nest--u3GVeLy-py3.9/bin/python" />
|
<option name="SDK_HOME" value="$USER_HOME$/.cache/pypoetry/virtualenvs/nest--u3GVeLy-py3.9/bin/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
|
|
@ -80,6 +80,25 @@ export default {
|
||||||
type: "Tipo",
|
type: "Tipo",
|
||||||
admin: "Amministratore",
|
admin: "Amministratore",
|
||||||
user: "Utente",
|
user: "Utente",
|
||||||
|
|
||||||
|
repoDeleted: "Questa repository è stata eliminata.",
|
||||||
|
hourlyGraph: "Grafico orario",
|
||||||
|
visualMap: "Mappa",
|
||||||
|
tweets: "Tweet",
|
||||||
|
stats: "Statistiche",
|
||||||
|
totTweets: "Tweet totali",
|
||||||
|
dispTweets: "Tweet mostrati",
|
||||||
|
dispTweetsPerc: "% di tweet mostrati",
|
||||||
|
locTweets: "Tweet con posizione",
|
||||||
|
locTweetsPerc: "% di tweet con posizione",
|
||||||
|
contTweets: "Tweet con contenuto",
|
||||||
|
contTweetsPerc: "% di tweet con contenuto",
|
||||||
|
wordCount: "Totale parole",
|
||||||
|
wordPop: "Parola più utilizzata",
|
||||||
|
imgTweets: "Tweet con immagine",
|
||||||
|
imgTweetsPerc: "% di tweet con immagine",
|
||||||
|
postUniq: "Totale utenti che hanno postato",
|
||||||
|
postPop: "Utente più attivo",
|
||||||
},
|
},
|
||||||
// 🇬🇧
|
// 🇬🇧
|
||||||
en: {
|
en: {
|
||||||
|
@ -151,6 +170,25 @@ export default {
|
||||||
type: "Type",
|
type: "Type",
|
||||||
admin: "Admin",
|
admin: "Admin",
|
||||||
user: "User",
|
user: "User",
|
||||||
|
|
||||||
|
repoDeleted: "This repository was deleted.",
|
||||||
|
hourlyGraph: "Hourly graph",
|
||||||
|
visualMap: "Map",
|
||||||
|
tweets: "Tweets",
|
||||||
|
stats: "Stats",
|
||||||
|
totTweets: "Total tweets",
|
||||||
|
dispTweets: "Displayed tweets",
|
||||||
|
dispTweetsPerc: "% of displayed tweets",
|
||||||
|
locTweets: "Tweets with location",
|
||||||
|
locTweetsPerc: "% of tweets with location",
|
||||||
|
contTweets: "Tweets with content",
|
||||||
|
contTweetsPerc: "% of tweets with content",
|
||||||
|
wordCount: "Word count",
|
||||||
|
wordPop: "Most popular word",
|
||||||
|
imgTweets: "Tweets with image",
|
||||||
|
imgTweetsPerc: "% of tweets with image",
|
||||||
|
postUniq: "Unique posters",
|
||||||
|
postPop: "Most active poster",
|
||||||
},
|
},
|
||||||
// 🇫🇮
|
// 🇫🇮
|
||||||
fi: {
|
fi: {
|
||||||
|
@ -222,5 +260,24 @@ export default {
|
||||||
type: "Tyyppi",
|
type: "Tyyppi",
|
||||||
admin: "Ylläpitäjä",
|
admin: "Ylläpitäjä",
|
||||||
user: "Käyttäjä",
|
user: "Käyttäjä",
|
||||||
|
|
||||||
|
repoDeleted: "Tämä arkisto on poistettu.",
|
||||||
|
tweets: "Twiitit",
|
||||||
|
hourlyGraph: "Tuntikohtainen kaavio",
|
||||||
|
visualMap: "Kartta",
|
||||||
|
stats: "Tilastot",
|
||||||
|
totTweets: "Twiitit yhteensä",
|
||||||
|
dispTweets: "Näytetyt twiitit",
|
||||||
|
dispTweetsPerc: "% näytetyistä twiiteistä",
|
||||||
|
locTweets: "Twiitit, joissa on sijainti",
|
||||||
|
locTweetsPerc: "% twiiteistä, joissa on sijainti",
|
||||||
|
contTweets: "Sisältöä sisältävät twiitit",
|
||||||
|
contTweetsPerc: "% sisältöä sisältävistä twiiteistä",
|
||||||
|
wordCount: "Sanojen määrä",
|
||||||
|
wordPop: "Suosituin sana",
|
||||||
|
imgTweets: "Twiitit, joissa on kuva",
|
||||||
|
imgTweetsPerc: "% twiiteistä, joissa on kuva",
|
||||||
|
postUniq: "Ainutkertaiset käyttäjät",
|
||||||
|
postPop: "Aktiivisimmat käyttäjät",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import React from "react"
|
import React, { useContext } from "react"
|
||||||
import BoxFullScrollable from "../base/BoxFullScrollable"
|
import BoxFullScrollable from "../base/BoxFullScrollable"
|
||||||
import SummaryTweet from "./SummaryTweet"
|
import SummaryTweet from "./SummaryTweet"
|
||||||
|
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||||
import Empty from "./Empty"
|
import Empty from "./Empty"
|
||||||
|
|
||||||
|
|
||||||
export default function BoxRepositoryTweets({ tweets, ...props }) {
|
export default function BoxRepositoryTweets({ tweets, ...props }) {
|
||||||
// TODO: Translate this
|
const { strings } = useContext(ContextLanguage)
|
||||||
|
|
||||||
let content
|
let content
|
||||||
if(tweets.length === 0) {
|
if(tweets.length === 0) {
|
||||||
|
@ -16,7 +17,7 @@ export default function BoxRepositoryTweets({ tweets, ...props }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BoxFullScrollable header={"Tweets"} {...props}>
|
<BoxFullScrollable header={strings.tweets} {...props}>
|
||||||
{content}
|
{content}
|
||||||
</BoxFullScrollable>
|
</BoxFullScrollable>
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import React from "react"
|
import React, { useContext } from "react"
|
||||||
import BoxFull from "../base/BoxFull"
|
import BoxFull from "../base/BoxFull"
|
||||||
import BoxChart from "../base/BoxChart"
|
import BoxChart from "../base/BoxChart"
|
||||||
import Empty from "./Empty"
|
import Empty from "./Empty"
|
||||||
|
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||||
|
|
||||||
|
|
||||||
export default function BoxVisualizationChart({ tweets, ...props }) {
|
export default function BoxVisualizationChart({ tweets, ...props }) {
|
||||||
// TODO: translate this
|
const { strings } = useContext(ContextLanguage)
|
||||||
|
|
||||||
const hours = [...Array(24).keys()].map(hour => hour.toString())
|
const hours = [...Array(24).keys()].map(hour => hour.toString())
|
||||||
const hourlyTweetCount = Array(24).fill(0)
|
const hourlyTweetCount = Array(24).fill(0)
|
||||||
|
@ -25,7 +26,7 @@ export default function BoxVisualizationChart({ tweets, ...props }) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BoxChart
|
<BoxChart
|
||||||
header={"Hourly graph"}
|
header={strings.hourlyGraph}
|
||||||
chartProps={{
|
chartProps={{
|
||||||
type: "bar",
|
type: "bar",
|
||||||
data: {
|
data: {
|
||||||
|
|
|
@ -7,7 +7,6 @@ import { Marker, Popup } from "react-leaflet"
|
||||||
const locationRegex = /[{](?<lat>[0-9.]+),(?<lng>[0-9.]+)[}]/
|
const locationRegex = /[{](?<lat>[0-9.]+),(?<lng>[0-9.]+)[}]/
|
||||||
|
|
||||||
export default function BoxVisualizationMap({ tweets, ...props }) {
|
export default function BoxVisualizationMap({ tweets, ...props }) {
|
||||||
// TODO: translate this
|
|
||||||
const { strings } = useContext(ContextLanguage)
|
const { strings } = useContext(ContextLanguage)
|
||||||
|
|
||||||
console.debug(tweets)
|
console.debug(tweets)
|
||||||
|
@ -33,7 +32,7 @@ export default function BoxVisualizationMap({ tweets, ...props }) {
|
||||||
})
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BoxMap header={"Map"} {...props}>
|
<BoxMap header={strings.visualMap} {...props}>
|
||||||
{markers}
|
{markers}
|
||||||
</BoxMap>
|
</BoxMap>
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import React, { useMemo } from "react"
|
import React, { useContext, useMemo } from "react"
|
||||||
import FormLabelled from "../base/FormLabelled"
|
import FormLabelled from "../base/FormLabelled"
|
||||||
import FormLabel from "../base/formparts/FormLabel"
|
import FormLabel from "../base/formparts/FormLabel"
|
||||||
|
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||||
import BoxFullScrollable from "../base/BoxFullScrollable"
|
import BoxFullScrollable from "../base/BoxFullScrollable"
|
||||||
|
|
||||||
|
|
||||||
export default function BoxVisualizationStats({ tweets, words, totalTweetCount, ...props }) {
|
export default function BoxVisualizationStats({ tweets, words, totalTweetCount, ...props }) {
|
||||||
|
const { strings } = useContext(ContextLanguage)
|
||||||
const tweetCount = useMemo(
|
const tweetCount = useMemo(
|
||||||
() => tweets.length,
|
() => tweets.length,
|
||||||
[tweets],
|
[tweets],
|
||||||
|
@ -104,47 +106,46 @@ export default function BoxVisualizationStats({ tweets, words, totalTweetCount,
|
||||||
|
|
||||||
// TODO: missing stats
|
// TODO: missing stats
|
||||||
|
|
||||||
// TODO: translate this
|
|
||||||
return (
|
return (
|
||||||
<BoxFullScrollable header={"Stats"} {...props}>
|
<BoxFullScrollable header={strings.stats} {...props}>
|
||||||
<FormLabelled>
|
<FormLabelled>
|
||||||
<FormLabel text={"Total tweets"}>
|
<FormLabel text={strings.totTweets}>
|
||||||
<b>{totalTweetCount}</b>
|
<b>{totalTweetCount}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Displayed tweets"}>
|
<FormLabel text={strings.dispTweets}>
|
||||||
<b>{tweetCount}</b>
|
<b>{tweetCount}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"% of displayed tweets"}>
|
<FormLabel text={strings.dispTweetsPerc}>
|
||||||
<b>{tweetPct.toFixed(2)}%</b>
|
<b>{tweetPct.toFixed(2)}%</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Tweets with location"}>
|
<FormLabel text={strings.locTweets}>
|
||||||
<b>{tweetLocationCount}</b>
|
<b>{tweetLocationCount}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"% of tweets with location"}>
|
<FormLabel text={strings.locTweetsPerc}>
|
||||||
<b>{tweetLocationPct.toFixed(2)}%</b>
|
<b>{tweetLocationPct.toFixed(2)}%</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Tweets with content"}>
|
<FormLabel text={strings.contTweets}>
|
||||||
<b>{tweetContentCount}</b>
|
<b>{tweetContentCount}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"% of tweets with content"}>
|
<FormLabel text={strings.conTweetsPerc}>
|
||||||
<b>{tweetContentPct.toFixed(2)}%</b>
|
<b>{tweetContentPct.toFixed(2)}%</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Word count"}>
|
<FormLabel text={strings.wordCount}>
|
||||||
<b>{wordCount}</b>
|
<b>{wordCount}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Most popular word"}>
|
<FormLabel text={strings.wordPop}>
|
||||||
<b>{mostPopularWord}</b>
|
<b>{mostPopularWord}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Tweets with image"}>
|
<FormLabel text={strings.imgTweets}>
|
||||||
<b>🚧</b>
|
<b>🚧</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"% of tweets with image"}>
|
<FormLabel text={strings.imgTweetsPerc}>
|
||||||
<b>🚧</b>
|
<b>🚧</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Unique posters"}>
|
<FormLabel text={strings.postUniq}>
|
||||||
<b>{uniqueUsersCount}</b>
|
<b>{uniqueUsersCount}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormLabel text={"Most active poster"}>
|
<FormLabel text={strings.postPop}>
|
||||||
<b>{mostActiveUser ? `${mostActiveUser.user} (${mostActiveUser.count} tweet${mostActiveUser.count === 1 ? "" : "s"})` : "❌"}</b>
|
<b>{mostActiveUser ? `${mostActiveUser.user} (${mostActiveUser.count} tweet${mostActiveUser.count === 1 ? "" : "s"})` : "❌"}</b>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
</FormLabelled>
|
</FormLabelled>
|
||||||
|
|
|
@ -68,10 +68,9 @@ export default function PageRepository({ className, ...props }) {
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
else if(repository === null) {
|
else if(repository === null) {
|
||||||
// TODO: Translate this!
|
|
||||||
contents = <>
|
contents = <>
|
||||||
<BoxHeader className={Style.Header}>
|
<BoxHeader className={Style.Header}>
|
||||||
<FontAwesomeIcon icon={faTrash}/> <i>This repository was deleted.</i>
|
<FontAwesomeIcon icon={faTrash}/> <i>{strings.repoDeleted}</i>
|
||||||
</BoxHeader>
|
</BoxHeader>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue