Compare commits

...

18 Commits

Author SHA1 Message Date
Athou
c2f3e42867 Readme update 2023-04-25 08:57:55 +02:00
Athou
bd33369a41 Merge branch 'develop' 2023-04-25 08:48:49 +02:00
Athou
4f625d8ed5 add docker support 2023-04-25 07:48:52 +02:00
Athou
866fe56dd2 remove warning "HV000254: Missing parameter metadata" 2023-04-25 07:48:11 +02:00
Athou
5f37dbca4c fix env variables support, now works without having to change yml file 2023-04-24 20:28:58 +02:00
Athou
c49e617dfe lombok update 2023-04-24 18:56:47 +02:00
Athou
e763ffd4cf allow access to entries in json format with api key (fixes #1049) 2023-04-22 07:27:59 +02:00
Athou
20ab7dd3e1 readd bitcoin address 2023-03-16 17:09:12 +01:00
Jérémie Panzer
55741c6332 Merge pull request #1046 from dayuer/patch-1
Update zh.js
2023-03-13 16:41:01 +01:00
dayuer
42d85336a8 Update zh.js
Added some entry translations.
2023-03-13 23:33:05 +08:00
Athou
639b82f494 add goal to start typescript in watch mode, helps during big refactorings 2023-03-10 11:37:29 +01:00
Athou
5003c176a2 display parent category name in category selects (fixes #1045) 2023-03-07 08:40:02 +01:00
Athou
10bfbbec17 restore one-click list refresh (#1040) 2023-03-06 14:08:48 +01:00
Athou
3da900db7f add missing parenthesis in feed entry filtering example 2023-03-01 13:50:07 +01:00
Jérémie Panzer
274c5ae165 Merge pull request #1039 from bartschinski/patch-1
Update german translation in de.js
2023-02-10 10:35:31 +01:00
Phillip Bartschinski
39c4012a1a Update de.js
Add missing translations
2023-02-10 10:28:21 +01:00
Jérémie Panzer
754ac166e0 Merge pull request #1017 from tristianc/bugfix/builddir
Determine build directory from variable instead of hardcoding it.
2022-09-29 15:54:14 +02:00
Tristian Celestin
0b18334236 Determine build directory from variable instead of hardcoding it. 2022-09-29 09:49:20 -04:00
48 changed files with 437 additions and 294 deletions

6
.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
# ignore everything
*
# allow only what we need
!commafeed-server/target/commafeed.jar
!commafeed-server/config.yml.example

View File

@@ -1,28 +1,48 @@
name: Java CI name: Java CI
on: [push] on: [ push ]
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
java: ["8", "11", "17"] java: [ "8", "11", "17" ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Set up Java - name: Set up Java
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
java-version: ${{ matrix.java }} java-version: ${{ matrix.java }}
distribution: "temurin" distribution: "temurin"
cache: "maven" cache: "maven"
- name: Build with Maven - name: Build with Maven
run: mvn --batch-mode --update-snapshots verify run: mvn --batch-mode --update-snapshots verify
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
if: ${{ matrix.java == '8' }} if: ${{ matrix.java == '8' }}
with: with:
name: commafeed.jar name: commafeed.jar
path: commafeed-server/target/commafeed.jar path: commafeed-server/target/commafeed.jar
# Docker
- name: Login to Container Registry
if: ${{ github.ref_type == 'tag' && matrix.java == '8' }}
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker build and push
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.ref_type == 'tag' && matrix.java == '8' }}
tags: |
athou/commafeed:latest
athou/commafeed:${{ github.ref_name }}

12
Dockerfile Normal file
View File

@@ -0,0 +1,12 @@
FROM openjdk:17-alpine
RUN mkdir -p /commafeed/data
VOLUME /commafeed/data
ENV CF_SESSION_PATH=/commafeed/data/sessions
COPY commafeed-server/target/commafeed.jar .
COPY commafeed-server/config.yml.example config.yml
EXPOSE 8082
CMD ["java", "-Djava.net.preferIPv4Stack=true", "-jar", "commafeed.jar", "server", "config.yml"]

View File

@@ -16,7 +16,11 @@ Browser extensions:
## Deployment on your own server ## Deployment on your own server
### The very short version (download precompiled package) ### Docker
Docker images are built automatically and are available at https://hub.docker.com/r/athou/commafeed
### Download precompiled package
mkdir commafeed && cd commafeed mkdir commafeed && cd commafeed
wget https://github.com/Athou/commafeed/releases/download/3.0.0/commafeed.jar wget https://github.com/Athou/commafeed/releases/download/3.0.0/commafeed.jar
@@ -24,7 +28,10 @@ Browser extensions:
vi config.yml vi config.yml
java -Djava.net.preferIPv4Stack=true -jar commafeed.jar server config.yml java -Djava.net.preferIPv4Stack=true -jar commafeed.jar server config.yml
### The short version (build from sources) The server will listen on http://localhost:8082. The default
user is `admin` and the default password is `admin`.
### Build from sources
git clone https://github.com/Athou/commafeed.git git clone https://github.com/Athou/commafeed.git
cd commafeed cd commafeed
@@ -33,67 +40,33 @@ Browser extensions:
vi config.yml vi config.yml
java -Djava.net.preferIPv4Stack=true -jar commafeed-server/target/commafeed.jar server config.yml java -Djava.net.preferIPv4Stack=true -jar commafeed-server/target/commafeed.jar server config.yml
### The long version (same as the short version, but more detailed) The server will listen on http://localhost:8082. The default
user is `admin` and the default password is `admin`.
CommaFeed 2.0 has been rewritten to use Dropwizard and gulp instead of using tomee and wro4j. The latest version of the 1.x branch is available [here](https://github.com/Athou/commafeed/tree/1.x). ## Translation
For storage, you can either use an embedded file-based H2 database or an external MySQL, PostgreSQL or SQLServer database. Files for internationalization are
You also need the Java 1.8+ JDK in order to build the application. located [here](https://github.com/Athou/commafeed/tree/master/commafeed-client/src/locales).
To install the required packages to build CommaFeed on Ubuntu, issue the following commands
# if this commands works and returns a version >= 1.8.0 you're good to go and you can skip JDK installation
javac -version
# if openjdk-8-jdk is not available on your ubuntu version (14.04 LTS), add the following repo first
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install g++ build-essential openjdk-8-jdk
# Make sure java8 is the selected java version
sudo update-alternatives --config java
sudo update-alternatives --config javac
Clone this repository. If you don't have git you can download the sources as a zip file from [here](https://github.com/Athou/commafeed/archive/master.zip)
git clone https://github.com/Athou/commafeed.git
cd commafeed
Now build the application
./mvnw clean package
Copy `commafeed-server/config.yml.example` to `./config.yml` then edit the file to your liking.
Issue the following command to run the app, the server will listen by default on `http://localhost:8082`. The default user is `admin` and the default password is `admin`.
java -Djava.net.preferIPv4Stack=true -jar commafeed-server/target/commafeed.jar server config.yml
You can use a proxy http server such as nginx or apache.
## Translate CommaFeed into your language
Files for internationalization are located [here](https://github.com/Athou/commafeed/tree/master/commafeed-client/src/locales).
To add a new language: To add a new language:
- edit `commafeed-client/src/i18n.ts` - edit `commafeed-client/src/i18n.ts`
- add the new locale to the `locales` array. - add the new locale to the `locales` array.
- import the dayjs locale - import the dayjs locale
- edit `commafeed-client/.linguirc` and add the new locale to the `locales` array. - edit `commafeed-client/.linguirc` and add the new locale to the `locales` array.
- run `npm run i18n` and add translations to the newly created `commafeed-client/src/locales/[locale]/messages.po` file - run `npm run i18n` and add translations to the newly created `commafeed-client/src/locales/[locale]/messages.po` file
The name of the locale should be the two-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). The name of the locale should be the
two-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
## Local development ## Local development
- `git clone https://github.com/Athou/CommaFeed`
### Backend ### Backend
- Open `commafeed-server` in your preferred Java IDE. - Open `commafeed-server` in your preferred Java IDE.
- CommaFeed uses Lombok, you need the Lombok plugin for your IDE. - CommaFeed uses Lombok, you need the Lombok plugin for your IDE.
- If using Eclipse, Go to Window → Preferences → Maven → Annotation Processing and check "Automatically configure JDT APT" - If using Eclipse, Go to Window → Preferences → Maven → Annotation Processing and check "Automatically configure
JDT APT"
- Start `CommaFeedApplication.java` in debug mode with `server config.dev.yml` as arguments - Start `CommaFeedApplication.java` in debug mode with `server config.dev.yml` as arguments
### Frontend ### Frontend
@@ -101,11 +74,12 @@ The name of the locale should be the two-letters [ISO-639-1 language code](http:
- Open `commafeed-client` in your preferred JavaScript IDE. - Open `commafeed-client` in your preferred JavaScript IDE.
- run `npm install` - run `npm install`
- run `npm run dev` - run `npm run dev`
- the frontend server is now running at http://localhost:8082 and is proxying REST requests to the backend running on port 8083 - the frontend server is now running at http://localhost:8082 and is proxying REST requests to the backend running on
port 8083
## Copyright and license ## Copyright and license
Copyright 2013-2022 CommaFeed. Copyright 2013-2023 CommaFeed.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License. you may not use this work except in compliance with the License.

View File

@@ -5,6 +5,7 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite --host", "dev": "vite --host",
"dev:typescript": "tsc --watch",
"build": "npm run i18n:compile && tsc && vite build", "build": "npm run i18n:compile && tsc && vite build",
"preview": "vite preview", "preview": "vite preview",
"test": "vitest", "test": "vitest",

View File

@@ -97,4 +97,5 @@ export const Constants = {
mainScrollAreaId: "main-scroll-area-id", mainScrollAreaId: "main-scroll-area-id",
entryId: (entry: Entry) => `entry-id-${entry.id}`, entryId: (entry: Entry) => `entry-id-${entry.id}`,
}, },
bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e",
} }

View File

@@ -38,6 +38,7 @@ export interface ApplicationSettings {
export interface Category { export interface Category {
id: string id: string
parentId?: string parentId?: string
parentName?: string
name: string name: string
children: Category[] children: Category[]
feeds: Subscription[] feeds: Subscription[]

View File

@@ -4,16 +4,20 @@ 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"
type CategorySelectProps = Partial<SelectProps> & { withAll?: boolean } type CategorySelectProps = Partial<SelectProps> & {
withAll?: boolean
withoutCategoryIds?: string[]
}
export function CategorySelect(props: CategorySelectProps) { 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
?.filter(c => c.id !== Constants.categories.all.id) ?.filter(c => c.id !== Constants.categories.all.id)
.filter(c => !props.withoutCategoryIds || !props.withoutCategoryIds.includes(c.id))
.sort((c1, c2) => c1.name.localeCompare(c2.name)) .sort((c1, c2) => c1.name.localeCompare(c2.name))
.map(c => ({ .map(c => ({
label: c.name, label: c.parentName ? t`${c.name} (in ${c.parentName})` : c.name,
value: c.id, value: c.id,
})) }))
if (props.withAll) { if (props.withAll) {

View File

@@ -1,7 +1,7 @@
import { t } from "@lingui/macro" import { t } from "@lingui/macro"
import { ActionIcon, Center, Divider, Indicator, Popover, TextInput } from "@mantine/core" import { ActionIcon, Center, Divider, Indicator, Popover, TextInput } from "@mantine/core"
import { useForm } from "@mantine/form" import { useForm } from "@mantine/form"
import { search } from "app/slices/entries" import { reloadEntries, search } from "app/slices/entries"
import { changeReadingMode, changeReadingOrder } from "app/slices/user" import { changeReadingMode, changeReadingOrder } from "app/slices/user"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { ActionButton } from "components/ActionButtton" import { ActionButton } from "components/ActionButtton"
@@ -11,7 +11,6 @@ import { useEffect } from "react"
import { TbArrowDown, TbArrowUp, TbEye, TbEyeOff, TbRefresh, TbSearch, TbUser, TbX } from "react-icons/tb" import { TbArrowDown, TbArrowUp, TbEye, TbEyeOff, TbRefresh, TbSearch, TbUser, TbX } from "react-icons/tb"
import { MarkAllAsReadButton } from "./MarkAllAsReadButton" import { MarkAllAsReadButton } from "./MarkAllAsReadButton"
import { ProfileMenu } from "./ProfileMenu" import { ProfileMenu } from "./ProfileMenu"
import { RefreshMenu } from "./RefreshMenu"
function HeaderDivider() { function HeaderDivider() {
return <Divider orientation="vertical" /> return <Divider orientation="vertical" />
@@ -41,7 +40,7 @@ export function Header() {
return ( return (
<Center> <Center>
<ButtonToolbar> <ButtonToolbar>
<RefreshMenu control={<ActionButton icon={<TbRefresh size={iconSize} />} label={t`Refresh`} />} /> <ActionButton icon={<TbRefresh size={iconSize} />} label={t`Refresh`} onClick={() => dispatch(reloadEntries())} />
<MarkAllAsReadButton iconSize={iconSize} /> <MarkAllAsReadButton iconSize={iconSize} />
<HeaderDivider /> <HeaderDivider />

View File

@@ -1,11 +1,25 @@
import { Trans } from "@lingui/macro" import { t, Trans } from "@lingui/macro"
import { Box, Divider, Group, Menu, SegmentedControl, SegmentedControlItem, useMantineColorScheme } from "@mantine/core" import { Box, Divider, Group, Menu, SegmentedControl, SegmentedControlItem, useMantineColorScheme } from "@mantine/core"
import { showNotification } from "@mantine/notifications"
import { client } from "app/client"
import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect" import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
import { changeViewMode } from "app/slices/user" import { changeViewMode } from "app/slices/user"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
import { ViewMode } from "app/types" import { ViewMode } from "app/types"
import { useState } from "react" import { useState } from "react"
import { TbChartLine, TbHelp, TbLayoutList, TbList, TbMoon, TbNotes, TbPower, TbSettings, TbSun, TbUsers } from "react-icons/tb" import {
TbChartLine,
TbHelp,
TbLayoutList,
TbList,
TbMoon,
TbNotes,
TbPower,
TbSettings,
TbSun,
TbUsers,
TbWorldDownload,
} from "react-icons/tb"
interface ProfileMenuProps { interface ProfileMenuProps {
control: React.ReactElement control: React.ReactElement
@@ -56,6 +70,7 @@ const viewModeData: ViewModeControlItem[] = [
export function ProfileMenu(props: ProfileMenuProps) { export function ProfileMenu(props: ProfileMenuProps) {
const [opened, setOpened] = useState(false) const [opened, setOpened] = useState(false)
const viewMode = useAppSelector(state => state.user.settings?.viewMode) const viewMode = useAppSelector(state => state.user.settings?.viewMode)
const profile = useAppSelector(state => state.user.profile)
const admin = useAppSelector(state => state.user.profile?.admin) const admin = useAppSelector(state => state.user.profile?.admin)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const { colorScheme, toggleColorScheme } = useMantineColorScheme() const { colorScheme, toggleColorScheme } = useMantineColorScheme()
@@ -69,6 +84,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
<Menu position="bottom-end" closeOnItemClick={false} opened={opened} onChange={setOpened}> <Menu position="bottom-end" closeOnItemClick={false} opened={opened} onChange={setOpened}>
<Menu.Target>{props.control}</Menu.Target> <Menu.Target>{props.control}</Menu.Target>
<Menu.Dropdown> <Menu.Dropdown>
{profile && <Menu.Label>{profile.name}</Menu.Label>}
<Menu.Item <Menu.Item
icon={<TbSettings size={iconSize} />} icon={<TbSettings size={iconSize} />}
onClick={() => { onClick={() => {
@@ -78,6 +94,21 @@ export function ProfileMenu(props: ProfileMenuProps) {
> >
<Trans>Settings</Trans> <Trans>Settings</Trans>
</Menu.Item> </Menu.Item>
<Menu.Item
icon={<TbWorldDownload size={iconSize} />}
onClick={() =>
client.feed.refreshAll().then(() => {
showNotification({
message: t`Your feeds have been queued for refresh.`,
color: "green",
autoClose: 1000,
})
setOpened(false)
})
}
>
<Trans>Fetch all my feeds now</Trans>
</Menu.Item>
<Divider /> <Divider />
<Menu.Label> <Menu.Label>

View File

@@ -1,41 +0,0 @@
import { t, Trans } from "@lingui/macro"
import { Menu } from "@mantine/core"
import { showNotification } from "@mantine/notifications"
import { client } from "app/client"
import { reloadEntries } from "app/slices/entries"
import { useAppDispatch } from "app/store"
import { TbRotateClockwise, TbWorldDownload } from "react-icons/tb"
interface RefreshMenuProps {
control: React.ReactElement
}
const iconSize = 16
export function RefreshMenu(props: RefreshMenuProps) {
const dispatch = useAppDispatch()
return (
<Menu>
<Menu.Target>{props.control}</Menu.Target>
<Menu.Dropdown>
<Menu.Item icon={<TbRotateClockwise size={iconSize} />} onClick={() => dispatch(reloadEntries())}>
<Trans>Reload</Trans>
</Menu.Item>
<Menu.Item
icon={<TbWorldDownload size={iconSize} />}
onClick={() =>
client.feed.refreshAll().then(() =>
showNotification({
message: t`Your feeds have been queued for refresh.`,
color: "green",
})
)
}
>
<Trans>Fetch all my feeds now</Trans>
</Menu.Item>
</Menu.Dropdown>
</Menu>
)
}

View File

@@ -288,7 +288,7 @@ msgstr "موجز URL"
msgid "Feed name" msgid "Feed name"
msgstr "اسم الخلاصة" msgstr "اسم الخلاصة"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "تصفية التعبير" msgstr "تصفية التعبير"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "هل نسيت كلمة المرور؟" msgstr "هل نسيت كلمة المرور؟"
@@ -608,10 +612,6 @@ msgstr "تحديث"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "تم إغلاق التسجيلات في مثيل CommaFeed هذا" msgstr "تم إغلاق التسجيلات في مثيل CommaFeed هذا"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "موقع الكتروني"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "ليس لديك أي اشتراكات حتى الآن. " msgstr "ليس لديك أي اشتراكات حتى الآن. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "الملف مطلوب" msgstr "الملف مطلوب"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL del canal"
msgid "Feed name" msgid "Feed name"
msgstr "Nom del canal" msgstr "Nom del canal"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expressió de filtratge" msgstr "Expressió de filtratge"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Heu oblidat la contrasenya?" msgstr "Heu oblidat la contrasenya?"
@@ -608,10 +612,6 @@ msgstr "Actualitzar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Els registres estan tancats en aquesta instància de CommaFeed" msgstr "Els registres estan tancats en aquesta instància de CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Lloc web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Encara no teniu cap subscripció. " msgstr "Encara no teniu cap subscripció. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "el fitxer és necessari" msgstr "el fitxer és necessari"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL zdroje"
msgid "Feed name" msgid "Feed name"
msgstr "Název zdroje" msgstr "Název zdroje"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrování výrazu" msgstr "Filtrování výrazu"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Zapomněli jste heslo?" msgstr "Zapomněli jste heslo?"
@@ -608,10 +612,6 @@ msgstr "Obnovit"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "V této instanci CommaFeed jsou registrace uzavřeny" msgstr "V této instanci CommaFeed jsou registrace uzavřeny"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Webové stránky"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Zatím nemáte žádné předplatné. " msgstr "Zatím nemáte žádné předplatné. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "" msgstr ""
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL porthiant"
msgid "Feed name" msgid "Feed name"
msgstr "Enw porthiant" msgstr "Enw porthiant"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Hidlo mynegiant" msgstr "Hidlo mynegiant"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Wedi anghofio cyfrinair?" msgstr "Wedi anghofio cyfrinair?"
@@ -608,10 +612,6 @@ msgstr "Adnewyddu"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Mae cofrestriadau ar gau ar yr achos CommaFeed hwn" msgstr "Mae cofrestriadau ar gau ar yr achos CommaFeed hwn"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Gwefan"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Nid oes gennych unrhyw danysgrifiadau eto. " msgstr "Nid oes gennych unrhyw danysgrifiadau eto. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "mae angen y ffeil" msgstr "mae angen y ffeil"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr ""
msgid "Feed name" msgid "Feed name"
msgstr "Feednavn" msgstr "Feednavn"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerende udtryk" msgstr "Filtrerende udtryk"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glemt adgangskode?" msgstr "Glemt adgangskode?"
@@ -608,10 +612,6 @@ msgstr "Opdater"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er lukket på denne CommaFeed-instans" msgstr "Registreringer er lukket på denne CommaFeed-instans"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Hjemmeside"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Du har ingen abonnementer endnu. " msgstr "Du har ingen abonnementer endnu. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fil er påkrævet" msgstr "fil er påkrævet"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Feed-URL"
msgid "Feed name" msgid "Feed name"
msgstr "Feedname" msgstr "Feedname"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filterausdruck" msgstr "Filterausdruck"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Passwort vergessen?" msgstr "Passwort vergessen?"
@@ -608,10 +612,6 @@ msgstr "Aktualisieren"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registrierungen sind für diese CommaFeed-Instanz geschlossen" msgstr "Registrierungen sind für diese CommaFeed-Instanz geschlossen"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Webseite"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Sie haben noch keine Abonnements. " msgstr "Sie haben noch keine Abonnements. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "Datei ist erforderlich" msgstr "Datei ist erforderlich"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Feed URL"
msgid "Feed name" msgid "Feed name"
msgstr "Feed name" msgstr "Feed name"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "Fetch all my feeds now" msgstr "Fetch all my feeds now"
@@ -296,6 +296,10 @@ msgstr "Fetch all my feeds now"
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtering expression" msgstr "Filtering expression"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Forgot password?" msgstr "Forgot password?"
@@ -608,10 +612,6 @@ msgstr "Refresh"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registrations are closed on this CommaFeed instance" msgstr "Registrations are closed on this CommaFeed instance"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr "Reload"
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "Right click" msgstr "Right click"
@@ -792,10 +792,14 @@ msgstr "Website"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgstr "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "Your feeds have been queued for refresh." msgstr "Your feeds have been queued for refresh."
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "file is required" msgstr "file is required"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr "{0} (in {1})"

View File

@@ -288,7 +288,7 @@ msgstr "URL de fuente"
msgid "Feed name" msgid "Feed name"
msgstr "Nombre de alimentación" msgstr "Nombre de alimentación"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expresión de filtrado" msgstr "Expresión de filtrado"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "¿Olvidaste la contraseña?" msgstr "¿Olvidaste la contraseña?"
@@ -608,10 +612,6 @@ msgstr "Actualizar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Los registros están cerrados en esta instancia de CommaFeed" msgstr "Los registros están cerrados en esta instancia de CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Sitio web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Todavía no tienes ninguna suscripción. " msgstr "Todavía no tienes ninguna suscripción. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "archivo requerido" msgstr "archivo requerido"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL فید"
msgid "Feed name" msgid "Feed name"
msgstr "نام فید" msgstr "نام فید"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "بیان فیلتر" msgstr "بیان فیلتر"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "رمز عبور را فراموش کرده اید؟" msgstr "رمز عبور را فراموش کرده اید؟"
@@ -608,10 +612,6 @@ msgstr "تازه کردن"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "ثبت نام در این نمونه CommaFeed بسته شده است" msgstr "ثبت نام در این نمونه CommaFeed بسته شده است"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "وب سایت"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "شما هنوز هیچ اشتراکی ندارید. " msgstr "شما هنوز هیچ اشتراکی ندارید. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "فایل مورد نیاز است" msgstr "فایل مورد نیاز است"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Syötteen URL-osoite"
msgid "Feed name" msgid "Feed name"
msgstr "Syötteen nimi" msgstr "Syötteen nimi"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Suodattava lauseke" msgstr "Suodattava lauseke"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Unohditko salasanan?" msgstr "Unohditko salasanan?"
@@ -608,10 +612,6 @@ msgstr "Päivitä"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Tämän CommaFeed-esiintymän rekisteröinnit on suljettu" msgstr "Tämän CommaFeed-esiintymän rekisteröinnit on suljettu"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Verkkosivusto"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Sinulla ei ole vielä tilauksia. " msgstr "Sinulla ei ole vielä tilauksia. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "tiedosto vaaditaan" msgstr "tiedosto vaaditaan"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL du flux"
msgid "Feed name" msgid "Feed name"
msgstr "Nom du flux" msgstr "Nom du flux"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expression de filtrage" msgstr "Expression de filtrage"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Mot de passe oublié ?" msgstr "Mot de passe oublié ?"
@@ -608,10 +612,6 @@ msgstr "Rafraîchir"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Les inscriptions sont fermées sur cette instance de CommaFeed" msgstr "Les inscriptions sont fermées sur cette instance de CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Site web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Vous n'avez pas encore d'abonnements. Pourquoi ne pas essayer d'en ajouter un en cliquant sur le signe + en haut de la page ?" msgstr "Vous n'avez pas encore d'abonnements. Pourquoi ne pas essayer d'en ajouter un en cliquant sur le signe + en haut de la page ?"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fichier requis" msgstr "fichier requis"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL da fonte"
msgid "Feed name" msgid "Feed name"
msgstr "Nome do feed" msgstr "Nome do feed"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Expresión de filtrado" msgstr "Expresión de filtrado"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Esqueceches o contrasinal?" msgstr "Esqueceches o contrasinal?"
@@ -608,10 +612,6 @@ msgstr "Actualizar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Os rexistros están pechados nesta instancia de CommaFeed" msgstr "Os rexistros están pechados nesta instancia de CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Páxina web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Aínda non tes ningunha subscrición. " msgstr "Aínda non tes ningunha subscrición. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "é necesario o ficheiro" msgstr "é necesario o ficheiro"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr ""
msgid "Feed name" msgid "Feed name"
msgstr "Hírcsatorna neve" msgstr "Hírcsatorna neve"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Szűrő kifejezés" msgstr "Szűrő kifejezés"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Elfelejtette a jelszavát?" msgstr "Elfelejtette a jelszavát?"
@@ -608,10 +612,6 @@ msgstr "Frissítés"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "A regisztrációk le vannak zárva ezen a CommaFeed példányon" msgstr "A regisztrációk le vannak zárva ezen a CommaFeed példányon"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Webhely"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Még nincs előfizetése. " msgstr "Még nincs előfizetése. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fájl szükséges" msgstr "fájl szükséges"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL Umpan"
msgid "Feed name" msgid "Feed name"
msgstr "Nama umpan" msgstr "Nama umpan"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Memfilter ekspresi" msgstr "Memfilter ekspresi"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Lupa kata sandi?" msgstr "Lupa kata sandi?"
@@ -608,10 +612,6 @@ msgstr "Segarkan"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Pendaftaran ditutup pada instans CommaFeed ini" msgstr "Pendaftaran ditutup pada instans CommaFeed ini"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Situs Web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Anda belum memiliki langganan. " msgstr "Anda belum memiliki langganan. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "file diperlukan" msgstr "file diperlukan"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL feed"
msgid "Feed name" msgid "Feed name"
msgstr "Nome del feed" msgstr "Nome del feed"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Espressione filtrante" msgstr "Espressione filtrante"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Password dimenticata?" msgstr "Password dimenticata?"
@@ -608,10 +612,6 @@ msgstr "Aggiorna"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Le registrazioni sono chiuse su questa istanza CommaFeed" msgstr "Le registrazioni sono chiuse su questa istanza CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Sito web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Non hai ancora abbonamenti. " msgstr "Non hai ancora abbonamenti. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "è richiesto il file" msgstr "è richiesto il file"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "フィード URL"
msgid "Feed name" msgid "Feed name"
msgstr "フィード名" msgstr "フィード名"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "フィルタリング式" msgstr "フィルタリング式"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "パスワードをお忘れですか?" msgstr "パスワードをお忘れですか?"
@@ -608,10 +612,6 @@ msgstr "リフレッシュ"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "この CommaFeed インスタンスの登録は終了しています" msgstr "この CommaFeed インスタンスの登録は終了しています"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "ウェブサイト"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "まだサブスクリプションがありません。" msgstr "まだサブスクリプションがありません。"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "ファイルが必要です" msgstr "ファイルが必要です"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "피드 URL"
msgid "Feed name" msgid "Feed name"
msgstr "피드 이름" msgstr "피드 이름"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "필터링 표현식" msgstr "필터링 표현식"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "비밀번호를 잊으셨나요?" msgstr "비밀번호를 잊으셨나요?"
@@ -608,10 +612,6 @@ msgstr "새로 고침"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "이 CommaFeed 인스턴스에 대한 등록이 마감되었습니다." msgstr "이 CommaFeed 인스턴스에 대한 등록이 마감되었습니다."
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "웹사이트"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "아직 구독이 없습니다. " msgstr "아직 구독이 없습니다. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "파일이 필요합니다" msgstr "파일이 필요합니다"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL Suapan"
msgid "Feed name" msgid "Feed name"
msgstr "Nama suapan" msgstr "Nama suapan"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Ungkapan penapisan" msgstr "Ungkapan penapisan"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Lupa kata laluan?" msgstr "Lupa kata laluan?"
@@ -608,10 +612,6 @@ msgstr "Muat semula"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Pendaftaran ditutup pada contoh CommaFeed ini" msgstr "Pendaftaran ditutup pada contoh CommaFeed ini"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Laman web"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Anda belum mempunyai sebarang langganan lagi. " msgstr "Anda belum mempunyai sebarang langganan lagi. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fail diperlukan" msgstr "fail diperlukan"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Feed-URL"
msgid "Feed name" msgid "Feed name"
msgstr "Feednavn" msgstr "Feednavn"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerende uttrykk" msgstr "Filtrerende uttrykk"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glemt passord?" msgstr "Glemt passord?"
@@ -608,10 +612,6 @@ msgstr "Oppdater"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten" msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Nettsted"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Du har ingen abonnementer ennå. " msgstr "Du har ingen abonnementer ennå. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fil kreves" msgstr "fil kreves"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Feed-URL"
msgid "Feed name" msgid "Feed name"
msgstr "Feednaam" msgstr "Feednaam"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Uitdrukking filteren" msgstr "Uitdrukking filteren"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Wachtwoord vergeten?" msgstr "Wachtwoord vergeten?"
@@ -608,10 +612,6 @@ msgstr "Vernieuwen"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registraties zijn gesloten op deze CommaFeed-instantie" msgstr "Registraties zijn gesloten op deze CommaFeed-instantie"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr ""
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Je hebt nog geen abonnementen. " msgstr "Je hebt nog geen abonnementen. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "bestand is vereist" msgstr "bestand is vereist"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Feed-URL"
msgid "Feed name" msgid "Feed name"
msgstr "Feednavn" msgstr "Feednavn"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerende uttrykk" msgstr "Filtrerende uttrykk"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glemt passord?" msgstr "Glemt passord?"
@@ -608,10 +612,6 @@ msgstr "Oppdater"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten" msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Nettsted"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Du har ingen abonnementer ennå. " msgstr "Du har ingen abonnementer ennå. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fil kreves" msgstr "fil kreves"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL kanału"
msgid "Feed name" msgid "Feed name"
msgstr "nazwa kanału" msgstr "nazwa kanału"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Wyrażenie filtrujące" msgstr "Wyrażenie filtrujące"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Zapomniałeś hasła?" msgstr "Zapomniałeś hasła?"
@@ -608,10 +612,6 @@ msgstr "Odśwież"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Rejestracje są zamknięte w tej instancji CommaFeed" msgstr "Rejestracje są zamknięte w tej instancji CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Strona internetowa"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Nie masz jeszcze żadnych subskrypcji. " msgstr "Nie masz jeszcze żadnych subskrypcji. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "plik jest wymagany" msgstr "plik jest wymagany"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL do feed"
msgid "Feed name" msgid "Feed name"
msgstr "Nome do feed" msgstr "Nome do feed"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrando expressão" msgstr "Filtrando expressão"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Esqueceu a senha?" msgstr "Esqueceu a senha?"
@@ -608,10 +612,6 @@ msgstr "Atualizar"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Os registros estão fechados nesta instância do CommaFeed" msgstr "Os registros estão fechados nesta instância do CommaFeed"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Site"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Você ainda não tem nenhuma assinatura. " msgstr "Você ainda não tem nenhuma assinatura. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "o arquivo é obrigatório" msgstr "o arquivo é obrigatório"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL-адрес фида"
msgid "Feed name" msgid "Feed name"
msgstr "Имя фида" msgstr "Имя фида"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Выражение фильтрации" msgstr "Выражение фильтрации"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Забыли пароль?" msgstr "Забыли пароль?"
@@ -608,10 +612,6 @@ msgstr "Обновить"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Регистрация закрыта для этого экземпляра CommaFeed." msgstr "Регистрация закрыта для этого экземпляра CommaFeed."
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Веб-сайт"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "У вас пока нет подписок. " msgstr "У вас пока нет подписок. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "требуется файл" msgstr "требуется файл"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "URL informačného kanála"
msgid "Feed name" msgid "Feed name"
msgstr "Názov informačného kanála" msgstr "Názov informačného kanála"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrovanie výrazu" msgstr "Filtrovanie výrazu"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Zabudli ste heslo?" msgstr "Zabudli ste heslo?"
@@ -608,10 +612,6 @@ msgstr "Obnoviť"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "V tejto inštancii CommaFeed sú registrácie uzavreté" msgstr "V tejto inštancii CommaFeed sú registrácie uzavreté"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Webová stránka"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Zatiaľ nemáte žiadne odbery. " msgstr "Zatiaľ nemáte žiadne odbery. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "" msgstr ""
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Flödes-URL"
msgid "Feed name" msgid "Feed name"
msgstr "Flödesnamn" msgstr "Flödesnamn"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtrerande uttryck" msgstr "Filtrerande uttryck"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Glömt lösenord?" msgstr "Glömt lösenord?"
@@ -608,10 +612,6 @@ msgstr "Uppdatera"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Registreringar är stängda på denna CommaFeed-instans" msgstr "Registreringar är stängda på denna CommaFeed-instans"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Webbplats"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Du har inga prenumerationer än. " msgstr "Du har inga prenumerationer än. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "fil krävs" msgstr "fil krävs"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "Feed URL'si"
msgid "Feed name" msgid "Feed name"
msgstr "Yayın adı" msgstr "Yayın adı"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "Filtreleme ifadesi" msgstr "Filtreleme ifadesi"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Parolanızı mı unuttunuz?" msgstr "Parolanızı mı unuttunuz?"
@@ -608,10 +612,6 @@ msgstr "Yenile"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "Bu CommaFeed örneğinde kayıtlar kapalı" msgstr "Bu CommaFeed örneğinde kayıtlar kapalı"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "Web sitesi"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "Henüz aboneliğiniz yok. " msgstr "Henüz aboneliğiniz yok. "
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "dosya gerekli" msgstr "dosya gerekli"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -288,7 +288,7 @@ msgstr "供稿网址"
msgid "Feed name" msgid "Feed name"
msgstr "提要名称" msgstr "提要名称"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Fetch all my feeds now" msgid "Fetch all my feeds now"
msgstr "" msgstr ""
@@ -296,6 +296,10 @@ msgstr ""
msgid "Filtering expression" msgid "Filtering expression"
msgstr "过滤表达式" msgstr "过滤表达式"
#: src/pages/app/AboutPage.tsx
msgid "For those of you who prefer bitcoin, here is the address: {bitcoinAddress}"
msgstr ""
#: src/pages/auth/LoginPage.tsx #: src/pages/auth/LoginPage.tsx
msgid "Forgot password?" msgid "Forgot password?"
msgstr "忘记密码?" msgstr "忘记密码?"
@@ -608,10 +612,6 @@ msgstr "刷新"
msgid "Registrations are closed on this CommaFeed instance" msgid "Registrations are closed on this CommaFeed instance"
msgstr "此 CommaFeed 实例上的注册已关闭" msgstr "此 CommaFeed 实例上的注册已关闭"
#: src/components/header/RefreshMenu.tsx
msgid "Reload"
msgstr ""
#: src/components/KeyboardShortcutsHelp.tsx #: src/components/KeyboardShortcutsHelp.tsx
msgid "Right click" msgid "Right click"
msgstr "" msgstr ""
@@ -792,10 +792,14 @@ msgstr "网站"
msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?" msgid "You don't have any subscriptions yet. Why not try adding one by clicking on the + sign at the top of the page?"
msgstr "您还没有任何订阅。" msgstr "您还没有任何订阅。"
#: src/components/header/RefreshMenu.tsx #: src/components/header/ProfileMenu.tsx
msgid "Your feeds have been queued for refresh." msgid "Your feeds have been queued for refresh."
msgstr "" msgstr ""
#: src/components/content/add/ImportOpml.tsx #: src/components/content/add/ImportOpml.tsx
msgid "file is required" msgid "file is required"
msgstr "文件是必需的" msgstr "文件是必需的"
#: src/components/content/add/CategorySelect.tsx
msgid "{0} (in {1})"
msgstr ""

View File

@@ -1,5 +1,5 @@
import { t, Trans } from "@lingui/macro" import { t, Trans } from "@lingui/macro"
import { Anchor, Box, Center, Container, createStyles, List, NativeSelect, SimpleGrid, Title } from "@mantine/core" import { Anchor, Box, Center, Code, Container, createStyles, List, NativeSelect, SimpleGrid, Title } from "@mantine/core"
import { Constants } from "app/constants" import { Constants } from "app/constants"
import { redirectToApiDocumentation } from "app/slices/redirect" import { redirectToApiDocumentation } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store" import { useAppDispatch, useAppSelector } from "app/store"
@@ -57,6 +57,7 @@ function NextUnreadBookmarklet() {
) )
} }
const bitcoinAddress = <Code>{Constants.bitcoinWalletAddress}</Code>
export function AboutPage() { export function AboutPage() {
const version = useAppSelector(state => state.server.serverInfos?.version) const version = useAppSelector(state => state.server.serverInfos?.version)
const revision = useAppSelector(state => state.server.serverInfos?.gitCommit) const revision = useAppSelector(state => state.server.serverInfos?.gitCommit)
@@ -70,7 +71,7 @@ export function AboutPage() {
CommaFeed version {version} ({revision}) CommaFeed version {version} ({revision})
</Trans> </Trans>
</Box> </Box>
<Box> <Box mt="md">
<Trans> <Trans>
CommaFeed is an open-source project. Sources are hosted on&nbsp; CommaFeed is an open-source project. Sources are hosted on&nbsp;
<Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer"> <Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer">
@@ -114,6 +115,9 @@ export function AboutPage() {
</Center> </Center>
</form> </form>
</Box> </Box>
<Box mt="xs">
<Trans>For those of you who prefer bitcoin, here is the address: {bitcoinAddress}</Trans>
</Box>
</Section> </Section>
<Section title={t`Goodies`} icon={<TbPuzzle size={24} />}> <Section title={t`Goodies`} icon={<TbPuzzle size={24} />}>
<List> <List>

View File

@@ -109,7 +109,12 @@ export function CategoryDetailsPage() {
{editable && ( {editable && (
<> <>
<TextInput label={t`Name`} {...form.getInputProps("name")} required /> <TextInput label={t`Name`} {...form.getInputProps("name")} required />
<CategorySelect label={t`Parent Category`} {...form.getInputProps("parentId")} clearable /> <CategorySelect
label={t`Parent Category`}
{...form.getInputProps("parentId")}
clearable
withoutCategoryIds={[id]}
/>
<NumberInput label={t`Position`} {...form.getInputProps("position")} required min={0} /> <NumberInput label={t`Position`} {...form.getInputProps("position")} required min={0} />
</> </>
)} )}

View File

@@ -17,7 +17,7 @@ import { TbDeviceFloppy, TbTrash } from "react-icons/tb"
import { useParams } from "react-router-dom" import { useParams } from "react-router-dom"
function FilteringExpressionDescription() { function FilteringExpressionDescription() {
const example = <Code>url.contains('youtube') or (author eq 'athou' and title.contains('github')</Code> const example = <Code>url.contains('youtube') or (author eq 'athou' and title.contains('github'))</Code>
return ( return (
<div> <div>
<div> <div>

View File

@@ -87,7 +87,7 @@ app:
database: database:
driverClass: org.h2.Driver driverClass: org.h2.Driver
url: jdbc:h2:/home/commafeed/db url: jdbc:h2:/commafeed/data/db
user: sa user: sa
password: sa password: sa
properties: properties:

View File

@@ -38,6 +38,13 @@
</resources> </resources>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
@@ -229,7 +236,7 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.22</version> <version>1.18.26</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -285,6 +292,11 @@
<artifactId>dropwizard-websocket-jee7-bundle</artifactId> <artifactId>dropwizard-websocket-jee7-bundle</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>io.whitfin</groupId>
<artifactId>dropwizard-environment-substitutor</artifactId>
<version>1.1.1</version>
</dependency>
<dependency> <dependency>
<groupId>javax.xml.bind</groupId> <groupId>javax.xml.bind</groupId>

View File

@@ -50,6 +50,8 @@ import com.commafeed.frontend.servlet.NextUnreadServlet;
import com.commafeed.frontend.session.SessionHelperFactoryProvider; import com.commafeed.frontend.session.SessionHelperFactoryProvider;
import com.commafeed.frontend.ws.WebSocketConfigurator; import com.commafeed.frontend.ws.WebSocketConfigurator;
import com.commafeed.frontend.ws.WebSocketEndpoint; import com.commafeed.frontend.ws.WebSocketEndpoint;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import com.google.inject.Key; import com.google.inject.Key;
@@ -58,8 +60,7 @@ import com.google.inject.TypeLiteral;
import be.tomcools.dropwizard.websocket.WebsocketBundle; import be.tomcools.dropwizard.websocket.WebsocketBundle;
import io.dropwizard.Application; import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle; import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.configuration.EnvironmentVariableSubstitutor; import io.dropwizard.configuration.DefaultConfigurationFactoryFactory;
import io.dropwizard.configuration.SubstitutingSourceProvider;
import io.dropwizard.db.DataSourceFactory; import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.forms.MultiPartBundle; import io.dropwizard.forms.MultiPartBundle;
import io.dropwizard.hibernate.HibernateBundle; import io.dropwizard.hibernate.HibernateBundle;
@@ -69,6 +70,7 @@ import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment; import io.dropwizard.setup.Environment;
import io.dropwizard.web.WebBundle; import io.dropwizard.web.WebBundle;
import io.dropwizard.web.conf.WebConfiguration; import io.dropwizard.web.conf.WebConfiguration;
import io.whitfin.dropwizard.configuration.EnvironmentSubstitutor;
public class CommaFeedApplication extends Application<CommaFeedConfiguration> { public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
@@ -87,6 +89,15 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
@Override @Override
public void initialize(Bootstrap<CommaFeedConfiguration> bootstrap) { public void initialize(Bootstrap<CommaFeedConfiguration> bootstrap) {
bootstrap.setConfigurationFactoryFactory(new DefaultConfigurationFactoryFactory<CommaFeedConfiguration>() {
@Override
protected ObjectMapper configureObjectMapper(ObjectMapper objectMapper) {
// disable case sensitivity because EnvironmentSubstitutor maps MYPROPERTY to myproperty and not to myProperty
return objectMapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES);
}
});
bootstrap.setConfigurationSourceProvider(new EnvironmentSubstitutor("CF", bootstrap.getConfigurationSourceProvider()));
bootstrap.getObjectMapper().registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false)); bootstrap.getObjectMapper().registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false));
bootstrap.addBundle(websocketBundle = new WebsocketBundle<>()); bootstrap.addBundle(websocketBundle = new WebsocketBundle<>());
@@ -124,10 +135,6 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
bootstrap.addBundle(new AssetsBundle("/assets/", "/", "index.html")); bootstrap.addBundle(new AssetsBundle("/assets/", "/", "index.html"));
bootstrap.addBundle(new MultiPartBundle()); bootstrap.addBundle(new MultiPartBundle());
// Enable variable substitution with environment variables
bootstrap.setConfigurationSourceProvider(
new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(), new EnvironmentVariableSubstitutor(false)));
} }
@Override @Override

View File

@@ -19,6 +19,9 @@ public class Category implements Serializable {
@ApiModelProperty(value = "parent category id") @ApiModelProperty(value = "parent category id")
private String parentId; private String parentId;
@ApiModelProperty(value = "parent category name")
private String parentName;
@ApiModelProperty(value = "category id", required = true) @ApiModelProperty(value = "category id", required = true)
private String name; private String name;

View File

@@ -95,7 +95,7 @@ public class CategoryREST {
@UnitOfWork @UnitOfWork
@ApiOperation(value = "Get category entries", notes = "Get a list of category entries", response = Entries.class) @ApiOperation(value = "Get category entries", notes = "Get a list of category entries", response = Entries.class)
@Timed @Timed
public Response getCategoryEntries(@ApiParam(hidden = true) @SecurityCheck User user, public Response getCategoryEntries(@ApiParam(hidden = true) @SecurityCheck(apiKeyAllowed = true) User user,
@ApiParam(value = "id of the category, 'all' or 'starred'", required = true) @QueryParam("id") String id, @ApiParam(value = "id of the category, 'all' or 'starred'", required = true) @QueryParam("id") String id,
@ApiParam( @ApiParam(
value = "all entries or only unread ones", value = "all entries or only unread ones",
@@ -454,17 +454,13 @@ public class CategoryREST {
child.setPosition(c.getPosition()); child.setPosition(c.getPosition());
if (c.getParent() != null && c.getParent().getId() != null) { if (c.getParent() != null && c.getParent().getId() != null) {
child.setParentId(String.valueOf(c.getParent().getId())); child.setParentId(String.valueOf(c.getParent().getId()));
child.setParentName(c.getParent().getName());
} }
child.setExpanded(!c.isCollapsed()); child.setExpanded(!c.isCollapsed());
category.getChildren().add(child); category.getChildren().add(child);
} }
} }
Collections.sort(category.getChildren(), new Comparator<Category>() { Collections.sort(category.getChildren(), (o1, o2) -> ObjectUtils.compare(o1.getPosition(), o2.getPosition()));
@Override
public int compare(Category o1, Category o2) {
return ObjectUtils.compare(o1.getPosition(), o2.getPosition());
}
});
for (FeedSubscription subscription : subscriptions) { for (FeedSubscription subscription : subscriptions) {
if (id == null && subscription.getCategory() == null if (id == null && subscription.getCategory() == null
@@ -474,12 +470,8 @@ public class CategoryREST {
category.getFeeds().add(sub); category.getFeeds().add(sub);
} }
} }
Collections.sort(category.getFeeds(), new Comparator<Subscription>() { Collections.sort(category.getFeeds(), (o1, o2) -> ObjectUtils.compare(o1.getPosition(), o2.getPosition()));
@Override
public int compare(Subscription o1, Subscription o2) {
return ObjectUtils.compare(o1.getPosition(), o2.getPosition());
}
});
return category; return category;
} }

View File

@@ -132,7 +132,7 @@ public class FeedREST {
@UnitOfWork @UnitOfWork
@ApiOperation(value = "Get feed entries", notes = "Get a list of feed entries", response = Entries.class) @ApiOperation(value = "Get feed entries", notes = "Get a list of feed entries", response = Entries.class)
@Timed @Timed
public Response getFeedEntries(@ApiParam(hidden = true) @SecurityCheck User user, public Response getFeedEntries(@ApiParam(hidden = true) @SecurityCheck(apiKeyAllowed = true) User user,
@ApiParam(value = "id of the feed", required = true) @QueryParam("id") String id, @ApiParam(value = "id of the feed", required = true) @QueryParam("id") String id,
@ApiParam( @ApiParam(
value = "all entries or only unread ones", value = "all entries or only unread ones",