Add translations

This commit is contained in:
Nicola Benaglia 2025-05-10 11:39:59 +02:00
parent 5f602442e4
commit 88c7aed59a
3 changed files with 78 additions and 43 deletions

View File

@ -29,6 +29,7 @@
"post": "post",
"post_message": "post message"
},
"admin": "admin",
"core": {
"block_height": "block height",
"information": "core information",
@ -52,7 +53,8 @@
"last_height": "last height",
"list": {
"invite": "invite list",
"join_request": "join request list"
"join_request": "join request list",
"member": "member list"
},
"loading": "loading...",
"loading_posts": "loading posts... please wait.",

View File

@ -1,5 +1,6 @@
{
"action": {
"ban": "ban member from group",
"cancel_ban": "cancel ban",
"copy_private_key": "copy private key",
"create_group": "create group",
@ -9,8 +10,11 @@
"export_private_key": "export private key",
"find_group": "find group",
"join_group": "join group",
"kick_member": "kick member from group",
"invite_member": "invite member",
"make_admin": "make an admin",
"refetch_page": "refetch page",
"remove_admin": "remove as admin",
"return_to_thread": "return to threads"
},
"advanced_options": "advanced options",
@ -64,6 +68,7 @@
"thread_id": "unable to locate thread Id"
},
"success": {
"group_ban": "successfully banned member from group. It may take a couple of minutes for the changes to propagate",
"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!",
@ -73,6 +78,9 @@
"group_join_label": "joined group {{name}}: success!",
"group_join_request": "requested to join Group {{group_name}}: awaiting confirmation",
"group_join_outcome": "requested to join Group {{group_name}}: success!",
"group_kick": "successfully kicked member from group. It may take a couple of minutes for the changes to propagate",
"group_member_admin": "successfully made member an admin. It may take a couple of minutes for the changes to propagate",
"group_remove_member": "successfully removed member as an admin. It may take a couple of minutes for the changes to propagate",
"invitation_cancellation": "successfully canceled invitation. It may take a couple of minutes for the changes to propagate",
"invitation_request": "accepted join request: awaiting confirmation",
"loading_threads": "loading threads... please wait.",

View File

@ -43,7 +43,7 @@ const ListOfMembers = ({
const [isLoadingRemoveAdmin, setIsLoadingRemoveAdmin] = useState(false);
const theme = useTheme();
const { t } = useTranslation(['core', 'group']);
const listRef = useRef();
const listRef = useRef(null);
const handlePopoverOpen = (event, index) => {
setPopoverAnchor(event.currentTarget);
@ -77,8 +77,9 @@ const ListOfMembers = ({
if (!response?.error) {
setInfoSnack({
type: 'success',
message:
'Successfully kicked member from group. It may take a couple of minutes for the changes to propagate',
message: t('group:message.success.group_kick', {
postProcess: 'capitalize',
}),
});
setOpenSnack(true);
handlePopoverClose();
@ -95,7 +96,9 @@ const ListOfMembers = ({
.catch((error) => {
setInfoSnack({
type: 'error',
message: error.message || 'An error occurred',
message:
error.message ||
t('core:message.error.generic', { postProcess: 'capitalize' }),
});
setOpenSnack(true);
rej(error);
@ -109,7 +112,8 @@ const ListOfMembers = ({
};
const handleBan = async (address) => {
try {
const fee = await getFee('GROUP_BAN'); // TODO translate
const fee = await getFee('GROUP_BAN');
await show({
message: t('group:question.perform_transaction', {
action: 'GROUP_BAN',
@ -117,7 +121,9 @@ const ListOfMembers = ({
}),
publishFee: fee.fee + ' QORT',
});
setIsLoadingBan(true);
await new Promise((res, rej) => {
window
.sendMessage('banFromGroup', {
@ -129,8 +135,9 @@ const ListOfMembers = ({
if (!response?.error) {
setInfoSnack({
type: 'success',
message:
'Successfully banned member from group. It may take a couple of minutes for the changes to propagate',
message: t('group:message.success.group_ban', {
postProcess: 'capitalize',
}),
});
setOpenSnack(true);
handlePopoverClose();
@ -147,13 +154,16 @@ const ListOfMembers = ({
.catch((error) => {
setInfoSnack({
type: 'error',
message: error.message || 'An error occurred',
message:
error.message ||
t('core:message.error.generic', { postProcess: 'capitalize' }),
});
setOpenSnack(true);
rej(error);
});
});
} catch (error) {
console.log(error);
} finally {
setIsLoadingBan(false);
}
@ -180,8 +190,9 @@ const ListOfMembers = ({
if (!response?.error) {
setInfoSnack({
type: 'success',
message:
'Successfully made member an admin. It may take a couple of minutes for the changes to propagate',
message: t('group:message.success.group_member_admin', {
postProcess: 'capitalize',
}),
});
setOpenSnack(true);
handlePopoverClose();
@ -198,13 +209,16 @@ const ListOfMembers = ({
.catch((error) => {
setInfoSnack({
type: 'error',
message: error.message || 'An error occurred',
message:
error.message ||
t('core:message.error.generic', { postProcess: 'capitalize' }),
});
setOpenSnack(true);
rej(error);
});
});
} catch (error) {
console.log(error);
} finally {
setIsLoadingMakeAdmin(false);
}
@ -231,8 +245,9 @@ const ListOfMembers = ({
if (!response?.error) {
setInfoSnack({
type: 'success',
message:
'Successfully removed member as an admin. It may take a couple of minutes for the changes to propagate',
message: t('group:message.success.group_remove_member', {
postProcess: 'capitalize',
}),
});
setOpenSnack(true);
handlePopoverClose();
@ -249,13 +264,16 @@ const ListOfMembers = ({
.catch((error) => {
setInfoSnack({
type: 'error',
message: error.message || 'An error occurred',
message:
error.message ||
t('core:message.error.generic', { postProcess: 'capitalize' }),
});
setOpenSnack(true);
rej(error);
});
});
} catch (error) {
console.log(error);
} finally {
setIsLoadingRemoveAdmin(false);
}
@ -290,13 +308,13 @@ const ListOfMembers = ({
>
<Box
sx={{
width: '325px',
height: '250px',
alignItems: 'center',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
gap: '10px',
height: '250px',
padding: '10px',
width: '325px',
}}
>
{isOwner && (
@ -307,48 +325,49 @@ const ListOfMembers = ({
variant="contained"
onClick={() => handleKick(member?.member)}
>
Kick member from group
{t('group:action.kick_member', {
postProcess: 'capitalize',
})}
</LoadingButton>
<LoadingButton
loading={isLoadingBan}
loadingPosition="start"
variant="contained"
onClick={() => handleBan(member?.member)}
>
Ban member from group
{t('group:action.ban', {
postProcess: 'capitalize',
})}
</LoadingButton>
<LoadingButton
loading={isLoadingMakeAdmin}
loadingPosition="start"
variant="contained"
onClick={() => makeAdmin(member?.member)}
>
Make an admin
{t('group:action.make_admin', {
postProcess: 'capitalize',
})}
</LoadingButton>
<LoadingButton
loading={isLoadingRemoveAdmin}
loadingPosition="start"
variant="contained"
onClick={() => removeAdmin(member?.member)}
>
Remove as admin
{t('group:action.remove_admin', {
postProcess: 'capitalize',
})}
</LoadingButton>
</>
)}
</Box>
</Popover>
<ListItem
key={member?.member}
// secondaryAction={
// <Checkbox
// edge="end"
// onChange={handleToggle(value)}
// checked={checked.indexOf(value) !== -1}
// inputProps={{ 'aria-labelledby': labelId }}
// />
// }
disablePadding
>
<ListItem key={member?.member} disablePadding>
<ListItemButton
onClick={(event) => handlePopoverOpen(event, index)}
>
@ -362,6 +381,7 @@ const ListOfMembers = ({
}
/>
</ListItemAvatar>
<ListItemText
id={''}
primary={member?.name || member?.member}
@ -373,7 +393,9 @@ const ListOfMembers = ({
marginLeft: 'auto',
}}
>
Admin
{t('core:admin', {
postProcess: 'capitalize',
})}
</Typography>
)}
</ListItemButton>
@ -386,28 +408,31 @@ const ListOfMembers = ({
return (
<div>
<p>Member list</p>
<p>
{t('core:list.member', {
postProcess: 'capitalize',
})}
</p>
<div
style={{
position: 'relative',
height: '500px',
width: '100%',
display: 'flex',
flexDirection: 'column',
flexShrink: 1,
height: '500px',
position: 'relative',
width: '100%',
}}
>
<AutoSizer>
{({ height, width }) => (
<List
ref={listRef}
width={width}
deferredMeasurementCache={cache}
height={height}
ref={listRef}
rowCount={members.length}
rowHeight={cache.rowHeight}
rowRenderer={rowRenderer}
// onScroll={handleScroll}
deferredMeasurementCache={cache}
width={width}
/>
)}
</AutoSizer>