use browser extension to open tab in background (#1074)

This commit is contained in:
Athou
2023-06-10 22:16:02 +02:00
parent e2eeba90ef
commit 22e0f1f382
37 changed files with 717 additions and 325 deletions

View File

@@ -97,5 +97,6 @@ export const Constants = {
mainScrollAreaId: "main-scroll-area-id",
entryId: (entry: Entry) => `entry-id-${entry.id}`,
},
browserExtensionUrl: "https://github.com/Athou/commafeed-browser-extension",
bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e",
}

View File

@@ -52,17 +52,4 @@ export const scrollToWithCallback = ({
element.scrollTo(options)
}
export const openLinkInBackgroundTab = (url: string) => {
// simulate ctrl+click to open tab in background
const a = document.createElement("a")
a.href = url
a.rel = "noreferrer"
a.dispatchEvent(
new MouseEvent("click", {
ctrlKey: true,
metaKey: true,
})
)
}
export const truncate = (str: string, n: number) => (str.length > n ? `${str.slice(0, n - 1)}\u2026` : str)

View File

@@ -1,183 +1,192 @@
import { Trans } from "@lingui/macro"
import { Kbd, Table } from "@mantine/core"
import { Anchor, Box, Kbd, Stack, Table } from "@mantine/core"
import { Constants } from "app/constants"
export function KeyboardShortcutsHelp() {
return (
<Table striped highlightOnHover>
<tbody>
<tr>
<td>
<Trans>Refresh</Trans>
</td>
<td>
<Kbd>R</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open next entry</Trans>
</td>
<td>
<Kbd>J</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open previous entry</Trans>
</td>
<td>
<Kbd>K</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Set focus on next entry without opening it</Trans>
</td>
<td>
<Kbd>N</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Set focus on previous entry without opening it</Trans>
</td>
<td>
<Kbd>P</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Move the page down</Trans>
</td>
<td>
<Kbd>
<Trans>Space</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Move the page up</Trans>
</td>
<td>
<Kbd>
<Trans>Shift</Trans>
</Kbd>
<span> + </span>
<Kbd>
<Trans>Space</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open/close current entry</Trans>
</td>
<td>
<Kbd>O</Kbd>
<span>, </span>
<Kbd>
<Trans>Enter</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open current entry in a new tab</Trans>
</td>
<td>
<Kbd>V</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open current entry in a new tab in the background</Trans>
</td>
<td>
<Kbd>B</Kbd>
<span>, </span>
<Kbd>
<Trans>Middle click</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Toggle read status of current entry</Trans>
</td>
<td>
<Kbd>M</Kbd>
<span>, </span>
<Trans>Swipe header to the right</Trans>
</td>
</tr>
<tr>
<td>
<Trans>Mark all entries as read</Trans>
</td>
<td>
<Kbd>
<Trans>Shift</Trans>
</Kbd>
<span> + </span>
<Kbd>A</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Go to the All view</Trans>
</td>
<td>
<Kbd>G</Kbd>
<span> </span>
<Kbd>A</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Navigate to a subscription by entering its name</Trans>
</td>
<td>
<Kbd>
<Trans>Ctrl</Trans>
</Kbd>
<span> + </span>
<Kbd>K</Kbd>
<span>, </span>
<Kbd>G</Kbd>
<span> </span>
<Kbd>U</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show entry menu (desktop)</Trans>
</td>
<td>
<Kbd>
<Trans>Right click</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show entry menu (mobile)</Trans>
</td>
<td>
<Kbd>
<Trans>Long press</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show keyboard shortcut help</Trans>
</td>
<td>
<Kbd>?</Kbd>
</td>
</tr>
</tbody>
</Table>
<Stack spacing="xs">
<Table striped highlightOnHover>
<tbody>
<tr>
<td>
<Trans>Refresh</Trans>
</td>
<td>
<Kbd>R</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open next entry</Trans>
</td>
<td>
<Kbd>J</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open previous entry</Trans>
</td>
<td>
<Kbd>K</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Set focus on next entry without opening it</Trans>
</td>
<td>
<Kbd>N</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Set focus on previous entry without opening it</Trans>
</td>
<td>
<Kbd>P</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Move the page down</Trans>
</td>
<td>
<Kbd>
<Trans>Space</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Move the page up</Trans>
</td>
<td>
<Kbd>
<Trans>Shift</Trans>
</Kbd>
<span> + </span>
<Kbd>
<Trans>Space</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open/close current entry</Trans>
</td>
<td>
<Kbd>O</Kbd>
<span>, </span>
<Kbd>
<Trans>Enter</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open current entry in a new tab</Trans>
</td>
<td>
<Kbd>V</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open current entry in a new tab in the background</Trans>
</td>
<td>
<Kbd>B</Kbd>
<span>*, </span>
<Kbd>
<Trans>Middle click</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Toggle read status of current entry</Trans>
</td>
<td>
<Kbd>M</Kbd>
<span>, </span>
<Trans>Swipe header to the right</Trans>
</td>
</tr>
<tr>
<td>
<Trans>Mark all entries as read</Trans>
</td>
<td>
<Kbd>
<Trans>Shift</Trans>
</Kbd>
<span> + </span>
<Kbd>A</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Go to the All view</Trans>
</td>
<td>
<Kbd>G</Kbd>
<span> </span>
<Kbd>A</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Navigate to a subscription by entering its name</Trans>
</td>
<td>
<Kbd>
<Trans>Ctrl</Trans>
</Kbd>
<span> + </span>
<Kbd>K</Kbd>
<span>, </span>
<Kbd>G</Kbd>
<span> </span>
<Kbd>U</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show entry menu (desktop)</Trans>
</td>
<td>
<Kbd>
<Trans>Right click</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show entry menu (mobile)</Trans>
</td>
<td>
<Kbd>
<Trans>Long press</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show keyboard shortcut help</Trans>
</td>
<td>
<Kbd>?</Kbd>
</td>
</tr>
</tbody>
</Table>
<Box>
<span>* </span>
<Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer">
<Trans>Browser extension required</Trans>
</Anchor>
</Box>
</Stack>
)
}

View File

@@ -13,9 +13,9 @@ import {
} from "app/slices/entries"
import { redirectToRootCategory } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { openLinkInBackgroundTab } from "app/utils"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { Loader } from "components/Loader"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useMousetrap } from "hooks/useMousetrap"
import { useViewMode } from "hooks/useViewMode"
import { useEffect } from "react"
@@ -33,6 +33,7 @@ export function FeedEntries() {
const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks)
const scrollingToEntry = useAppSelector(state => state.entries.scrollingToEntry)
const dispatch = useAppDispatch()
const { isBrowserExtensionInstalled, openLinkInBackgroundTab } = useBrowserExtension()
const selectedEntry = entries.find(e => e.id === selectedEntryId)
@@ -211,7 +212,7 @@ export function FeedEntries() {
window.open(selectedEntry.url, "_blank", "noreferrer")
})
useMousetrap("b", () => {
// simulate ctrl+click to open tab in background
if (!isBrowserExtensionInstalled) return
if (!selectedEntry) return
openLinkInBackgroundTab(selectedEntry.url)
})

View File

@@ -5,7 +5,8 @@ import { markEntriesUpToEntry, markEntry, starEntry } from "app/slices/entries"
import { redirectToFeed } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { Entry } from "app/types"
import { openLinkInBackgroundTab, truncate } from "app/utils"
import { truncate } from "app/utils"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useEffect } from "react"
import { Item, Menu, Separator, useContextMenu } from "react-contexify"
import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbRss, TbStar, TbStarOff } from "react-icons/tb"
@@ -34,6 +35,7 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
const { classes, theme } = useStyles()
const sourceType = useAppSelector(state => state.entries.source.type)
const dispatch = useAppDispatch()
const { isBrowserExtensionInstalled, openLinkInBackgroundTab } = useBrowserExtension()
return (
<Menu id={menuId(props.entry)} theme={theme.colorScheme} animation={false} className={classes.menu}>
@@ -48,17 +50,19 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
<Trans>Open link in new tab</Trans>
</Group>
</Item>
<Item
onClick={() => {
openLinkInBackgroundTab(props.entry.url)
dispatch(markEntry({ entry: props.entry, read: true }))
}}
>
<Group>
<TbExternalLink size={iconSize} />
<Trans>Open link in new background tab</Trans>
</Group>
</Item>
{isBrowserExtensionInstalled && (
<Item
onClick={() => {
openLinkInBackgroundTab(props.entry.url)
dispatch(markEntry({ entry: props.entry, read: true }))
}}
>
<Group>
<TbExternalLink size={iconSize} />
<Trans>Open link in new background tab</Trans>
</Group>
</Item>
)}
<Separator />

View File

@@ -23,7 +23,7 @@ export function Header() {
const settings = useAppSelector(state => state.user.settings)
const profile = useAppSelector(state => state.user.profile)
const searchFromStore = useAppSelector(state => state.entries.search)
const { isBrowserExtension, openSettingsPage, openAppInNewTab } = useBrowserExtension()
const { isBrowserExtensionPopup, openSettingsPage, openAppInNewTab } = useBrowserExtension()
const dispatch = useAppDispatch()
const searchForm = useForm<{ search: string }>({
@@ -90,7 +90,7 @@ export function Header() {
<ProfileMenu control={<ActionButton icon={<TbUser size={iconSize} />} label={profile?.name} />} />
{isBrowserExtension && (
{isBrowserExtensionPopup && (
<>
<HeaderDivider />

View File

@@ -1,9 +1,44 @@
import { useEffect, useState } from "react"
export const useBrowserExtension = () => {
const [browserExtensionVersion, setBrowserExtensionVersion] = useState<string>()
// the extension will set the "browser-extension-installed" attribute on the root element, monitor it for changes
useEffect(() => {
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === "attributes") {
const element = mutation.target as Element
const version = element.getAttribute("browser-extension-installed")
if (version) setBrowserExtensionVersion(version)
}
})
})
observer.observe(document.documentElement, {
attributes: true,
})
return () => observer.disconnect()
}, [])
const isBrowserExtensionInstalled = !!browserExtensionVersion
// when not in an iframe, window.parent is a reference to window
const isBrowserExtension = window.parent !== window
const isBrowserExtensionPopup = window.parent !== window
const isBrowserExtensionInstallable = !isBrowserExtensionPopup
const openSettingsPage = () => window.parent.postMessage("open-settings-page", "*")
const openAppInNewTab = () => window.parent.postMessage("open-app-in-new-tab", "*")
const w = isBrowserExtensionPopup ? window.parent : window
const openSettingsPage = () => w.postMessage("open-settings-page", "*")
const openAppInNewTab = () => w.postMessage("open-app-in-new-tab", "*")
const openLinkInBackgroundTab = (url: string) => w.postMessage(`open-link-in-background-tab:${url}`, "*")
return { isBrowserExtension, openSettingsPage, openAppInNewTab }
return {
browserExtensionVersion,
isBrowserExtensionInstallable,
isBrowserExtensionInstalled,
isBrowserExtensionPopup,
openSettingsPage,
openAppInNewTab,
openLinkInBackgroundTab,
}
}

View File

@@ -127,9 +127,13 @@ msgstr "العودة"
msgid "Back to log in"
msgstr "العودة لتسجيل الدخول"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "ملحقات المستعرض"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "سيؤدي تغيير كلمة المرور إلى إنشاء مفتاح
msgid "Check that the feed is working"
msgstr "تأكد من عمل الخلاصة"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed التالي العنصر غير المقروء"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "إصدار CommaFeed {الإصدار} ({مراجعة})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Enrere"
msgid "Back to log in"
msgstr "Tornar a iniciar sessió"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Extensions del navegador"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Canviar la contrasenya generarà una nova clau d'API"
msgid "Check that the feed is working"
msgstr "Comproveu que el canal funciona"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed següent element no llegit"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Versió CommaFeed {versió} ({revisió})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Zpět"
msgid "Back to log in"
msgstr "Zpět k přihlášení"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Rozšíření prohlížeče"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Změna hesla vygeneruje nový klíč API"
msgid "Check that the feed is working"
msgstr "Zkontrolujte, zda zdroj funguje"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed další nepřečtená položka"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed verze {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Yn ôl"
msgid "Back to log in"
msgstr "Yn ôl i fewngofnodi"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Estyniadau porwr"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Bydd newid cyfrinair yn cynhyrchu allwedd API newydd"
msgid "Check that the feed is working"
msgstr "Gwiriwch fod y porthiant yn gweithio"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed eitem nesaf heb ei darllen"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Fersiwn ComaFeed {fersiwn} ({ adolygu})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Tilbage"
msgid "Back to log in"
msgstr "Tilbage for at logge ind"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Browserudvidelser"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,12 +167,20 @@ msgstr "Ændring af adgangskode vil generere en ny API-nøgle"
msgid "Check that the feed is working"
msgstr "Tjek, at foderet virker"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed næste ulæste element"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx

View File

@@ -127,9 +127,13 @@ msgstr "Zurück"
msgid "Back to log in"
msgstr "Zurück zum Anmelden"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Browsererweiterungen"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Das Ändern des Passworts generiert einen neuen API-Schlüssel"
msgid "Check that the feed is working"
msgstr "Überprüfen Sie, ob der Feed funktioniert"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed nächstes ungelesenes Element"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed-Version {Version} ({Revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Back"
msgid "Back to log in"
msgstr "Back to log in"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr "Browser extension required"
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Browser extentions"
msgid "Browser extention"
msgstr "Browser extention"
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Changing password will generate a new API key"
msgid "Check that the feed is working"
msgstr "Check that the feed is working"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr "CommaFeed browser extension version {browserExtensionVersion}."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed next unread item"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed version {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr "CommaFeed version {version} ({revision})."
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Atrás"
msgid "Back to log in"
msgstr "Volver a iniciar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Extensiones del navegador"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Cambiar la contraseña generará una nueva clave API"
msgid "Check that the feed is working"
msgstr "Compruebe que el feed funciona"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed siguiente elemento no leído"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "versión de CommaFeed {versión} ({revisión})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "برگشت"
msgid "Back to log in"
msgstr "بازگشت برای ورود به سیستم"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "گسترش مرورگر"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "تغییر رمز عبور یک کلید API جدید ایجاد می ک
msgid "Check that the feed is working"
msgstr "بررسی کنید که خوراک کار می کند"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "مورد خوانده نشده بعدی CommaFeed"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "نسخه {نسخه} CommaFeed ({نسخه})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Takaisin"
msgid "Back to log in"
msgstr "Takaisin sisäänkirjautumiseen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Selaimen laajennukset"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Salasanan vaihtaminen luo uuden API-avaimen"
msgid "Check that the feed is working"
msgstr "Tarkista, että syöttö toimii"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed seuraava lukematon kohde"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed-versio {version} ({versio})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Retour"
msgid "Back to log in"
msgstr "Retour à la connexion"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Extensions pour navigateurs"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Changer de mot de passe générera une nouvelle clé API"
msgid "Check that the feed is working"
msgstr "Vérifie que le flux fonctionne"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed prochain article non lu"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed version {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Atrás"
msgid "Back to log in"
msgstr "Volver para iniciar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Extensións do navegador"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "O cambio de contrasinal xerará unha nova clave de API"
msgid "Check that the feed is working"
msgstr "Comproba que a fonte funciona"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed seguinte elemento non lido"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Versión de CommaFeed {versión} ({revisión})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Vissza"
msgid "Back to log in"
msgstr "Vissza a bejelentkezéshez"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Böngészőbővítések"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "A jelszó megváltoztatása új API-kulcsot generál"
msgid "Check that the feed is working"
msgstr "Ellenőrizze, hogy a feed működik-e"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed következő olvasatlan elem"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed verzió {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Kembali"
msgid "Back to log in"
msgstr "Kembali untuk masuk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Ekstensi peramban"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Mengubah kata sandi akan menghasilkan kunci API baru"
msgid "Check that the feed is working"
msgstr "Periksa apakah umpannya berfungsi"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed item yang belum dibaca berikutnya"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed versi {versi} ({revisi})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Indietro"
msgid "Back to log in"
msgstr "Torna per accedere"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Estensioni del browser"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "La modifica della password genererà una nuova chiave API"
msgid "Check that the feed is working"
msgstr "Verifica che il feed funzioni"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed successivo elemento non letto"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Versione CommaFeed {versione} ({revisione})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "裏"
msgid "Back to log in"
msgstr "ログインに戻る"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "ブラウザ拡張機能"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "パスワードを変更すると、新しい API キーが生成され
msgid "Check that the feed is working"
msgstr "フィードが動作していることを確認してください"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "次の未読アイテムをカンマフィード"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "コンマフィードのバージョン {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "뒤로"
msgid "Back to log in"
msgstr "로그인으로 돌아가기"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "브라우저 확장"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "비밀번호를 변경하면 새 API 키가 생성됩니다."
msgid "Check that the feed is working"
msgstr "피드가 작동하는지 확인"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "다음 읽지 않은 항목을 쉼표로 피드"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "쉼표 피드 버전 {버전}({개정})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Kembali"
msgid "Back to log in"
msgstr "Kembali untuk log masuk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Peluasan penyemak imbas"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Menukar kata laluan akan menjana kunci API baharu"
msgid "Check that the feed is working"
msgstr "Semak sama ada suapan berfungsi"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed item belum dibaca seterusnya"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Versi CommaFeed {versi} ({semakan})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Tilbake"
msgid "Back to log in"
msgstr "Tilbake for å logge inn"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Nettleserutvidelser"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Endring av passord vil generere en ny API-nøkkel"
msgid "Check that the feed is working"
msgstr "Sjekk at feeden fungerer"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed neste uleste element"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed versjon {versjon} ({revisjon})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Terug"
msgid "Back to log in"
msgstr "Terug naar inloggen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Browserextensies"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Het wijzigen van het wachtwoord genereert een nieuwe API-sleutel"
msgid "Check that the feed is working"
msgstr "Controleer of de feed werkt"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed volgende ongelezen item"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed-versie {versie} ({revisie})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Tilbake"
msgid "Back to log in"
msgstr "Tilbake for å logge inn"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Nettleserutvidelser"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Endring av passord vil generere en ny API-nøkkel"
msgid "Check that the feed is working"
msgstr "Sjekk at feeden fungerer"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed neste uleste element"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed versjon {versjon} ({revisjon})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Powrót"
msgid "Back to log in"
msgstr "Powrót do logowania"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Rozszerzenia przeglądarki"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Zmiana hasła spowoduje wygenerowanie nowego klucza API"
msgid "Check that the feed is working"
msgstr "Sprawdź, czy kanał działa"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "Przecinek następny nieprzeczytany element"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Wersja CommaFeed {wersja} ({wersja})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Voltar"
msgid "Back to log in"
msgstr "Voltar para logar"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Extensões do navegador"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "A alteração da senha gerará uma nova chave de API"
msgid "Check that the feed is working"
msgstr "Verifique se o feed está funcionando"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed próximo item não lido"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "Versão do CommaFeed {versão} ({revisão})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Назад"
msgid "Back to log in"
msgstr "Вернуться к входу"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Расширения браузера"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "При изменении пароля будет сгенерирова
msgid "Check that the feed is working"
msgstr "Проверьте, работает ли лента."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed следующий непрочитанный элемент"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed версия {версия} ({редакция})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Späť"
msgid "Back to log in"
msgstr "Späť na prihlásenie"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Rozšírenia prehliadača"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Zmena hesla vygeneruje nový kľúč API"
msgid "Check that the feed is working"
msgstr "Skontrolujte, či feed funguje"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed ďalšia neprečítaná položka"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed verzia {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "Tillbaka"
msgid "Back to log in"
msgstr "Tillbaka för att logga in"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Webbläsartillägg"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,12 +167,20 @@ msgstr "Ändra lösenord kommer att generera en ny API-nyckel"
msgid "Check that the feed is working"
msgstr "Kontrollera att matningen fungerar"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed nästa olästa objekt"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx

View File

@@ -127,9 +127,13 @@ msgstr "Geri"
msgid "Back to log in"
msgstr "Giriş yapmak için geri dön"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Tarayıcı uzantıları"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "Şifreyi değiştirmek yeni bir API anahtarı oluşturacak"
msgid "Check that the feed is working"
msgstr "Feed'in çalışıp çalışmadığını kontrol edin"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed sonraki okunmamış öğe"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed sürümü {sürüm} ({revizyon})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -127,9 +127,13 @@ msgstr "返回"
msgid "Back to log in"
msgstr "返回登录"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "浏览器扩展"
msgid "Browser extention"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
@@ -163,13 +167,21 @@ msgstr "更改密码将生成新的 API 密钥"
msgid "Check that the feed is working"
msgstr "检查提要是否正常工作"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension <0>not installed</0> (or URL in extension options not matching this CommaFeed instance)."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed browser extension version {browserExtensionVersion}."
msgstr ""
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed 下一个未读项目"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed 版本 {version} ({revision})"
msgid "CommaFeed version {version} ({revision})."
msgstr ""
#: src/components/header/ProfileMenu.tsx
msgid "Compact"

View File

@@ -63,7 +63,7 @@ function Buttons() {
const iconSize = 18
const serverInfos = useAppSelector(state => state.server.serverInfos)
const { colorScheme, toggleColorScheme } = useMantineColorScheme()
const { isBrowserExtension, openSettingsPage } = useBrowserExtension()
const { isBrowserExtensionPopup, openSettingsPage } = useBrowserExtension()
const dispatch = useAppDispatch()
const dark = colorScheme === "dark"
@@ -108,7 +108,7 @@ function Buttons() {
hideLabelOnDesktop
/>
{isBrowserExtension && (
{isBrowserExtensionPopup && (
<ActionButton
label={<Trans>Extension options</Trans>}
icon={<TbSettings size={iconSize} />}

View File

@@ -5,6 +5,7 @@ import { redirectToApiDocumentation } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { CategorySelect } from "components/content/add/CategorySelect"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import React, { useState } from "react"
import { TbHelp, TbKeyboard, TbPuzzle, TbRocket } from "react-icons/tb"
@@ -60,16 +61,34 @@ function NextUnreadBookmarklet() {
export function AboutPage() {
const version = useAppSelector(state => state.server.serverInfos?.version)
const revision = useAppSelector(state => state.server.serverInfos?.gitCommit)
const { isBrowserExtensionInstalled, browserExtensionVersion, isBrowserExtensionInstallable } = useBrowserExtension()
const dispatch = useAppDispatch()
return (
<Container size="xl">
<SimpleGrid cols={2} breakpoints={[{ maxWidth: Constants.layout.mobileBreakpoint, cols: 1 }]}>
<Section title={<Trans>About</Trans>} icon={<TbHelp size={24} />}>
<Box>
<Trans>
CommaFeed version {version} ({revision})
CommaFeed version {version} ({revision}).
</Trans>
</Box>
{isBrowserExtensionInstallable && isBrowserExtensionInstalled && (
<Box>
<Trans>CommaFeed browser extension version {browserExtensionVersion}.</Trans>
</Box>
)}
{isBrowserExtensionInstallable && !isBrowserExtensionInstalled && (
<Box>
<Trans>
CommaFeed browser extension{" "}
<Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer">
not installed
</Anchor>{" "}
(or URL in extension options not matching this CommaFeed instance).
</Trans>
</Box>
)}
<Box mt="md">
<Trans>
<span>CommaFeed is an open-source project. Sources are hosted on </span>
@@ -86,8 +105,8 @@ export function AboutPage() {
<Section title={<Trans>Goodies</Trans>} icon={<TbPuzzle size={24} />}>
<List>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-browser-extension" target="_blank" rel="noreferrer">
<Trans>Browser extentions</Trans>
<Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer">
<Trans>Browser extention</Trans>
</Anchor>
</List.Item>
<List.Item>