Skip to content

Commit f3097f6

Browse files
committed
feat: translations for actions main and viewer components
1 parent 7e33be4 commit f3097f6

3 files changed

Lines changed: 31 additions & 12 deletions

File tree

apps/playground/src/components/Header/ActionsDropdown/ActionsDropdown.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useState } from 'react';
22

33
import { Button, DropdownMenu } from '@douglasneuroinformatics/libui/components';
4+
import { useTranslation } from '@douglasneuroinformatics/libui/hooks';
45
import { EllipsisVerticalIcon } from 'lucide-react';
56

67
import { useAppStore } from '@/store';
@@ -21,6 +22,7 @@ export const ActionsDropdown = () => {
2122
const [showStorageUsageDialog, setShowStorageUsageDialog] = useState(false);
2223

2324
const selectedInstrument = useAppStore((store) => store.selectedInstrument);
25+
const { t } = useTranslation();
2426

2527
return (
2628
<React.Fragment>
@@ -43,22 +45,22 @@ export const ActionsDropdown = () => {
4345
</DropdownMenu.Item>
4446
<DropdownMenu.Item asChild onSelect={() => setShowLoginDialog(true)}>
4547
<button className="w-full cursor-pointer disabled:cursor-not-allowed disabled:opacity-50" type="button">
46-
Login
48+
{t({ en: 'Login', fr: 'Se connecter' })}
4749
</button>
4850
</DropdownMenu.Item>
4951
<DropdownMenu.Item asChild onSelect={() => setShowUploadBundleDialog(true)}>
5052
<button className="w-full cursor-pointer disabled:cursor-not-allowed disabled:opacity-50" type="button">
51-
Upload Bundle
53+
{t({ en: 'Upload Bundle', fr: 'Téléverser le paquet' })}
5254
</button>
5355
</DropdownMenu.Item>
5456
<DropdownMenu.Item asChild onSelect={() => setShowUserSettingsDialog(true)}>
5557
<button className="w-full cursor-pointer disabled:cursor-not-allowed disabled:opacity-50" type="button">
56-
User Settings
58+
{t({ en: 'User Settings', fr: 'Paramètres utilisateur' })}
5759
</button>
5860
</DropdownMenu.Item>
5961
<DropdownMenu.Item asChild onSelect={() => setShowStorageUsageDialog(true)}>
6062
<button className="w-full cursor-pointer disabled:cursor-not-allowed disabled:opacity-50" type="button">
61-
Storage Usage
63+
{t({ en: 'Storage Usage', fr: 'Utilisation du stockage' })}
6264
</button>
6365
</DropdownMenu.Item>
6466
<DropdownMenu.Separator />
@@ -68,15 +70,15 @@ export const ActionsDropdown = () => {
6870
disabled={selectedInstrument.category !== 'Saved'}
6971
type="button"
7072
>
71-
Delete Instrument
73+
{t({ en: 'Delete Instrument', fr: "Supprimer l'instrument" })}
7274
</button>
7375
</DropdownMenu.Item>
7476
<DropdownMenu.Item asChild onSelect={() => setShowRestoreDefaultsDialog(true)}>
7577
<button
7678
className="w-full cursor-pointer text-red-600 disabled:cursor-not-allowed disabled:opacity-50 dark:text-red-400"
7779
type="button"
7880
>
79-
Restore Defaults
81+
{t({ en: 'Restore Defaults', fr: 'Restaurer les paramètres par défaut' })}
8082
</button>
8183
</DropdownMenu.Item>
8284
</DropdownMenu.Content>

apps/playground/src/components/MainContent/MainContent.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { Tabs } from '@douglasneuroinformatics/libui/components';
2-
import { useMediaQuery } from '@douglasneuroinformatics/libui/hooks';
2+
import { useMediaQuery, useTranslation } from '@douglasneuroinformatics/libui/hooks';
33

44
import { Editor } from '../Editor';
55
import { Resizable } from '../Resizable';
66
import { Viewer } from '../Viewer';
77

88
export const MainContent = () => {
99
const isDesktop = useMediaQuery('(min-width: 768px)');
10+
const { t } = useTranslation();
1011
return (
1112
<main className="flex grow flex-col overflow-hidden py-4">
1213
{isDesktop ? (
@@ -22,8 +23,8 @@ export const MainContent = () => {
2223
) : (
2324
<Tabs className="flex grow flex-col overflow-hidden" defaultValue="editor">
2425
<Tabs.List className="grid w-full grid-cols-2">
25-
<Tabs.Trigger value="editor">Editor</Tabs.Trigger>
26-
<Tabs.Trigger value="viewer">Viewer</Tabs.Trigger>
26+
<Tabs.Trigger value="editor">{t({ en: 'Editor', fr: 'Éditeur' })}</Tabs.Trigger>
27+
<Tabs.Trigger value="viewer">{t({ en: 'Viewer', fr: 'Aperçu' })}</Tabs.Trigger>
2728
</Tabs.List>
2829
<Tabs.Content className="grow" value="editor">
2930
<Editor />

apps/playground/src/components/Viewer/Viewer.tsx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useCallback, useState } from 'react';
22

33
import { Spinner } from '@douglasneuroinformatics/libui/components';
4-
import { useInterval } from '@douglasneuroinformatics/libui/hooks';
4+
import { useInterval, useTranslation } from '@douglasneuroinformatics/libui/hooks';
55
import type { BundlerInput } from '@opendatacapture/instrument-bundler';
66
import { bundle } from '@opendatacapture/instrument-bundler';
77
import { ScalarInstrumentRenderer } from '@opendatacapture/react-core';
@@ -25,6 +25,7 @@ export const Viewer = () => {
2525
const key = useAppStore((store) => store.viewer.key);
2626
const state = useAppStore((store) => store.transpilerState);
2727
const setState = useAppStore((store) => store.setTranspilerState);
28+
const { t } = useTranslation();
2829

2930
const transpile = useCallback(async (files: EditorFile[]) => {
3031
setState({ status: 'building' });
@@ -33,7 +34,10 @@ export const Viewer = () => {
3334
setState({ bundle: await bundle({ inputs }), status: 'built' });
3435
} catch (err) {
3536
setState({
36-
error: err instanceof Error ? err : new Error('Unexpected Error', { cause: err }),
37+
error:
38+
err instanceof Error
39+
? err
40+
: new Error(t({ en: 'Unexpected Error', fr: 'Erreur inattendue' }), { cause: err }),
3741
status: 'error'
3842
});
3943
} finally {
@@ -71,7 +75,19 @@ export const Viewer = () => {
7175
onCompileError={(error) => setState({ error, status: 'error' })}
7276
onSubmit={({ data }) => {
7377
// eslint-disable-next-line no-alert
74-
alert(JSON.stringify({ _message: 'The following data will be submitted', data }, null, 2));
78+
alert(
79+
JSON.stringify(
80+
{
81+
_message: t({
82+
en: 'The following data will be submitted',
83+
fr: 'Les données suivantes seront soumises'
84+
}),
85+
data
86+
},
87+
null,
88+
2
89+
)
90+
);
7591
}}
7692
/>
7793
</ErrorBoundary>

0 commit comments

Comments
 (0)