mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
add about page
This commit is contained in:
@@ -15,6 +15,7 @@ import { Tree } from "components/sidebar/Tree"
|
|||||||
import { useI18n } from "i18n"
|
import { useI18n } from "i18n"
|
||||||
import { AdminUsersPage } from "pages/admin/AdminUsersPage"
|
import { AdminUsersPage } from "pages/admin/AdminUsersPage"
|
||||||
import { MetricsPage } from "pages/admin/MetricsPage"
|
import { MetricsPage } from "pages/admin/MetricsPage"
|
||||||
|
import { AboutPage } from "pages/app/AboutPage"
|
||||||
import { AddPage } from "pages/app/AddPage"
|
import { AddPage } from "pages/app/AddPage"
|
||||||
import { CategoryDetailsPage } from "pages/app/CategoryDetailsPage"
|
import { CategoryDetailsPage } from "pages/app/CategoryDetailsPage"
|
||||||
import { FeedDetailsPage } from "pages/app/FeedDetailsPage"
|
import { FeedDetailsPage } from "pages/app/FeedDetailsPage"
|
||||||
@@ -81,6 +82,7 @@ function AppRoutes() {
|
|||||||
<Route path="users" element={<AdminUsersPage />} />
|
<Route path="users" element={<AdminUsersPage />} />
|
||||||
<Route path="metrics" element={<MetricsPage />} />
|
<Route path="metrics" element={<MetricsPage />} />
|
||||||
</Route>
|
</Route>
|
||||||
|
<Route path="about" element={<AboutPage />} />
|
||||||
</Route>
|
</Route>
|
||||||
<Route path="*" element={<Navigate to="/" replace />} />
|
<Route path="*" element={<Navigate to="/" replace />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ export const redirectToAdminUsers = createAsyncThunk("redirect/admin/users", (_,
|
|||||||
export const redirectToMetrics = createAsyncThunk("redirect/admin/metrics", (_, thunkApi) =>
|
export const redirectToMetrics = createAsyncThunk("redirect/admin/metrics", (_, thunkApi) =>
|
||||||
thunkApi.dispatch(redirectTo("/app/admin/metrics"))
|
thunkApi.dispatch(redirectTo("/app/admin/metrics"))
|
||||||
)
|
)
|
||||||
|
export const redirectToAbout = createAsyncThunk("redirect/about", (_, thunkApi) => thunkApi.dispatch(redirectTo("/app/about")))
|
||||||
|
|
||||||
export const redirectSlice = createSlice({
|
export const redirectSlice = createSlice({
|
||||||
name: "redirect",
|
name: "redirect",
|
||||||
|
|||||||
134
commafeed-client/src/components/KeyboardShortcutsHelp.tsx
Normal file
134
commafeed-client/src/components/KeyboardShortcutsHelp.tsx
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
import { Trans } from "@lingui/macro"
|
||||||
|
import { Kbd, Table } from "@mantine/core"
|
||||||
|
|
||||||
|
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>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>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<Trans>Toggle read status of current entry</Trans>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<Kbd>M</Kbd>
|
||||||
|
</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>G</Kbd>
|
||||||
|
<span> </span>
|
||||||
|
<Kbd>U</Kbd>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<Trans>Show keyboard shortcut help</Trans>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<Kbd>?</Kbd>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</Table>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { t } from "@lingui/macro"
|
||||||
|
import { openModal } from "@mantine/modals"
|
||||||
import { Constants } from "app/constants"
|
import { Constants } from "app/constants"
|
||||||
import {
|
import {
|
||||||
loadMoreEntries,
|
loadMoreEntries,
|
||||||
@@ -10,6 +12,7 @@ import {
|
|||||||
} from "app/slices/entries"
|
} from "app/slices/entries"
|
||||||
import { redirectToRootCategory } from "app/slices/redirect"
|
import { redirectToRootCategory } from "app/slices/redirect"
|
||||||
import { useAppDispatch, useAppSelector } from "app/store"
|
import { useAppDispatch, useAppSelector } from "app/store"
|
||||||
|
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
|
||||||
import { Loader } from "components/Loader"
|
import { Loader } from "components/Loader"
|
||||||
import { useMousetrap } from "hooks/useMousetrap"
|
import { useMousetrap } from "hooks/useMousetrap"
|
||||||
import { useEffect, useRef } from "react"
|
import { useEffect, useRef } from "react"
|
||||||
@@ -129,6 +132,9 @@ export function FeedEntries() {
|
|||||||
useMousetrap("g a", () => {
|
useMousetrap("g a", () => {
|
||||||
dispatch(redirectToRootCategory())
|
dispatch(redirectToRootCategory())
|
||||||
})
|
})
|
||||||
|
useMousetrap("?", () => {
|
||||||
|
openModal({ title: t`Keyboard shortcuts`, size: "xl", children: <KeyboardShortcutsHelp /> })
|
||||||
|
})
|
||||||
|
|
||||||
if (!entries) return <Loader />
|
if (!entries) return <Loader />
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
|
import { t } from "@lingui/macro"
|
||||||
import { Select, SelectItem, SelectProps } from "@mantine/core"
|
import { Select, SelectItem, SelectProps } from "@mantine/core"
|
||||||
import { Constants } from "app/constants"
|
import { Constants } from "app/constants"
|
||||||
import { useAppSelector } from "app/store"
|
import { useAppSelector } from "app/store"
|
||||||
import { flattenCategoryTree } from "app/utils"
|
import { flattenCategoryTree } from "app/utils"
|
||||||
|
|
||||||
export function CategorySelect(props: Partial<SelectProps>) {
|
type CategorySelectProps = Partial<SelectProps> & { withAll?: boolean }
|
||||||
|
|
||||||
|
export function CategorySelect(props: CategorySelectProps) {
|
||||||
const rootCategory = useAppSelector(state => state.tree.rootCategory)
|
const rootCategory = useAppSelector(state => state.tree.rootCategory)
|
||||||
const categories = rootCategory && flattenCategoryTree(rootCategory)
|
const categories = rootCategory && flattenCategoryTree(rootCategory)
|
||||||
const selectData: SelectItem[] | undefined = categories
|
const selectData: SelectItem[] | undefined = categories
|
||||||
@@ -13,6 +16,12 @@ export function CategorySelect(props: Partial<SelectProps>) {
|
|||||||
label: c.name,
|
label: c.name,
|
||||||
value: c.id,
|
value: c.id,
|
||||||
}))
|
}))
|
||||||
|
if (props.withAll) {
|
||||||
|
selectData?.unshift({
|
||||||
|
label: t`All`,
|
||||||
|
value: Constants.categoryIds.all,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return <Select {...props} data={selectData ?? []} disabled={!selectData} />
|
return <Select {...props} data={selectData ?? []} disabled={!selectData} />
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Trans } from "@lingui/macro"
|
import { Trans } from "@lingui/macro"
|
||||||
import { Divider, Menu, useMantineColorScheme } from "@mantine/core"
|
import { Divider, Menu, useMantineColorScheme } from "@mantine/core"
|
||||||
import { redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
|
import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
|
||||||
import { useAppDispatch, useAppSelector } from "app/store"
|
import { useAppDispatch, useAppSelector } from "app/store"
|
||||||
import { useState } from "react"
|
import { useState } from "react"
|
||||||
import { TbChartLine, TbMoon, TbPower, TbSettings, TbSun, TbUsers } from "react-icons/tb"
|
import { TbChartLine, TbHelp, TbMoon, TbPower, TbSettings, TbSun, TbUsers } from "react-icons/tb"
|
||||||
|
|
||||||
interface ProfileMenuProps {
|
interface ProfileMenuProps {
|
||||||
control: React.ReactElement
|
control: React.ReactElement
|
||||||
@@ -65,6 +65,15 @@ export function ProfileMenu(props: ProfileMenuProps) {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
<Divider />
|
<Divider />
|
||||||
|
<Menu.Item
|
||||||
|
icon={<TbHelp />}
|
||||||
|
onClick={() => {
|
||||||
|
dispatch(redirectToAbout())
|
||||||
|
setOpened(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Trans>About</Trans>
|
||||||
|
</Menu.Item>
|
||||||
<Menu.Item icon={<TbPower />} onClick={logout}>
|
<Menu.Item icon={<TbPower />} onClick={logout}>
|
||||||
<Trans>Logout</Trans>
|
<Trans>Logout</Trans>
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ msgstr "<0>Need an account?</0><1>Sign up!</1>"
|
|||||||
msgid "API key"
|
msgid "API key"
|
||||||
msgstr "API key"
|
msgstr "API key"
|
||||||
|
|
||||||
|
#: src/components/header/ProfileMenu.tsx
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "About"
|
||||||
|
msgstr "About"
|
||||||
|
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Actions"
|
msgstr "Actions"
|
||||||
@@ -51,6 +56,7 @@ msgstr "Add user"
|
|||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
|
#: src/components/content/add/CategorySelect.tsx
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
#: src/components/sidebar/Tree.tsx
|
#: src/components/sidebar/Tree.tsx
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -104,6 +110,10 @@ msgstr "Back"
|
|||||||
msgid "Back to log in"
|
msgid "Back to log in"
|
||||||
msgstr "Back to log in"
|
msgstr "Back to log in"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Browser extentions"
|
||||||
|
msgstr "Browser extentions"
|
||||||
|
|
||||||
#: src/components/admin/UserEdit.tsx
|
#: src/components/admin/UserEdit.tsx
|
||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
#: src/components/content/add/ImportOpml.tsx
|
#: src/components/content/add/ImportOpml.tsx
|
||||||
@@ -121,6 +131,7 @@ msgstr "Cancel"
|
|||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
#: src/pages/app/FeedDetailsPage.tsx
|
#: src/pages/app/FeedDetailsPage.tsx
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Category"
|
msgstr "Category"
|
||||||
@@ -133,6 +144,18 @@ msgstr "Changing password will generate a new API key"
|
|||||||
msgid "Check that the feed is working"
|
msgid "Check that the feed is working"
|
||||||
msgstr "Check that the feed is working"
|
msgstr "Check that the feed is working"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
|
||||||
|
msgstr "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
|
||||||
|
|
||||||
|
#: 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})"
|
||||||
|
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
@@ -182,6 +205,10 @@ msgstr "Display"
|
|||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Download"
|
msgstr "Download"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Drag link to bookmark bar"
|
||||||
|
msgstr "Drag link to bookmark bar"
|
||||||
|
|
||||||
#: src/components/admin/UserEdit.tsx
|
#: src/components/admin/UserEdit.tsx
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
@@ -204,6 +231,10 @@ msgstr "Edit user"
|
|||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Enabled"
|
msgstr "Enabled"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Enter"
|
||||||
|
msgstr "Enter"
|
||||||
|
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
msgid "Enter your current password to change profile settings"
|
msgid "Enter your current password to change profile settings"
|
||||||
msgstr "Enter your current password to change profile settings"
|
msgstr "Enter your current password to change profile settings"
|
||||||
@@ -252,6 +283,14 @@ msgstr "Generate new API key"
|
|||||||
msgid "Generated feed url"
|
msgid "Generated feed url"
|
||||||
msgstr "Generated feed url"
|
msgstr "Generated feed url"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Go to the All view"
|
||||||
|
msgstr "Go to the All view"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Goodies"
|
||||||
|
msgstr "Goodies"
|
||||||
|
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
msgid "Id"
|
msgid "Id"
|
||||||
msgstr "Id"
|
msgstr "Id"
|
||||||
@@ -260,6 +299,14 @@ msgstr "Id"
|
|||||||
msgid "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
|
msgid "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
|
||||||
msgstr "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
|
msgstr "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
|
||||||
|
msgstr "If you encounter an issue, please report it on the issues page of the GitHub project."
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
|
||||||
|
msgstr "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
|
||||||
|
|
||||||
#: src/components/content/add/ImportOpml.tsx
|
#: src/components/content/add/ImportOpml.tsx
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
@@ -268,6 +315,11 @@ msgstr "Import"
|
|||||||
msgid "Keep unread"
|
msgid "Keep unread"
|
||||||
msgstr "Keep unread"
|
msgstr "Keep unread"
|
||||||
|
|
||||||
|
#: src/components/content/FeedEntries.tsx
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Keyboard shortcuts"
|
||||||
|
msgstr "Keyboard shortcuts"
|
||||||
|
|
||||||
#: src/components/settings/DisplaySettings.tsx
|
#: src/components/settings/DisplaySettings.tsx
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Language"
|
msgstr "Language"
|
||||||
@@ -289,6 +341,10 @@ msgstr "Last refresh message"
|
|||||||
msgid "Link"
|
msgid "Link"
|
||||||
msgstr "Link"
|
msgstr "Link"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Link to the API documentation."
|
||||||
|
msgstr "Link to the API documentation."
|
||||||
|
|
||||||
#: src/hooks/useAppLoading.ts
|
#: src/hooks/useAppLoading.ts
|
||||||
msgid "Loading profile..."
|
msgid "Loading profile..."
|
||||||
msgstr "Loading profile..."
|
msgstr "Loading profile..."
|
||||||
@@ -320,6 +376,7 @@ msgid "Mark all as read"
|
|||||||
msgstr "Mark all as read"
|
msgstr "Mark all as read"
|
||||||
|
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
msgid "Mark all entries as read"
|
msgid "Mark all entries as read"
|
||||||
msgstr "Mark all entries as read"
|
msgstr "Mark all entries as read"
|
||||||
|
|
||||||
@@ -327,6 +384,14 @@ msgstr "Mark all entries as read"
|
|||||||
msgid "Metrics"
|
msgid "Metrics"
|
||||||
msgstr "Metrics"
|
msgstr "Metrics"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Move the page down"
|
||||||
|
msgstr "Move the page down"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Move the page up"
|
||||||
|
msgstr "Move the page up"
|
||||||
|
|
||||||
#: src/components/RelativeDate.tsx
|
#: src/components/RelativeDate.tsx
|
||||||
#: src/pages/app/FeedDetailsPage.tsx
|
#: src/pages/app/FeedDetailsPage.tsx
|
||||||
msgid "N/A"
|
msgid "N/A"
|
||||||
@@ -339,10 +404,18 @@ msgstr "N/A"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Navigate to a subscription by entering its name"
|
||||||
|
msgstr "Navigate to a subscription by entering its name"
|
||||||
|
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr "New password"
|
msgstr "New password"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Newest first"
|
||||||
|
msgstr "Newest first"
|
||||||
|
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Next"
|
msgstr "Next"
|
||||||
@@ -351,6 +424,10 @@ msgstr "Next"
|
|||||||
msgid "Next refresh"
|
msgid "Next refresh"
|
||||||
msgstr "Next refresh"
|
msgstr "Next refresh"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Next unread item bookmarklet"
|
||||||
|
msgstr "Next unread item bookmarklet"
|
||||||
|
|
||||||
#: src/pages/app/FeedEntriesPage.tsx
|
#: src/pages/app/FeedEntriesPage.tsx
|
||||||
msgid "No more entries"
|
msgid "No more entries"
|
||||||
msgstr "No more entries"
|
msgstr "No more entries"
|
||||||
@@ -372,14 +449,42 @@ msgstr "OPML export"
|
|||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML file"
|
msgstr "OPML file"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Oldest first"
|
||||||
|
msgstr "Oldest first"
|
||||||
|
|
||||||
#: src/pages/ErrorPage.tsx
|
#: src/pages/ErrorPage.tsx
|
||||||
msgid "Oops!"
|
msgid "Oops!"
|
||||||
msgstr "Oops!"
|
msgstr "Oops!"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open current entry in a new tab"
|
||||||
|
msgstr "Open current entry in a new tab"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open current entry in a new tab in the background"
|
||||||
|
msgstr "Open current entry in a new tab in the background"
|
||||||
|
|
||||||
#: src/components/content/FeedEntryFooter.tsx
|
#: src/components/content/FeedEntryFooter.tsx
|
||||||
msgid "Open link"
|
msgid "Open link"
|
||||||
msgstr "Open link"
|
msgstr "Open link"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open next entry"
|
||||||
|
msgstr "Open next entry"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open previous entry"
|
||||||
|
msgstr "Open previous entry"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open/close current entry"
|
||||||
|
msgstr "Open/close current entry"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Order"
|
||||||
|
msgstr "Order"
|
||||||
|
|
||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
msgid "Parent"
|
msgid "Parent"
|
||||||
msgstr "Parent"
|
msgstr "Parent"
|
||||||
@@ -413,11 +518,16 @@ msgstr "Position"
|
|||||||
msgid "Profile"
|
msgid "Profile"
|
||||||
msgstr "Profile"
|
msgstr "Profile"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "REST API"
|
||||||
|
msgstr "REST API"
|
||||||
|
|
||||||
#: src/pages/auth/PasswordRecoveryPage.tsx
|
#: src/pages/auth/PasswordRecoveryPage.tsx
|
||||||
msgid "Recover password"
|
msgid "Recover password"
|
||||||
msgstr "Recover password"
|
msgstr "Recover password"
|
||||||
|
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Refresh"
|
msgstr "Refresh"
|
||||||
|
|
||||||
@@ -449,6 +559,15 @@ msgstr "Settings"
|
|||||||
msgid "Settings saved."
|
msgid "Settings saved."
|
||||||
msgstr "Settings saved."
|
msgstr "Settings saved."
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Shift"
|
||||||
|
msgstr "Shift"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Show keyboard shortcut help"
|
||||||
|
msgstr "Show keyboard shortcut help"
|
||||||
|
|
||||||
#: src/pages/auth/RegistrationPage.tsx
|
#: src/pages/auth/RegistrationPage.tsx
|
||||||
#: src/pages/auth/RegistrationPage.tsx
|
#: src/pages/auth/RegistrationPage.tsx
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
@@ -458,12 +577,21 @@ msgstr "Sign up"
|
|||||||
msgid "Something bad just happened..."
|
msgid "Something bad just happened..."
|
||||||
msgstr "Something bad just happened..."
|
msgstr "Something bad just happened..."
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Space"
|
||||||
|
msgstr "Space"
|
||||||
|
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
#: src/pages/app/AddPage.tsx
|
#: src/pages/app/AddPage.tsx
|
||||||
msgid "Subscribe"
|
msgid "Subscribe"
|
||||||
msgstr "Subscribe"
|
msgstr "Subscribe"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Subscribe URL"
|
||||||
|
msgstr "Subscribe URL"
|
||||||
|
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
msgid "Subscribe to the feed"
|
msgid "Subscribe to the feed"
|
||||||
msgstr "Subscribe to the feed"
|
msgstr "Subscribe to the feed"
|
||||||
@@ -480,6 +608,10 @@ msgstr "The URL for the feed you want to subscribe to. You can also use the webs
|
|||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
msgstr "Theme"
|
msgstr "Theme"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Toggle read status of current entry"
|
||||||
|
msgstr "Toggle read status of current entry"
|
||||||
|
|
||||||
#: src/pages/auth/LoginPage.tsx
|
#: src/pages/auth/LoginPage.tsx
|
||||||
msgid "Try out CommaFeed with the demo account: demo/demo"
|
msgid "Try out CommaFeed with the demo account: demo/demo"
|
||||||
msgstr "Try out CommaFeed with the demo account: demo/demo"
|
msgstr "Try out CommaFeed with the demo account: demo/demo"
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ msgstr "<0>Besoin d'un compte ?</0><1>Enregistrez-vous !</1>"
|
|||||||
msgid "API key"
|
msgid "API key"
|
||||||
msgstr "Clé API"
|
msgstr "Clé API"
|
||||||
|
|
||||||
|
#: src/components/header/ProfileMenu.tsx
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "About"
|
||||||
|
msgstr "A propos"
|
||||||
|
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Actions"
|
msgstr "Actions"
|
||||||
@@ -51,6 +56,7 @@ msgstr "Ajouter un utilisateur"
|
|||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Administrateur"
|
msgstr "Administrateur"
|
||||||
|
|
||||||
|
#: src/components/content/add/CategorySelect.tsx
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
#: src/components/sidebar/Tree.tsx
|
#: src/components/sidebar/Tree.tsx
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -104,6 +110,10 @@ msgstr "Retour"
|
|||||||
msgid "Back to log in"
|
msgid "Back to log in"
|
||||||
msgstr "Retour à la connexion"
|
msgstr "Retour à la connexion"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Browser extentions"
|
||||||
|
msgstr "Extensions pour navigateurs"
|
||||||
|
|
||||||
#: src/components/admin/UserEdit.tsx
|
#: src/components/admin/UserEdit.tsx
|
||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
#: src/components/content/add/ImportOpml.tsx
|
#: src/components/content/add/ImportOpml.tsx
|
||||||
@@ -121,6 +131,7 @@ msgstr "Annuler"
|
|||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
#: src/pages/app/FeedDetailsPage.tsx
|
#: src/pages/app/FeedDetailsPage.tsx
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Catégorie"
|
msgstr "Catégorie"
|
||||||
@@ -133,6 +144,18 @@ msgstr "Changer de mot de passe générera une nouvelle clé API"
|
|||||||
msgid "Check that the feed is working"
|
msgid "Check that the feed is working"
|
||||||
msgstr "Vérifie que le flux fonctionne"
|
msgstr "Vérifie que le flux fonctionne"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
|
||||||
|
msgstr "CommaFeed est un projet open-source. Les sources sont hébergées sur <0>GitHub</0>."
|
||||||
|
|
||||||
|
#: 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})"
|
||||||
|
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
@@ -182,6 +205,10 @@ msgstr "Affichage"
|
|||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Télécharger"
|
msgstr "Télécharger"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Drag link to bookmark bar"
|
||||||
|
msgstr "Déplacez le lien vers la barre de favoris"
|
||||||
|
|
||||||
#: src/components/admin/UserEdit.tsx
|
#: src/components/admin/UserEdit.tsx
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
@@ -204,6 +231,10 @@ msgstr "Modifier un utilisateur"
|
|||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Actif"
|
msgstr "Actif"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Enter"
|
||||||
|
msgstr "Entrer"
|
||||||
|
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
msgid "Enter your current password to change profile settings"
|
msgid "Enter your current password to change profile settings"
|
||||||
msgstr "Entrez votre mot de passe actuel pour changer les paramètres du profil"
|
msgstr "Entrez votre mot de passe actuel pour changer les paramètres du profil"
|
||||||
@@ -252,6 +283,14 @@ msgstr "Générer une nouvelle clé API"
|
|||||||
msgid "Generated feed url"
|
msgid "Generated feed url"
|
||||||
msgstr "URL du flux généré"
|
msgstr "URL du flux généré"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Go to the All view"
|
||||||
|
msgstr "Aller à la catégorie Tout"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Goodies"
|
||||||
|
msgstr "Extensions"
|
||||||
|
|
||||||
#: src/pages/admin/AdminUsersPage.tsx
|
#: src/pages/admin/AdminUsersPage.tsx
|
||||||
msgid "Id"
|
msgid "Id"
|
||||||
msgstr "Identifiant"
|
msgstr "Identifiant"
|
||||||
@@ -260,6 +299,14 @@ msgstr "Identifiant"
|
|||||||
msgid "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
|
msgid "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
|
||||||
msgstr "Si non vide, une expression évaluant à 'vrai' ou 'faux'. Si faux, les nouvelles entrées de ce flux seront marquées comme lues automatiquement."
|
msgstr "Si non vide, une expression évaluant à 'vrai' ou 'faux'. Si faux, les nouvelles entrées de ce flux seront marquées comme lues automatiquement."
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
|
||||||
|
msgstr "Si vous rencontrez un problème, merci de le signaler sur la page du projet GitHub."
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
|
||||||
|
msgstr "Si vous aimez ce projet, n'hésitez pas à faire un don pour encourager le développeur et aider à couvrir les coûts d'hébergement de la plate-forme."
|
||||||
|
|
||||||
#: src/components/content/add/ImportOpml.tsx
|
#: src/components/content/add/ImportOpml.tsx
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Importer"
|
msgstr "Importer"
|
||||||
@@ -268,6 +315,11 @@ msgstr "Importer"
|
|||||||
msgid "Keep unread"
|
msgid "Keep unread"
|
||||||
msgstr "Garder non lu"
|
msgstr "Garder non lu"
|
||||||
|
|
||||||
|
#: src/components/content/FeedEntries.tsx
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Keyboard shortcuts"
|
||||||
|
msgstr "Raccourcis clavier"
|
||||||
|
|
||||||
#: src/components/settings/DisplaySettings.tsx
|
#: src/components/settings/DisplaySettings.tsx
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Langue"
|
msgstr "Langue"
|
||||||
@@ -289,6 +341,10 @@ msgstr "Dernier message de mise à jour"
|
|||||||
msgid "Link"
|
msgid "Link"
|
||||||
msgstr "Lien"
|
msgstr "Lien"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Link to the API documentation."
|
||||||
|
msgstr "Lien vers la documentation de l'API."
|
||||||
|
|
||||||
#: src/hooks/useAppLoading.ts
|
#: src/hooks/useAppLoading.ts
|
||||||
msgid "Loading profile..."
|
msgid "Loading profile..."
|
||||||
msgstr "Chargement du profil ..."
|
msgstr "Chargement du profil ..."
|
||||||
@@ -320,6 +376,7 @@ msgid "Mark all as read"
|
|||||||
msgstr "Tout marquer comme lu"
|
msgstr "Tout marquer comme lu"
|
||||||
|
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
msgid "Mark all entries as read"
|
msgid "Mark all entries as read"
|
||||||
msgstr "Marquer toutes les entrées comme lues"
|
msgstr "Marquer toutes les entrées comme lues"
|
||||||
|
|
||||||
@@ -327,6 +384,14 @@ msgstr "Marquer toutes les entrées comme lues"
|
|||||||
msgid "Metrics"
|
msgid "Metrics"
|
||||||
msgstr "Métriques"
|
msgstr "Métriques"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Move the page down"
|
||||||
|
msgstr "Faites défiler la page vers le bas"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Move the page up"
|
||||||
|
msgstr "Faites défiler la page vers le haut"
|
||||||
|
|
||||||
#: src/components/RelativeDate.tsx
|
#: src/components/RelativeDate.tsx
|
||||||
#: src/pages/app/FeedDetailsPage.tsx
|
#: src/pages/app/FeedDetailsPage.tsx
|
||||||
msgid "N/A"
|
msgid "N/A"
|
||||||
@@ -339,10 +404,18 @@ msgstr "N/A"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Navigate to a subscription by entering its name"
|
||||||
|
msgstr "Naviguer vers un abonnement en entrant son nom"
|
||||||
|
|
||||||
#: src/components/settings/ProfileSettings.tsx
|
#: src/components/settings/ProfileSettings.tsx
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr "Nouveau mot de passe"
|
msgstr "Nouveau mot de passe"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Newest first"
|
||||||
|
msgstr "Plus récent en premier"
|
||||||
|
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Suivant"
|
msgstr "Suivant"
|
||||||
@@ -351,6 +424,10 @@ msgstr "Suivant"
|
|||||||
msgid "Next refresh"
|
msgid "Next refresh"
|
||||||
msgstr "Prochaine mise à jour"
|
msgstr "Prochaine mise à jour"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Next unread item bookmarklet"
|
||||||
|
msgstr "Bookmarklet vers le prochain article non lu"
|
||||||
|
|
||||||
#: src/pages/app/FeedEntriesPage.tsx
|
#: src/pages/app/FeedEntriesPage.tsx
|
||||||
msgid "No more entries"
|
msgid "No more entries"
|
||||||
msgstr "Plus d'entrées"
|
msgstr "Plus d'entrées"
|
||||||
@@ -372,14 +449,42 @@ msgstr "Export du fichier OPML"
|
|||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "Fichier OPML"
|
msgstr "Fichier OPML"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Oldest first"
|
||||||
|
msgstr "Du plus ancien au plus récent"
|
||||||
|
|
||||||
#: src/pages/ErrorPage.tsx
|
#: src/pages/ErrorPage.tsx
|
||||||
msgid "Oops!"
|
msgid "Oops!"
|
||||||
msgstr "Oups !"
|
msgstr "Oups !"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open current entry in a new tab"
|
||||||
|
msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open current entry in a new tab in the background"
|
||||||
|
msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet en arrière-plan"
|
||||||
|
|
||||||
#: src/components/content/FeedEntryFooter.tsx
|
#: src/components/content/FeedEntryFooter.tsx
|
||||||
msgid "Open link"
|
msgid "Open link"
|
||||||
msgstr "Ouvrir le lien"
|
msgstr "Ouvrir le lien"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open next entry"
|
||||||
|
msgstr "Ouvrir l'entrée suivante"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open previous entry"
|
||||||
|
msgstr "Ouvrir l'entrée précédente"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Open/close current entry"
|
||||||
|
msgstr "Ouvrir/fermer l'entrée actuelle"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Order"
|
||||||
|
msgstr "Ordre"
|
||||||
|
|
||||||
#: src/components/content/add/AddCategory.tsx
|
#: src/components/content/add/AddCategory.tsx
|
||||||
msgid "Parent"
|
msgid "Parent"
|
||||||
msgstr "Parent"
|
msgstr "Parent"
|
||||||
@@ -413,11 +518,16 @@ msgstr "Position"
|
|||||||
msgid "Profile"
|
msgid "Profile"
|
||||||
msgstr "Profil"
|
msgstr "Profil"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "REST API"
|
||||||
|
msgstr "API REST"
|
||||||
|
|
||||||
#: src/pages/auth/PasswordRecoveryPage.tsx
|
#: src/pages/auth/PasswordRecoveryPage.tsx
|
||||||
msgid "Recover password"
|
msgid "Recover password"
|
||||||
msgstr "Récupérer le mot de passe"
|
msgstr "Récupérer le mot de passe"
|
||||||
|
|
||||||
#: src/components/header/Header.tsx
|
#: src/components/header/Header.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Rafraîchir"
|
msgstr "Rafraîchir"
|
||||||
|
|
||||||
@@ -449,6 +559,15 @@ msgstr "Réglages"
|
|||||||
msgid "Settings saved."
|
msgid "Settings saved."
|
||||||
msgstr "Réglages enregistrés."
|
msgstr "Réglages enregistrés."
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Shift"
|
||||||
|
msgstr "Maj"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Show keyboard shortcut help"
|
||||||
|
msgstr "Montrer les raccourcis clavier"
|
||||||
|
|
||||||
#: src/pages/auth/RegistrationPage.tsx
|
#: src/pages/auth/RegistrationPage.tsx
|
||||||
#: src/pages/auth/RegistrationPage.tsx
|
#: src/pages/auth/RegistrationPage.tsx
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
@@ -458,12 +577,21 @@ msgstr "Créer un compte"
|
|||||||
msgid "Something bad just happened..."
|
msgid "Something bad just happened..."
|
||||||
msgstr "Quelque chose s'est mal passé..."
|
msgstr "Quelque chose s'est mal passé..."
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Space"
|
||||||
|
msgstr "Espace"
|
||||||
|
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
#: src/pages/app/AddPage.tsx
|
#: src/pages/app/AddPage.tsx
|
||||||
msgid "Subscribe"
|
msgid "Subscribe"
|
||||||
msgstr "S'abonner"
|
msgstr "S'abonner"
|
||||||
|
|
||||||
|
#: src/pages/app/AboutPage.tsx
|
||||||
|
msgid "Subscribe URL"
|
||||||
|
msgstr "URL pour s'abonner"
|
||||||
|
|
||||||
#: src/components/content/add/Subscribe.tsx
|
#: src/components/content/add/Subscribe.tsx
|
||||||
msgid "Subscribe to the feed"
|
msgid "Subscribe to the feed"
|
||||||
msgstr "S'abonner au flux"
|
msgstr "S'abonner au flux"
|
||||||
@@ -480,6 +608,10 @@ msgstr "L'URL du flux auquel vous souhaitez vous abonner. Vous pouvez aussi util
|
|||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
msgstr "Thème"
|
msgstr "Thème"
|
||||||
|
|
||||||
|
#: src/components/KeyboardShortcutsHelp.tsx
|
||||||
|
msgid "Toggle read status of current entry"
|
||||||
|
msgstr "Marquer l'entrée actuelle comme lue/non lue"
|
||||||
|
|
||||||
#: src/pages/auth/LoginPage.tsx
|
#: src/pages/auth/LoginPage.tsx
|
||||||
msgid "Try out CommaFeed with the demo account: demo/demo"
|
msgid "Try out CommaFeed with the demo account: demo/demo"
|
||||||
msgstr "Essayez CommaFeed avec le compte de démonstration : demo/demo"
|
msgstr "Essayez CommaFeed avec le compte de démonstration : demo/demo"
|
||||||
|
|||||||
159
commafeed-client/src/pages/app/AboutPage.tsx
Normal file
159
commafeed-client/src/pages/app/AboutPage.tsx
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
import { t, Trans } from "@lingui/macro"
|
||||||
|
import { Anchor, Box, Center, Container, Group, List, NativeSelect, SimpleGrid, Title } from "@mantine/core"
|
||||||
|
import { Constants } from "app/constants"
|
||||||
|
import { useAppSelector } from "app/store"
|
||||||
|
import { CategorySelect } from "components/content/add/CategorySelect"
|
||||||
|
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
|
||||||
|
import React, { useState } from "react"
|
||||||
|
import { TbHelp, TbKeyboard, TbPuzzle, TbRocket } from "react-icons/tb"
|
||||||
|
|
||||||
|
function Section(props: { title: string; icon: React.ReactNode; children: React.ReactNode }) {
|
||||||
|
return (
|
||||||
|
<Box my="xs">
|
||||||
|
<Group mb="xs">
|
||||||
|
<Box>{props.icon}</Box>
|
||||||
|
<Title order={3}>{props.title}</Title>
|
||||||
|
</Group>
|
||||||
|
<Box>{props.children}</Box>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function NextUnreadBookmarklet() {
|
||||||
|
const [categoryId, setCategoryId] = useState(Constants.categoryIds.all)
|
||||||
|
const [order, setOrder] = useState("desc")
|
||||||
|
const baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf("#"))
|
||||||
|
const href = `javascript:window.location.href='${baseUrl}next?category=${categoryId}&order=${order}&t='+new Date().getTime();`
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<CategorySelect value={categoryId} onChange={c => c && setCategoryId(c)} withAll description={t`Category`} />
|
||||||
|
<NativeSelect
|
||||||
|
data={[
|
||||||
|
{ value: "desc", label: t`Newest first` },
|
||||||
|
{ value: "asc", label: t`Oldest first` },
|
||||||
|
]}
|
||||||
|
value={order}
|
||||||
|
onChange={e => setOrder(e.target.value)}
|
||||||
|
description={t`Order`}
|
||||||
|
/>
|
||||||
|
<Trans>Drag link to bookmark bar</Trans>
|
||||||
|
<span> </span>
|
||||||
|
<Anchor href={href} target="_blank" rel="noreferrer">
|
||||||
|
<Trans>CommaFeed next unread item</Trans>
|
||||||
|
</Anchor>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function AboutPage() {
|
||||||
|
const version = useAppSelector(state => state.server.serverInfos?.version)
|
||||||
|
const revision = useAppSelector(state => state.server.serverInfos?.gitCommit)
|
||||||
|
return (
|
||||||
|
<Container size="xl">
|
||||||
|
<SimpleGrid cols={2} breakpoints={[{ maxWidth: Constants.layout.mobileBreakpoint, cols: 1 }]}>
|
||||||
|
<Section title={t`About`} icon={<TbHelp size={24} />}>
|
||||||
|
<Box>
|
||||||
|
<Trans>
|
||||||
|
CommaFeed version {version} ({revision})
|
||||||
|
</Trans>
|
||||||
|
</Box>
|
||||||
|
<Box>
|
||||||
|
<Trans>
|
||||||
|
CommaFeed is an open-source project. Sources are hosted on
|
||||||
|
<Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer">
|
||||||
|
GitHub
|
||||||
|
</Anchor>
|
||||||
|
.
|
||||||
|
</Trans>
|
||||||
|
</Box>
|
||||||
|
<Box>
|
||||||
|
<Trans>If you encounter an issue, please report it on the issues page of the GitHub project.</Trans>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
<Box mt="md">
|
||||||
|
<Trans>
|
||||||
|
If you like this project, please consider a donation to support the developer and help cover the costs of
|
||||||
|
keeping this website online.
|
||||||
|
</Trans>
|
||||||
|
|
||||||
|
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
|
||||||
|
<input type="hidden" name="cmd" value="_donations" />
|
||||||
|
<input type="hidden" name="business" value="9CNQHMJG2ZJVY" />
|
||||||
|
<input type="hidden" name="lc" value="US" />
|
||||||
|
<input type="hidden" name="item_name" value="CommaFeed" />
|
||||||
|
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted" />
|
||||||
|
<input type="hidden" name="currency_code" value="USD" />
|
||||||
|
<Center mt="md">
|
||||||
|
<Box mr="md">
|
||||||
|
<input
|
||||||
|
type="image"
|
||||||
|
src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif"
|
||||||
|
name="submit"
|
||||||
|
alt="PayPal - The safer, easier way to pay online!"
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<Box>
|
||||||
|
<select name="currency_code">
|
||||||
|
<option value="EUR">Euro</option>
|
||||||
|
<option value="USD">US Dollars</option>
|
||||||
|
</select>
|
||||||
|
</Box>
|
||||||
|
</Center>
|
||||||
|
</form>
|
||||||
|
</Box>
|
||||||
|
</Section>
|
||||||
|
<Section title={t`Keyboard shortcuts`} icon={<TbKeyboard size={24} />}>
|
||||||
|
<KeyboardShortcutsHelp />
|
||||||
|
</Section>
|
||||||
|
<Section title={t`Goodies`} icon={<TbPuzzle size={24} />}>
|
||||||
|
<List>
|
||||||
|
<List.Item>
|
||||||
|
<Trans>Browser extentions</Trans>
|
||||||
|
<List withPadding>
|
||||||
|
<List.Item>
|
||||||
|
<Anchor
|
||||||
|
href="https://addons.mozilla.org/en-US/firefox/addon/commafeed/"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Firefox
|
||||||
|
</Anchor>
|
||||||
|
</List.Item>
|
||||||
|
<List.Item>
|
||||||
|
<Anchor href="https://github.com/Athou/commafeed-chrome" target="_blank" rel="noreferrer">
|
||||||
|
Chrome
|
||||||
|
</Anchor>
|
||||||
|
</List.Item>
|
||||||
|
<List.Item>
|
||||||
|
<Anchor href="https://github.com/Athou/commafeed-opera" target="_blank" rel="noreferrer">
|
||||||
|
Opera
|
||||||
|
</Anchor>
|
||||||
|
</List.Item>
|
||||||
|
</List>
|
||||||
|
</List.Item>
|
||||||
|
<List.Item>
|
||||||
|
<Trans>Subscribe URL</Trans>
|
||||||
|
<span> </span>
|
||||||
|
<Anchor href="rest/feed/subscribe?url=FEED_URL_HERE" target="_blank" rel="noreferrer">
|
||||||
|
rest/feed/subscribe?url=FEED_URL_HERE
|
||||||
|
</Anchor>
|
||||||
|
</List.Item>
|
||||||
|
<List.Item>
|
||||||
|
<Trans>Next unread item bookmarklet</Trans>
|
||||||
|
<span> </span>
|
||||||
|
<Box ml="xl">
|
||||||
|
<NextUnreadBookmarklet />
|
||||||
|
</Box>
|
||||||
|
</List.Item>
|
||||||
|
</List>
|
||||||
|
</Section>
|
||||||
|
<Section title={t`REST API`} icon={<TbRocket size={24} />}>
|
||||||
|
<Anchor href="api/" target="_blank" rel="noreferrer">
|
||||||
|
<Trans>Link to the API documentation.</Trans>
|
||||||
|
</Anchor>
|
||||||
|
</Section>
|
||||||
|
</SimpleGrid>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user