// Dependencies import { siteConfig } from 'site/site.config.mjs' import translators from 'site/prebuild/translators.json' // Context import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs' // Hooks import { useBackend } from 'shared/hooks/use-backend.mjs' import { useState, useContext } from 'react' import { useTranslation } from 'next-i18next' // Components import { ChoiceButton } from 'shared/components/choice-button.mjs' import { I18nIcon } from 'shared/components/icons.mjs' import { Popout } from 'shared/components/popout/index.mjs' import { WebLink } from 'shared/components/link.mjs' export const ns = ['translation', 'locales'] const languages = [ ...siteConfig.languages.filter((lang) => lang !== 'en'), ...siteConfig.languagesWip, ].sort() export const TranslatorInvite = () => { // Hooks const { t } = useTranslation(ns) const backend = useBackend() const { setLoadingStatus } = useContext(LoadingStatusContext) // State const [team, setTeam] = useState(false) const [sent, setSent] = useState(false) const sendInvite = async () => { setLoadingStatus([true, 'status:contactingBackend']) const result = await backend.sendTranslatorInvite(team) if (result.success) { setSent(true) setLoadingStatus([true, 'status:settingsSaved', true, true]) } else setLoadingStatus([true, 'status:backendError', true, false]) } if (sent) return ( <>
{t('translation:inviteSent')}

{t('translation:successNote')}

) return team ? ( <>

) : ( <>

{t('translation:pleaseChooseTeam')}

{t('translation:whatTeam')}
{languages.map((language) => ( } title={t('translation:languageTeam', { language: t('locales:' + language) })} onClick={() => setTeam(language)} >
{Object.keys(translators[language]).map((name, i) => ( {name} ))}
))}
) }