pl-fe: i18n cleanup

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2025-10-20 22:22:39 +02:00
parent e02adcd7e7
commit cc6c4132a6
9 changed files with 35 additions and 68 deletions

View File

@ -1,5 +1,5 @@
import React from 'react';
import { defineMessages, IntlShape } from 'react-intl';
import { defineMessages, FormattedMessage, IntlShape } from 'react-intl';
import { fetchAccountByUsername } from 'pl-fe/actions/accounts';
import { deactivateUser, deleteUser, deleteStatus, toggleStatusSensitivity } from 'pl-fe/actions/admin';
@ -15,7 +15,6 @@ import type { AppDispatch, RootState } from 'pl-fe/store';
const messages = defineMessages({
deactivateUserHeading: { id: 'confirmations.admin.deactivate_user.heading', defaultMessage: 'Deactivate @{acct}' },
deactivateUserPrompt: { id: 'confirmations.admin.deactivate_user.message', defaultMessage: 'You are about to deactivate @{acct}. Deactivating a user is a reversible action.' },
deactivateUserConfirm: { id: 'confirmations.admin.deactivate_user.confirm', defaultMessage: 'Deactivate @{name}' },
userDeactivated: { id: 'admin.users.user_deactivated_message', defaultMessage: '@{acct} was deactivated' },
deleteUserHeading: { id: 'confirmations.admin.delete_user.heading', defaultMessage: 'Delete @{acct}' },
@ -50,7 +49,7 @@ const deactivateUserModal = (intl: IntlShape, accountId: string, afterConfirm =
</OutlineBox>
<Text>
{intl.formatMessage(messages.deactivateUserPrompt, { acct })}
<FormattedMessage id='confirmations.admin.deactivate_user.message' defaultMessage='You are about to deactivate @{acct}. Deactivating a user is a reversible action.' values={{ acct }} />
</Text>
</Stack>
);
@ -84,7 +83,7 @@ const deleteUserModal = (intl: IntlShape, accountId: string, afterConfirm = () =
</OutlineBox>
<Text>
{intl.formatMessage(messages.deleteUserPrompt, { acct })}
<FormattedMessage id='confirmations.admin.delete_user.message' defaultMessage='You are about to delete @{acct}. THIS IS A DESTRUCTIVE ACTION THAT CANNOT BE UNDONE.' values={{ acct }} />
</Text>
</Stack>
);

View File

@ -250,7 +250,7 @@ const Account = ({
{account.verified && <VerificationBadge />}
{account.bot && <Badge slug='bot' title={intl.formatMessage(messages.bot)} />}
{account.bot && <Badge slug='bot' title={<FormattedMessage id='account.badges.bot' defaultMessage='Bot' />} />}
</HStack>
<Stack space={withAccountNote || note ? 1 : 0}>
@ -329,7 +329,7 @@ const Account = ({
{account.verified && <VerificationBadge />}
{account.bot && <Badge slug='bot' title={intl.formatMessage(messages.bot)} />}
{account.bot && <Badge slug='bot' title={<FormattedMessage id='account.badges.bot' defaultMessage='Bot' />} />}
</HStack>
</LinkEl>
</ProfilePopper>

View File

@ -1,5 +1,5 @@
import React, { useMemo } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { defineMessages, FormattedDate, useIntl } from 'react-intl';
import IconButton from 'pl-fe/components/icon-button';
import { DatePicker } from 'pl-fe/features/ui/util/async-components';
@ -76,7 +76,7 @@ const BirthdayInput: React.FC<IBirthdayInput> = ({ value, onChange, required })
aria-label={intl.formatMessage(messages.previousMonth)}
title={intl.formatMessage(messages.previousMonth)}
/>
{intl.formatDate(date, { month: 'long' })}
<FormattedDate value={date} month='long' />
<IconButton
className='datepicker__button rtl:rotate-180'
src={require('@phosphor-icons/core/regular/caret-right.svg')}
@ -95,7 +95,7 @@ const BirthdayInput: React.FC<IBirthdayInput> = ({ value, onChange, required })
aria-label={intl.formatMessage(messages.previousYear)}
title={intl.formatMessage(messages.previousYear)}
/>
{intl.formatDate(date, { year: 'numeric' })}
<FormattedDate value={date} year='numeric' />
<IconButton
className='datepicker__button rtl:rotate-180'
src={require('@phosphor-icons/core/regular/caret-right.svg')}

View File

@ -2,7 +2,7 @@
import { useInfiniteQuery } from '@tanstack/react-query';
import clsx from 'clsx';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
import { FormattedMessage } from 'react-intl';
import { Link, NavLink } from 'react-router-dom';
import { fetchOwnAccounts, logOut, switchAccount } from 'pl-fe/actions/auth';
@ -29,30 +29,6 @@ import sourceCode from 'pl-fe/utils/code';
import type { Account as AccountEntity } from 'pl-fe/normalizers/account';
const messages = defineMessages({
profile: { id: 'account.profile', defaultMessage: 'Profile' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
followedTags: { id: 'navigation_bar.followed_tags', defaultMessage: 'Followed hashtags' },
logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
profileDirectory: { id: 'navigation_bar.profile_directory', defaultMessage: 'Profile directory' },
bookmarks: { id: 'column.bookmarks', defaultMessage: 'Bookmarks' },
lists: { id: 'column.lists', defaultMessage: 'Lists' },
circles: { id: 'column.circles', defaultMessage: 'Circles' },
groups: { id: 'column.groups', defaultMessage: 'Groups' },
events: { id: 'column.events', defaultMessage: 'Events' },
dashboard: { id: 'navigation.dashboard', defaultMessage: 'Dashboard' },
scheduledStatuses: { id: 'column.scheduled_statuses', defaultMessage: 'Scheduled posts' },
drafts: { id: 'navigation.drafts', defaultMessage: 'Drafts' },
addAccount: { id: 'profile_dropdown.add_account', defaultMessage: 'Add an existing account' },
followRequests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
interactionRequests: { id: 'navigation.interaction_requests', defaultMessage: 'Interaction requests' },
close: { id: 'lightbox.close', defaultMessage: 'Close' },
login: { id: 'account.login', defaultMessage: 'Log in' },
register: { id: 'account.register', defaultMessage: 'Sign up' },
sourceCode: { id: 'navigation.source_code', defaultMessage: 'Source code' },
conversations: { id: 'navigation.direct_messages', defaultMessage: 'Direct messages' },
});
interface IDropdownNavigationLink {
href?: string;
to?: string;
@ -88,7 +64,6 @@ const DropdownNavigationLink: React.FC<IDropdownNavigationLink> = React.memo(({
});
const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
const intl = useIntl();
const dispatch = useAppDispatch();
const { isSidebarOpen, closeSidebar } = useUiStore();
@ -223,7 +198,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to={`/@${account.acct}`}
icon={require('@phosphor-icons/core/regular/user.svg')}
text={intl.formatMessage(messages.profile)}
text={<FormattedMessage id='account.profile' defaultMessage='Profile' />}
onClick={closeSidebar}
/>
@ -231,7 +206,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/follow_requests'
icon={require('@phosphor-icons/core/regular/user-plus.svg')}
text={intl.formatMessage(messages.followRequests)}
text={<FormattedMessage id='navigation_bar.follow_requests' defaultMessage='Follow requests' />}
onClick={closeSidebar}
/>
)}
@ -240,7 +215,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/interaction_requests'
icon={require('@phosphor-icons/core/regular/heart-half.svg')}
text={intl.formatMessage(messages.interactionRequests)}
text={<FormattedMessage id='navigation.interaction_requests' defaultMessage='Interaction requests' />}
onClick={closeSidebar}
/>
)}
@ -249,7 +224,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/conversations'
icon={require('@phosphor-icons/core/regular/envelope-simple.svg')}
text={intl.formatMessage(messages.conversations)}
text={<FormattedMessage id='navigation.direct_messages' defaultMessage='Direct messages' />}
onClick={closeSidebar}
/>
)}
@ -258,7 +233,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/bookmarks'
icon={require('@phosphor-icons/core/regular/bookmarks.svg')}
text={intl.formatMessage(messages.bookmarks)}
text={<FormattedMessage id='column.bookmarks' defaultMessage='Bookmarks' />}
onClick={closeSidebar}
/>
)}
@ -267,7 +242,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/groups'
icon={require('@phosphor-icons/core/regular/users-three.svg')}
text={intl.formatMessage(messages.groups)}
text={<FormattedMessage id='column.groups' defaultMessage='Groups' />}
onClick={closeSidebar}
/>
)}
@ -276,7 +251,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/lists'
icon={require('@phosphor-icons/core/regular/list-dashes.svg')}
text={intl.formatMessage(messages.lists)}
text={<FormattedMessage id='column.lists' defaultMessage='Lists' />}
onClick={closeSidebar}
/>
)}
@ -285,7 +260,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/circles'
icon={require('@phosphor-icons/core/regular/circles-three.svg')}
text={intl.formatMessage(messages.circles)}
text={<FormattedMessage id='column.circles' defaultMessage='Circles' />}
onClick={closeSidebar}
/>
)}
@ -294,7 +269,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/events'
icon={require('@phosphor-icons/core/regular/calendar-dots.svg')}
text={intl.formatMessage(messages.events)}
text={<FormattedMessage id='column.events' defaultMessage='Events' />}
onClick={closeSidebar}
/>
)}
@ -303,7 +278,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/directory'
icon={require('@phosphor-icons/core/regular/address-book.svg')}
text={intl.formatMessage(messages.profileDirectory)}
text={<FormattedMessage id='navigation_bar.profile_directory' defaultMessage='Profile directory' />}
onClick={closeSidebar}
/>
)}
@ -312,7 +287,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/scheduled_statuses'
icon={require('@phosphor-icons/core/regular/hourglass.svg')}
text={intl.formatMessage(messages.scheduledStatuses)}
text={<FormattedMessage id='column.scheduled_statuses' defaultMessage='Scheduled statuses' />}
onClick={closeSidebar}
/>
)}
@ -321,7 +296,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/draft_statuses'
icon={require('@phosphor-icons/core/regular/pencil-simple.svg')}
text={intl.formatMessage(messages.drafts)}
text={<FormattedMessage id='navigation.drafts' defaultMessage='Drafts' />}
onClick={closeSidebar}
/>
)}
@ -369,7 +344,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/settings/preferences'
icon={require('@phosphor-icons/core/regular/sliders-horizontal.svg')}
text={intl.formatMessage(messages.preferences)}
text={<FormattedMessage id='navigation_bar.preferences' defaultMessage='Preferences' />}
onClick={closeSidebar}
/>
@ -377,7 +352,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/followed_tags'
icon={require('@phosphor-icons/core/regular/hash.svg')}
text={intl.formatMessage(messages.followedTags)}
text={<FormattedMessage id='navigation_bar.followed_tags' defaultMessage='Followed hashtags' />}
onClick={closeSidebar}
/>
)}
@ -386,7 +361,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/admin'
icon={require('@phosphor-icons/core/regular/gauge.svg')}
text={intl.formatMessage(messages.dashboard)}
text={<FormattedMessage id='navigation.dashboard' defaultMessage='Dashboard' />}
onClick={closeSidebar}
// count={dashboardCount} WIP
/>
@ -397,7 +372,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/logout'
icon={require('@phosphor-icons/core/regular/sign-out.svg')}
text={intl.formatMessage(messages.logout)}
text={<FormattedMessage id='navigation_bar.logout' defaultMessage='Logout' />}
onClick={onClickLogOut}
/>
@ -406,7 +381,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
href={sourceCode.url}
icon={require('@phosphor-icons/core/regular/code.svg')}
text={intl.formatMessage(messages.sourceCode)}
text={<FormattedMessage id='navigation.source_code' defaultMessage='Source code' />}
onClick={closeSidebar}
/>
@ -433,7 +408,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<NavLink className='⁂-dropdown-navigation__account-switcher__add' to='/login/add' onClick={handleClose}>
<Icon src={require('@phosphor-icons/core/regular/plus.svg')} />
<Text size='sm' weight='medium'>{intl.formatMessage(messages.addAccount)}</Text>
<Text size='sm' weight='medium'><FormattedMessage id='profile_dropdown.add_account' defaultMessage='Add an existing account' /></Text>
</NavLink>
</div>
)}
@ -483,7 +458,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/login'
icon={require('@phosphor-icons/core/regular/sign-in.svg')}
text={intl.formatMessage(messages.login)}
text={<FormattedMessage id='account.login' defaultMessage='Log in' />}
onClick={closeSidebar}
/>
@ -491,7 +466,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
to='/signup'
icon={require('@phosphor-icons/core/regular/user-plus.svg')}
text={intl.formatMessage(messages.register)}
text={<FormattedMessage id='account.register' defaultMessage='Sign up' />}
onClick={closeSidebar}
/>
)}
@ -501,7 +476,7 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
<DropdownNavigationLink
href={sourceCode.url}
icon={require('@phosphor-icons/core/regular/code.svg')}
text={intl.formatMessage(messages.sourceCode)}
text={<FormattedMessage id='navigation.source_code' defaultMessage='Source code' />}
onClick={closeSidebar}
/>
</div>

View File

@ -1,5 +1,5 @@
import React, { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { FormattedMessage } from 'react-intl';
import { vote } from 'pl-fe/actions/polls';
import Stack from 'pl-fe/components/ui/stack';
@ -23,14 +23,9 @@ interface IPoll {
truncate?: boolean;
}
const messages = defineMessages({
multiple: { id: 'poll.choose_multiple', defaultMessage: 'Choose as many as you\'d like.' },
});
const Poll: React.FC<IPoll> = ({ id, status, language, truncate }): JSX.Element | null => {
const { openModal } = useModalsStore();
const dispatch = useAppDispatch();
const intl = useIntl();
const isLoggedIn = useAppSelector((state) => state.me);
const poll = useAppSelector((state) => state.polls[id]);
@ -79,7 +74,7 @@ const Poll: React.FC<IPoll> = ({ id, status, language, truncate }): JSX.Element
<div onClick={e => e.stopPropagation()}>
{!showResults && poll.multiple && (
<Text className='mb-4' theme='muted' size='sm'>
{intl.formatMessage(messages.multiple)}
<FormattedMessage id='poll.choose_multiple' defaultMessage="Choose as many as you'd like." />
</Text>
)}

View File

@ -1,6 +1,6 @@
import clsx from 'clsx';
import React, { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { useHistory } from 'react-router-dom';
import AutosuggestAccountInput from 'pl-fe/components/autosuggest-account-input';
@ -74,7 +74,7 @@ const SearchInput = React.memo(() => {
return (
<div className='w-full'>
<label htmlFor='search' className='sr-only'>{intl.formatMessage(messages.placeholder)}</label>
<label htmlFor='search' className='sr-only'><FormattedMessage id='search.placeholder' defaultMessage='Search' /></label>
<div className='relative'>
<AutosuggestAccountInput

View File

@ -21,8 +21,6 @@ import type { Chat } from 'pl-api';
import type { Menu } from 'pl-fe/components/dropdown-menu';
const messages = defineMessages({
blockedYou: { id: 'chat_list_item.blocked_you', defaultMessage: 'This user has blocked you' },
blocking: { id: 'chat_list_item.blocking', defaultMessage: 'You have blocked this user' },
leaveMessage: { id: 'chat_settings.leave.message', defaultMessage: 'Are you sure you want to leave this chat? Messages will be deleted for you and this chat will be removed from your inbox.' },
leaveHeading: { id: 'chat_settings.leave.heading', defaultMessage: 'Leave chat' },
leaveConfirm: { id: 'chat_settings.leave.confirm', defaultMessage: 'Leave chat' },

View File

@ -2,7 +2,6 @@ import React from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { WITH_LANDING_PAGE } from 'pl-fe/build-config';
import Text from 'pl-fe/components/ui/text';
import Emojify from 'pl-fe/features/emoji/emojify';
import { usePlFeConfig } from 'pl-fe/hooks/use-pl-fe-config';
import sourceCode from 'pl-fe/utils/code';

View File

@ -312,6 +312,7 @@
"chat_composer.unblock": "Unblock",
"chat_list_item.blocked_you": "This user has blocked you",
"chat_list_item.blocking": "You have blocked this user",
"chat_list_item.settings": "Chat settings",
"chat_list_item_shoutbox": "{instance} shoutbox",
"chat_message_list.blocked": "You blocked this user",
"chat_message_list.blocked_by": "You are blocked by",