// Copyright (c) 2020-2021 Drew Lemmy // This file is part of KristWeb 2 under GPL-3.0. // Full details: https://github.com/tmpim/KristWeb2/blob/master/LICENSE.txt import { Space, Button, List, Typography } from "antd"; import { GlobalOutlined } from "@ant-design/icons"; import { useTranslation } from "react-i18next"; import { Flag } from "@comp/Flag"; import { getLanguages } from "@utils/i18n"; import packageJson from "../../../package.json"; const { Text } = Typography; export function Translators(): JSX.Element | null { const { t } = useTranslation(); const { translateURL } = packageJson; if (!translateURL) return null; const languages = getLanguages(); if (!languages) return null; return <Space direction="vertical"> {/* Description */} <p>{t("credits.translatorsDescription")}</p> {/* Language list */} <List size="small" dataSource={Object.entries(languages).filter(([code, lang]) => code !== "en" && lang.contributors.length > 0)} renderItem={([, lang]) => <List.Item> <List.Item.Meta style={{ textAlign: "left" }} avatar={<Flag code={lang.country} name={lang.name} />} title={<>{lang.name} {lang.nativeName && <Text type="secondary">({lang.nativeName})</Text>}</>} description={<Space size={8} wrap> {lang.contributors.map(({ url, name }) => ( url ? <a key={name} target="_blank" rel="noopener noreferrer" href={url} className="supporter-name">{name}</a> : <span key={name} className="supporter-name">{name}</span> ))} </Space>} /> </List.Item>} /> {/* Translate Button */} <Button type="primary" size="large" href={translateURL} target="_blank" rel="noopener noreferrer" style={{ marginTop: 16 }}> <GlobalOutlined /> {t("credits.translateButton")} </Button> </Space>; }