diff --git a/src/components/account-info.jsx b/src/components/account-info.jsx
index 226194c9..5b493aca 100644
--- a/src/components/account-info.jsx
+++ b/src/components/account-info.jsx
@@ -1,7 +1,7 @@
import './account-info.css';
-import { msg, plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg, plural } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { MenuDivider, MenuItem } from '@szhsin/react-menu';
import {
useCallback,
@@ -24,7 +24,7 @@ import pmem from '../utils/pmem';
import shortenNumber from '../utils/shorten-number';
import showCompose from '../utils/show-compose';
import showToast from '../utils/show-toast';
-import states, { hideAllModals } from '../utils/states';
+import states from '../utils/states';
import store from '../utils/store';
import { getCurrentAccountID, updateAccount } from '../utils/store-utils';
import supports from '../utils/supports';
@@ -135,7 +135,7 @@ function AccountInfo({
instance,
authenticated,
}) {
- const { i18n } = useLingui();
+ const { i18n, t } = useLingui();
const { masto } = api({
instance,
});
diff --git a/src/components/account-sheet.jsx b/src/components/account-sheet.jsx
index 593c0bfc..c9ec917b 100644
--- a/src/components/account-sheet.jsx
+++ b/src/components/account-sheet.jsx
@@ -1,4 +1,4 @@
-import { t } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { useEffect } from 'preact/hooks';
import { api } from '../utils/api';
@@ -9,6 +9,7 @@ import AccountInfo from './account-info';
import Icon from './icon';
function AccountSheet({ account, instance: propInstance, onClose }) {
+ const { t } = useLingui();
const { masto, instance, authenticated } = api({ instance: propInstance });
const isString = typeof account === 'string';
diff --git a/src/components/background-service.jsx b/src/components/background-service.jsx
index 64144832..94d5fda5 100644
--- a/src/components/background-service.jsx
+++ b/src/components/background-service.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { memo } from 'preact/compat';
import { useEffect, useRef, useState } from 'preact/hooks';
import { useHotkeys } from 'react-hotkeys-hook';
@@ -13,6 +13,8 @@ const STREAMING_TIMEOUT = 1000 * 3; // 3 seconds
const POLL_INTERVAL = 20_000; // 20 seconds
export default memo(function BackgroundService({ isLoggedIn }) {
+ const { t } = useLingui();
+
// Notifications service
// - WebSocket to receive notifications when page is visible
const [visible, setVisible] = useState(true);
diff --git a/src/components/columns.jsx b/src/components/columns.jsx
index 0449c780..1f578b42 100644
--- a/src/components/columns.jsx
+++ b/src/components/columns.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { useHotkeys } from 'react-hotkeys-hook';
import { useSnapshot } from 'valtio';
@@ -23,6 +23,7 @@ const scrollIntoViewOptions = {
};
function Columns() {
+ const { t } = useLingui();
useTitle(t`Home`, '/');
const snapStates = useSnapshot(states);
const { shortcuts } = snapStates;
diff --git a/src/components/compose-button.jsx b/src/components/compose-button.jsx
index 20a7e8d1..818430a7 100644
--- a/src/components/compose-button.jsx
+++ b/src/components/compose-button.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { useHotkeys } from 'react-hotkeys-hook';
import { useSnapshot } from 'valtio';
@@ -9,6 +9,7 @@ import states from '../utils/states';
import Icon from './icon';
export default function ComposeButton() {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
function handleButton(e) {
diff --git a/src/components/compose.jsx b/src/components/compose.jsx
index 775fd637..3eec47db 100644
--- a/src/components/compose.jsx
+++ b/src/components/compose.jsx
@@ -1,8 +1,8 @@
import './compose.css';
import '@github/text-expander-element';
-import { msg, plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg, plural } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { MenuItem } from '@szhsin/react-menu';
import { deepEqual } from 'fast-equals';
import Fuse from 'fuse.js';
@@ -217,7 +217,7 @@ function Compose({
standalone,
hasOpener,
}) {
- const { i18n, _ } = useLingui();
+ const { i18n, _, t } = useLingui();
const rtf = RTF(i18n.locale);
const lf = LF(i18n.locale);
@@ -2244,7 +2244,7 @@ function MediaAttachment({
onDescriptionChange = () => {},
onRemove = () => {},
}) {
- const { i18n } = useLingui();
+ const { i18n, t } = useLingui();
const [uiState, setUIState] = useState('default');
const supportsEdit = supports('@mastodon/edit-media-attributes');
const { type, id, file } = attachment;
diff --git a/src/components/drafts.jsx b/src/components/drafts.jsx
index 5c6182ad..21a0b8f1 100644
--- a/src/components/drafts.jsx
+++ b/src/components/drafts.jsx
@@ -1,6 +1,6 @@
import './drafts.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useMemo, useReducer, useState } from 'react';
import { api } from '../utils/api';
@@ -14,6 +14,7 @@ import Loader from './loader';
import MenuConfirm from './menu-confirm';
function Drafts({ onClose }) {
+ const { t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const [drafts, setDrafts] = useState([]);
diff --git a/src/components/embed-modal.jsx b/src/components/embed-modal.jsx
index 66215ae1..28bf22d3 100644
--- a/src/components/embed-modal.jsx
+++ b/src/components/embed-modal.jsx
@@ -1,10 +1,11 @@
import './embed-modal.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import Icon from './icon';
function EmbedModal({ html, url, width, height, onClose = () => {} }) {
+ const { t } = useLingui();
return (
diff --git a/src/components/follow-request-buttons.jsx b/src/components/follow-request-buttons.jsx
index d62e3c6d..1f64acf4 100644
--- a/src/components/follow-request-buttons.jsx
+++ b/src/components/follow-request-buttons.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useState } from 'preact/hooks';
import { api } from '../utils/api';
@@ -7,6 +7,7 @@ import Icon from './icon';
import Loader from './loader';
function FollowRequestButtons({ accountID, onChange }) {
+ const { t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const [requestState, setRequestState] = useState(null); // accept, reject
diff --git a/src/components/generic-accounts.jsx b/src/components/generic-accounts.jsx
index 498dc12f..5f0e3e98 100644
--- a/src/components/generic-accounts.jsx
+++ b/src/components/generic-accounts.jsx
@@ -1,6 +1,6 @@
import './generic-accounts.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useRef, useState } from 'preact/hooks';
import { InView } from 'react-intersection-observer';
import { useSnapshot } from 'valtio';
@@ -21,8 +21,9 @@ export default function GenericAccounts({
excludeRelationshipAttrs = [],
postID,
onClose = () => {},
- blankCopy = t`Nothing to show`,
+ blankCopy,
}) {
+ const { t } = useLingui();
const { masto, instance: currentInstance } = api();
const isCurrentInstance = instance ? instance === currentInstance : true;
const snapStates = useSnapshot(states);
@@ -227,7 +228,9 @@ export default function GenericAccounts({
Error loading accounts
) : (
-
{blankCopy}
+
+ {blankCopy || t`Nothing to show`}
+
)}
diff --git a/src/components/keyboard-shortcuts-help.jsx b/src/components/keyboard-shortcuts-help.jsx
index 523093e3..7d717aa5 100644
--- a/src/components/keyboard-shortcuts-help.jsx
+++ b/src/components/keyboard-shortcuts-help.jsx
@@ -1,6 +1,6 @@
import './keyboard-shortcuts-help.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { memo } from 'preact/compat';
import { useHotkeys } from 'react-hotkeys-hook';
import { useSnapshot } from 'valtio';
@@ -11,6 +11,7 @@ import Icon from './icon';
import Modal from './modal';
export default memo(function KeyboardShortcutsHelp() {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
function onClose() {
diff --git a/src/components/list-add-edit.jsx b/src/components/list-add-edit.jsx
index 17279b7b..c8823a36 100644
--- a/src/components/list-add-edit.jsx
+++ b/src/components/list-add-edit.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useRef, useState } from 'preact/hooks';
import { api } from '../utils/api';
@@ -9,6 +9,7 @@ import Icon from './icon';
import MenuConfirm from './menu-confirm';
function ListAddEdit({ list, onClose }) {
+ const { t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const editMode = !!list;
diff --git a/src/components/media-alt-modal.jsx b/src/components/media-alt-modal.jsx
index 9f4cfeba..6188ea86 100644
--- a/src/components/media-alt-modal.jsx
+++ b/src/components/media-alt-modal.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { Menu, MenuItem } from '@szhsin/react-menu';
import { useState } from 'preact/hooks';
import { useSnapshot } from 'valtio';
@@ -13,6 +13,7 @@ import Menu2 from './menu2';
import TranslationBlock from './translation-block';
export default function MediaAltModal({ alt, lang, onClose }) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const [forceTranslate, setForceTranslate] = useState(false);
const targetLanguage = getTranslateTargetLanguage(true);
diff --git a/src/components/media-modal.jsx b/src/components/media-modal.jsx
index 89309e1b..b93d37d8 100644
--- a/src/components/media-modal.jsx
+++ b/src/components/media-modal.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { MenuDivider, MenuItem } from '@szhsin/react-menu';
import { getBlurHashAverageColor } from 'fast-blurhash';
import {
@@ -32,6 +32,7 @@ function MediaModal({
index = 0,
onClose = () => {},
}) {
+ const { t } = useLingui();
const [uiState, setUIState] = useState('default');
const carouselRef = useRef(null);
diff --git a/src/components/media-post.jsx b/src/components/media-post.jsx
index 58c3495b..14313447 100644
--- a/src/components/media-post.jsx
+++ b/src/components/media-post.jsx
@@ -1,6 +1,6 @@
import './media-post.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { memo } from 'preact/compat';
import { useContext, useMemo } from 'preact/hooks';
import { useSnapshot } from 'valtio';
@@ -22,6 +22,7 @@ function MediaPost({
// allowFilters,
onMediaClick,
}) {
+ const { t } = useLingui();
let sKey = statusKey(statusID, instance);
const snapStates = useSnapshot(states);
if (!status) {
diff --git a/src/components/media.jsx b/src/components/media.jsx
index fc92df69..d4fae620 100644
--- a/src/components/media.jsx
+++ b/src/components/media.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { getBlurHashAverageColor } from 'fast-blurhash';
import { Fragment } from 'preact';
import { memo } from 'preact/compat';
@@ -32,6 +32,7 @@ audio = Audio track
const dataAltLabel = 'ALT';
const AltBadge = (props) => {
+ const { t } = useLingui();
const { alt, lang, index, ...rest } = props;
if (!alt || !alt.trim()) return null;
return (
diff --git a/src/components/modals.jsx b/src/components/modals.jsx
index e961f585..362e6e1f 100644
--- a/src/components/modals.jsx
+++ b/src/components/modals.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { useEffect } from 'preact/hooks';
import { useLocation, useNavigate } from 'react-router-dom';
import { subscribe, useSnapshot } from 'valtio';
@@ -30,6 +30,7 @@ subscribe(states, (changes) => {
});
export default function Modals() {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const navigate = useNavigate();
const location = useLocation();
diff --git a/src/components/nav-menu.jsx b/src/components/nav-menu.jsx
index 6e46072c..6a07c0e6 100644
--- a/src/components/nav-menu.jsx
+++ b/src/components/nav-menu.jsx
@@ -1,6 +1,6 @@
import './nav-menu.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { ControlledMenu, MenuDivider, MenuItem } from '@szhsin/react-menu';
import { memo } from 'preact/compat';
import { useEffect, useMemo, useRef, useState } from 'preact/hooks';
@@ -21,6 +21,7 @@ import MenuLink from './menu-link';
import SubMenu2 from './submenu2';
function NavMenu(props) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const { masto, instance, authenticated } = api();
diff --git a/src/components/notification-service.jsx b/src/components/notification-service.jsx
index a46574d5..dd0a5c56 100644
--- a/src/components/notification-service.jsx
+++ b/src/components/notification-service.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { memo } from 'preact/compat';
import { useLayoutEffect, useState } from 'preact/hooks';
import { useSnapshot } from 'valtio';
@@ -33,6 +33,7 @@ import Notification from './notification';
}
export default memo(function NotificationService() {
+ const { t } = useLingui();
if (!('serviceWorker' in navigator)) return null;
const snapStates = useSnapshot(states);
diff --git a/src/components/notification.jsx b/src/components/notification.jsx
index 1becf77c..6e3f93fa 100644
--- a/src/components/notification.jsx
+++ b/src/components/notification.jsx
@@ -1,5 +1,5 @@
-import { msg, Plural, Select, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg, t } from '@lingui/core/macro';
+import { Plural, Select, Trans, useLingui } from '@lingui/react/macro';
import { Fragment } from 'preact';
import { memo } from 'preact/compat';
diff --git a/src/components/poll.jsx b/src/components/poll.jsx
index 92b57a1d..91a1426e 100644
--- a/src/components/poll.jsx
+++ b/src/components/poll.jsx
@@ -1,4 +1,5 @@
-import { Plural, plural, t, Trans } from '@lingui/macro';
+import { plural } from '@lingui/core/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { useState } from 'preact/hooks';
import shortenNumber from '../utils/shorten-number';
@@ -14,6 +15,7 @@ export default function Poll({
refresh = () => {},
votePoll = () => {},
}) {
+ const { t } = useLingui();
const [uiState, setUIState] = useState('default');
const {
expired,
diff --git a/src/components/relative-time.jsx b/src/components/relative-time.jsx
index 8ab9f646..9b588ed5 100644
--- a/src/components/relative-time.jsx
+++ b/src/components/relative-time.jsx
@@ -1,5 +1,5 @@
import { i18n } from '@lingui/core';
-import { t, Trans } from '@lingui/macro';
+import { t } from '@lingui/core/macro';
import { useEffect, useMemo, useReducer } from 'preact/hooks';
import localeMatch from '../utils/locale-match';
diff --git a/src/components/report-modal.jsx b/src/components/report-modal.jsx
index ee1c889a..af2c6183 100644
--- a/src/components/report-modal.jsx
+++ b/src/components/report-modal.jsx
@@ -1,7 +1,7 @@
import './report-modal.css';
-import { msg, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { Fragment } from 'preact';
import { useMemo, useRef, useState } from 'preact/hooks';
@@ -46,7 +46,7 @@ const CATEGORIES_INFO = {
};
function ReportModal({ account, post, onClose }) {
- const { _ } = useLingui();
+ const { _, t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const [username, domain] = account.acct.split('@');
diff --git a/src/components/search-form.jsx b/src/components/search-form.jsx
index 6f231c61..d6f39146 100644
--- a/src/components/search-form.jsx
+++ b/src/components/search-form.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { forwardRef } from 'preact/compat';
import { useImperativeHandle, useRef, useState } from 'preact/hooks';
import { useSearchParams } from 'react-router-dom';
@@ -9,6 +9,7 @@ import Icon from './icon';
import Link from './link';
const SearchForm = forwardRef((props, ref) => {
+ const { t } = useLingui();
const { instance } = api();
const [searchParams, setSearchParams] = useSearchParams();
const [searchMenuOpen, setSearchMenuOpen] = useState(false);
diff --git a/src/components/shortcuts-settings.jsx b/src/components/shortcuts-settings.jsx
index f92e2761..a7e6e48b 100644
--- a/src/components/shortcuts-settings.jsx
+++ b/src/components/shortcuts-settings.jsx
@@ -1,8 +1,8 @@
import './shortcuts-settings.css';
import { useAutoAnimate } from '@formkit/auto-animate/preact';
-import { msg, Plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg, t } from '@lingui/core/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import {
compressToEncodedURIComponent,
decompressFromEncodedURIComponent,
diff --git a/src/components/shortcuts.jsx b/src/components/shortcuts.jsx
index 0fea57d7..3997717a 100644
--- a/src/components/shortcuts.jsx
+++ b/src/components/shortcuts.jsx
@@ -1,7 +1,6 @@
import './shortcuts.css';
-import { t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { Trans, useLingui } from '@lingui/react/macro';
import { MenuDivider } from '@szhsin/react-menu';
import { memo } from 'preact/compat';
import { useRef, useState } from 'preact/hooks';
@@ -22,6 +21,7 @@ import Menu2 from './menu2';
import SubMenu2 from './submenu2';
function Shortcuts() {
+ const { t } = useLingui();
const { _ } = useLingui();
const { instance } = api();
const snapStates = useSnapshot(states);
diff --git a/src/components/status.jsx b/src/components/status.jsx
index e527d39d..924bfcd6 100644
--- a/src/components/status.jsx
+++ b/src/components/status.jsx
@@ -1,8 +1,8 @@
import './status.css';
import '@justinribeiro/lite-youtube';
-import { msg, plural, Plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg, plural } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import {
ControlledMenu,
Menu,
@@ -308,7 +308,7 @@ function Status({
showReplyParent,
mediaFirst,
}) {
- const { _ } = useLingui();
+ const { _, t } = useLingui();
if (skeleton) {
return (
@@ -2967,6 +2967,7 @@ function EditedAtModal({
fetchStatusHistory = () => {},
onClose,
}) {
+ const { t } = useLingui();
const [uiState, setUIState] = useState('default');
const [editHistory, setEditHistory] = useState([]);
@@ -3202,6 +3203,7 @@ function generateHTMLCode(post, instance, level = 0) {
}
function EmbedModal({ post, instance, onClose }) {
+ const { t } = useLingui();
const {
account: {
url: accountURL,
@@ -3578,7 +3580,7 @@ function FilteredStatus({
showFollowedTags,
quoted,
}) {
- const { _ } = useLingui();
+ const { _, t } = useLingui();
const snapStates = useSnapshot(states);
const {
id: statusID,
diff --git a/src/components/timeline.jsx b/src/components/timeline.jsx
index 978763bb..526cbbc0 100644
--- a/src/components/timeline.jsx
+++ b/src/components/timeline.jsx
@@ -1,4 +1,5 @@
-import { plural, t, Trans } from '@lingui/macro';
+import { plural } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { memo } from 'preact/compat';
import {
useCallback,
@@ -60,6 +61,7 @@ function Timeline({
showReplyParent,
clearWhenRefresh,
}) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const [items, setItems] = useState([]);
const [uiState, setUIState] = useState('start');
@@ -573,6 +575,7 @@ const TimelineItem = memo(
showReplyParent,
mediaFirst,
}) => {
+ const { t } = useLingui();
console.debug('RENDER TimelineItem', status.id);
const { id: statusID, reblog, items, type, _pinned } = status;
if (_pinned) useItemID = false;
@@ -836,6 +839,7 @@ const TimelineItem = memo(
);
function StatusCarousel({ title, class: className, children }) {
+ const { t } = useLingui();
const carouselRef = useRef();
// const { reachStart, reachEnd, init } = useScroll({
// scrollableRef: carouselRef,
@@ -929,6 +933,7 @@ function StatusCarousel({ title, class: className, children }) {
}
function TimelineStatusCompact({ status, instance, filterContext }) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const { id, visibility, language } = status;
const statusPeekText = statusPeek(status);
diff --git a/src/components/translation-block.jsx b/src/components/translation-block.jsx
index 7e4f10ca..65936838 100644
--- a/src/components/translation-block.jsx
+++ b/src/components/translation-block.jsx
@@ -1,6 +1,6 @@
import './translation-block.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import pRetry from 'p-retry';
import pThrottle from 'p-throttle';
import { useEffect, useRef, useState } from 'preact/hooks';
@@ -80,6 +80,7 @@ function TranslationBlock({
mini,
autoDetected,
}) {
+ const { t } = useLingui();
const targetLang = getTranslateTargetLanguage(true);
const [uiState, setUIState] = useState('default');
const [pronunciationContent, setPronunciationContent] = useState(null);
diff --git a/src/compose.jsx b/src/compose.jsx
index 709275e7..13c04924 100644
--- a/src/compose.jsx
+++ b/src/compose.jsx
@@ -3,8 +3,8 @@ import './app.css';
import './polyfills';
import { i18n } from '@lingui/core';
-import { t, Trans } from '@lingui/macro';
import { I18nProvider } from '@lingui/react';
+import { Trans, useLingui } from '@lingui/react/macro';
import { render } from 'preact';
import { useEffect, useState } from 'preact/hooks';
@@ -12,7 +12,7 @@ import ComposeSuspense from './components/compose-suspense';
import Loader from './components/loader';
import { initActivateLang } from './utils/lang';
import { initStates } from './utils/states';
-import { getCurrentAccount, setCurrentAccountID } from './utils/store-utils';
+import { getCurrentAccount } from './utils/store-utils';
import useTitle from './utils/useTitle';
initActivateLang();
@@ -22,6 +22,7 @@ if (window.opener) {
}
function App() {
+ const { t } = useLingui();
const [uiState, setUIState] = useState('default');
const [isLoggedIn, setIsLoggedIn] = useState(null);
diff --git a/src/locales/en.po b/src/locales/en.po
index d7901ea1..25378788 100644
--- a/src/locales/en.po
+++ b/src/locales/en.po
@@ -13,62 +13,62 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
-#: src/components/account-block.jsx:135
+#: src/components/account-block.jsx:136
msgid "Locked"
msgstr ""
#. placeholder {0}: shortenNumber(statusesCount)
-#: src/components/account-block.jsx:141
+#: src/components/account-block.jsx:142
msgid "Posts: {0}"
msgstr ""
#. placeholder {0}: niceDateTime(lastStatusAt, { hideTime: true, })
-#: src/components/account-block.jsx:146
+#: src/components/account-block.jsx:147
msgid "Last posted: {0}"
msgstr ""
-#: src/components/account-block.jsx:161
+#: src/components/account-block.jsx:162
#: src/components/account-info.jsx:636
msgid "Automated"
msgstr ""
-#: src/components/account-block.jsx:168
+#: src/components/account-block.jsx:169
#: src/components/account-info.jsx:641
#: src/components/status.jsx:514
msgid "Group"
msgstr ""
-#: src/components/account-block.jsx:178
+#: src/components/account-block.jsx:179
msgid "Mutual"
msgstr ""
-#: src/components/account-block.jsx:182
+#: src/components/account-block.jsx:183
#: src/components/account-info.jsx:1682
msgid "Requested"
msgstr ""
-#: src/components/account-block.jsx:186
+#: src/components/account-block.jsx:187
#: src/components/account-info.jsx:1673
msgid "Following"
msgstr ""
-#: src/components/account-block.jsx:190
+#: src/components/account-block.jsx:191
#: src/components/account-info.jsx:1064
msgid "Follows you"
msgstr ""
-#: src/components/account-block.jsx:198
+#: src/components/account-block.jsx:199
msgid "{followersCount, plural, one {# follower} other {# followers}}"
msgstr ""
-#: src/components/account-block.jsx:207
+#: src/components/account-block.jsx:208
#: src/components/account-info.jsx:682
msgid "Verified"
msgstr ""
#. placeholder {0}: niceDateTime(createdAt, { hideTime: true, })
#. placeholder {0}: niceDateTime(createdAt, { hideTime: true, })
-#: src/components/account-block.jsx:222
+#: src/components/account-block.jsx:223
#: src/components/account-info.jsx:782
msgid "Joined <0>{0}0>"
msgstr ""
@@ -100,29 +100,28 @@ msgstr "Following"
#: src/components/account-info.jsx:421
#: src/components/account-info.jsx:778
-#: src/pages/account-statuses.jsx:484
-#: src/pages/search.jsx:327
-#: src/pages/search.jsx:474
+#: src/pages/account-statuses.jsx:483
+#: src/pages/search.jsx:328
+#: src/pages/search.jsx:475
msgid "Posts"
msgstr ""
#: src/components/account-info.jsx:429
-#: src/components/account-info.jsx:1120
#: src/components/compose.jsx:2591
-#: src/components/media-alt-modal.jsx:45
-#: src/components/media-modal.jsx:357
+#: src/components/media-alt-modal.jsx:46
+#: src/components/media-modal.jsx:358
#: src/components/status.jsx:1737
#: src/components/status.jsx:1754
#: src/components/status.jsx:1878
#: src/components/status.jsx:2490
#: src/components/status.jsx:2493
-#: src/pages/account-statuses.jsx:528
-#: src/pages/accounts.jsx:109
-#: src/pages/hashtag.jsx:199
-#: src/pages/list.jsx:157
-#: src/pages/public.jsx:114
-#: src/pages/status.jsx:1212
-#: src/pages/trending.jsx:471
+#: src/pages/account-statuses.jsx:527
+#: src/pages/accounts.jsx:110
+#: src/pages/hashtag.jsx:200
+#: src/pages/list.jsx:158
+#: src/pages/public.jsx:115
+#: src/pages/status.jsx:1214
+#: src/pages/trending.jsx:472
msgid "More"
msgstr ""
@@ -131,14 +130,12 @@ msgid "<0>{displayName}0> has indicated that their new account is now:"
msgstr ""
#: src/components/account-info.jsx:586
-#: src/components/account-info.jsx:1278
msgid "Handle copied"
-msgstr ""
+msgstr "Handle copied"
#: src/components/account-info.jsx:589
-#: src/components/account-info.jsx:1281
msgid "Unable to copy handle"
-msgstr ""
+msgstr "Unable to copy handle"
#: src/components/account-info.jsx:595
#: src/components/account-info.jsx:1287
@@ -164,14 +161,14 @@ msgstr ""
#: src/components/account-info.jsx:711
#: src/components/account-info.jsx:752
msgid "This user has chosen to not make this information available."
-msgstr ""
+msgstr "This user has chosen to not make this information available."
#. placeholder {0}: ( postingStats.originals / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
#. placeholder {1}: ( postingStats.replies / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
#. placeholder {2}: ( postingStats.boosts / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
#: src/components/account-info.jsx:807
msgid "{0} original posts, {1} replies, {2} boosts"
-msgstr ""
+msgstr "{0} original posts, {1} replies, {2} boosts"
#. placeholder {0}: postingStats.total
#. placeholder {1}: postingStats.daysSinceLastPost
@@ -199,17 +196,17 @@ msgstr ""
#: src/components/status.jsx:2268
#: src/pages/catchup.jsx:71
#: src/pages/catchup.jsx:1445
-#: src/pages/catchup.jsx:2056
-#: src/pages/status.jsx:935
-#: src/pages/status.jsx:1557
+#: src/pages/catchup.jsx:2058
+#: src/pages/status.jsx:937
+#: src/pages/status.jsx:1560
msgid "Replies"
msgstr ""
#: src/components/account-info.jsx:868
#: src/pages/catchup.jsx:72
#: src/pages/catchup.jsx:1447
-#: src/pages/catchup.jsx:2068
-#: src/pages/settings.jsx:1153
+#: src/pages/catchup.jsx:2070
+#: src/pages/settings.jsx:1155
msgid "Boosts"
msgstr ""
@@ -234,10 +231,6 @@ msgstr ""
msgid "Blocked"
msgstr ""
-#: src/components/account-info.jsx:1096
-msgid "Private note"
-msgstr ""
-
#: src/components/account-info.jsx:1153
msgid "Mention <0>@{username}0>"
msgstr ""
@@ -246,84 +239,24 @@ msgstr ""
msgid "Translate bio"
msgstr ""
-#: src/components/account-info.jsx:1176
-msgid "Edit private note"
-msgstr ""
-
-#: src/components/account-info.jsx:1176
-msgid "Add private note"
-msgstr ""
-
-#: src/components/account-info.jsx:1196
-msgid "Notifications enabled for @{username}'s posts."
-msgstr ""
-
-#: src/components/account-info.jsx:1197
-msgid " Notifications disabled for @{username}'s posts."
-msgstr " Notifications disabled for @{username}'s posts."
-
-#: src/components/account-info.jsx:1209
-msgid "Disable notifications"
-msgstr ""
-
-#: src/components/account-info.jsx:1210
-msgid "Enable notifications"
-msgstr ""
-
-#: src/components/account-info.jsx:1227
-msgid "Boosts from @{username} enabled."
-msgstr ""
-
-#: src/components/account-info.jsx:1228
-msgid "Boosts from @{username} disabled."
-msgstr ""
-
-#: src/components/account-info.jsx:1239
-msgid "Disable boosts"
-msgstr ""
-
-#: src/components/account-info.jsx:1239
-msgid "Enable boosts"
-msgstr ""
-
#: src/components/account-info.jsx:1255
#: src/components/account-info.jsx:1265
#: src/components/account-info.jsx:1866
msgid "Add/Remove from Lists"
msgstr ""
-#: src/components/account-info.jsx:1304
-#: src/components/status.jsx:1177
-msgid "Link copied"
-msgstr ""
-
-#: src/components/account-info.jsx:1307
-#: src/components/status.jsx:1180
-msgid "Unable to copy link"
-msgstr ""
-
#: src/components/account-info.jsx:1313
#: src/components/shortcuts-settings.jsx:1059
#: src/components/status.jsx:1186
-#: src/components/status.jsx:3267
+#: src/components/status.jsx:3269
msgid "Copy"
msgstr ""
-#: src/components/account-info.jsx:1328
-#: src/components/shortcuts-settings.jsx:1077
-#: src/components/status.jsx:1202
-msgid "Sharing doesn't seem to work."
-msgstr ""
-
#: src/components/account-info.jsx:1334
#: src/components/status.jsx:1208
msgid "Share…"
msgstr ""
-#: src/components/account-info.jsx:1354
-msgid "Unmuted @{username}"
-msgstr ""
-
#: src/components/account-info.jsx:1366
msgid "Unmute <0>@{username}0>"
msgstr ""
@@ -332,23 +265,10 @@ msgstr ""
msgid "Mute <0>@{username}0>…"
msgstr ""
-#. placeholder {0}: typeof MUTE_DURATIONS_LABELS[duration] === 'function' ? MUTE_DURATIONS_LABELS[duration]() : _(MUTE_DURATIONS_LABELS[duration])
-#: src/components/account-info.jsx:1414
-msgid "Muted @{username} for {0}"
-msgstr ""
-
-#: src/components/account-info.jsx:1426
-msgid "Unable to mute @{username}"
-msgstr ""
-
#: src/components/account-info.jsx:1447
msgid "Remove <0>@{username}0> from followers?"
msgstr ""
-#: src/components/account-info.jsx:1467
-msgid "@{username} removed from followers"
-msgstr ""
-
#: src/components/account-info.jsx:1479
msgid "Remove follower…"
msgstr ""
@@ -357,22 +277,6 @@ msgstr ""
msgid "Block <0>@{username}0>?"
msgstr ""
-#: src/components/account-info.jsx:1514
-msgid "Unblocked @{username}"
-msgstr ""
-
-#: src/components/account-info.jsx:1522
-msgid "Blocked @{username}"
-msgstr ""
-
-#: src/components/account-info.jsx:1530
-msgid "Unable to unblock @{username}"
-msgstr ""
-
-#: src/components/account-info.jsx:1532
-msgid "Unable to block @{username}"
-msgstr ""
-
#: src/components/account-info.jsx:1542
msgid "Unblock <0>@{username}0>"
msgstr ""
@@ -390,15 +294,6 @@ msgstr ""
msgid "Edit profile"
msgstr ""
-#: src/components/account-info.jsx:1624
-msgid "Withdraw follow request?"
-msgstr ""
-
-#. placeholder {0}: info.acct || info.username
-#: src/components/account-info.jsx:1625
-msgid "Unfollow @{0}?"
-msgstr ""
-
#: src/components/account-info.jsx:1676
msgid "Unfollow…"
msgstr ""
@@ -408,61 +303,16 @@ msgid "Withdraw…"
msgstr ""
#: src/components/account-info.jsx:1692
-#: src/components/account-info.jsx:1696
-#: src/pages/hashtag.jsx:261
+#: src/pages/hashtag.jsx:262
msgid "Follow"
msgstr ""
-#: src/components/account-info.jsx:1807
-#: src/components/account-info.jsx:1861
-#: src/components/account-info.jsx:1994
-#: src/components/account-info.jsx:2094
-#: src/components/account-sheet.jsx:37
-#: src/components/compose.jsx:859
-#: src/components/compose.jsx:2547
-#: src/components/compose.jsx:3020
-#: src/components/compose.jsx:3228
-#: src/components/compose.jsx:3458
-#: src/components/drafts.jsx:58
-#: src/components/embed-modal.jsx:12
-#: src/components/generic-accounts.jsx:142
-#: src/components/keyboard-shortcuts-help.jsx:39
-#: src/components/list-add-edit.jsx:35
-#: src/components/media-alt-modal.jsx:33
-#: src/components/media-modal.jsx:321
-#: src/components/notification-service.jsx:156
-#: src/components/report-modal.jsx:75
-#: src/components/shortcuts-settings.jsx:230
-#: src/components/shortcuts-settings.jsx:583
-#: src/components/shortcuts-settings.jsx:783
-#: src/components/status.jsx:2992
-#: src/components/status.jsx:3231
-#: src/components/status.jsx:3731
-#: src/pages/accounts.jsx:36
-#: src/pages/catchup.jsx:1581
-#: src/pages/filters.jsx:224
-#: src/pages/list.jsx:274
-#: src/pages/notifications.jsx:915
-#: src/pages/notifications.jsx:1129
-#: src/pages/settings.jsx:77
-#: src/pages/status.jsx:1299
-msgid "Close"
-msgstr ""
-
#: src/components/account-info.jsx:1812
msgid "Translated Bio"
msgstr ""
-#: src/components/account-info.jsx:1906
-msgid "Unable to remove from list."
-msgstr ""
-
-#: src/components/account-info.jsx:1907
-msgid "Unable to add to list."
-msgstr ""
-
#: src/components/account-info.jsx:1926
-#: src/pages/lists.jsx:104
+#: src/pages/lists.jsx:105
msgid "Unable to load lists."
msgstr ""
@@ -471,8 +321,8 @@ msgid "No lists."
msgstr ""
#: src/components/account-info.jsx:1941
-#: src/components/list-add-edit.jsx:39
-#: src/pages/lists.jsx:58
+#: src/components/list-add-edit.jsx:40
+#: src/pages/lists.jsx:59
msgid "New list"
msgstr ""
@@ -481,10 +331,6 @@ msgstr ""
msgid "Private note about <0>@{0}0>"
msgstr ""
-#: src/components/account-info.jsx:2029
-msgid "Unable to update private note."
-msgstr ""
-
#: src/components/account-info.jsx:2052
#: src/components/account-info.jsx:2222
msgid "Cancel"
@@ -494,12 +340,8 @@ msgstr ""
msgid "Save & close"
msgstr ""
-#: src/components/account-info.jsx:2150
-msgid "Unable to update profile."
-msgstr ""
-
#: src/components/account-info.jsx:2157
-#: src/components/list-add-edit.jsx:104
+#: src/components/list-add-edit.jsx:105
msgid "Name"
msgstr ""
@@ -520,7 +362,7 @@ msgid "Content"
msgstr ""
#: src/components/account-info.jsx:2225
-#: src/components/list-add-edit.jsx:149
+#: src/components/list-add-edit.jsx:150
#: src/components/shortcuts-settings.jsx:715
#: src/pages/filters.jsx:554
#: src/pages/notifications.jsx:981
@@ -535,28 +377,56 @@ msgstr ""
msgid "server domain name"
msgstr ""
-#: src/components/background-service.jsx:149
+#: src/components/account-sheet.jsx:38
+#: src/components/compose.jsx:859
+#: src/components/compose.jsx:2547
+#: src/components/drafts.jsx:59
+#: src/components/embed-modal.jsx:13
+#: src/components/generic-accounts.jsx:143
+#: src/components/keyboard-shortcuts-help.jsx:40
+#: src/components/list-add-edit.jsx:36
+#: src/components/media-alt-modal.jsx:34
+#: src/components/media-modal.jsx:322
+#: src/components/notification-service.jsx:157
+#: src/components/report-modal.jsx:75
+#: src/components/shortcuts-settings.jsx:230
+#: src/components/shortcuts-settings.jsx:583
+#: src/components/shortcuts-settings.jsx:783
+#: src/components/status.jsx:2993
+#: src/components/status.jsx:3233
+#: src/components/status.jsx:3733
+#: src/pages/accounts.jsx:37
+#: src/pages/catchup.jsx:1581
+#: src/pages/filters.jsx:224
+#: src/pages/list.jsx:276
+#: src/pages/notifications.jsx:915
+#: src/pages/settings.jsx:78
+#: src/pages/status.jsx:1301
+msgid "Close"
+msgstr ""
+
+#: src/components/background-service.jsx:151
msgid "Cloak mode disabled"
msgstr ""
-#: src/components/background-service.jsx:149
+#: src/components/background-service.jsx:151
msgid "Cloak mode enabled"
msgstr ""
-#: src/components/columns.jsx:26
-#: src/components/nav-menu.jsx:175
+#: src/components/columns.jsx:27
+#: src/components/nav-menu.jsx:176
#: src/components/shortcuts-settings.jsx:139
-#: src/components/timeline.jsx:437
+#: src/components/timeline.jsx:439
#: src/pages/catchup.jsx:876
#: src/pages/filters.jsx:89
-#: src/pages/followed-hashtags.jsx:40
+#: src/pages/followed-hashtags.jsx:41
#: src/pages/home.jsx:53
#: src/pages/notifications.jsx:560
msgid "Home"
msgstr ""
-#: src/components/compose-button.jsx:49
-#: src/compose.jsx:37
+#: src/components/compose-button.jsx:50
+#: src/compose.jsx:38
msgid "Compose"
msgstr ""
@@ -578,7 +448,7 @@ msgstr ""
#: src/components/compose.jsx:402
msgid "You have unsaved changes. Discard this post?"
-msgstr ""
+msgstr "You have unsaved changes. Discard this post?"
#. placeholder {0}: unsupportedFiles.length
#. placeholder {1}: unsupportedFiles[0].name
@@ -596,27 +466,27 @@ msgstr ""
#: src/components/compose.jsx:840
msgid "Pop out"
-msgstr ""
+msgstr "Pop out"
#: src/components/compose.jsx:847
msgid "Minimize"
-msgstr ""
+msgstr "Minimize"
#: src/components/compose.jsx:883
msgid "Looks like you closed the parent window."
-msgstr ""
+msgstr "Looks like you closed the parent window."
#: src/components/compose.jsx:890
msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later."
-msgstr ""
+msgstr "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later."
#: src/components/compose.jsx:895
msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?"
-msgstr ""
+msgstr "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?"
#: src/components/compose.jsx:937
msgid "Pop in"
-msgstr ""
+msgstr "Pop in"
#. placeholder {0}: replyToStatus.account.acct || replyToStatus.account.username
#. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month')
@@ -635,38 +505,38 @@ msgstr ""
#: src/components/compose.jsx:1017
msgid "Poll must have at least 2 options"
-msgstr ""
+msgstr "Poll must have at least 2 options"
#: src/components/compose.jsx:1021
msgid "Some poll choices are empty"
-msgstr ""
+msgstr "Some poll choices are empty"
#: src/components/compose.jsx:1034
msgid "Some media have no descriptions. Continue?"
-msgstr ""
+msgstr "Some media have no descriptions. Continue?"
#: src/components/compose.jsx:1086
msgid "Attachment #{i} failed"
-msgstr ""
+msgstr "Attachment #{i} failed"
#: src/components/compose.jsx:1180
#: src/components/status.jsx:2063
-#: src/components/timeline.jsx:984
+#: src/components/timeline.jsx:989
msgid "Content warning"
msgstr ""
#: src/components/compose.jsx:1196
msgid "Content warning or sensitive media"
-msgstr ""
+msgstr "Content warning or sensitive media"
#: src/components/compose.jsx:1232
#: src/components/status.jsx:93
-#: src/pages/settings.jsx:305
+#: src/pages/settings.jsx:306
msgid "Public"
msgstr ""
#: src/components/compose.jsx:1237
-#: src/components/nav-menu.jsx:337
+#: src/components/nav-menu.jsx:338
#: src/components/shortcuts-settings.jsx:165
#: src/components/status.jsx:94
msgid "Local"
@@ -674,13 +544,13 @@ msgstr ""
#: src/components/compose.jsx:1241
#: src/components/status.jsx:95
-#: src/pages/settings.jsx:308
+#: src/pages/settings.jsx:309
msgid "Unlisted"
msgstr ""
#: src/components/compose.jsx:1244
#: src/components/status.jsx:96
-#: src/pages/settings.jsx:311
+#: src/pages/settings.jsx:312
msgid "Followers only"
msgstr ""
@@ -692,29 +562,28 @@ msgstr ""
#: src/components/compose.jsx:1256
msgid "Post your reply"
-msgstr ""
+msgstr "Post your reply"
#: src/components/compose.jsx:1258
msgid "Edit your post"
-msgstr ""
+msgstr "Edit your post"
#: src/components/compose.jsx:1259
msgid "What are you doing?"
-msgstr ""
+msgstr "What are you doing?"
#: src/components/compose.jsx:1337
msgid "Mark media as sensitive"
msgstr ""
#: src/components/compose.jsx:1381
-#: src/components/compose.jsx:3078
#: src/components/shortcuts-settings.jsx:715
-#: src/pages/list.jsx:359
+#: src/pages/list.jsx:362
msgid "Add"
msgstr ""
#: src/components/compose.jsx:1555
-#: src/components/keyboard-shortcuts-help.jsx:151
+#: src/components/keyboard-shortcuts-help.jsx:152
#: src/components/status.jsx:929
#: src/components/status.jsx:1717
#: src/components/status.jsx:1718
@@ -724,26 +593,20 @@ msgstr ""
#: src/components/compose.jsx:1557
msgid "Update"
-msgstr ""
+msgstr "Update"
#: src/components/compose.jsx:1558
msgctxt "Submit button in composer"
msgid "Post"
-msgstr ""
+msgstr "Post"
#: src/components/compose.jsx:1686
msgid "Downloading GIF…"
-msgstr ""
+msgstr "Downloading GIF…"
#: src/components/compose.jsx:1714
msgid "Failed to download GIF"
-msgstr ""
-
-#: src/components/compose.jsx:1878
-#: src/components/compose.jsx:1955
-#: src/components/nav-menu.jsx:238
-msgid "More…"
-msgstr ""
+msgstr "Failed to download GIF"
#: src/components/compose.jsx:2360
msgid "Uploaded"
@@ -751,40 +614,49 @@ msgstr ""
#: src/components/compose.jsx:2373
msgid "Image description"
-msgstr ""
+msgstr "Image description"
#: src/components/compose.jsx:2374
msgid "Video description"
-msgstr ""
+msgstr "Video description"
#: src/components/compose.jsx:2375
msgid "Audio description"
-msgstr ""
+msgstr "Audio description"
#. placeholder {0}: prettyBytes( imageSize, )
-#. placeholder {0}: prettyBytes( videoSize, )
#. placeholder {1}: prettyBytes(imageSizeLimit)
-#. placeholder {1}: prettyBytes(videoSizeLimit)
#: src/components/compose.jsx:2411
-#: src/components/compose.jsx:2431
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
-msgstr ""
+msgstr "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
-#. placeholder {0}: i18n.number( width, )
-#. placeholder {1}: i18n.number(height)
-#. placeholder {2}: i18n.number(newWidth)
-#. placeholder {3}: i18n.number( newHeight, )
+#. placeholder {2}: i18n.number( width, )
+#. placeholder {3}: i18n.number(height)
+#. placeholder {4}: i18n.number(newWidth)
+#. placeholder {5}: i18n.number( newHeight, )
#: src/components/compose.jsx:2423
+msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
+msgstr "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
+
+#. placeholder {6}: prettyBytes( videoSize, )
+#. placeholder {7}: prettyBytes(videoSizeLimit)
+#: src/components/compose.jsx:2431
+msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
+msgstr "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
+
+#. placeholder {8}: i18n.number( width, )
+#. placeholder {9}: i18n.number(height)
+#. placeholder {10}: i18n.number(newWidth)
+#. placeholder {11}: i18n.number( newHeight, )
#: src/components/compose.jsx:2443
-msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {0}×{1}px to {2}×{3}px."
-msgstr ""
+msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
+msgstr "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
#: src/components/compose.jsx:2451
msgid "Frame rate too high. Uploading might encounter issues."
-msgstr ""
+msgstr "Frame rate too high. Uploading might encounter issues."
#: src/components/compose.jsx:2511
-#: src/components/compose.jsx:2761
#: src/components/shortcuts-settings.jsx:726
#: src/pages/catchup.jsx:1074
#: src/pages/filters.jsx:412
@@ -792,35 +664,35 @@ msgid "Remove"
msgstr ""
#: src/components/compose.jsx:2528
-#: src/compose.jsx:83
+#: src/compose.jsx:84
msgid "Error"
msgstr ""
#: src/components/compose.jsx:2553
msgid "Edit image description"
-msgstr ""
+msgstr "Edit image description"
#: src/components/compose.jsx:2554
msgid "Edit video description"
-msgstr ""
+msgstr "Edit video description"
#: src/components/compose.jsx:2555
msgid "Edit audio description"
-msgstr ""
+msgstr "Edit audio description"
#: src/components/compose.jsx:2600
#: src/components/compose.jsx:2649
msgid "Generating description. Please wait…"
-msgstr ""
+msgstr "Generating description. Please wait…"
-#. placeholder {0}: e.message
+#. placeholder {12}: e.message
#: src/components/compose.jsx:2620
-msgid "Failed to generate description: {0}"
-msgstr ""
+msgid "Failed to generate description: {12}"
+msgstr "Failed to generate description: {12}"
#: src/components/compose.jsx:2621
msgid "Failed to generate description"
-msgstr ""
+msgstr "Failed to generate description"
#: src/components/compose.jsx:2633
#: src/components/compose.jsx:2639
@@ -828,10 +700,10 @@ msgstr ""
msgid "Generate description…"
msgstr ""
-#. placeholder {0}: e?.message ? `: ${e.message}` : ''
+#. placeholder {13}: e?.message ? `: ${e.message}` : ''
#: src/components/compose.jsx:2672
-msgid "Failed to generate description{0}"
-msgstr ""
+msgid "Failed to generate description{13}"
+msgstr "Failed to generate description{13}"
#. placeholder {0}: localeCode2Text(lang)
#: src/components/compose.jsx:2687
@@ -842,11 +714,6 @@ msgstr ""
msgid "Done"
msgstr ""
-#. placeholder {0}: i + 1
-#: src/components/compose.jsx:2742
-msgid "Choice {0}"
-msgstr ""
-
#: src/components/compose.jsx:2789
msgid "Multiple choices"
msgstr ""
@@ -859,12 +726,8 @@ msgstr ""
msgid "Remove poll"
msgstr ""
-#: src/components/compose.jsx:3037
-msgid "Search accounts"
-msgstr ""
-
#: src/components/compose.jsx:3091
-#: src/components/generic-accounts.jsx:227
+#: src/components/generic-accounts.jsx:228
msgid "Error loading accounts"
msgstr ""
@@ -872,48 +735,28 @@ msgstr ""
msgid "Custom emojis"
msgstr ""
-#: src/components/compose.jsx:3254
-msgid "Search emoji"
-msgstr ""
-
#: src/components/compose.jsx:3285
msgid "Error loading custom emojis"
msgstr ""
-#: src/components/compose.jsx:3296
-msgid "Recently used"
-msgstr ""
-
-#: src/components/compose.jsx:3297
-msgid "Others"
-msgstr ""
-
#. placeholder {0}: i18n.number(emojis.length - max)
#: src/components/compose.jsx:3335
msgid "{0} more…"
msgstr ""
-#: src/components/compose.jsx:3473
-msgid "Search GIFs"
-msgstr ""
-
-#: src/components/compose.jsx:3488
-msgid "Powered by GIPHY"
-msgstr ""
-
#: src/components/compose.jsx:3496
msgid "Type to search GIFs"
msgstr ""
#: src/components/compose.jsx:3594
-#: src/components/media-modal.jsx:461
-#: src/components/timeline.jsx:889
+#: src/components/media-modal.jsx:462
+#: src/components/timeline.jsx:893
msgid "Previous"
msgstr ""
#: src/components/compose.jsx:3612
-#: src/components/media-modal.jsx:480
-#: src/components/timeline.jsx:906
+#: src/components/media-modal.jsx:481
+#: src/components/timeline.jsx:910
msgid "Next"
msgstr ""
@@ -921,233 +764,223 @@ msgstr ""
msgid "Error loading GIFs"
msgstr ""
-#: src/components/drafts.jsx:63
-#: src/pages/settings.jsx:692
+#: src/components/drafts.jsx:64
+#: src/pages/settings.jsx:693
msgid "Unsent drafts"
msgstr ""
-#: src/components/drafts.jsx:68
+#: src/components/drafts.jsx:69
msgid "Looks like you have unsent drafts. Let's continue where you left off."
msgstr ""
-#: src/components/drafts.jsx:102
+#: src/components/drafts.jsx:103
msgid "Delete this draft?"
msgstr ""
-#: src/components/drafts.jsx:117
+#: src/components/drafts.jsx:118
msgid "Error deleting draft! Please try again."
msgstr ""
-#: src/components/drafts.jsx:127
-#: src/components/list-add-edit.jsx:185
+#: src/components/drafts.jsx:128
+#: src/components/list-add-edit.jsx:186
#: src/components/status.jsx:1352
#: src/pages/filters.jsx:587
msgid "Delete…"
msgstr ""
-#: src/components/drafts.jsx:146
+#: src/components/drafts.jsx:147
msgid "Error fetching reply-to status!"
msgstr ""
-#: src/components/drafts.jsx:171
+#: src/components/drafts.jsx:172
msgid "Delete all drafts?"
msgstr ""
-#: src/components/drafts.jsx:189
+#: src/components/drafts.jsx:190
msgid "Error deleting drafts! Please try again."
msgstr ""
-#: src/components/drafts.jsx:201
+#: src/components/drafts.jsx:202
msgid "Delete all…"
msgstr ""
-#: src/components/drafts.jsx:209
+#: src/components/drafts.jsx:210
msgid "No drafts found."
msgstr ""
-#: src/components/drafts.jsx:245
-#: src/pages/catchup.jsx:1928
-msgid "Poll"
-msgstr ""
-
-#: src/components/drafts.jsx:248
-#: src/pages/account-statuses.jsx:365
-msgid "Media"
-msgstr ""
-
-#: src/components/embed-modal.jsx:22
+#: src/components/embed-modal.jsx:23
msgid "Open in new window"
msgstr ""
-#: src/components/follow-request-buttons.jsx:42
+#: src/components/follow-request-buttons.jsx:43
#: src/pages/notifications.jsx:965
msgid "Accept"
msgstr ""
-#: src/components/follow-request-buttons.jsx:68
+#: src/components/follow-request-buttons.jsx:69
msgid "Reject"
msgstr ""
-#: src/components/follow-request-buttons.jsx:75
-#: src/pages/notifications.jsx:1248
+#: src/components/follow-request-buttons.jsx:76
+#: src/pages/notifications.jsx:1249
msgid "Accepted"
msgstr ""
-#: src/components/follow-request-buttons.jsx:79
+#: src/components/follow-request-buttons.jsx:80
msgid "Rejected"
msgstr ""
-#: src/components/generic-accounts.jsx:24
-msgid "Nothing to show"
-msgstr ""
-
-#: src/components/generic-accounts.jsx:145
+#: src/components/generic-accounts.jsx:146
#: src/components/notification.jsx:445
-#: src/pages/accounts.jsx:41
-#: src/pages/search.jsx:317
-#: src/pages/search.jsx:350
+#: src/pages/accounts.jsx:42
+#: src/pages/search.jsx:318
+#: src/pages/search.jsx:351
msgid "Accounts"
msgstr ""
-#: src/components/generic-accounts.jsx:205
-#: src/components/timeline.jsx:519
-#: src/pages/list.jsx:293
+#: src/components/generic-accounts.jsx:206
+#: src/components/timeline.jsx:521
+#: src/pages/list.jsx:295
#: src/pages/notifications.jsx:895
-#: src/pages/search.jsx:544
-#: src/pages/status.jsx:1332
+#: src/pages/search.jsx:545
+#: src/pages/status.jsx:1334
msgid "Show more…"
msgstr ""
-#: src/components/generic-accounts.jsx:210
-#: src/components/timeline.jsx:524
-#: src/pages/search.jsx:549
+#: src/components/generic-accounts.jsx:211
+#: src/components/timeline.jsx:526
+#: src/pages/search.jsx:550
msgid "The end."
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:43
-#: src/components/nav-menu.jsx:356
+#: src/components/generic-accounts.jsx:232
+msgid "Nothing to show"
+msgstr ""
+
+#: src/components/keyboard-shortcuts-help.jsx:44
+#: src/components/nav-menu.jsx:357
#: src/pages/catchup.jsx:1619
msgid "Keyboard shortcuts"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:51
+#: src/components/keyboard-shortcuts-help.jsx:52
msgid "Keyboard shortcuts help"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:55
+#: src/components/keyboard-shortcuts-help.jsx:56
#: src/pages/catchup.jsx:1644
msgid "Next post"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:59
+#: src/components/keyboard-shortcuts-help.jsx:60
#: src/pages/catchup.jsx:1652
msgid "Previous post"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:63
+#: src/components/keyboard-shortcuts-help.jsx:64
msgid "Skip carousel to next post"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:65
+#: src/components/keyboard-shortcuts-help.jsx:66
msgid "<0>Shift0> + <1>j1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:71
+#: src/components/keyboard-shortcuts-help.jsx:72
msgid "Skip carousel to previous post"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:73
+#: src/components/keyboard-shortcuts-help.jsx:74
msgid "<0>Shift0> + <1>k1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:79
+#: src/components/keyboard-shortcuts-help.jsx:80
msgid "Load new posts"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:83
+#: src/components/keyboard-shortcuts-help.jsx:84
#: src/pages/catchup.jsx:1676
msgid "Open post details"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:85
+#: src/components/keyboard-shortcuts-help.jsx:86
msgid "<0>Enter0> or <1>o1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:92
+#: src/components/keyboard-shortcuts-help.jsx:93
msgid "Expand content warning or<0/>toggle expanded/collapsed thread"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:101
+#: src/components/keyboard-shortcuts-help.jsx:102
msgid "Close post or dialogs"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:103
+#: src/components/keyboard-shortcuts-help.jsx:104
msgid "<0>Esc0> or <1>Backspace1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:109
+#: src/components/keyboard-shortcuts-help.jsx:110
msgid "Focus column in multi-column mode"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:111
+#: src/components/keyboard-shortcuts-help.jsx:112
msgid "<0>10> to <1>91>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:117
+#: src/components/keyboard-shortcuts-help.jsx:118
msgid "Focus next column in multi-column mode"
msgstr "Focus next column in multi-column mode"
-#: src/components/keyboard-shortcuts-help.jsx:121
+#: src/components/keyboard-shortcuts-help.jsx:122
msgid "Focus previous column in multi-column mode"
msgstr "Focus previous column in multi-column mode"
-#: src/components/keyboard-shortcuts-help.jsx:125
+#: src/components/keyboard-shortcuts-help.jsx:126
msgid "Compose new post"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:129
+#: src/components/keyboard-shortcuts-help.jsx:130
msgid "Compose new post (new window)"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:132
+#: src/components/keyboard-shortcuts-help.jsx:133
msgid "<0>Shift0> + <1>c1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:138
+#: src/components/keyboard-shortcuts-help.jsx:139
msgid "Send post"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:140
+#: src/components/keyboard-shortcuts-help.jsx:141
msgid "<0>Ctrl0> + <1>Enter1> or <2>⌘2> + <3>Enter3>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:147
-#: src/components/nav-menu.jsx:325
-#: src/components/search-form.jsx:72
+#: src/components/keyboard-shortcuts-help.jsx:148
+#: src/components/nav-menu.jsx:326
+#: src/components/search-form.jsx:73
#: src/components/shortcuts-settings.jsx:52
#: src/components/shortcuts-settings.jsx:179
-#: src/pages/search.jsx:45
-#: src/pages/search.jsx:299
+#: src/pages/search.jsx:46
+#: src/pages/search.jsx:300
msgid "Search"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:155
+#: src/components/keyboard-shortcuts-help.jsx:156
msgid "Reply (new window)"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:158
+#: src/components/keyboard-shortcuts-help.jsx:159
msgid "<0>Shift0> + <1>r1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:164
+#: src/components/keyboard-shortcuts-help.jsx:165
msgid "Like (favourite)"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:166
+#: src/components/keyboard-shortcuts-help.jsx:167
msgid "<0>l0> or <1>f1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:172
+#: src/components/keyboard-shortcuts-help.jsx:173
#: src/components/status.jsx:937
#: src/components/status.jsx:2413
#: src/components/status.jsx:2444
@@ -1155,299 +988,303 @@ msgstr ""
msgid "Boost"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:174
+#: src/components/keyboard-shortcuts-help.jsx:175
msgid "<0>Shift0> + <1>b1>"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:180
+#: src/components/keyboard-shortcuts-help.jsx:181
#: src/components/status.jsx:1022
#: src/components/status.jsx:2469
#: src/components/status.jsx:2470
msgid "Bookmark"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:184
+#: src/components/keyboard-shortcuts-help.jsx:185
msgid "Toggle Cloak mode"
msgstr ""
-#: src/components/keyboard-shortcuts-help.jsx:186
+#: src/components/keyboard-shortcuts-help.jsx:187
msgid "<0>Shift0> + <1>Alt1> + <2>k2>"
msgstr ""
-#: src/components/list-add-edit.jsx:39
+#: src/components/list-add-edit.jsx:40
msgid "Edit list"
msgstr ""
-#: src/components/list-add-edit.jsx:95
+#: src/components/list-add-edit.jsx:96
msgid "Unable to edit list."
msgstr ""
-#: src/components/list-add-edit.jsx:96
+#: src/components/list-add-edit.jsx:97
msgid "Unable to create list."
msgstr ""
-#: src/components/list-add-edit.jsx:124
+#: src/components/list-add-edit.jsx:125
msgid "Show replies to list members"
msgstr ""
-#: src/components/list-add-edit.jsx:127
+#: src/components/list-add-edit.jsx:128
msgid "Show replies to people I follow"
msgstr ""
-#: src/components/list-add-edit.jsx:130
+#: src/components/list-add-edit.jsx:131
msgid "Don't show replies"
msgstr ""
-#: src/components/list-add-edit.jsx:143
+#: src/components/list-add-edit.jsx:144
msgid "Hide posts on this list from Home/Following"
msgstr ""
-#: src/components/list-add-edit.jsx:149
+#: src/components/list-add-edit.jsx:150
#: src/pages/filters.jsx:554
msgid "Create"
msgstr ""
-#: src/components/list-add-edit.jsx:156
+#: src/components/list-add-edit.jsx:157
msgid "Delete this list?"
msgstr ""
-#: src/components/list-add-edit.jsx:175
+#: src/components/list-add-edit.jsx:176
msgid "Unable to delete list."
msgstr ""
-#: src/components/media-alt-modal.jsx:38
-#: src/components/media.jsx:50
+#: src/components/media-alt-modal.jsx:39
+#: src/components/media.jsx:51
msgid "Media description"
msgstr ""
-#: src/components/media-alt-modal.jsx:57
+#: src/components/media-alt-modal.jsx:58
#: src/components/status.jsx:1066
#: src/components/status.jsx:1093
-#: src/components/translation-block.jsx:195
+#: src/components/translation-block.jsx:196
msgid "Translate"
msgstr ""
-#: src/components/media-alt-modal.jsx:68
+#: src/components/media-alt-modal.jsx:69
#: src/components/status.jsx:1080
#: src/components/status.jsx:1107
msgid "Speak"
msgstr ""
-#: src/components/media-modal.jsx:368
+#: src/components/media-modal.jsx:369
msgid "Open original media in new window"
msgstr ""
-#: src/components/media-modal.jsx:372
+#: src/components/media-modal.jsx:373
msgid "Open original media"
msgstr ""
-#: src/components/media-modal.jsx:388
+#: src/components/media-modal.jsx:389
msgid "Attempting to describe image. Please wait…"
msgstr ""
-#: src/components/media-modal.jsx:403
+#: src/components/media-modal.jsx:404
msgid "Failed to describe image"
msgstr ""
-#: src/components/media-modal.jsx:413
+#: src/components/media-modal.jsx:414
msgid "Describe image…"
msgstr ""
-#: src/components/media-modal.jsx:436
+#: src/components/media-modal.jsx:437
msgid "View post"
msgstr ""
-#: src/components/media-post.jsx:127
+#: src/components/media-post.jsx:128
msgid "Sensitive media"
msgstr ""
-#: src/components/media-post.jsx:132
+#: src/components/media-post.jsx:133
msgid "Filtered: {filterTitleStr}"
msgstr ""
-#: src/components/media-post.jsx:133
-#: src/components/status.jsx:3561
-#: src/components/status.jsx:3657
-#: src/components/status.jsx:3735
-#: src/components/timeline.jsx:973
+#: src/components/media-post.jsx:134
+#: src/components/status.jsx:3563
+#: src/components/status.jsx:3659
+#: src/components/status.jsx:3737
+#: src/components/timeline.jsx:978
#: src/pages/catchup.jsx:75
-#: src/pages/catchup.jsx:1876
+#: src/pages/catchup.jsx:1877
msgid "Filtered"
msgstr ""
-#: src/components/modals.jsx:72
+#: src/components/modals.jsx:73
msgid "Post published. Check it out."
msgstr ""
-#: src/components/modals.jsx:73
+#: src/components/modals.jsx:74
msgid "Reply posted. Check it out."
msgstr ""
-#: src/components/modals.jsx:74
+#: src/components/modals.jsx:75
msgid "Post updated. Check it out."
msgstr ""
-#: src/components/nav-menu.jsx:117
+#: src/components/nav-menu.jsx:118
msgid "Menu"
msgstr ""
-#: src/components/nav-menu.jsx:153
+#: src/components/nav-menu.jsx:154
msgid "Reload page now to update?"
msgstr ""
-#: src/components/nav-menu.jsx:165
+#: src/components/nav-menu.jsx:166
msgid "New update available…"
msgstr ""
#. js-lingui-explicit-id
-#: src/components/nav-menu.jsx:184
+#: src/components/nav-menu.jsx:185
#: src/components/shortcuts-settings.jsx:140
-#: src/pages/following.jsx:22
-#: src/pages/following.jsx:141
+#: src/pages/following.jsx:23
+#: src/pages/following.jsx:142
msgid "following.title"
msgstr "Following"
-#: src/components/nav-menu.jsx:191
+#: src/components/nav-menu.jsx:192
#: src/pages/catchup.jsx:871
msgid "Catch-up"
msgstr ""
-#: src/components/nav-menu.jsx:198
+#: src/components/nav-menu.jsx:199
#: src/components/shortcuts-settings.jsx:58
#: src/components/shortcuts-settings.jsx:146
-#: src/pages/home.jsx:224
-#: src/pages/mentions.jsx:20
-#: src/pages/mentions.jsx:167
-#: src/pages/settings.jsx:1145
-#: src/pages/trending.jsx:381
+#: src/pages/home.jsx:225
+#: src/pages/mentions.jsx:21
+#: src/pages/mentions.jsx:168
+#: src/pages/settings.jsx:1147
+#: src/pages/trending.jsx:382
msgid "Mentions"
msgstr ""
-#: src/components/nav-menu.jsx:205
+#: src/components/nav-menu.jsx:206
#: src/components/shortcuts-settings.jsx:49
#: src/components/shortcuts-settings.jsx:152
-#: src/pages/filters.jsx:24
-#: src/pages/home.jsx:84
-#: src/pages/home.jsx:184
+#: src/pages/filters.jsx:23
+#: src/pages/home.jsx:85
+#: src/pages/home.jsx:185
#: src/pages/notifications.jsx:113
#: src/pages/notifications.jsx:564
msgid "Notifications"
msgstr ""
-#: src/components/nav-menu.jsx:208
+#: src/components/nav-menu.jsx:209
msgid "New"
msgstr ""
-#: src/components/nav-menu.jsx:219
+#: src/components/nav-menu.jsx:220
msgid "Profile"
msgstr ""
-#: src/components/nav-menu.jsx:227
+#: src/components/nav-menu.jsx:228
#: src/components/shortcuts-settings.jsx:54
#: src/components/shortcuts-settings.jsx:195
-#: src/pages/bookmarks.jsx:11
-#: src/pages/bookmarks.jsx:23
+#: src/pages/bookmarks.jsx:12
+#: src/pages/bookmarks.jsx:24
msgid "Bookmarks"
msgstr ""
-#: src/components/nav-menu.jsx:247
+#: src/components/nav-menu.jsx:239
+msgid "More…"
+msgstr ""
+
+#: src/components/nav-menu.jsx:248
#: src/components/shortcuts-settings.jsx:55
#: src/components/shortcuts-settings.jsx:201
#: src/pages/catchup.jsx:1446
-#: src/pages/catchup.jsx:2062
-#: src/pages/favourites.jsx:11
-#: src/pages/favourites.jsx:23
-#: src/pages/settings.jsx:1149
+#: src/pages/catchup.jsx:2064
+#: src/pages/favourites.jsx:12
+#: src/pages/favourites.jsx:24
+#: src/pages/settings.jsx:1151
msgid "Likes"
msgstr ""
-#: src/components/nav-menu.jsx:253
-#: src/pages/followed-hashtags.jsx:14
-#: src/pages/followed-hashtags.jsx:44
+#: src/components/nav-menu.jsx:254
+#: src/pages/followed-hashtags.jsx:15
+#: src/pages/followed-hashtags.jsx:45
msgid "Followed Hashtags"
msgstr ""
-#: src/components/nav-menu.jsx:261
-#: src/pages/account-statuses.jsx:331
+#: src/components/nav-menu.jsx:262
+#: src/pages/account-statuses.jsx:330
#: src/pages/filters.jsx:54
#: src/pages/filters.jsx:93
-#: src/pages/hashtag.jsx:339
+#: src/pages/hashtag.jsx:340
msgid "Filters"
msgstr ""
-#: src/components/nav-menu.jsx:269
+#: src/components/nav-menu.jsx:270
msgid "Muted users"
msgstr ""
-#: src/components/nav-menu.jsx:277
+#: src/components/nav-menu.jsx:278
msgid "Muted users…"
msgstr ""
-#: src/components/nav-menu.jsx:284
+#: src/components/nav-menu.jsx:285
msgid "Blocked users"
msgstr ""
-#: src/components/nav-menu.jsx:292
+#: src/components/nav-menu.jsx:293
msgid "Blocked users…"
msgstr ""
-#: src/components/nav-menu.jsx:304
+#: src/components/nav-menu.jsx:305
msgid "Accounts…"
msgstr ""
-#: src/components/nav-menu.jsx:314
-#: src/pages/login.jsx:189
-#: src/pages/status.jsx:835
-#: src/pages/welcome.jsx:64
+#: src/components/nav-menu.jsx:315
+#: src/pages/login.jsx:190
+#: src/pages/status.jsx:837
+#: src/pages/welcome.jsx:65
msgid "Log in"
msgstr ""
-#: src/components/nav-menu.jsx:331
+#: src/components/nav-menu.jsx:332
#: src/components/shortcuts-settings.jsx:57
#: src/components/shortcuts-settings.jsx:172
-#: src/pages/trending.jsx:441
+#: src/pages/trending.jsx:442
msgid "Trending"
msgstr ""
-#: src/components/nav-menu.jsx:343
+#: src/components/nav-menu.jsx:344
#: src/components/shortcuts-settings.jsx:165
msgid "Federated"
msgstr ""
-#: src/components/nav-menu.jsx:366
+#: src/components/nav-menu.jsx:367
msgid "Shortcuts / Columns…"
msgstr ""
-#: src/components/nav-menu.jsx:376
-#: src/components/nav-menu.jsx:390
+#: src/components/nav-menu.jsx:377
+#: src/components/nav-menu.jsx:391
msgid "Settings…"
msgstr ""
-#: src/components/nav-menu.jsx:420
-#: src/components/nav-menu.jsx:447
+#: src/components/nav-menu.jsx:421
+#: src/components/nav-menu.jsx:448
#: src/components/shortcuts-settings.jsx:50
#: src/components/shortcuts-settings.jsx:158
-#: src/pages/list.jsx:126
-#: src/pages/lists.jsx:16
-#: src/pages/lists.jsx:50
+#: src/pages/list.jsx:127
+#: src/pages/lists.jsx:17
+#: src/pages/lists.jsx:51
msgid "Lists"
msgstr ""
-#: src/components/nav-menu.jsx:428
+#: src/components/nav-menu.jsx:429
#: src/components/shortcuts.jsx:215
-#: src/pages/list.jsx:133
+#: src/pages/list.jsx:134
msgid "All Lists"
msgstr ""
-#: src/components/notification-service.jsx:160
+#: src/components/notification-service.jsx:161
msgid "Notification"
msgstr ""
-#: src/components/notification-service.jsx:166
+#: src/components/notification-service.jsx:167
msgid "This notification is from your other account."
msgstr ""
-#: src/components/notification-service.jsx:195
+#: src/components/notification-service.jsx:196
msgid "View all notifications"
msgstr ""
@@ -1598,61 +1435,61 @@ msgstr "View #Wrapstodon"
msgid "Read more →"
msgstr ""
-#: src/components/poll.jsx:110
+#: src/components/poll.jsx:112
msgid "Voted"
msgstr ""
-#: src/components/poll.jsx:116
+#: src/components/poll.jsx:118
msgid "{optionVotesCount, plural, one {# vote} other {# votes}}"
msgstr "{optionVotesCount, plural, one {# vote} other {# votes}}"
-#: src/components/poll.jsx:136
-#: src/components/poll.jsx:219
-#: src/components/poll.jsx:223
+#: src/components/poll.jsx:138
+#: src/components/poll.jsx:221
+#: src/components/poll.jsx:225
msgid "Hide results"
msgstr ""
-#: src/components/poll.jsx:185
+#: src/components/poll.jsx:187
msgid "Vote"
msgstr ""
-#: src/components/poll.jsx:205
#: src/components/poll.jsx:207
-#: src/pages/status.jsx:1201
-#: src/pages/status.jsx:1224
+#: src/components/poll.jsx:209
+#: src/pages/status.jsx:1203
+#: src/pages/status.jsx:1226
msgid "Refresh"
msgstr ""
-#: src/components/poll.jsx:219
-#: src/components/poll.jsx:223
+#: src/components/poll.jsx:221
+#: src/components/poll.jsx:225
msgid "Show results"
msgstr ""
#. placeholder {0}: shortenNumber(votesCount)
#. placeholder {1}: shortenNumber(votesCount)
-#: src/components/poll.jsx:228
+#: src/components/poll.jsx:230
msgid "{votesCount, plural, one {<0>{0}0> vote} other {<1>{1}1> votes}}"
msgstr ""
#. placeholder {0}: shortenNumber(votersCount)
#. placeholder {1}: shortenNumber(votersCount)
-#: src/components/poll.jsx:245
+#: src/components/poll.jsx:247
msgid "{votersCount, plural, one {<0>{0}0> voter} other {<1>{1}1> voters}}"
msgstr ""
-#: src/components/poll.jsx:265
+#: src/components/poll.jsx:267
msgid "Ended <0/>"
msgstr ""
-#: src/components/poll.jsx:269
+#: src/components/poll.jsx:271
msgid "Ended"
msgstr ""
-#: src/components/poll.jsx:272
+#: src/components/poll.jsx:274
msgid "Ending <0/>"
msgstr ""
-#: src/components/poll.jsx:276
+#: src/components/poll.jsx:278
msgid "Ending"
msgstr ""
@@ -1782,24 +1619,24 @@ msgstr ""
msgid "Send Report <0>+ Block profile0>"
msgstr ""
-#: src/components/search-form.jsx:202
+#: src/components/search-form.jsx:203
msgid "{query} <0>‒ accounts, hashtags & posts0>"
msgstr ""
-#: src/components/search-form.jsx:215
+#: src/components/search-form.jsx:216
msgid "Posts with <0>{query}0>"
msgstr ""
#. placeholder {0}: query.replace(/^#/, '')
-#: src/components/search-form.jsx:227
+#: src/components/search-form.jsx:228
msgid "Posts tagged with <0>#{0}0>"
msgstr ""
-#: src/components/search-form.jsx:241
+#: src/components/search-form.jsx:242
msgid "Look up <0>{query}0>"
msgstr ""
-#: src/components/search-form.jsx:252
+#: src/components/search-form.jsx:253
msgid "Accounts with <0>{query}0>"
msgstr ""
@@ -1830,7 +1667,7 @@ msgstr ""
#: src/components/shortcuts-settings.jsx:75
#: src/components/shortcuts-settings.jsx:84
#: src/components/shortcuts-settings.jsx:122
-#: src/pages/login.jsx:193
+#: src/pages/login.jsx:194
msgid "Instance"
msgstr ""
@@ -1853,7 +1690,7 @@ msgid "e.g. PixelArt (Max 5, space-separated)"
msgstr ""
#: src/components/shortcuts-settings.jsx:117
-#: src/pages/hashtag.jsx:355
+#: src/pages/hashtag.jsx:356
msgid "Media only"
msgstr ""
@@ -1896,7 +1733,7 @@ msgstr ""
#: src/components/shortcuts-settings.jsx:379
#: src/components/status.jsx:1314
-#: src/pages/list.jsx:170
+#: src/pages/list.jsx:171
msgid "Edit"
msgstr ""
@@ -2061,6 +1898,11 @@ msgstr ""
msgid "Unable to copy shortcut settings"
msgstr ""
+#: src/components/shortcuts-settings.jsx:1077
+#: src/components/status.jsx:1202
+msgid "Sharing doesn't seem to work."
+msgstr ""
+
#: src/components/shortcuts-settings.jsx:1083
msgid "Share"
msgstr ""
@@ -2107,20 +1949,20 @@ msgstr ""
msgid "Unliked @{0}'s post"
msgstr ""
-#. placeholder {0}: username || acct
+#. placeholder {1}: username || acct
#: src/components/status.jsx:791
-msgid "Liked @{0}'s post"
-msgstr ""
+msgid "Liked @{1}'s post"
+msgstr "Liked @{1}'s post"
-#. placeholder {0}: username || acct
+#. placeholder {2}: username || acct
#: src/components/status.jsx:830
-msgid "Unbookmarked @{0}'s post"
-msgstr ""
+msgid "Unbookmarked @{2}'s post"
+msgstr "Unbookmarked @{2}'s post"
-#. placeholder {0}: username || acct
+#. placeholder {3}: username || acct
#: src/components/status.jsx:831
-msgid "Bookmarked @{0}'s post"
-msgstr ""
+msgid "Bookmarked @{3}'s post"
+msgstr "Bookmarked @{3}'s post"
#: src/components/status.jsx:937
#: src/components/status.jsx:999
@@ -2144,17 +1986,15 @@ msgstr ""
msgid "Old post (<0>{0}0>)"
msgstr ""
-#. placeholder {0}: username || acct
+#. placeholder {4}: username || acct
#: src/components/status.jsx:987
-#: src/components/status.jsx:1442
-msgid "Unboosted @{0}'s post"
-msgstr ""
+msgid "Unboosted @{4}'s post"
+msgstr "Unboosted @{4}'s post"
-#. placeholder {0}: username || acct
+#. placeholder {5}: username || acct
#: src/components/status.jsx:988
-#: src/components/status.jsx:1443
-msgid "Boosted @{0}'s post"
-msgstr ""
+msgid "Boosted @{5}'s post"
+msgstr "Boosted @{5}'s post"
#: src/components/status.jsx:1000
msgid "Boost…"
@@ -2192,8 +2032,16 @@ msgstr ""
msgid "Edited: {editedDateText}"
msgstr ""
+#: src/components/status.jsx:1177
+msgid "Link copied"
+msgstr ""
+
+#: src/components/status.jsx:1180
+msgid "Unable to copy link"
+msgstr ""
+
#: src/components/status.jsx:1221
-#: src/components/status.jsx:3236
+#: src/components/status.jsx:3238
msgid "Embed post"
msgstr ""
@@ -2261,6 +2109,16 @@ msgstr ""
msgid "Report post…"
msgstr ""
+#. placeholder {6}: username || acct
+#: src/components/status.jsx:1442
+msgid "Unboosted @{6}'s post"
+msgstr "Unboosted @{6}'s post"
+
+#. placeholder {7}: username || acct
+#: src/components/status.jsx:1443
+msgid "Boosted @{7}'s post"
+msgstr "Boosted @{7}'s post"
+
#: src/components/status.jsx:1728
#: src/components/status.jsx:1764
#: src/components/status.jsx:2458
@@ -2323,303 +2181,307 @@ msgstr ""
msgid "More from <0/>"
msgstr "More from <0/>"
-#: src/components/status.jsx:2997
+#: src/components/status.jsx:2998
msgid "Edit History"
msgstr ""
-#: src/components/status.jsx:3001
+#: src/components/status.jsx:3002
msgid "Failed to load history"
msgstr ""
-#: src/components/status.jsx:3006
-#: src/pages/annual-report.jsx:46
+#: src/components/status.jsx:3007
+#: src/pages/annual-report.jsx:45
msgid "Loading…"
msgstr ""
-#: src/components/status.jsx:3241
+#: src/components/status.jsx:3243
msgid "HTML Code"
msgstr ""
-#: src/components/status.jsx:3258
+#: src/components/status.jsx:3260
msgid "HTML code copied"
msgstr ""
-#: src/components/status.jsx:3261
+#: src/components/status.jsx:3263
msgid "Unable to copy HTML code"
msgstr ""
-#: src/components/status.jsx:3273
+#: src/components/status.jsx:3275
msgid "Media attachments:"
msgstr ""
-#: src/components/status.jsx:3295
+#: src/components/status.jsx:3297
msgid "Account Emojis:"
msgstr ""
-#: src/components/status.jsx:3326
-#: src/components/status.jsx:3371
+#: src/components/status.jsx:3328
+#: src/components/status.jsx:3373
msgid "static URL"
msgstr ""
-#: src/components/status.jsx:3340
+#: src/components/status.jsx:3342
msgid "Emojis:"
msgstr ""
-#: src/components/status.jsx:3385
+#: src/components/status.jsx:3387
msgid "Notes:"
msgstr ""
-#: src/components/status.jsx:3389
+#: src/components/status.jsx:3391
msgid "This is static, unstyled and scriptless. You may need to apply your own styles and edit as needed."
msgstr ""
-#: src/components/status.jsx:3395
+#: src/components/status.jsx:3397
msgid "Polls are not interactive, becomes a list with vote counts."
msgstr ""
-#: src/components/status.jsx:3400
+#: src/components/status.jsx:3402
msgid "Media attachments can be images, videos, audios or any file types."
msgstr ""
-#: src/components/status.jsx:3406
+#: src/components/status.jsx:3408
msgid "Post could be edited or deleted later."
msgstr ""
-#: src/components/status.jsx:3412
+#: src/components/status.jsx:3414
msgid "Preview"
msgstr ""
-#: src/components/status.jsx:3421
+#: src/components/status.jsx:3423
msgid "Note: This preview is lightly styled."
msgstr ""
#. [Name] [Visibility icon] boosted
-#: src/components/status.jsx:3665
+#: src/components/status.jsx:3667
msgid "<0/> <1/> boosted"
msgstr ""
-#: src/components/timeline.jsx:453
-#: src/pages/settings.jsx:1173
+#: src/components/timeline.jsx:455
+#: src/pages/settings.jsx:1175
msgid "New posts"
msgstr ""
-#: src/components/timeline.jsx:554
-#: src/pages/home.jsx:213
+#: src/components/timeline.jsx:556
+#: src/pages/home.jsx:214
#: src/pages/notifications.jsx:871
-#: src/pages/status.jsx:988
-#: src/pages/status.jsx:1361
+#: src/pages/status.jsx:990
+#: src/pages/status.jsx:1363
msgid "Try again"
msgstr ""
#. placeholder {0}: fItems.length
-#: src/components/timeline.jsx:588
+#: src/components/timeline.jsx:591
msgid "{0, plural, one {# Boost} other {# Boosts}}"
msgstr "{0, plural, one {# Boost} other {# Boosts}}"
-#: src/components/timeline.jsx:593
+#: src/components/timeline.jsx:596
msgid "Pinned posts"
msgstr "Pinned posts"
-#: src/components/timeline.jsx:946
-#: src/components/timeline.jsx:953
-#: src/pages/catchup.jsx:1893
+#: src/components/timeline.jsx:951
+#: src/components/timeline.jsx:958
+#: src/pages/catchup.jsx:1894
msgid "Thread"
msgstr ""
#. placeholder {0}: filterInfo.titlesStr
-#: src/components/timeline.jsx:968
+#: src/components/timeline.jsx:973
msgid "<0>Filtered0>: <1>{0}1>"
msgstr ""
-#: src/components/translation-block.jsx:152
+#: src/components/translation-block.jsx:153
msgid "Auto-translated from {sourceLangText}"
msgstr ""
-#: src/components/translation-block.jsx:190
+#: src/components/translation-block.jsx:191
msgid "Translating…"
msgstr ""
-#: src/components/translation-block.jsx:193
+#: src/components/translation-block.jsx:194
msgid "Translate from {sourceLangText} (auto-detected)"
msgstr ""
-#: src/components/translation-block.jsx:194
+#: src/components/translation-block.jsx:195
msgid "Translate from {sourceLangText}"
msgstr ""
#. placeholder {0}: detectedLang ?? '…'
-#: src/components/translation-block.jsx:222
+#: src/components/translation-block.jsx:223
msgid "Auto ({0})"
msgstr ""
-#: src/components/translation-block.jsx:235
+#: src/components/translation-block.jsx:236
msgid "Failed to translate"
msgstr ""
-#: src/compose.jsx:32
+#: src/compose.jsx:33
msgid "Editing source status"
msgstr ""
#. placeholder {0}: replyToStatus.account?.acct || replyToStatus.account?.username
-#: src/compose.jsx:34
+#: src/compose.jsx:35
msgid "Replying to @{0}"
msgstr ""
-#: src/compose.jsx:62
+#: src/compose.jsx:63
msgid "You may close this page now."
msgstr ""
-#: src/compose.jsx:70
+#: src/compose.jsx:71
msgid "Close window"
msgstr ""
-#: src/compose.jsx:86
+#: src/compose.jsx:87
msgid "Login required."
msgstr "Login required."
-#: src/compose.jsx:90
-#: src/pages/annual-report.jsx:165
+#: src/compose.jsx:91
+#: src/pages/annual-report.jsx:164
#: src/pages/http-route.jsx:91
-#: src/pages/login.jsx:270
+#: src/pages/login.jsx:271
msgid "Go home"
msgstr ""
-#: src/pages/account-statuses.jsx:233
+#: src/pages/account-statuses.jsx:232
msgid "Account posts"
msgstr ""
-#: src/pages/account-statuses.jsx:240
+#: src/pages/account-statuses.jsx:239
msgid "{accountDisplay} (+ Replies)"
msgstr ""
-#: src/pages/account-statuses.jsx:242
+#: src/pages/account-statuses.jsx:241
msgid "{accountDisplay} (- Boosts)"
msgstr ""
-#: src/pages/account-statuses.jsx:244
+#: src/pages/account-statuses.jsx:243
msgid "{accountDisplay} (#{tagged})"
msgstr ""
-#: src/pages/account-statuses.jsx:246
+#: src/pages/account-statuses.jsx:245
msgid "{accountDisplay} (Media)"
msgstr ""
-#: src/pages/account-statuses.jsx:252
+#: src/pages/account-statuses.jsx:251
msgid "{accountDisplay} ({monthYear})"
msgstr ""
-#: src/pages/account-statuses.jsx:321
+#: src/pages/account-statuses.jsx:320
msgid "Clear filters"
msgstr ""
-#: src/pages/account-statuses.jsx:324
+#: src/pages/account-statuses.jsx:323
msgid "Clear"
msgstr ""
-#: src/pages/account-statuses.jsx:338
+#: src/pages/account-statuses.jsx:337
msgid "Showing post with replies"
msgstr ""
-#: src/pages/account-statuses.jsx:343
+#: src/pages/account-statuses.jsx:342
msgid "+ Replies"
msgstr ""
-#: src/pages/account-statuses.jsx:349
+#: src/pages/account-statuses.jsx:348
msgid "Showing posts without boosts"
msgstr ""
-#: src/pages/account-statuses.jsx:354
+#: src/pages/account-statuses.jsx:353
msgid "- Boosts"
msgstr ""
-#: src/pages/account-statuses.jsx:360
+#: src/pages/account-statuses.jsx:359
msgid "Showing posts with media"
msgstr ""
+#: src/pages/account-statuses.jsx:364
+msgid "Media"
+msgstr ""
+
#. placeholder {0}: tag.name
-#: src/pages/account-statuses.jsx:377
+#: src/pages/account-statuses.jsx:376
msgid "Showing posts tagged with #{0}"
msgstr ""
-#. placeholder {0}: date.toLocaleString(i18n.locale, { month: 'long', year: 'numeric', })
-#: src/pages/account-statuses.jsx:416
-msgid "Showing posts in {0}"
-msgstr ""
+#. placeholder {1}: date.toLocaleString(i18n.locale, { month: 'long', year: 'numeric', })
+#: src/pages/account-statuses.jsx:415
+msgid "Showing posts in {1}"
+msgstr "Showing posts in {1}"
-#: src/pages/account-statuses.jsx:505
+#: src/pages/account-statuses.jsx:504
msgid "Nothing to see here yet."
msgstr ""
-#: src/pages/account-statuses.jsx:506
-#: src/pages/public.jsx:97
-#: src/pages/trending.jsx:449
+#: src/pages/account-statuses.jsx:505
+#: src/pages/public.jsx:98
+#: src/pages/trending.jsx:450
msgid "Unable to load posts"
msgstr ""
-#: src/pages/account-statuses.jsx:547
-#: src/pages/account-statuses.jsx:577
+#: src/pages/account-statuses.jsx:546
+#: src/pages/account-statuses.jsx:576
msgid "Unable to fetch account info"
msgstr ""
#. placeholder {0}: accountInstance ? ( <> {' '} (
{punycode.toUnicode(accountInstance)}) > ) : null
-#: src/pages/account-statuses.jsx:554
+#: src/pages/account-statuses.jsx:553
msgid "Switch to account's instance {0}"
msgstr ""
-#: src/pages/account-statuses.jsx:584
+#: src/pages/account-statuses.jsx:583
msgid "Switch to my instance (<0>{currentInstance}0>)"
msgstr ""
-#: src/pages/account-statuses.jsx:646
+#: src/pages/account-statuses.jsx:645
msgid "Month"
msgstr ""
-#: src/pages/accounts.jsx:55
+#: src/pages/accounts.jsx:56
msgid "Current"
msgstr ""
-#: src/pages/accounts.jsx:101
+#: src/pages/accounts.jsx:102
msgid "Default"
msgstr ""
-#: src/pages/accounts.jsx:123
+#: src/pages/accounts.jsx:124
msgid "Switch to this account"
msgstr "Switch to this account"
-#: src/pages/accounts.jsx:132
+#: src/pages/accounts.jsx:133
msgid "Switch in new tab/window"
msgstr "Switch in new tab/window"
-#: src/pages/accounts.jsx:146
+#: src/pages/accounts.jsx:147
msgid "View profile…"
msgstr ""
-#: src/pages/accounts.jsx:163
+#: src/pages/accounts.jsx:164
msgid "Set as default"
msgstr ""
#. placeholder {0}: account.info.acct
-#: src/pages/accounts.jsx:173
+#: src/pages/accounts.jsx:174
msgid "Log out <0>@{0}0>?"
msgstr ""
-#: src/pages/accounts.jsx:196
+#: src/pages/accounts.jsx:197
msgid "Log out…"
msgstr ""
-#: src/pages/accounts.jsx:209
+#: src/pages/accounts.jsx:210
msgid "Add an existing account"
msgstr ""
-#: src/pages/accounts.jsx:216
+#: src/pages/accounts.jsx:217
msgid "Note: <0>Default0> account will always be used for first load. Switched accounts will persist during the session."
msgstr ""
-#: src/pages/bookmarks.jsx:25
+#: src/pages/bookmarks.jsx:26
msgid "No bookmarks yet. Go bookmark something!"
msgstr "No bookmarks yet. Go bookmark something!"
-#: src/pages/bookmarks.jsx:26
+#: src/pages/bookmarks.jsx:27
msgid "Unable to load bookmarks."
msgstr ""
@@ -2685,7 +2547,7 @@ msgstr ""
#: src/pages/catchup.jsx:596
msgid "Showing {selectedFilterCategory, select, all {all posts} original {original posts} replies {replies} boosts {boosts} followedTags {followed tags} groups {groups} filtered {filtered posts}}, {sortBy, select, createdAt {{sortOrder, select, asc {oldest} desc {latest}}} reblogsCount {{sortOrder, select, asc {fewest boosts} desc {most boosts}}} favouritesCount {{sortOrder, select, asc {fewest likes} desc {most likes}}} repliesCount {{sortOrder, select, asc {fewest replies} desc {most replies}}} density {{sortOrder, select, asc {least dense} desc {most dense}}}} first{groupBy, select, account {, grouped by authors} other {}}"
-msgstr ""
+msgstr "Showing {selectedFilterCategory, select, all {all posts} original {original posts} replies {replies} boosts {boosts} followedTags {followed tags} groups {groups} filtered {filtered posts}}, {sortBy, select, createdAt {{sortOrder, select, asc {oldest} desc {latest}}} reblogsCount {{sortOrder, select, asc {fewest boosts} desc {most boosts}}} favouritesCount {{sortOrder, select, asc {fewest likes} desc {most likes}}} repliesCount {{sortOrder, select, asc {fewest replies} desc {most replies}}} density {{sortOrder, select, asc {least dense} desc {most dense}}}} first{groupBy, select, account {, grouped by authors} other {}}"
#: src/pages/catchup.jsx:882
#: src/pages/catchup.jsx:906
@@ -2707,7 +2569,7 @@ msgstr ""
#: src/pages/catchup.jsx:926
msgid "Preview of Catch-up UI"
-msgstr ""
+msgstr "Preview of Catch-up UI"
#: src/pages/catchup.jsx:935
msgid "Let's catch up"
@@ -2723,7 +2585,7 @@ msgstr ""
#: src/pages/catchup.jsx:967
msgid "until the max"
-msgstr ""
+msgstr "until the max"
#: src/pages/catchup.jsx:997
msgid "Catch up"
@@ -2753,17 +2615,17 @@ msgstr ""
#: src/pages/catchup.jsx:1062
msgid "Remove this catch-up?"
-msgstr ""
+msgstr "Remove this catch-up?"
#. placeholder {0}: pc.id
#: src/pages/catchup.jsx:1065
msgid "Removing Catch-up {0}"
msgstr "Removing Catch-up {0}"
-#. placeholder {0}: pc.id
+#. placeholder {1}: pc.id
#: src/pages/catchup.jsx:1069
-msgid "Catch-up {0} removed"
-msgstr "Catch-up {0} removed"
+msgid "Catch-up {1} removed"
+msgstr "Catch-up {1} removed"
#: src/pages/catchup.jsx:1083
msgid "Note: Only max 3 will be stored. The rest will be automatically removed."
@@ -2792,8 +2654,8 @@ msgid "Shared by {0}"
msgstr ""
#: src/pages/catchup.jsx:1316
-#: src/pages/mentions.jsx:147
-#: src/pages/search.jsx:312
+#: src/pages/mentions.jsx:148
+#: src/pages/search.jsx:313
msgid "All"
msgstr ""
@@ -2808,11 +2670,11 @@ msgstr ""
#: src/pages/catchup.jsx:1444
msgid "Date"
-msgstr ""
+msgstr "Date"
#: src/pages/catchup.jsx:1448
msgid "Density"
-msgstr ""
+msgstr "Density"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
@@ -2821,11 +2683,11 @@ msgstr "Group"
#: src/pages/catchup.jsx:1486
msgid "Authors"
-msgstr ""
+msgstr "Authors"
#: src/pages/catchup.jsx:1487
msgid "None"
-msgstr ""
+msgstr "None"
#: src/pages/catchup.jsx:1503
msgid "Show all authors"
@@ -2833,11 +2695,11 @@ msgstr ""
#: src/pages/catchup.jsx:1554
msgid "You don't have to read everything."
-msgstr ""
+msgstr "You don't have to read everything."
#: src/pages/catchup.jsx:1555
msgid "That's all."
-msgstr ""
+msgstr "That's all."
#: src/pages/catchup.jsx:1563
msgid "Back to top"
@@ -2876,35 +2738,39 @@ msgid "Scroll to top"
msgstr ""
#. placeholder {0}: filterInfo.titlesStr
-#: src/pages/catchup.jsx:1875
+#: src/pages/catchup.jsx:1876
msgid "Filtered: {0}"
+msgstr "Filtered: {0}"
+
+#: src/pages/catchup.jsx:1929
+msgid "Poll"
msgstr ""
-#: src/pages/favourites.jsx:25
+#: src/pages/favourites.jsx:26
msgid "No likes yet. Go like something!"
msgstr "No likes yet. Go like something!"
-#: src/pages/favourites.jsx:26
+#: src/pages/favourites.jsx:27
msgid "Unable to load likes."
msgstr ""
-#: src/pages/filters.jsx:23
+#: src/pages/filters.jsx:22
msgid "Home and lists"
msgstr ""
-#: src/pages/filters.jsx:25
+#: src/pages/filters.jsx:24
msgid "Public timelines"
msgstr ""
-#: src/pages/filters.jsx:26
+#: src/pages/filters.jsx:25
msgid "Conversations"
msgstr ""
-#: src/pages/filters.jsx:27
+#: src/pages/filters.jsx:26
msgid "Profiles"
msgstr ""
-#: src/pages/filters.jsx:42
+#: src/pages/filters.jsx:41
msgid "Never"
msgstr ""
@@ -3003,158 +2869,158 @@ msgstr ""
msgid "Unable to delete filter."
msgstr ""
-#: src/pages/filters.jsx:608
+#: src/pages/filters.jsx:609
msgid "Expired"
msgstr ""
-#: src/pages/filters.jsx:610
+#: src/pages/filters.jsx:611
msgid "Expiring <0/>"
msgstr ""
-#: src/pages/filters.jsx:614
+#: src/pages/filters.jsx:615
msgid "Never expires"
msgstr ""
#. placeholder {0}: followedHashtags.length
-#: src/pages/followed-hashtags.jsx:70
+#: src/pages/followed-hashtags.jsx:71
msgid "{0, plural, one {# hashtag} other {# hashtags}}"
msgstr ""
-#: src/pages/followed-hashtags.jsx:85
+#: src/pages/followed-hashtags.jsx:86
msgid "Unable to load followed hashtags."
msgstr ""
-#: src/pages/followed-hashtags.jsx:89
+#: src/pages/followed-hashtags.jsx:90
msgid "No hashtags followed yet."
msgstr ""
-#: src/pages/following.jsx:143
+#: src/pages/following.jsx:144
msgid "Nothing to see here."
msgstr ""
-#: src/pages/following.jsx:144
-#: src/pages/list.jsx:108
+#: src/pages/following.jsx:145
+#: src/pages/list.jsx:109
msgid "Unable to load posts."
msgstr ""
-#: src/pages/hashtag.jsx:55
+#: src/pages/hashtag.jsx:56
msgid "{hashtagTitle} (Media only) on {instance}"
msgstr ""
-#: src/pages/hashtag.jsx:56
+#: src/pages/hashtag.jsx:57
msgid "{hashtagTitle} on {instance}"
msgstr ""
-#: src/pages/hashtag.jsx:58
+#: src/pages/hashtag.jsx:59
msgid "{hashtagTitle} (Media only)"
msgstr ""
-#: src/pages/hashtag.jsx:59
+#: src/pages/hashtag.jsx:60
msgid "{hashtagTitle}"
msgstr ""
-#: src/pages/hashtag.jsx:181
+#: src/pages/hashtag.jsx:182
msgid "No one has posted anything with this tag yet."
msgstr ""
-#: src/pages/hashtag.jsx:182
+#: src/pages/hashtag.jsx:183
msgid "Unable to load posts with this tag"
msgstr ""
-#: src/pages/hashtag.jsx:208
+#: src/pages/hashtag.jsx:209
msgid "Unfollow #{hashtag}?"
msgstr "Unfollow #{hashtag}?"
-#: src/pages/hashtag.jsx:223
+#: src/pages/hashtag.jsx:224
msgid "Unfollowed #{hashtag}"
msgstr ""
-#: src/pages/hashtag.jsx:238
+#: src/pages/hashtag.jsx:239
msgid "Followed #{hashtag}"
msgstr ""
-#: src/pages/hashtag.jsx:254
+#: src/pages/hashtag.jsx:255
msgid "Following…"
msgstr ""
-#: src/pages/hashtag.jsx:282
+#: src/pages/hashtag.jsx:283
msgid "Unfeatured on profile"
msgstr ""
-#: src/pages/hashtag.jsx:296
+#: src/pages/hashtag.jsx:297
msgid "Unable to unfeature on profile"
msgstr ""
-#: src/pages/hashtag.jsx:305
-#: src/pages/hashtag.jsx:321
+#: src/pages/hashtag.jsx:306
+#: src/pages/hashtag.jsx:322
msgid "Featured on profile"
msgstr ""
-#: src/pages/hashtag.jsx:328
+#: src/pages/hashtag.jsx:329
msgid "Feature on profile"
msgstr ""
-#: src/pages/hashtag.jsx:393
+#: src/pages/hashtag.jsx:394
msgid "{TOTAL_TAGS_LIMIT, plural, other {Max # tags}}"
msgstr ""
-#: src/pages/hashtag.jsx:396
+#: src/pages/hashtag.jsx:397
msgid "Add hashtag"
msgstr ""
-#: src/pages/hashtag.jsx:428
+#: src/pages/hashtag.jsx:429
msgid "Remove hashtag"
msgstr ""
-#: src/pages/hashtag.jsx:442
+#: src/pages/hashtag.jsx:443
msgid "{SHORTCUTS_LIMIT, plural, one {Max # shortcut reached. Unable to add shortcut.} other {Max # shortcuts reached. Unable to add shortcut.}}"
msgstr ""
-#: src/pages/hashtag.jsx:471
+#: src/pages/hashtag.jsx:472
msgid "This shortcut already exists"
msgstr ""
-#: src/pages/hashtag.jsx:474
+#: src/pages/hashtag.jsx:475
msgid "Hashtag shortcut added"
msgstr ""
-#: src/pages/hashtag.jsx:480
+#: src/pages/hashtag.jsx:481
msgid "Add to Shortcuts"
msgstr ""
-#: src/pages/hashtag.jsx:486
-#: src/pages/public.jsx:139
-#: src/pages/trending.jsx:478
+#: src/pages/hashtag.jsx:487
+#: src/pages/public.jsx:140
+#: src/pages/trending.jsx:479
msgid "Enter a new instance e.g. \"mastodon.social\""
msgstr ""
-#: src/pages/hashtag.jsx:489
-#: src/pages/public.jsx:142
-#: src/pages/trending.jsx:481
+#: src/pages/hashtag.jsx:490
+#: src/pages/public.jsx:143
+#: src/pages/trending.jsx:482
msgid "Invalid instance"
msgstr ""
-#: src/pages/hashtag.jsx:503
-#: src/pages/public.jsx:156
-#: src/pages/trending.jsx:493
+#: src/pages/hashtag.jsx:504
+#: src/pages/public.jsx:157
+#: src/pages/trending.jsx:494
msgid "Go to another instance…"
msgstr ""
-#: src/pages/hashtag.jsx:516
-#: src/pages/public.jsx:169
-#: src/pages/trending.jsx:504
+#: src/pages/hashtag.jsx:517
+#: src/pages/public.jsx:170
+#: src/pages/trending.jsx:505
msgid "Go to my instance (<0>{currentInstance}0>)"
msgstr ""
-#: src/pages/home.jsx:209
+#: src/pages/home.jsx:210
msgid "Unable to fetch notifications."
msgstr ""
-#: src/pages/home.jsx:229
+#: src/pages/home.jsx:230
msgid "<0>New0> <1>Follow Requests1>"
msgstr ""
-#: src/pages/home.jsx:235
+#: src/pages/home.jsx:236
msgid "See all"
msgstr ""
@@ -3166,75 +3032,75 @@ msgstr ""
msgid "Unable to resolve URL"
msgstr ""
-#: src/pages/list.jsx:107
+#: src/pages/list.jsx:108
msgid "Nothing yet."
msgstr ""
-#: src/pages/list.jsx:176
-#: src/pages/list.jsx:279
+#: src/pages/list.jsx:177
+#: src/pages/list.jsx:281
msgid "Manage members"
msgstr ""
#. placeholder {0}: account.username
-#: src/pages/list.jsx:313
+#: src/pages/list.jsx:316
msgid "Remove <0>@{0}0> from list?"
msgstr ""
-#: src/pages/list.jsx:359
+#: src/pages/list.jsx:362
msgid "Remove…"
msgstr ""
#. placeholder {0}: lists.length
-#: src/pages/lists.jsx:93
+#: src/pages/lists.jsx:94
msgid "{0, plural, one {# list} other {# lists}}"
msgstr ""
-#: src/pages/lists.jsx:108
+#: src/pages/lists.jsx:109
msgid "No lists yet."
msgstr ""
-#: src/pages/login.jsx:109
-#: src/pages/login.jsx:122
+#: src/pages/login.jsx:110
+#: src/pages/login.jsx:123
msgid "Failed to register application"
msgstr "Failed to register application"
-#: src/pages/login.jsx:208
+#: src/pages/login.jsx:209
msgid "instance domain"
msgstr "instance domain"
-#: src/pages/login.jsx:232
+#: src/pages/login.jsx:233
msgid "e.g. “mastodon.social”"
msgstr ""
-#: src/pages/login.jsx:243
+#: src/pages/login.jsx:244
msgid "Failed to log in. Please try again or try another instance."
msgstr ""
-#: src/pages/login.jsx:255
+#: src/pages/login.jsx:256
msgid "Continue with {selectedInstanceText}"
msgstr ""
-#: src/pages/login.jsx:256
+#: src/pages/login.jsx:257
msgid "Continue"
msgstr ""
-#: src/pages/login.jsx:264
+#: src/pages/login.jsx:265
msgid "Don't have an account? Create one!"
msgstr ""
-#: src/pages/mentions.jsx:20
+#: src/pages/mentions.jsx:21
msgid "Private mentions"
msgstr ""
-#: src/pages/mentions.jsx:159
+#: src/pages/mentions.jsx:160
msgid "Private"
msgstr ""
-#: src/pages/mentions.jsx:169
+#: src/pages/mentions.jsx:170
msgid "No one mentioned you :("
msgstr ""
-#: src/pages/mentions.jsx:170
+#: src/pages/mentions.jsx:171
msgid "Unable to load mentions."
msgstr ""
@@ -3273,7 +3139,7 @@ msgid "{0, plural, one {Announcement} other {Announcements}}"
msgstr ""
#: src/pages/notifications.jsx:654
-#: src/pages/settings.jsx:1161
+#: src/pages/settings.jsx:1163
msgid "Follow requests"
msgstr ""
@@ -3339,555 +3205,555 @@ msgid "Notifications from <0>@{0}0>"
msgstr ""
#. placeholder {0}: request.account.username
-#: src/pages/notifications.jsx:1200
+#: src/pages/notifications.jsx:1201
msgid "Notifications from @{0} will not be filtered from now on."
msgstr ""
-#: src/pages/notifications.jsx:1205
+#: src/pages/notifications.jsx:1206
msgid "Unable to accept notification request"
msgstr ""
-#: src/pages/notifications.jsx:1210
+#: src/pages/notifications.jsx:1211
msgid "Allow"
msgstr ""
-#. placeholder {0}: request.account.username
-#: src/pages/notifications.jsx:1230
-msgid "Notifications from @{0} will not show up in Filtered notifications from now on."
-msgstr ""
+#. placeholder {1}: request.account.username
+#: src/pages/notifications.jsx:1231
+msgid "Notifications from @{1} will not show up in Filtered notifications from now on."
+msgstr "Notifications from @{1} will not show up in Filtered notifications from now on."
-#: src/pages/notifications.jsx:1235
+#: src/pages/notifications.jsx:1236
msgid "Unable to dismiss notification request"
msgstr ""
-#: src/pages/notifications.jsx:1240
+#: src/pages/notifications.jsx:1241
msgid "Dismiss"
msgstr ""
-#: src/pages/notifications.jsx:1255
+#: src/pages/notifications.jsx:1256
msgid "Dismissed"
msgstr ""
-#: src/pages/public.jsx:27
+#: src/pages/public.jsx:28
msgid "Local timeline ({instance})"
msgstr ""
-#: src/pages/public.jsx:28
+#: src/pages/public.jsx:29
msgid "Federated timeline ({instance})"
msgstr ""
-#: src/pages/public.jsx:90
+#: src/pages/public.jsx:91
msgid "Local timeline"
msgstr ""
-#: src/pages/public.jsx:90
+#: src/pages/public.jsx:91
msgid "Federated timeline"
msgstr ""
-#: src/pages/public.jsx:96
+#: src/pages/public.jsx:97
msgid "No one has posted anything yet."
msgstr ""
-#: src/pages/public.jsx:123
+#: src/pages/public.jsx:124
msgid "Switch to Federated"
-msgstr ""
+msgstr "Switch to Federated"
-#: src/pages/public.jsx:130
+#: src/pages/public.jsx:131
msgid "Switch to Local"
-msgstr ""
+msgstr "Switch to Local"
-#: src/pages/search.jsx:49
+#: src/pages/search.jsx:50
msgid "Search: {q} (Posts)"
msgstr ""
-#: src/pages/search.jsx:52
+#: src/pages/search.jsx:53
msgid "Search: {q} (Accounts)"
msgstr ""
-#: src/pages/search.jsx:55
+#: src/pages/search.jsx:56
msgid "Search: {q} (Hashtags)"
msgstr ""
-#: src/pages/search.jsx:58
+#: src/pages/search.jsx:59
msgid "Search: {q}"
msgstr ""
-#: src/pages/search.jsx:322
-#: src/pages/search.jsx:404
+#: src/pages/search.jsx:323
+#: src/pages/search.jsx:405
msgid "Hashtags"
msgstr ""
-#: src/pages/search.jsx:354
-#: src/pages/search.jsx:408
-#: src/pages/search.jsx:478
+#: src/pages/search.jsx:355
+#: src/pages/search.jsx:409
+#: src/pages/search.jsx:479
msgid "See more"
msgstr ""
-#: src/pages/search.jsx:380
+#: src/pages/search.jsx:381
msgid "See more accounts"
msgstr ""
-#: src/pages/search.jsx:394
+#: src/pages/search.jsx:395
msgid "No accounts found."
msgstr ""
-#: src/pages/search.jsx:450
+#: src/pages/search.jsx:451
msgid "See more hashtags"
msgstr ""
-#: src/pages/search.jsx:464
+#: src/pages/search.jsx:465
msgid "No hashtags found."
msgstr ""
-#: src/pages/search.jsx:508
+#: src/pages/search.jsx:509
msgid "See more posts"
msgstr ""
-#: src/pages/search.jsx:522
+#: src/pages/search.jsx:523
msgid "No posts found."
msgstr ""
-#: src/pages/search.jsx:566
+#: src/pages/search.jsx:567
msgid "Enter your search term or paste a URL above to get started."
msgstr ""
-#: src/pages/settings.jsx:82
+#: src/pages/settings.jsx:83
msgid "Settings"
msgstr ""
-#: src/pages/settings.jsx:91
+#: src/pages/settings.jsx:92
msgid "Appearance"
msgstr ""
-#: src/pages/settings.jsx:167
+#: src/pages/settings.jsx:168
msgid "Light"
msgstr ""
-#: src/pages/settings.jsx:178
+#: src/pages/settings.jsx:179
msgid "Dark"
msgstr ""
-#: src/pages/settings.jsx:191
+#: src/pages/settings.jsx:192
msgid "Auto"
msgstr ""
-#: src/pages/settings.jsx:201
+#: src/pages/settings.jsx:202
msgid "Text size"
msgstr ""
#. Preview of one character, in smallest size
#. Preview of one character, in largest size
-#: src/pages/settings.jsx:206
-#: src/pages/settings.jsx:231
+#: src/pages/settings.jsx:207
+#: src/pages/settings.jsx:232
msgid "A"
msgstr ""
-#: src/pages/settings.jsx:245
+#: src/pages/settings.jsx:246
msgid "Display language"
msgstr ""
-#: src/pages/settings.jsx:254
+#: src/pages/settings.jsx:255
msgid "Volunteer translations"
msgstr "Volunteer translations"
-#: src/pages/settings.jsx:265
+#: src/pages/settings.jsx:266
msgid "Posting"
msgstr ""
-#: src/pages/settings.jsx:272
+#: src/pages/settings.jsx:273
msgid "Default visibility"
msgstr ""
-#: src/pages/settings.jsx:273
-#: src/pages/settings.jsx:319
+#: src/pages/settings.jsx:274
+#: src/pages/settings.jsx:320
msgid "Synced"
msgstr ""
-#: src/pages/settings.jsx:298
+#: src/pages/settings.jsx:299
msgid "Failed to update posting privacy"
msgstr ""
-#: src/pages/settings.jsx:321
+#: src/pages/settings.jsx:322
msgid "Synced to your instance server's settings. <0>Go to your instance ({instance}) for more settings.0>"
msgstr ""
-#: src/pages/settings.jsx:336
+#: src/pages/settings.jsx:337
msgid "Experiments"
msgstr ""
-#: src/pages/settings.jsx:349
+#: src/pages/settings.jsx:350
msgid "Auto refresh timeline posts"
msgstr ""
-#: src/pages/settings.jsx:361
+#: src/pages/settings.jsx:362
msgid "Boosts carousel"
msgstr ""
-#: src/pages/settings.jsx:377
+#: src/pages/settings.jsx:378
msgid "Post translation"
msgstr ""
-#: src/pages/settings.jsx:388
+#: src/pages/settings.jsx:389
msgid "Translate to "
msgstr "Translate to "
-#: src/pages/settings.jsx:399
+#: src/pages/settings.jsx:400
msgid "System language ({systemTargetLanguageText})"
msgstr ""
#. placeholder {0}: snapStates.settings.contentTranslationHideLanguages.length
-#: src/pages/settings.jsx:425
+#: src/pages/settings.jsx:426
msgid "{0, plural, =0 {Hide \"Translate\" button for:} other {Hide \"Translate\" button for (#):}}"
msgstr ""
-#: src/pages/settings.jsx:479
+#: src/pages/settings.jsx:480
msgid "Note: This feature uses external translation services, powered by <0>Lingva API0> & <1>Lingva Translate1>."
msgstr ""
-#: src/pages/settings.jsx:513
+#: src/pages/settings.jsx:514
msgid "Auto inline translation"
msgstr ""
-#: src/pages/settings.jsx:517
+#: src/pages/settings.jsx:518
msgid "Automatically show translation for posts in timeline. Only works for <0>short0> posts without content warning, media and poll."
msgstr ""
-#: src/pages/settings.jsx:537
+#: src/pages/settings.jsx:538
msgid "GIF Picker for composer"
msgstr ""
-#: src/pages/settings.jsx:541
+#: src/pages/settings.jsx:542
msgid "Note: This feature uses external GIF search service, powered by <0>GIPHY0>. G-rated (suitable for viewing by all ages), tracking parameters are stripped, referrer information is omitted from requests, but search queries and IP address information will still reach their servers."
msgstr ""
-#: src/pages/settings.jsx:570
+#: src/pages/settings.jsx:571
msgid "Image description generator"
msgstr ""
-#: src/pages/settings.jsx:575
+#: src/pages/settings.jsx:576
msgid "Only for new images while composing new posts."
msgstr ""
-#: src/pages/settings.jsx:582
+#: src/pages/settings.jsx:583
msgid "Note: This feature uses external AI service, powered by <0>img-alt-api0>. May not work well. Only for images and in English."
msgstr ""
-#: src/pages/settings.jsx:608
+#: src/pages/settings.jsx:609
msgid "Server-side grouped notifications"
msgstr ""
-#: src/pages/settings.jsx:612
+#: src/pages/settings.jsx:613
msgid "Alpha-stage feature. Potentially improved grouping window but basic grouping logic."
msgstr ""
-#: src/pages/settings.jsx:633
+#: src/pages/settings.jsx:634
msgid "\"Cloud\" import/export for shortcuts settings"
msgstr ""
-#: src/pages/settings.jsx:638
+#: src/pages/settings.jsx:639
msgid "⚠️⚠️⚠️ Very experimental.<0/>Stored in your own profile’s notes. Profile (private) notes are mainly used for other profiles, and hidden for own profile."
msgstr ""
-#: src/pages/settings.jsx:649
+#: src/pages/settings.jsx:650
msgid "Note: This feature uses currently-logged-in instance server API."
msgstr ""
-#: src/pages/settings.jsx:666
+#: src/pages/settings.jsx:667
msgid "Cloak mode <0>(<1>Text1> → <2>████2>)0>"
msgstr ""
-#: src/pages/settings.jsx:675
+#: src/pages/settings.jsx:676
msgid "Replace text as blocks, useful when taking screenshots, for privacy reasons."
msgstr ""
-#: src/pages/settings.jsx:700
+#: src/pages/settings.jsx:701
msgid "About"
msgstr ""
-#: src/pages/settings.jsx:739
+#: src/pages/settings.jsx:740
msgid "<0>Built0> by <1>@cheeaun1>"
msgstr ""
-#: src/pages/settings.jsx:768
+#: src/pages/settings.jsx:769
msgid "Sponsor"
msgstr ""
-#: src/pages/settings.jsx:776
+#: src/pages/settings.jsx:777
msgid "Donate"
msgstr "Donate"
-#: src/pages/settings.jsx:792
+#: src/pages/settings.jsx:793
msgid "Privacy Policy"
msgstr ""
#. placeholder {0}: WEBSITE.replace(/https?:\/\//g, '').replace(/\/$/, '')
-#: src/pages/settings.jsx:799
+#: src/pages/settings.jsx:800
msgid "<0>Site:0> {0}"
msgstr ""
#. placeholder {0}: !__FAKE_COMMIT_HASH__ && (
( ) )
-#: src/pages/settings.jsx:806
+#: src/pages/settings.jsx:807
msgid "<0>Version:0> <1/> {0}"
msgstr ""
-#: src/pages/settings.jsx:821
+#: src/pages/settings.jsx:822
msgid "Version string copied"
msgstr ""
-#: src/pages/settings.jsx:824
+#: src/pages/settings.jsx:825
msgid "Unable to copy version string"
msgstr ""
-#: src/pages/settings.jsx:1058
-#: src/pages/settings.jsx:1063
+#: src/pages/settings.jsx:1060
+#: src/pages/settings.jsx:1065
msgid "Failed to update subscription. Please try again."
msgstr ""
-#: src/pages/settings.jsx:1069
+#: src/pages/settings.jsx:1071
msgid "Failed to remove subscription. Please try again."
msgstr ""
-#: src/pages/settings.jsx:1076
+#: src/pages/settings.jsx:1078
msgid "Push Notifications (beta)"
msgstr ""
-#: src/pages/settings.jsx:1098
+#: src/pages/settings.jsx:1100
msgid "Push notifications are blocked. Please enable them in your browser settings."
msgstr ""
#. placeholder {0}: [ { value: 'all', label: t`anyone`, }, { value: 'followed', label: t`people I follow`, }, { value: 'follower', label: t`followers`, }, ].map((type) => (
))
-#: src/pages/settings.jsx:1107
+#: src/pages/settings.jsx:1109
msgid "Allow from <0>{0}0>"
msgstr ""
-#: src/pages/settings.jsx:1116
+#: src/pages/settings.jsx:1118
msgid "anyone"
msgstr ""
-#: src/pages/settings.jsx:1120
+#: src/pages/settings.jsx:1122
msgid "people I follow"
msgstr ""
-#: src/pages/settings.jsx:1124
+#: src/pages/settings.jsx:1126
msgid "followers"
msgstr ""
-#: src/pages/settings.jsx:1157
+#: src/pages/settings.jsx:1159
msgid "Follows"
msgstr ""
-#: src/pages/settings.jsx:1165
+#: src/pages/settings.jsx:1167
msgid "Polls"
msgstr ""
-#: src/pages/settings.jsx:1169
+#: src/pages/settings.jsx:1171
msgid "Post edits"
msgstr ""
-#: src/pages/settings.jsx:1190
+#: src/pages/settings.jsx:1192
msgid "Push permission was not granted since your last login. You'll need to <0><1>log in1> again to grant push permission0>."
msgstr ""
-#: src/pages/settings.jsx:1206
+#: src/pages/settings.jsx:1208
msgid "NOTE: Push notifications only work for <0>one account0>."
msgstr ""
#. js-lingui-explicit-id
-#: src/pages/status.jsx:597
-#: src/pages/status.jsx:1131
+#: src/pages/status.jsx:599
+#: src/pages/status.jsx:1133
msgid "post.title"
msgstr "Post"
-#: src/pages/status.jsx:822
+#: src/pages/status.jsx:824
msgid "You're not logged in. Interactions (reply, boost, etc) are not possible."
msgstr ""
-#: src/pages/status.jsx:842
+#: src/pages/status.jsx:844
msgid "This post is from another instance (<0>{instance}0>). Interactions (reply, boost, etc) are not possible."
msgstr ""
-#: src/pages/status.jsx:870
+#: src/pages/status.jsx:872
msgid "Error: {e}"
msgstr ""
-#: src/pages/status.jsx:877
+#: src/pages/status.jsx:879
msgid "Switch to my instance to enable interactions"
msgstr ""
-#: src/pages/status.jsx:979
+#: src/pages/status.jsx:981
msgid "Unable to load replies."
msgstr ""
-#: src/pages/status.jsx:1091
+#: src/pages/status.jsx:1093
msgid "Back"
msgstr ""
-#: src/pages/status.jsx:1122
+#: src/pages/status.jsx:1124
msgid "Go to main post"
msgstr ""
#. placeholder {0}: ancestors.length
-#: src/pages/status.jsx:1145
+#: src/pages/status.jsx:1147
msgid "{0} posts above ‒ Go to top"
msgstr ""
-#: src/pages/status.jsx:1188
-#: src/pages/status.jsx:1251
+#: src/pages/status.jsx:1190
+#: src/pages/status.jsx:1253
msgid "Switch to Side Peek view"
msgstr ""
-#: src/pages/status.jsx:1252
+#: src/pages/status.jsx:1254
msgid "Switch to Full view"
msgstr ""
-#: src/pages/status.jsx:1270
+#: src/pages/status.jsx:1272
msgid "Show all sensitive content"
msgstr ""
-#: src/pages/status.jsx:1275
+#: src/pages/status.jsx:1277
msgid "Experimental"
msgstr ""
-#: src/pages/status.jsx:1284
+#: src/pages/status.jsx:1286
msgid "Unable to switch"
msgstr ""
-#. placeholder {0}: punycode.toUnicode( postInstance, )
-#: src/pages/status.jsx:1291
-msgid "Switch to post's instance ({0})"
-msgstr ""
+#. placeholder {1}: punycode.toUnicode( postInstance, )
+#: src/pages/status.jsx:1293
+msgid "Switch to post's instance ({1})"
+msgstr "Switch to post's instance ({1})"
-#: src/pages/status.jsx:1294
+#: src/pages/status.jsx:1296
msgid "Switch to post's instance"
msgstr ""
-#: src/pages/status.jsx:1352
+#: src/pages/status.jsx:1354
msgid "Unable to load post"
msgstr ""
#. placeholder {0}: replies.length
#. placeholder {1}: shortenNumber(replies.length)
-#: src/pages/status.jsx:1487
+#: src/pages/status.jsx:1490
msgid "{0, plural, one {# reply} other {<0>{1}0> replies}}"
msgstr ""
#. placeholder {0}: shortenNumber(totalComments)
-#: src/pages/status.jsx:1505
+#: src/pages/status.jsx:1508
msgid "{totalComments, plural, one {# comment} other {<0>{0}0> comments}}"
msgstr ""
-#: src/pages/status.jsx:1527
+#: src/pages/status.jsx:1530
msgid "View post with its replies"
msgstr ""
-#: src/pages/trending.jsx:71
+#: src/pages/trending.jsx:72
msgid "Trending ({instance})"
msgstr ""
-#: src/pages/trending.jsx:228
+#: src/pages/trending.jsx:229
msgid "Trending News"
msgstr ""
#. By [Author]
#. placeholder {0}: author ? (
) : authorUrl ? (
{authorName} ) : ( authorName )
-#: src/pages/trending.jsx:347
+#: src/pages/trending.jsx:348
msgid "By {0}"
msgstr "By {0}"
-#: src/pages/trending.jsx:408
+#: src/pages/trending.jsx:409
msgid "Back to showing trending posts"
msgstr ""
#. placeholder {0}: currentLink .replace(/^https?:\/\/(www\.)?/i, '') .replace(/\/$/, '')
-#: src/pages/trending.jsx:413
+#: src/pages/trending.jsx:414
msgid "Showing posts mentioning <0>{0}0>"
msgstr ""
-#: src/pages/trending.jsx:425
+#: src/pages/trending.jsx:426
msgid "Trending posts"
msgstr ""
-#: src/pages/trending.jsx:448
+#: src/pages/trending.jsx:449
msgid "No trending posts."
msgstr ""
-#: src/pages/welcome.jsx:53
+#: src/pages/welcome.jsx:54
msgid "A minimalistic opinionated Mastodon web client."
msgstr ""
-#: src/pages/welcome.jsx:64
+#: src/pages/welcome.jsx:65
msgid "Log in with Mastodon"
msgstr ""
-#: src/pages/welcome.jsx:70
+#: src/pages/welcome.jsx:71
msgid "Sign up"
msgstr ""
-#: src/pages/welcome.jsx:77
+#: src/pages/welcome.jsx:78
msgid "Connect your existing Mastodon/Fediverse account.<0/>Your credentials are not stored on this server."
msgstr ""
-#: src/pages/welcome.jsx:94
+#: src/pages/welcome.jsx:95
msgid "<0>Built0> by <1>@cheeaun1>. <2>Privacy Policy2>."
msgstr ""
-#: src/pages/welcome.jsx:125
+#: src/pages/welcome.jsx:126
msgid "Screenshot of Boosts Carousel"
msgstr ""
-#: src/pages/welcome.jsx:129
+#: src/pages/welcome.jsx:130
msgid "Boosts Carousel"
msgstr ""
-#: src/pages/welcome.jsx:132
+#: src/pages/welcome.jsx:133
msgid "Visually separate original posts and re-shared posts (boosted posts)."
msgstr ""
-#: src/pages/welcome.jsx:141
+#: src/pages/welcome.jsx:142
msgid "Screenshot of nested comments thread"
msgstr ""
-#: src/pages/welcome.jsx:145
+#: src/pages/welcome.jsx:146
msgid "Nested comments thread"
msgstr ""
-#: src/pages/welcome.jsx:148
+#: src/pages/welcome.jsx:149
msgid "Effortlessly follow conversations. Semi-collapsible replies."
msgstr ""
-#: src/pages/welcome.jsx:156
+#: src/pages/welcome.jsx:157
msgid "Screenshot of grouped notifications"
msgstr ""
-#: src/pages/welcome.jsx:160
+#: src/pages/welcome.jsx:161
msgid "Grouped notifications"
msgstr ""
-#: src/pages/welcome.jsx:163
+#: src/pages/welcome.jsx:164
msgid "Similar notifications are grouped and collapsed to reduce clutter."
msgstr ""
-#: src/pages/welcome.jsx:172
+#: src/pages/welcome.jsx:173
msgid "Screenshot of multi-column UI"
msgstr ""
-#: src/pages/welcome.jsx:176
+#: src/pages/welcome.jsx:177
msgid "Single or multi-column"
msgstr ""
-#: src/pages/welcome.jsx:179
+#: src/pages/welcome.jsx:180
msgid "By default, single column for zen-mode seekers. Configurable multi-column for power users."
msgstr ""
-#: src/pages/welcome.jsx:188
+#: src/pages/welcome.jsx:189
msgid "Screenshot of multi-hashtag timeline with a form to add more hashtags"
msgstr ""
-#: src/pages/welcome.jsx:192
+#: src/pages/welcome.jsx:193
msgid "Multi-hashtag timeline"
msgstr ""
-#: src/pages/welcome.jsx:195
+#: src/pages/welcome.jsx:196
msgid "Up to 5 hashtags combined into a single timeline."
msgstr ""
diff --git a/src/pages/account-statuses.jsx b/src/pages/account-statuses.jsx
index 453e1477..f97a5985 100644
--- a/src/pages/account-statuses.jsx
+++ b/src/pages/account-statuses.jsx
@@ -1,5 +1,4 @@
-import { t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { Trans, useLingui } from '@lingui/react/macro';
import { MenuItem } from '@szhsin/react-menu';
import {
useCallback,
@@ -51,6 +50,7 @@ async function _isSearchEnabled(instance) {
const isSearchEnabled = pmem(_isSearchEnabled);
function AccountStatuses() {
+ const { i18n, t } = useLingui();
const snapStates = useSnapshot(states);
const { id, ...params } = useParams();
const [searchParams, setSearchParams] = useSearchParams();
@@ -229,7 +229,6 @@ function AccountStatuses() {
}
const [featuredTags, setFeaturedTags] = useState([]);
- const { i18n } = useLingui();
let title = t`Account posts`;
if (account?.acct) {
const acctDisplay = (/@/.test(account.acct) ? '' : '@') + account.acct;
diff --git a/src/pages/accounts.jsx b/src/pages/accounts.jsx
index 2391898b..bdb5c13d 100644
--- a/src/pages/accounts.jsx
+++ b/src/pages/accounts.jsx
@@ -1,7 +1,7 @@
import './accounts.css';
import { useAutoAnimate } from '@formkit/auto-animate/preact';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { Menu, MenuDivider, MenuItem } from '@szhsin/react-menu';
import { useReducer } from 'preact/hooks';
@@ -20,6 +20,7 @@ import { getCurrentAccountID, setCurrentAccountID } from '../utils/store-utils';
const isStandalone = window.matchMedia('(display-mode: standalone)').matches;
function Accounts({ onClose }) {
+ const { t } = useLingui();
const { masto } = api();
// Accounts
const accounts = store.local.getJSON('accounts');
diff --git a/src/pages/annual-report.jsx b/src/pages/annual-report.jsx
index 3483e0c2..ef26cadd 100644
--- a/src/pages/annual-report.jsx
+++ b/src/pages/annual-report.jsx
@@ -1,7 +1,6 @@
-import { t, Trans } from '@lingui/macro';
-
import './annual-report.css';
+import { Trans } from '@lingui/react/macro';
import { useEffect, useState } from 'preact/hooks';
import { useParams } from 'react-router-dom';
diff --git a/src/pages/bookmarks.jsx b/src/pages/bookmarks.jsx
index eaec0e1a..ed65e9a4 100644
--- a/src/pages/bookmarks.jsx
+++ b/src/pages/bookmarks.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { useRef } from 'preact/hooks';
import Timeline from '../components/timeline';
@@ -8,6 +8,7 @@ import useTitle from '../utils/useTitle';
const LIMIT = 20;
function Bookmarks() {
+ const { t } = useLingui();
useTitle(t`Bookmarks`, '/bookmarks');
const { masto, instance } = api();
const bookmarksIterator = useRef();
diff --git a/src/pages/catchup.jsx b/src/pages/catchup.jsx
index 1af5aad2..b5aa39b5 100644
--- a/src/pages/catchup.jsx
+++ b/src/pages/catchup.jsx
@@ -2,8 +2,8 @@ import '../components/links-bar.css';
import './catchup.css';
import autoAnimate from '@formkit/auto-animate';
-import { msg, Plural, select, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg, select } from '@lingui/core/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { getBlurHashAverageColor } from 'fast-blurhash';
import { Fragment } from 'preact';
import { memo } from 'preact/compat';
@@ -95,7 +95,7 @@ const DTF = mem(
);
function Catchup() {
- const { i18n, _ } = useLingui();
+ const { i18n, _, t } = useLingui();
const dtf = DTF(i18n.locale);
useTitle(`Catch-up`, '/catchup');
@@ -1834,6 +1834,7 @@ function postDensity(post) {
const MEDIA_SIZE = 48;
function PostPeek({ post, filterInfo }) {
+ const { t } = useLingui();
const {
spoilerText,
sensitive,
@@ -2048,6 +2049,7 @@ function PostPeek({ post, filterInfo }) {
}
function PostStats({ post }) {
+ const { t } = useLingui();
const { reblogsCount, repliesCount, favouritesCount } = post;
return (
diff --git a/src/pages/favourites.jsx b/src/pages/favourites.jsx
index 08b805f2..d4a5cb3c 100644
--- a/src/pages/favourites.jsx
+++ b/src/pages/favourites.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useRef } from 'preact/hooks';
import Timeline from '../components/timeline';
@@ -8,6 +8,7 @@ import useTitle from '../utils/useTitle';
const LIMIT = 20;
function Favourites() {
+ const { t } = useLingui();
useTitle(t`Likes`, '/favourites');
const { masto, instance } = api();
const favouritesIterator = useRef();
diff --git a/src/pages/filters.jsx b/src/pages/filters.jsx
index 5cebc956..f9eaee98 100644
--- a/src/pages/filters.jsx
+++ b/src/pages/filters.jsx
@@ -1,8 +1,7 @@
import './filters.css';
-import { i18n } from '@lingui/core';
-import { msg, Plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg } from '@lingui/core/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useReducer, useRef, useState } from 'preact/hooks';
import Icon from '../components/icon';
@@ -50,6 +49,7 @@ const EXPIRY_DURATIONS_LABELS = {
};
function Filters() {
+ const { t } = useLingui();
const { masto } = api();
useTitle(t`Filters`, `/ft`);
const [uiState, setUIState] = useState('default');
@@ -197,7 +197,7 @@ function Filters() {
let _id = 1;
const incID = () => _id++;
function FiltersAddEdit({ filter, onClose }) {
- const { _ } = useLingui();
+ const { _, t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const editMode = !!filter;
@@ -596,6 +596,7 @@ function FiltersAddEdit({ filter, onClose }) {
}
function ExpiryStatus({ expiresAt, showNeverExpires }) {
+ const { t } = useLingui();
const hasExpiry = !!expiresAt;
const expiresAtDate = hasExpiry && new Date(expiresAt);
const expired = hasExpiry && expiresAtDate <= new Date();
diff --git a/src/pages/followed-hashtags.jsx b/src/pages/followed-hashtags.jsx
index dcfb612e..d5a15046 100644
--- a/src/pages/followed-hashtags.jsx
+++ b/src/pages/followed-hashtags.jsx
@@ -1,4 +1,4 @@
-import { Plural, t, Trans } from '@lingui/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useState } from 'preact/hooks';
import Icon from '../components/icon';
@@ -10,6 +10,7 @@ import { fetchFollowedTags } from '../utils/followed-tags';
import useTitle from '../utils/useTitle';
function FollowedHashtags() {
+ const { t } = useLingui();
const { masto, instance } = api();
useTitle(t`Followed Hashtags`, `/fh`);
const [uiState, setUIState] = useState('default');
diff --git a/src/pages/following.jsx b/src/pages/following.jsx
index 27544546..66e9adfc 100644
--- a/src/pages/following.jsx
+++ b/src/pages/following.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react/macro';
import { useEffect, useRef } from 'preact/hooks';
import { useSnapshot } from 'valtio';
@@ -17,6 +17,7 @@ import useTitle from '../utils/useTitle';
const LIMIT = 20;
function Following({ title, path, id, ...props }) {
+ const { t } = useLingui();
useTitle(
title ||
t({
diff --git a/src/pages/hashtag.jsx b/src/pages/hashtag.jsx
index 8a9ca319..1f54da43 100644
--- a/src/pages/hashtag.jsx
+++ b/src/pages/hashtag.jsx
@@ -1,5 +1,5 @@
-import { plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { plural } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import {
FocusableItem,
MenuDivider,
@@ -31,6 +31,7 @@ const TAGS_LIMIT_PER_MODE = 4;
const TOTAL_TAGS_LIMIT = TAGS_LIMIT_PER_MODE + 1;
function Hashtags({ media: mediaView, columnMode, ...props }) {
+ const { t } = useLingui();
// const navigate = useNavigate();
let { hashtag, ...params } = columnMode ? {} : useParams();
if (props.hashtag) hashtag = props.hashtag;
diff --git a/src/pages/home.jsx b/src/pages/home.jsx
index 408add69..debc9675 100644
--- a/src/pages/home.jsx
+++ b/src/pages/home.jsx
@@ -1,7 +1,7 @@
import './notifications-menu.css';
-import { msg, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg } from '@lingui/core/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { ControlledMenu } from '@szhsin/react-menu';
import { memo } from 'preact/compat';
import { useEffect, useRef, useState } from 'preact/hooks';
@@ -62,6 +62,7 @@ function Home() {
}
function NotificationsLink() {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const notificationLinkRef = useRef();
const [menuState, setMenuState] = useState(undefined);
diff --git a/src/pages/http-route.jsx b/src/pages/http-route.jsx
index 277b81b3..c0fe500f 100644
--- a/src/pages/http-route.jsx
+++ b/src/pages/http-route.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans } from '@lingui/react/macro';
import { useLayoutEffect, useState } from 'preact/hooks';
import { useLocation } from 'react-router-dom';
diff --git a/src/pages/list.jsx b/src/pages/list.jsx
index 8fe9e295..2da2217e 100644
--- a/src/pages/list.jsx
+++ b/src/pages/list.jsx
@@ -1,6 +1,6 @@
import './lists.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { Menu, MenuDivider, MenuItem } from '@szhsin/react-menu';
import { useEffect, useRef, useState } from 'preact/hooks';
import { InView } from 'react-intersection-observer';
@@ -25,6 +25,7 @@ import useTitle from '../utils/useTitle';
const LIMIT = 20;
function List(props) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const { masto, instance } = api();
const id = props?.id || useParams()?.id;
@@ -222,6 +223,7 @@ function List(props) {
const MEMBERS_LIMIT = 40;
function ListManageMembers({ listID, onClose }) {
+ const { t } = useLingui();
// Show list of members with [Remove] button
// API only returns 40 members at a time, so this need to be paginated with infinite scroll
// Show [Add] button after removing a member
@@ -301,6 +303,7 @@ function ListManageMembers({ listID, onClose }) {
}
function RemoveAddButton({ account, listID }) {
+ const { t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const [removed, setRemoved] = useState(false);
diff --git a/src/pages/lists.jsx b/src/pages/lists.jsx
index 575e4872..85593e4e 100644
--- a/src/pages/lists.jsx
+++ b/src/pages/lists.jsx
@@ -1,6 +1,6 @@
import './lists.css';
-import { Plural, t, Trans } from '@lingui/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useReducer, useState } from 'preact/hooks';
import Icon from '../components/icon';
@@ -13,6 +13,7 @@ import { fetchLists } from '../utils/lists';
import useTitle from '../utils/useTitle';
function Lists() {
+ const { t } = useLingui();
useTitle(t`Lists`, `/l`);
const [uiState, setUIState] = useState('default');
diff --git a/src/pages/login.jsx b/src/pages/login.jsx
index b0f339e4..9d9980ca 100644
--- a/src/pages/login.jsx
+++ b/src/pages/login.jsx
@@ -1,6 +1,6 @@
import './login.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import Fuse from 'fuse.js';
import { useEffect, useRef, useState } from 'preact/hooks';
import { useSearchParams } from 'react-router-dom';
@@ -23,6 +23,7 @@ import useTitle from '../utils/useTitle';
const { PHANPY_DEFAULT_INSTANCE: DEFAULT_INSTANCE } = import.meta.env;
function Login() {
+ const { t } = useLingui();
useTitle('Log in');
const instanceURLRef = useRef();
const cachedInstanceURL = store.local.get('instanceURL');
diff --git a/src/pages/mentions.jsx b/src/pages/mentions.jsx
index 32a85fc7..0949c99c 100644
--- a/src/pages/mentions.jsx
+++ b/src/pages/mentions.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useMemo, useRef, useState } from 'preact/hooks';
import { useSearchParams } from 'react-router-dom';
@@ -13,6 +13,7 @@ const LIMIT = 20;
const emptySearchParams = new URLSearchParams();
function Mentions({ columnMode, ...props }) {
+ const { t } = useLingui();
const { masto, instance } = api();
const [searchParams] = columnMode ? [emptySearchParams] : useSearchParams();
const [stateType, setStateType] = useState(null);
diff --git a/src/pages/notifications.jsx b/src/pages/notifications.jsx
index 149fe4ab..e023602e 100644
--- a/src/pages/notifications.jsx
+++ b/src/pages/notifications.jsx
@@ -1,7 +1,7 @@
import './notifications.css';
-import { msg, Plural, t, Trans } from '@lingui/macro';
-import { useLingui } from '@lingui/react';
+import { msg } from '@lingui/core/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { Fragment } from 'preact';
import { memo } from 'preact/compat';
import {
@@ -109,7 +109,7 @@ const NOTIFICATIONS_POLICIES_TEXT = {
};
function Notifications({ columnMode }) {
- const { _ } = useLingui();
+ const { _, t } = useLingui();
useTitle(t`Notifications`, '/notifications');
const { masto, instance } = api();
const snapStates = useSnapshot(states);
@@ -1173,6 +1173,7 @@ function NotificationRequestModalButton({ request }) {
}
function NotificationRequestButtons({ request, onChange }) {
+ const { t } = useLingui();
const { masto } = api();
const [uiState, setUIState] = useState('default');
const [requestState, setRequestState] = useState(null); // accept, dismiss
diff --git a/src/pages/public.jsx b/src/pages/public.jsx
index 4663c544..2988510a 100644
--- a/src/pages/public.jsx
+++ b/src/pages/public.jsx
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { Menu, MenuDivider, MenuItem } from '@szhsin/react-menu';
import { useRef } from 'preact/hooks';
import { useNavigate, useParams } from 'react-router-dom';
@@ -16,6 +16,7 @@ import useTitle from '../utils/useTitle';
const LIMIT = 20;
function Public({ local, columnMode, ...props }) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const isLocal = !!local;
const params = columnMode ? {} : useParams();
diff --git a/src/pages/search.jsx b/src/pages/search.jsx
index 61deb3d2..29b65f44 100644
--- a/src/pages/search.jsx
+++ b/src/pages/search.jsx
@@ -1,7 +1,7 @@
import './search.css';
import { useAutoAnimate } from '@formkit/auto-animate/preact';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useLayoutEffect, useRef, useState } from 'preact/hooks';
import { useHotkeys } from 'react-hotkeys-hook';
import { InView } from 'react-intersection-observer';
@@ -31,6 +31,7 @@ const scrollIntoViewOptions = {
};
function Search({ columnMode, ...props }) {
+ const { t } = useLingui();
const params = columnMode ? {} : useParams();
const { masto, instance, authenticated } = api({
instance: params.instance,
diff --git a/src/pages/settings.jsx b/src/pages/settings.jsx
index 8f847ba4..bd9d4940 100644
--- a/src/pages/settings.jsx
+++ b/src/pages/settings.jsx
@@ -1,6 +1,6 @@
import './settings.css';
-import { Plural, t, Trans } from '@lingui/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useRef, useState } from 'preact/hooks';
import { useSnapshot } from 'valtio';
@@ -36,6 +36,7 @@ const {
} = import.meta.env;
function Settings({ onClose }) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const currentTheme = store.local.get('theme') || 'auto';
const themeFormRef = useRef();
@@ -957,6 +958,7 @@ async function clearCaches() {
}
function PushNotificationsSection({ onClose }) {
+ const { t } = useLingui();
if (!isPushSupported()) return null;
const { instance } = api();
diff --git a/src/pages/status.jsx b/src/pages/status.jsx
index 311a3439..98f3c34d 100644
--- a/src/pages/status.jsx
+++ b/src/pages/status.jsx
@@ -1,6 +1,6 @@
import './status.css';
-import { Plural, t, Trans } from '@lingui/macro';
+import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { Menu, MenuDivider, MenuHeader, MenuItem } from '@szhsin/react-menu';
import debounce from 'just-debounce-it';
import pRetry from 'p-retry';
@@ -73,6 +73,7 @@ const STATUSES_SELECTOR =
const STATUS_URL_REGEX = /\/s\//i;
function StatusPage(params) {
+ const { t } = useLingui();
const { id } = params;
const { masto, instance } = api({ instance: params.instance });
const snapStates = useSnapshot(states);
@@ -214,6 +215,7 @@ function createdAtSort(a, b) {
}
function StatusThread({ id, closeLink = '/', instance: propInstance }) {
+ const { t } = useLingui();
const [searchParams, setSearchParams] = useSearchParams();
const mediaParam = searchParams.get('media');
const mediaStatusID = searchParams.get('mediaStatusID');
@@ -1377,6 +1379,7 @@ function SubComments({
openAll,
parentLink,
}) {
+ const { t } = useLingui();
const [searchParams, setSearchParams] = useSearchParams();
// Total comments count, including sub-replies
diff --git a/src/pages/trending.jsx b/src/pages/trending.jsx
index 09231fc6..a8f5f10a 100644
--- a/src/pages/trending.jsx
+++ b/src/pages/trending.jsx
@@ -1,7 +1,7 @@
import '../components/links-bar.css';
import './trending.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import { MenuItem } from '@szhsin/react-menu';
import { getBlurHashAverageColor } from 'fast-blurhash';
import { useEffect, useMemo, useRef, useState } from 'preact/hooks';
@@ -62,6 +62,7 @@ function fetchLinkList(masto, params) {
}
function Trending({ columnMode, ...props }) {
+ const { t } = useLingui();
const snapStates = useSnapshot(states);
const params = columnMode ? {} : useParams();
const { masto, instance } = api({
diff --git a/src/pages/welcome.jsx b/src/pages/welcome.jsx
index dbaa90cf..d1cbec36 100644
--- a/src/pages/welcome.jsx
+++ b/src/pages/welcome.jsx
@@ -1,6 +1,6 @@
import './welcome.css';
-import { t, Trans } from '@lingui/macro';
+import { Trans, useLingui } from '@lingui/react/macro';
import boostsCarouselUrl from '../assets/features/boosts-carousel.jpg';
import groupedNotificationsUrl from '../assets/features/grouped-notifications.jpg';
@@ -31,6 +31,7 @@ const appVersion = __BUILD_TIME__
: null;
function Welcome() {
+ const { t } = useLingui();
useTitle(null, ['/', '/welcome']);
return (
diff --git a/src/utils/open-compose.js b/src/utils/open-compose.js
index a5478b0b..9034f9e6 100644
--- a/src/utils/open-compose.js
+++ b/src/utils/open-compose.js
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { t } from '@lingui/core/macro';
export default function openCompose(opts) {
const url = URL.parse('/compose/', window.location);
diff --git a/src/utils/show-compose.js b/src/utils/show-compose.js
index 9e2b7bde..a77f0bf0 100644
--- a/src/utils/show-compose.js
+++ b/src/utils/show-compose.js
@@ -1,4 +1,4 @@
-import { t, Trans } from '@lingui/macro';
+import { t } from '@lingui/core/macro';
import openOSK from './open-osk';
import showToast from './show-toast';