forked from Archives/Athou_commafeed
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99130d0181 | ||
|
|
90e2036cbe | ||
|
|
c2f3e42867 | ||
|
|
bd33369a41 | ||
|
|
4f625d8ed5 | ||
|
|
866fe56dd2 | ||
|
|
5f37dbca4c | ||
|
|
c49e617dfe | ||
|
|
e763ffd4cf | ||
|
|
20ab7dd3e1 | ||
|
|
55741c6332 | ||
|
|
42d85336a8 | ||
|
|
639b82f494 | ||
|
|
5003c176a2 | ||
|
|
10bfbbec17 | ||
|
|
3da900db7f | ||
|
|
274c5ae165 | ||
|
|
39c4012a1a | ||
|
|
754ac166e0 | ||
|
|
0b18334236 |
6
.dockerignore
Normal file
6
.dockerignore
Normal file
@@ -0,0 +1,6 @@
|
||||
# ignore everything
|
||||
*
|
||||
|
||||
# allow only what we need
|
||||
!commafeed-server/target/commafeed.jar
|
||||
!commafeed-server/config.yml.example
|
||||
33
.github/workflows/build.yml
vendored
33
.github/workflows/build.yml
vendored
@@ -1,28 +1,57 @@
|
||||
name: Java CI
|
||||
|
||||
on: [push]
|
||||
on: [ push ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
java: ["8", "11", "17"]
|
||||
java: [ "8", "11", "17" ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
# Setup
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Set up Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: ${{ matrix.java }}
|
||||
distribution: "temurin"
|
||||
cache: "maven"
|
||||
|
||||
# Build
|
||||
- name: Build with Maven
|
||||
run: mvn --batch-mode --update-snapshots verify
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: ${{ matrix.java == '8' }}
|
||||
with:
|
||||
name: 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: .
|
||||
platforms: linux/amd64,linux/arm/v7
|
||||
push: ${{ github.ref_type == 'tag' && matrix.java == '8' }}
|
||||
tags: |
|
||||
athou/commafeed:latest
|
||||
athou/commafeed:${{ github.ref_name }}
|
||||
|
||||
12
Dockerfile
Normal file
12
Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM eclipse-temurin:17-jre
|
||||
|
||||
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"]
|
||||
74
README.md
74
README.md
@@ -16,7 +16,11 @@ Browser extensions:
|
||||
|
||||
## 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
|
||||
wget https://github.com/Athou/commafeed/releases/download/3.0.0/commafeed.jar
|
||||
@@ -24,7 +28,10 @@ Browser extensions:
|
||||
vi 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
|
||||
cd commafeed
|
||||
@@ -33,67 +40,33 @@ Browser extensions:
|
||||
vi 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.
|
||||
You also need the Java 1.8+ JDK in order to build the application.
|
||||
|
||||
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).
|
||||
Files for internationalization are
|
||||
located [here](https://github.com/Athou/commafeed/tree/master/commafeed-client/src/locales).
|
||||
|
||||
To add a new language:
|
||||
|
||||
- edit `commafeed-client/src/i18n.ts`
|
||||
- add the new locale to the `locales` array.
|
||||
- import the dayjs locale
|
||||
- add the new locale to the `locales` array.
|
||||
- import the dayjs locale
|
||||
- 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
|
||||
|
||||
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
|
||||
|
||||
- `git clone https://github.com/Athou/CommaFeed`
|
||||
|
||||
### Backend
|
||||
|
||||
- Open `commafeed-server` in your preferred Java 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"
|
||||
- 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"
|
||||
- Start `CommaFeedApplication.java` in debug mode with `server config.dev.yml` as arguments
|
||||
|
||||
### 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.
|
||||
- run `npm install`
|
||||
- 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 2013-2022 CommaFeed.
|
||||
Copyright 2013-2023 CommaFeed.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this work except in compliance with the License.
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --host",
|
||||
"dev:typescript": "tsc --watch",
|
||||
"build": "npm run i18n:compile && tsc && vite build",
|
||||
"preview": "vite preview",
|
||||
"test": "vitest",
|
||||
|
||||
@@ -97,4 +97,5 @@ export const Constants = {
|
||||
mainScrollAreaId: "main-scroll-area-id",
|
||||
entryId: (entry: Entry) => `entry-id-${entry.id}`,
|
||||
},
|
||||
bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e",
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ export interface ApplicationSettings {
|
||||
export interface Category {
|
||||
id: string
|
||||
parentId?: string
|
||||
parentName?: string
|
||||
name: string
|
||||
children: Category[]
|
||||
feeds: Subscription[]
|
||||
|
||||
@@ -4,16 +4,20 @@ import { Constants } from "app/constants"
|
||||
import { useAppSelector } from "app/store"
|
||||
import { flattenCategoryTree } from "app/utils"
|
||||
|
||||
type CategorySelectProps = Partial<SelectProps> & { withAll?: boolean }
|
||||
type CategorySelectProps = Partial<SelectProps> & {
|
||||
withAll?: boolean
|
||||
withoutCategoryIds?: string[]
|
||||
}
|
||||
|
||||
export function CategorySelect(props: CategorySelectProps) {
|
||||
const rootCategory = useAppSelector(state => state.tree.rootCategory)
|
||||
const categories = rootCategory && flattenCategoryTree(rootCategory)
|
||||
const selectData: SelectItem[] | undefined = categories
|
||||
?.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))
|
||||
.map(c => ({
|
||||
label: c.name,
|
||||
label: c.parentName ? t`${c.name} (in ${c.parentName})` : c.name,
|
||||
value: c.id,
|
||||
}))
|
||||
if (props.withAll) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { t } from "@lingui/macro"
|
||||
import { ActionIcon, Center, Divider, Indicator, Popover, TextInput } from "@mantine/core"
|
||||
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 { useAppDispatch, useAppSelector } from "app/store"
|
||||
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 { MarkAllAsReadButton } from "./MarkAllAsReadButton"
|
||||
import { ProfileMenu } from "./ProfileMenu"
|
||||
import { RefreshMenu } from "./RefreshMenu"
|
||||
|
||||
function HeaderDivider() {
|
||||
return <Divider orientation="vertical" />
|
||||
@@ -41,7 +40,7 @@ export function Header() {
|
||||
return (
|
||||
<Center>
|
||||
<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} />
|
||||
|
||||
<HeaderDivider />
|
||||
|
||||
@@ -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 { showNotification } from "@mantine/notifications"
|
||||
import { client } from "app/client"
|
||||
import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
|
||||
import { changeViewMode } from "app/slices/user"
|
||||
import { useAppDispatch, useAppSelector } from "app/store"
|
||||
import { ViewMode } from "app/types"
|
||||
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 {
|
||||
control: React.ReactElement
|
||||
@@ -56,6 +70,7 @@ const viewModeData: ViewModeControlItem[] = [
|
||||
export function ProfileMenu(props: ProfileMenuProps) {
|
||||
const [opened, setOpened] = useState(false)
|
||||
const viewMode = useAppSelector(state => state.user.settings?.viewMode)
|
||||
const profile = useAppSelector(state => state.user.profile)
|
||||
const admin = useAppSelector(state => state.user.profile?.admin)
|
||||
const dispatch = useAppDispatch()
|
||||
const { colorScheme, toggleColorScheme } = useMantineColorScheme()
|
||||
@@ -69,6 +84,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
|
||||
<Menu position="bottom-end" closeOnItemClick={false} opened={opened} onChange={setOpened}>
|
||||
<Menu.Target>{props.control}</Menu.Target>
|
||||
<Menu.Dropdown>
|
||||
{profile && <Menu.Label>{profile.name}</Menu.Label>}
|
||||
<Menu.Item
|
||||
icon={<TbSettings size={iconSize} />}
|
||||
onClick={() => {
|
||||
@@ -78,6 +94,21 @@ export function ProfileMenu(props: ProfileMenuProps) {
|
||||
>
|
||||
<Trans>Settings</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",
|
||||
autoClose: 1000,
|
||||
})
|
||||
setOpened(false)
|
||||
})
|
||||
}
|
||||
>
|
||||
<Trans>Fetch all my feeds now</Trans>
|
||||
</Menu.Item>
|
||||
|
||||
<Divider />
|
||||
<Menu.Label>
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -288,7 +288,7 @@ msgstr "موجز URL"
|
||||
msgid "Feed name"
|
||||
msgstr "اسم الخلاصة"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "هل نسيت كلمة المرور؟"
|
||||
@@ -608,10 +612,6 @@ msgstr "تحديث"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "تم إغلاق التسجيلات في مثيل CommaFeed هذا"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "ليس لديك أي اشتراكات حتى الآن. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "الملف مطلوب"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL del canal"
|
||||
msgid "Feed name"
|
||||
msgstr "Nom del canal"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Heu oblidat la contrasenya?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Actualitzar"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Els registres estan tancats en aquesta instància de CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Encara no teniu cap subscripció. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "el fitxer és necessari"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL zdroje"
|
||||
msgid "Feed name"
|
||||
msgstr "Název zdroje"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Zapomněli jste heslo?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Obnovit"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "V této instanci CommaFeed jsou registrace uzavřeny"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL porthiant"
|
||||
msgid "Feed name"
|
||||
msgstr "Enw porthiant"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Wedi anghofio cyfrinair?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Adnewyddu"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Mae cofrestriadau ar gau ar yr achos CommaFeed hwn"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "mae angen y ffeil"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr ""
|
||||
msgid "Feed name"
|
||||
msgstr "Feednavn"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Glemt adgangskode?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Opdater"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Registreringer er lukket på denne CommaFeed-instans"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Du har ingen abonnementer endnu. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fil er påkrævet"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Feed-URL"
|
||||
msgid "Feed name"
|
||||
msgstr "Feedname"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Passwort vergessen?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Aktualisieren"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Registrierungen sind für diese CommaFeed-Instanz geschlossen"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Sie haben noch keine Abonnements. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "Datei ist erforderlich"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Feed URL"
|
||||
msgid "Feed name"
|
||||
msgstr "Feed name"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr "Fetch all my feeds now"
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr "Fetch all my feeds now"
|
||||
msgid "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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Forgot password?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Refresh"
|
||||
msgid "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
|
||||
msgid "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?"
|
||||
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."
|
||||
msgstr "Your feeds have been queued for refresh."
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "file is required"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr "{0} (in {1})"
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL de fuente"
|
||||
msgid "Feed name"
|
||||
msgstr "Nombre de alimentación"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "¿Olvidaste la contraseña?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Actualizar"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Los registros están cerrados en esta instancia de CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "archivo requerido"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL فید"
|
||||
msgid "Feed name"
|
||||
msgstr "نام فید"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "رمز عبور را فراموش کرده اید؟"
|
||||
@@ -608,10 +612,6 @@ msgstr "تازه کردن"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "ثبت نام در این نمونه CommaFeed بسته شده است"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "شما هنوز هیچ اشتراکی ندارید. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "فایل مورد نیاز است"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Syötteen URL-osoite"
|
||||
msgid "Feed name"
|
||||
msgstr "Syötteen nimi"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Unohditko salasanan?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Päivitä"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Tämän CommaFeed-esiintymän rekisteröinnit on suljettu"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Sinulla ei ole vielä tilauksia. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "tiedosto vaaditaan"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL du flux"
|
||||
msgid "Feed name"
|
||||
msgstr "Nom du flux"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Mot de passe oublié ?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Rafraîchir"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Les inscriptions sont fermées sur cette instance de CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fichier requis"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL da fonte"
|
||||
msgid "Feed name"
|
||||
msgstr "Nome do feed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Esqueceches o contrasinal?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Actualizar"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Os rexistros están pechados nesta instancia de CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "é necesario o ficheiro"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr ""
|
||||
msgid "Feed name"
|
||||
msgstr "Hírcsatorna neve"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Elfelejtette a jelszavát?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Frissítés"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
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
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fájl szükséges"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL Umpan"
|
||||
msgid "Feed name"
|
||||
msgstr "Nama umpan"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Lupa kata sandi?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Segarkan"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Pendaftaran ditutup pada instans CommaFeed ini"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Anda belum memiliki langganan. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "file diperlukan"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL feed"
|
||||
msgid "Feed name"
|
||||
msgstr "Nome del feed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Password dimenticata?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Aggiorna"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Le registrazioni sono chiuse su questa istanza CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Non hai ancora abbonamenti. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "è richiesto il file"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "フィード URL"
|
||||
msgid "Feed name"
|
||||
msgstr "フィード名"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "パスワードをお忘れですか?"
|
||||
@@ -608,10 +612,6 @@ msgstr "リフレッシュ"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "この CommaFeed インスタンスの登録は終了しています"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "まだサブスクリプションがありません。"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "ファイルが必要です"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "피드 URL"
|
||||
msgid "Feed name"
|
||||
msgstr "피드 이름"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "비밀번호를 잊으셨나요?"
|
||||
@@ -608,10 +612,6 @@ msgstr "새로 고침"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "이 CommaFeed 인스턴스에 대한 등록이 마감되었습니다."
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "아직 구독이 없습니다. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "파일이 필요합니다"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL Suapan"
|
||||
msgid "Feed name"
|
||||
msgstr "Nama suapan"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Lupa kata laluan?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Muat semula"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Pendaftaran ditutup pada contoh CommaFeed ini"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fail diperlukan"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Feed-URL"
|
||||
msgid "Feed name"
|
||||
msgstr "Feednavn"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Glemt passord?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Oppdater"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Du har ingen abonnementer ennå. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fil kreves"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Feed-URL"
|
||||
msgid "Feed name"
|
||||
msgstr "Feednaam"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Wachtwoord vergeten?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Vernieuwen"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Registraties zijn gesloten op deze CommaFeed-instantie"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Je hebt nog geen abonnementen. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "bestand is vereist"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Feed-URL"
|
||||
msgid "Feed name"
|
||||
msgstr "Feednavn"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Glemt passord?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Oppdater"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Registreringer er stengt på denne CommaFeed-forekomsten"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Du har ingen abonnementer ennå. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fil kreves"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL kanału"
|
||||
msgid "Feed name"
|
||||
msgstr "nazwa kanału"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Zapomniałeś hasła?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Odśwież"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Rejestracje są zamknięte w tej instancji CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Nie masz jeszcze żadnych subskrypcji. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "plik jest wymagany"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL do feed"
|
||||
msgid "Feed name"
|
||||
msgstr "Nome do feed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Esqueceu a senha?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Atualizar"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Os registros estão fechados nesta instância do CommaFeed"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "o arquivo é obrigatório"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL-адрес фида"
|
||||
msgid "Feed name"
|
||||
msgstr "Имя фида"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Забыли пароль?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Обновить"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Регистрация закрыта для этого экземпляра CommaFeed."
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "У вас пока нет подписок. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "требуется файл"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "URL informačného kanála"
|
||||
msgid "Feed name"
|
||||
msgstr "Názov informačného kanála"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Zabudli ste heslo?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Obnoviť"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "V tejto inštancii CommaFeed sú registrácie uzavreté"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Zatiaľ nemáte žiadne odbery. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Flödes-URL"
|
||||
msgid "Feed name"
|
||||
msgstr "Flödesnamn"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Glömt lösenord?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Uppdatera"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Registreringar är stängda på denna CommaFeed-instans"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Du har inga prenumerationer än. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "fil krävs"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Feed URL'si"
|
||||
msgid "Feed name"
|
||||
msgstr "Yayın adı"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "Parolanızı mı unuttunuz?"
|
||||
@@ -608,10 +612,6 @@ msgstr "Yenile"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "Bu CommaFeed örneğinde kayıtlar kapalı"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "Henüz aboneliğiniz yok. "
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "dosya gerekli"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "供稿网址"
|
||||
msgid "Feed name"
|
||||
msgstr "提要名称"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Fetch all my feeds now"
|
||||
msgstr ""
|
||||
|
||||
@@ -296,6 +296,10 @@ msgstr ""
|
||||
msgid "Filtering expression"
|
||||
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
|
||||
msgid "Forgot password?"
|
||||
msgstr "忘记密码?"
|
||||
@@ -608,10 +612,6 @@ msgstr "刷新"
|
||||
msgid "Registrations are closed on this CommaFeed instance"
|
||||
msgstr "此 CommaFeed 实例上的注册已关闭"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/KeyboardShortcutsHelp.tsx
|
||||
msgid "Right click"
|
||||
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?"
|
||||
msgstr "您还没有任何订阅。"
|
||||
|
||||
#: src/components/header/RefreshMenu.tsx
|
||||
#: src/components/header/ProfileMenu.tsx
|
||||
msgid "Your feeds have been queued for refresh."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/content/add/ImportOpml.tsx
|
||||
msgid "file is required"
|
||||
msgstr "文件是必需的"
|
||||
|
||||
#: src/components/content/add/CategorySelect.tsx
|
||||
msgid "{0} (in {1})"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
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 { redirectToApiDocumentation } from "app/slices/redirect"
|
||||
import { useAppDispatch, useAppSelector } from "app/store"
|
||||
@@ -57,6 +57,7 @@ function NextUnreadBookmarklet() {
|
||||
)
|
||||
}
|
||||
|
||||
const bitcoinAddress = <Code>{Constants.bitcoinWalletAddress}</Code>
|
||||
export function AboutPage() {
|
||||
const version = useAppSelector(state => state.server.serverInfos?.version)
|
||||
const revision = useAppSelector(state => state.server.serverInfos?.gitCommit)
|
||||
@@ -70,7 +71,7 @@ export function AboutPage() {
|
||||
CommaFeed version {version} ({revision})
|
||||
</Trans>
|
||||
</Box>
|
||||
<Box>
|
||||
<Box mt="md">
|
||||
<Trans>
|
||||
CommaFeed is an open-source project. Sources are hosted on
|
||||
<Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer">
|
||||
@@ -114,6 +115,9 @@ export function AboutPage() {
|
||||
</Center>
|
||||
</form>
|
||||
</Box>
|
||||
<Box mt="xs">
|
||||
<Trans>For those of you who prefer bitcoin, here is the address: {bitcoinAddress}</Trans>
|
||||
</Box>
|
||||
</Section>
|
||||
<Section title={t`Goodies`} icon={<TbPuzzle size={24} />}>
|
||||
<List>
|
||||
|
||||
@@ -109,7 +109,12 @@ export function CategoryDetailsPage() {
|
||||
{editable && (
|
||||
<>
|
||||
<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} />
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -17,7 +17,7 @@ import { TbDeviceFloppy, TbTrash } from "react-icons/tb"
|
||||
import { useParams } from "react-router-dom"
|
||||
|
||||
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 (
|
||||
<div>
|
||||
<div>
|
||||
|
||||
@@ -87,7 +87,7 @@ app:
|
||||
|
||||
database:
|
||||
driverClass: org.h2.Driver
|
||||
url: jdbc:h2:/home/commafeed/db
|
||||
url: jdbc:h2:/commafeed/data/db
|
||||
user: sa
|
||||
password: sa
|
||||
properties:
|
||||
|
||||
@@ -38,6 +38,13 @@
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<parameters>true</parameters>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
@@ -229,7 +236,7 @@
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.22</version>
|
||||
<version>1.18.26</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -285,6 +292,11 @@
|
||||
<artifactId>dropwizard-websocket-jee7-bundle</artifactId>
|
||||
<version>2.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.whitfin</groupId>
|
||||
<artifactId>dropwizard-environment-substitutor</artifactId>
|
||||
<version>1.1.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
|
||||
@@ -50,6 +50,8 @@ import com.commafeed.frontend.servlet.NextUnreadServlet;
|
||||
import com.commafeed.frontend.session.SessionHelperFactoryProvider;
|
||||
import com.commafeed.frontend.ws.WebSocketConfigurator;
|
||||
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.Injector;
|
||||
import com.google.inject.Key;
|
||||
@@ -58,6 +60,7 @@ import com.google.inject.TypeLiteral;
|
||||
import be.tomcools.dropwizard.websocket.WebsocketBundle;
|
||||
import io.dropwizard.Application;
|
||||
import io.dropwizard.assets.AssetsBundle;
|
||||
import io.dropwizard.configuration.DefaultConfigurationFactoryFactory;
|
||||
import io.dropwizard.configuration.EnvironmentVariableSubstitutor;
|
||||
import io.dropwizard.configuration.SubstitutingSourceProvider;
|
||||
import io.dropwizard.db.DataSourceFactory;
|
||||
@@ -69,6 +72,7 @@ import io.dropwizard.setup.Bootstrap;
|
||||
import io.dropwizard.setup.Environment;
|
||||
import io.dropwizard.web.WebBundle;
|
||||
import io.dropwizard.web.conf.WebConfiguration;
|
||||
import io.whitfin.dropwizard.configuration.EnvironmentSubstitutor;
|
||||
|
||||
public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
|
||||
|
||||
@@ -87,6 +91,23 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
});
|
||||
|
||||
// enable config.yml string substitution
|
||||
// e.g. having a custom config.yml file with app.session.path=${SOME_ENV_VAR} will substitute SOME_ENV_VAR
|
||||
SubstitutingSourceProvider substitutingSourceProvider = new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(),
|
||||
new EnvironmentVariableSubstitutor(false));
|
||||
// enable config.yml properties override with env variables prefixed with CF_
|
||||
// e.g. setting CF_APP_ALLOWREGISTRATIONS=true will set app.allowRegistrations to true
|
||||
EnvironmentSubstitutor environmentSubstitutor = new EnvironmentSubstitutor("CF", substitutingSourceProvider);
|
||||
bootstrap.setConfigurationSourceProvider(environmentSubstitutor);
|
||||
|
||||
bootstrap.getObjectMapper().registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false));
|
||||
|
||||
bootstrap.addBundle(websocketBundle = new WebsocketBundle<>());
|
||||
@@ -124,10 +145,6 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
|
||||
|
||||
bootstrap.addBundle(new AssetsBundle("/assets/", "/", "index.html"));
|
||||
bootstrap.addBundle(new MultiPartBundle());
|
||||
|
||||
// Enable variable substitution with environment variables
|
||||
bootstrap.setConfigurationSourceProvider(
|
||||
new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(), new EnvironmentVariableSubstitutor(false)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,6 +19,9 @@ public class Category implements Serializable {
|
||||
@ApiModelProperty(value = "parent category id")
|
||||
private String parentId;
|
||||
|
||||
@ApiModelProperty(value = "parent category name")
|
||||
private String parentName;
|
||||
|
||||
@ApiModelProperty(value = "category id", required = true)
|
||||
private String name;
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ public class CategoryREST {
|
||||
@UnitOfWork
|
||||
@ApiOperation(value = "Get category entries", notes = "Get a list of category entries", response = Entries.class)
|
||||
@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 = "all entries or only unread ones",
|
||||
@@ -454,17 +454,13 @@ public class CategoryREST {
|
||||
child.setPosition(c.getPosition());
|
||||
if (c.getParent() != null && c.getParent().getId() != null) {
|
||||
child.setParentId(String.valueOf(c.getParent().getId()));
|
||||
child.setParentName(c.getParent().getName());
|
||||
}
|
||||
child.setExpanded(!c.isCollapsed());
|
||||
category.getChildren().add(child);
|
||||
}
|
||||
}
|
||||
Collections.sort(category.getChildren(), new Comparator<Category>() {
|
||||
@Override
|
||||
public int compare(Category o1, Category o2) {
|
||||
return ObjectUtils.compare(o1.getPosition(), o2.getPosition());
|
||||
}
|
||||
});
|
||||
Collections.sort(category.getChildren(), (o1, o2) -> ObjectUtils.compare(o1.getPosition(), o2.getPosition()));
|
||||
|
||||
for (FeedSubscription subscription : subscriptions) {
|
||||
if (id == null && subscription.getCategory() == null
|
||||
@@ -474,12 +470,8 @@ public class CategoryREST {
|
||||
category.getFeeds().add(sub);
|
||||
}
|
||||
}
|
||||
Collections.sort(category.getFeeds(), new Comparator<Subscription>() {
|
||||
@Override
|
||||
public int compare(Subscription o1, Subscription o2) {
|
||||
return ObjectUtils.compare(o1.getPosition(), o2.getPosition());
|
||||
}
|
||||
});
|
||||
Collections.sort(category.getFeeds(), (o1, o2) -> ObjectUtils.compare(o1.getPosition(), o2.getPosition()));
|
||||
|
||||
return category;
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ public class FeedREST {
|
||||
@UnitOfWork
|
||||
@ApiOperation(value = "Get feed entries", notes = "Get a list of feed entries", response = Entries.class)
|
||||
@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 = "all entries or only unread ones",
|
||||
|
||||
Reference in New Issue
Block a user