Translation for addGroup page

This commit is contained in:
Nicola Benaglia 2025-04-26 07:38:19 +02:00
parent efbf195c60
commit 51c65e8236
4 changed files with 203 additions and 91 deletions

View File

@ -24,6 +24,10 @@
"peers": "connected peers", "peers": "connected peers",
"version": "core version" "version": "core version"
}, },
"count": {
"none": "none",
"one": "one"
},
"description": "description", "description": "description",
"fee": { "fee": {
"payment": "payment fee", "payment": "payment fee",
@ -56,16 +60,12 @@
"synchronizing": "synchronizing" "synchronizing": "synchronizing"
}, },
"success": { "success": {
"group_creation": "successfully created group. It may take a couple of minutes for the changes to propagate",
"order_submitted": "your buy order was submitted", "order_submitted": "your buy order was submitted",
"publish_qdn": "successfully published to QDN", "publish_qdn": "successfully published to QDN",
"request_read": "I have read this request", "request_read": "I have read this request",
"transfer": "the transfer was succesful!" "transfer": "the transfer was succesful!"
} }
}, },
"question": {
"perform_create_group": "would you like to perform an CREATE_GROUP transaction?"
},
"save_options": { "save_options": {
"no_pinned_changes": "you currently do not have any changes to your pinned apps", "no_pinned_changes": "you currently do not have any changes to your pinned apps",
"overwrite_changes": "the app was unable to download your existing QDN-saved pinned apps. Would you like to overwrite those changes?", "overwrite_changes": "the app was unable to download your existing QDN-saved pinned apps. Would you like to overwrite those changes?",
@ -88,6 +88,14 @@
"dark": "dark mode", "dark": "dark mode",
"light": "light mode" "light": "light mode"
}, },
"time": {
"day_one": "{{count}} day",
"day_other": "{{count}} days",
"hour_one": "{{count}} hour",
"hour_other": "{{count}} hours",
"minute_one": "{{count}} minute",
"minute_other": "{{count}} minutes"
},
"title": "title", "title": "title",
"tutorial": "tutorial", "tutorial": "tutorial",
"user_lookup": "user lookup", "user_lookup": "user lookup",

View File

@ -1,39 +1,38 @@
{ {
"action": { "action": {
"create_group": "create group",
"find_group": "find group",
"return_to_thread": "return to threads" "return_to_thread": "return to threads"
}, },
"group_invites": "group invites", "advanced_options": "advanced options",
"provide_thread": "please provide a thread title", "approval_threshold": "group Approval Threshold (number / percentage of Admins that must approve a transaction)",
"block_delay": {
"minimum": "minimum Block delay for Group Transaction Approvals",
"maximum": "maximum Block delay for Group Transaction Approvals"
},
"group": {
"closed": "closed (private) - users need permission to join",
"description": "description of group",
"invites": "group invites",
"management": "group management",
"name": "name of group",
"open": "open (public)",
"type": "group type"
},
"question": {
"create_group": "would you like to perform an CREATE_GROUP transaction?",
"provide_thread": "please provide a thread title"
},
"result": { "result": {
"cannot": { "error": {
"access_name": "Cannot send a message without a access to your name", "access_name": "Cannot send a message without a access to your name",
"group_info": "Cannot access group information" "group_info": "Cannot access group information"
}, },
"loading_threads": "loading threads... please wait." "loading_threads": "loading threads... please wait.",
}, "success": {
"group_creation": "successfully created group. It may take a couple of minutes for the changes to propagate",
"": "", "group_creation_name": "created group {{group_name}}: awaiting confirmation",
"": "", "group_creation_label": "created group {{name}}: success!"
"": "", }
"": "", }
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": ""
} }

View File

@ -93,7 +93,7 @@ export const AddGroup = ({ address, open, setOpen }) => {
setMaxBlock(event.target.value as string); setMaxBlock(event.target.value as string);
}; };
const { t } = useTranslation(['core']); const { t } = useTranslation(['core', 'group']);
const theme = useTheme(); const theme = useTheme();
const handleCreateGroup = async () => { const handleCreateGroup = async () => {
@ -102,8 +102,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
if (!description) throw new Error('Please provide a description'); if (!description) throw new Error('Please provide a description');
const fee = await getFee('CREATE_GROUP'); const fee = await getFee('CREATE_GROUP');
await show({ await show({
message: t('core:question.perform_create_group', { message: t('group:question.create_group', {
postProcess: 'capitalize', postProcess: 'capitalize',
}), }),
publishFee: fee.fee + ' QORT', publishFee: fee.fee + ' QORT',
@ -123,7 +124,7 @@ export const AddGroup = ({ address, open, setOpen }) => {
if (!response?.error) { if (!response?.error) {
setInfoSnack({ setInfoSnack({
type: 'success', type: 'success',
message: t('core:result.success.group_creation', { message: t('group:result.success.group_creation', {
postProcess: 'capitalize', postProcess: 'capitalize',
}), }),
}); });
@ -132,8 +133,14 @@ export const AddGroup = ({ address, open, setOpen }) => {
{ {
...response, ...response,
type: 'created-group', type: 'created-group',
label: `Created group ${name}: awaiting confirmation`, label: t('group:result.success.group_creation_name', {
labelDone: `Created group ${name}: success!`, group_name: name,
postProcess: 'capitalize',
}),
labelDone: t('group:result.success.group_creation_label', {
group_name: name,
postProcess: 'capitalize',
}),
done: false, done: false,
}, },
...prev, ...prev,
@ -144,7 +151,11 @@ export const AddGroup = ({ address, open, setOpen }) => {
rej({ message: response.error }); rej({ message: response.error });
}) })
.catch((error) => { .catch((error) => {
rej({ message: error.message || 'An error occurred' }); rej({
message:
error.message ||
t('core:result.error.generic', { postProcess: 'capitalize' }),
});
}); });
}); });
} catch (error) { } catch (error) {
@ -194,7 +205,7 @@ export const AddGroup = ({ address, open, setOpen }) => {
> >
<Toolbar> <Toolbar>
<Typography sx={{ ml: 2, flex: 1 }} variant="h4" component="div"> <Typography sx={{ ml: 2, flex: 1 }} variant="h4" component="div">
Group Management {t('group:group.management', { postProcess: 'capitalize' })}
</Typography> </Typography>
<IconButton <IconButton
@ -235,7 +246,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
> >
<Tab <Tab
label="Create Group" label={t('group:action.create_group', {
postProcess: 'capitalize',
})}
{...a11yProps(0)} {...a11yProps(0)}
sx={{ sx={{
'&.Mui-selected': { '&.Mui-selected': {
@ -245,7 +258,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
/> />
<Tab <Tab
label="Find Group" label={t('group:action.find_group', {
postProcess: 'capitalize',
})}
{...a11yProps(1)} {...a11yProps(1)}
sx={{ sx={{
'&.Mui-selected': { '&.Mui-selected': {
@ -255,7 +270,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
/> />
<Tab <Tab
label="Group Invites" label={t('group:group.invites', {
postProcess: 'capitalize',
})}
{...a11yProps(2)} {...a11yProps(2)}
sx={{ sx={{
'&.Mui-selected': { '&.Mui-selected': {
@ -289,9 +306,15 @@ export const AddGroup = ({ address, open, setOpen }) => {
gap: '5px', gap: '5px',
}} }}
> >
<Label>Name of group</Label> <Label>
{t('group:group.name', {
postProcess: 'capitalize',
})}
</Label>
<Input <Input
placeholder="Name of group" placeholder={t('group:group.name', {
postProcess: 'capitalize',
})}
value={name} value={name}
onChange={(e) => setName(e.target.value)} onChange={(e) => setName(e.target.value)}
/> />
@ -303,10 +326,16 @@ export const AddGroup = ({ address, open, setOpen }) => {
gap: '5px', gap: '5px',
}} }}
> >
<Label>Description of group</Label> <Label>
{t('group:group.description', {
postProcess: 'capitalize',
})}
</Label>
<Input <Input
placeholder="Description of group" placeholder={t('group:group.description', {
postProcess: 'capitalize',
})}
value={description} value={description}
onChange={(e) => setDescription(e.target.value)} onChange={(e) => setDescription(e.target.value)}
/> />
@ -318,7 +347,13 @@ export const AddGroup = ({ address, open, setOpen }) => {
gap: '5px', gap: '5px',
}} }}
> >
<Label>Group type</Label> <Label>
{' '}
{t('group:group.type', {
postProcess: 'capitalize',
})}
</Label>
<Select <Select
labelId="demo-simple-select-label" labelId="demo-simple-select-label"
id="demo-simple-select" id="demo-simple-select"
@ -326,9 +361,15 @@ export const AddGroup = ({ address, open, setOpen }) => {
label="Group Type" label="Group Type"
onChange={handleChangeGroupType} onChange={handleChangeGroupType}
> >
<MenuItem value={1}>Open (public)</MenuItem> <MenuItem value={1}>
{t('group:group.open', {
postProcess: 'capitalize',
})}
</MenuItem>
<MenuItem value={0}> <MenuItem value={0}>
Closed (private) - users need permission to join {t('group:group.closed', {
postProcess: 'capitalize',
})}
</MenuItem> </MenuItem>
</Select> </Select>
</Box> </Box>
@ -341,7 +382,11 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
onClick={() => setOpenAdvance((prev) => !prev)} onClick={() => setOpenAdvance((prev) => !prev)}
> >
<Typography>Advanced options</Typography> <Typography>
{t('group:advanced_options', {
postProcess: 'capitalize',
})}
</Typography>
{openAdvance ? <ExpandLess /> : <ExpandMore />} {openAdvance ? <ExpandLess /> : <ExpandMore />}
</Box> </Box>
@ -355,8 +400,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
> >
<Label> <Label>
Group Approval Threshold (number / percentage of Admins {t('group:approval_threshold', {
that must approve a transaction) postProcess: 'capitalize',
})}
</Label> </Label>
<Select <Select
labelId="demo-simple-select-label" labelId="demo-simple-select-label"
@ -365,14 +411,21 @@ export const AddGroup = ({ address, open, setOpen }) => {
label="Group Approval Threshold" label="Group Approval Threshold"
onChange={handleChangeApprovalThreshold} onChange={handleChangeApprovalThreshold}
> >
<MenuItem value={0}>NONE</MenuItem> <MenuItem value={0}>
<MenuItem value={1}>ONE </MenuItem> {t('core.count.none', {
postProcess: 'capitalize',
<MenuItem value={20}>20% </MenuItem> })}
<MenuItem value={40}>40% </MenuItem> </MenuItem>
<MenuItem value={60}>60% </MenuItem> <MenuItem value={1}>
<MenuItem value={80}>80% </MenuItem> {t('core.count.one', {
<MenuItem value={100}>100% </MenuItem> postProcess: 'capitalize',
})}
</MenuItem>
<MenuItem value={20}>20%</MenuItem>
<MenuItem value={40}>40%</MenuItem>
<MenuItem value={60}>60%</MenuItem>
<MenuItem value={80}>80%</MenuItem>
<MenuItem value={100}>100%</MenuItem>
</Select> </Select>
</Box> </Box>
<Box <Box
@ -383,7 +436,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
> >
<Label> <Label>
Minimum Block delay for Group Transaction Approvals {t('group.block_delay.minimum', {
postProcess: 'capitalize',
})}
</Label> </Label>
<Select <Select
labelId="demo-simple-select-label" labelId="demo-simple-select-label"
@ -392,18 +447,42 @@ export const AddGroup = ({ address, open, setOpen }) => {
label="Minimum Block delay" label="Minimum Block delay"
onChange={handleChangeMinBlock} onChange={handleChangeMinBlock}
> >
<MenuItem value={5}>5 minutes</MenuItem> <MenuItem value={5}>
<MenuItem value={10}>10 minutes</MenuItem> {t('core.time.minute', { count: 5 })}
<MenuItem value={30}>30 minutes</MenuItem> </MenuItem>
<MenuItem value={60}>1 hour</MenuItem> <MenuItem value={10}>
<MenuItem value={180}>3 hours</MenuItem> {t('core.time.minute', { count: 10 })}
<MenuItem value={300}>5 hours</MenuItem> </MenuItem>
<MenuItem value={420}>7 hours</MenuItem> <MenuItem value={30}>
<MenuItem value={720}>12 hours</MenuItem> {t('core.time.minute', { count: 30 })}
<MenuItem value={1440}>1 day</MenuItem> </MenuItem>
<MenuItem value={4320}>3 days</MenuItem> <MenuItem value={60}>
<MenuItem value={7200}>5 days</MenuItem> {t('core.time.hour', { count: 1 })}
<MenuItem value={10080}>7 days</MenuItem> </MenuItem>
<MenuItem value={180}>
{t('core.time.hour', { count: 3 })}
</MenuItem>
<MenuItem value={300}>
{t('core.time.hour', { count: 5 })}
</MenuItem>
<MenuItem value={420}>
{t('core.time.hour', { count: 7 })}
</MenuItem>
<MenuItem value={720}>
{t('core.time.hour', { count: 12 })}
</MenuItem>
<MenuItem value={1440}>
{t('core.time.day', { count: 1 })}
</MenuItem>
<MenuItem value={4320}>
{t('core.time.day', { count: 3 })}
</MenuItem>
<MenuItem value={7200}>
{t('core.time.day', { count: 5 })}
</MenuItem>
<MenuItem value={10080}>
{t('core.time.day', { count: 7 })}
</MenuItem>
</Select> </Select>
</Box> </Box>
<Box <Box
@ -414,7 +493,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
}} }}
> >
<Label> <Label>
Maximum Block delay for Group Transaction Approvals {t('group.block_delay.maximum', {
postProcess: 'capitalize',
})}
</Label> </Label>
<Select <Select
labelId="demo-simple-select-label" labelId="demo-simple-select-label"
@ -423,17 +504,39 @@ export const AddGroup = ({ address, open, setOpen }) => {
label="Maximum Block delay" label="Maximum Block delay"
onChange={handleChangeMaxBlock} onChange={handleChangeMaxBlock}
> >
<MenuItem value={60}>1 hour</MenuItem> <MenuItem value={60}>
<MenuItem value={180}>3 hours</MenuItem> {t('core.time.hour', { count: 1 })}
<MenuItem value={300}>5 hours</MenuItem> </MenuItem>
<MenuItem value={420}>7 hours</MenuItem> <MenuItem value={180}>
<MenuItem value={720}>12 hours</MenuItem> 3{t('core.time.hour', { count: 3 })}
<MenuItem value={1440}>1 day</MenuItem> </MenuItem>
<MenuItem value={4320}>3 days</MenuItem> <MenuItem value={300}>
<MenuItem value={7200}>5 days</MenuItem> {t('core.time.hour', { count: 5 })}
<MenuItem value={10080}>7 days</MenuItem> </MenuItem>
<MenuItem value={14400}>10 days</MenuItem> <MenuItem value={420}>
<MenuItem value={21600}>15 days</MenuItem> {t('core.time.hour', { count: 7 })}
</MenuItem>
<MenuItem value={720}>
{t('core.time.hour', { count: 12 })}
</MenuItem>
<MenuItem value={1440}>
{t('core.time.day', { count: 1 })}
</MenuItem>
<MenuItem value={4320}>
{t('core.time.day', { count: 3 })}
</MenuItem>
<MenuItem value={7200}>
{t('core.time.day', { count: 5 })}
</MenuItem>
<MenuItem value={10080}>
{t('core.time.day', { count: 7 })}
</MenuItem>
<MenuItem value={14400}>
{t('core.time.day', { count: 10 })}
</MenuItem>
<MenuItem value={21600}>
{t('core.time.day', { count: 15 })}
</MenuItem>
</Select> </Select>
</Box> </Box>
</Collapse> </Collapse>
@ -449,7 +552,9 @@ export const AddGroup = ({ address, open, setOpen }) => {
color="primary" color="primary"
onClick={handleCreateGroup} onClick={handleCreateGroup}
> >
Create Group {t('group.action.create', {
postProcess: 'capitalize',
})}
</Button> </Button>
</Box> </Box>
</Box> </Box>

View File

@ -183,19 +183,19 @@ export const NewThread = ({
const missingFields: string[] = []; const missingFields: string[] = [];
if (!isMessage && !threadTitle) { if (!isMessage && !threadTitle) {
errorMsg = t('group:provide_thread', { errorMsg = t('group:question.provide_thread', {
postProcess: 'capitalize', postProcess: 'capitalize',
}); });
} }
if (!name) { if (!name) {
errorMsg = t('group:result.cannot.access_name', { errorMsg = t('group:result.error.access_name', {
postProcess: 'capitalize', postProcess: 'capitalize',
}); });
} }
if (!groupInfo) { if (!groupInfo) {
errorMsg = t('group:result.cannot.group_info', { errorMsg = t('group:result.error.group_info', {
postProcess: 'capitalize', postProcess: 'capitalize',
}); });
} }