import find from "lodash/find"; import * as React from "react"; import { Trans, useTranslation } from "react-i18next"; import styled from "styled-components"; import { languages, languageOptions } from "@shared/i18n"; import ButtonLink from "~/components/ButtonLink"; import Flex from "~/components/Flex"; import env from "~/env"; import useCurrentUser from "~/hooks/useCurrentUser"; import useStores from "~/hooks/useStores"; import { detectLanguage } from "~/utils/language"; function Icon({ className }: { className?: string }) { return ( ); } export default function LanguagePrompt() { const { ui } = useStores(); const { t } = useTranslation(); const user = useCurrentUser(); const language = detectLanguage(); if (language === "en_US" || language === user.language) { return null; } if (!languages.includes(language)) { return null; } const option = find(languageOptions, (o) => o.value === language); const optionLabel = option ? option.label : ""; const appName = env.APP_NAME; return ( {{ appName }} is available in your language{" "} {{ optionLabel, }} , would you like to change?
{ ui.setLanguagePromptDismissed(); await user.save({ language }); }} > {t("Change Language")} {" "} ·{" "} {t("Dismiss")}
); } const Wrapper = styled.p` background: ${(props) => props.theme.brand.marine}; color: ${(props) => props.theme.almostBlack}; padding: 10px 12px; margin-top: 24px; border-radius: 4px; position: relative; a { color: ${(props) => props.theme.almostBlack}; font-weight: 500; } a:hover { text-decoration: underline; } `; const Link = styled(ButtonLink)` color: ${(props) => props.theme.almostBlack}; font-weight: 500; &:hover { text-decoration: underline; } `; const LanguageIcon = styled(Icon)` margin-right: 12px; `;