diff --git a/web/messages/fr.json b/web/messages/fr.json index 673e73fe..7125667e 100644 --- a/web/messages/fr.json +++ b/web/messages/fr.json @@ -174,5 +174,40 @@ "register.button.email": "S'inscrire avec l'e‑mail", "register.or_sign_up_with": "Ou inscrivez-vous avec", "register.already_account": "Vous avez déjà un compte ?", - "register.link_signin": "Se connecter" + "register.link_signin": "Se connecter", + "compatibility.title": "Vos questions de compatibilité", + "compatibility.tabs.answered": "Répondu", + "compatibility.tabs.to_answer": "À répondre", + "compatibility.tabs.skipped": "Ignorés", + "compatibility.sign_in_prompt": "Veuillez vous connecter pour voir vos questions de compatibilité", + "compatibility.empty.answered": "Vous n'avez répondu à aucune question pour le moment.", + "compatibility.empty.not_answered": "Toutes les questions ont été répondues !", + "compatibility.empty.skipped": "Vous n'avez ignoré aucune question.", + "delete.seo.title": "Supprimer le compte", + "delete.seo.description": "Demander la suppression du compte pour Compass", + "delete.title": "Supprimer votre compte", + "delete.intro": "Nous sommes désolés de vous voir partir. Vous pouvez supprimer votre compte depuis la page Paramètres. Sinon, voici comment demander la suppression de votre compte par e‑mail.", + "delete.how.title": "Comment supprimer votre compte", + "delete.how.step1": "Envoyez un e‑mail à", + "delete.how.step1_subject": "avec l'objet « Demande de suppression de compte »", + "delete.how.step2": "Incluez votre nom d'utilisateur et l'adresse e‑mail associée à votre compte", + "delete.how.step3": "Indiquez si vous souhaitez télécharger vos données avant la suppression", + "delete.how.step4": "Nous traiterons votre demande sous 30 jours", + "delete.request_button": "Demander la suppression du compte", + "delete.what_happens.title": "Ce qui se passe lorsque vous supprimez votre compte", + "delete.what_happens.profile": "Votre profil, y compris toutes les photos et informations personnelles, sera supprimé définitivement", + "delete.what_happens.messages": "Vos messages seront supprimés de nos serveurs", + "delete.what_happens.username": "Votre nom d'utilisateur pourra être réutilisé par d'autres", + "delete.what_happens.history": "Votre historique d'activité sera anonymisé", + "delete.data.title": "Données que nous conservons", + "delete.data.intro": "Pour des raisons légales et opérationnelles, nous pouvons conserver certaines informations après la suppression du compte :", + "delete.data.item1": "Dossiers de transaction (le cas échéant) pour la comptabilité et la conformité", + "delete.data.item2": "Copies des communications avec notre équipe de support", + "delete.data.item3": "Informations nécessaires pour prévenir la fraude, respecter des obligations légales ou faire respecter nos conditions", + "delete.data.note": "Nous ne conservons ces données que le temps nécessaire à ces fins et conformément à notre Politique de confidentialité.", + "delete.need_help.title": "Besoin d'aide ?", + "delete.need_help.text": "Si vous avez des questions concernant la suppression du compte ou besoin d'assistance, veuillez contacter notre équipe de support à", + "donate.seo.title": "Faire un don", + "donate.seo.description": "Faites un don pour soutenir Compass", + "donate.title": "Faire un don" } \ No newline at end of file diff --git a/web/pages/compatibility.tsx b/web/pages/compatibility.tsx index c760c59e..e55266f8 100644 --- a/web/pages/compatibility.tsx +++ b/web/pages/compatibility.tsx @@ -12,6 +12,7 @@ import {User} from "common/user"; import {CompassLoadingIndicator} from "web/components/widgets/loading-indicator"; import {useIsMobile} from "web/hooks/use-is-mobile"; import {LoadMoreUntilNotVisible} from "web/components/widgets/visibility-observer"; +import {useT} from 'web/lib/locale' type QuestionWithAnswer = Question & { answer?: Row<'compatibility_answers'> @@ -26,6 +27,7 @@ export default function CompatibilityPage() { const {compatibilityAnswers, refreshCompatibilityAnswers} = useUserCompatibilityAnswers(user?.id) const {compatibilityQuestions, refreshCompatibilityQuestions} = useCompatibilityQuestionsWithAnswerCount() const [isLoading, setIsLoading] = useState(true) + const t = useT() const questionsWithAnswers = useMemo(() => { if (!compatibilityQuestions) return [] @@ -80,13 +82,13 @@ export default function CompatibilityPage() { {user ? - Your Compatibility Questions + {t('compatibility.title','Your Compatibility Questions')} :
-
Please sign in to view your compatibility questions
+
{t('compatibility.sign_in_prompt','Please sign in to view your compatibility questions')}
}
@@ -146,6 +148,7 @@ function QuestionList({ user: User refreshCompatibilityAll: () => void }) { + const t = useT() const BATCH_SIZE = 100 const [visibleCount, setVisibleCount] = useState(BATCH_SIZE) @@ -171,9 +174,9 @@ function QuestionList({ if (questions.length === 0) { return (
- {status === 'answered' && 'You haven\'t answered any questions yet.'} - {status === 'not-answered' && 'All questions have been answered!'} - {status === 'skipped' && 'You haven\'t skipped any questions.'} + {status === 'answered' && t('compatibility.empty.answered',"You haven't answered any questions yet.")} + {status === 'not-answered' && t('compatibility.empty.not_answered',"All questions have been answered!")} + {status === 'skipped' && t('compatibility.empty.skipped',"You haven't skipped any questions.")}
) } diff --git a/web/pages/delete-account.tsx b/web/pages/delete-account.tsx index 815d3dc2..b0c57b11 100644 --- a/web/pages/delete-account.tsx +++ b/web/pages/delete-account.tsx @@ -1,8 +1,10 @@ import {PageBase} from "web/components/page-base"; import {SEO} from "web/components/SEO"; import {Button} from "web/components/buttons/button"; +import {useT} from 'web/lib/locale' export default function DeleteAccountPage() { + const t = useT() const handleRequestDeletion = () => { // This would typically open an email client or a form @@ -15,30 +17,27 @@ export default function DeleteAccountPage() { className="max-w-4xl mx-auto p-8 text-gray-800 dark:text-white col-span-8 bg-canvas-0" >
-

Delete Your Account

+

{t('delete.title','Delete Your Account')}

- We're sorry to see you go. You can delete your account in the Settings page. Otherwise, here's how to - request account deletion by email. + {t('delete.intro',"We're sorry to see you go. You can delete your account in the Settings page. Otherwise, here's how to request account deletion by email.")}

-

How to Delete Your Account

+

{t('delete.how.title','How to Delete Your Account')}

    -
  1. Send an email to hello@compassmeet.com with the subject line "Account Deletion - Request" -
  2. -
  3. Include your username and email address associated with your account
  4. -
  5. Let us know if you'd like to download your data before deletion
  6. -
  7. We'll process your request within 30 days
  8. +
  9. {t('delete.how.step1','Send an email to ')} hello@compassmeet.com {t('delete.how.step1_subject','with the subject line "Account Deletion Request"')}
  10. +
  11. {t('delete.how.step2','Include your username and email address associated with your account')}
  12. +
  13. {t('delete.how.step3','Let us know if you\'d like to download your data before deletion')}
  14. +
  15. {t('delete.how.step4','We\'ll process your request within 30 days')}
@@ -46,41 +45,39 @@ export default function DeleteAccountPage() { onClick={handleRequestDeletion} className="bg-red-600 hover:bg-red-700 text-white px-6 py-3 rounded-md font-medium" > - Request Account Deletion + {t('delete.request_button','Request Account Deletion')}
-

What Happens When You Delete Your Account

+

{t('delete.what_happens.title','What Happens When You Delete Your Account')}

    -
  • Your profile, including all photos and personal information, will be permanently removed
  • -
  • Your messages will be deleted from our servers
  • -
  • Your username will become available for others to use
  • -
  • Your activity history will be anonymized
  • +
  • {t('delete.what_happens.profile','Your profile, including all photos and personal information, will be permanently removed')}
  • +
  • {t('delete.what_happens.messages','Your messages will be deleted from our servers')}
  • +
  • {t('delete.what_happens.username','Your username will become available for others to use')}
  • +
  • {t('delete.what_happens.history','Your activity history will be anonymized')}
-

Data We Retain

-

For legal and operational reasons, we may retain certain information after account - deletion:

+

{t('delete.data.title','Data We Retain')}

+

{t('delete.data.intro','For legal and operational reasons, we may retain certain information after account deletion:')}

    -
  • Transaction records (if any) for financial reporting and compliance
  • -
  • Copies of communications with our support team
  • -
  • Information required to prevent fraud, comply with legal obligations, or enforce our terms
  • +
  • {t('delete.data.item1','Transaction records (if any) for financial reporting and compliance')}
  • +
  • {t('delete.data.item2','Copies of communications with our support team')}
  • +
  • {t('delete.data.item3','Information required to prevent fraud, comply with legal obligations, or enforce our terms')}

- We retain this data only as long as necessary for these purposes and in accordance with our Privacy - Policy. + {t('delete.data.note','We retain this data only as long as necessary for these purposes and in accordance with our Privacy Policy.')}

-

Need Help?

+

{t('delete.need_help.title','Need Help?')}

- If you have any questions about account deletion or need assistance, please contact our support team - at{' '} + {t('delete.need_help.text','If you have any questions about account deletion or need assistance, please contact our support team at ')} + {' '} hello@compassmeet.com . diff --git a/web/pages/donate.tsx b/web/pages/donate.tsx index 2f5d7763..1ac28529 100644 --- a/web/pages/donate.tsx +++ b/web/pages/donate.tsx @@ -1,17 +1,20 @@ import {PageBase} from 'web/components/page-base' import {SEO} from 'web/components/SEO' import {Col} from 'web/components/layout/col' +import {useT} from 'web/lib/locale' export default function DonatePage() { + const t = useT() + return ( -

Donate

+

{t('donate.title','Donate')}